Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/passman.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPassman Bot <info@passman.cc>2018-12-19 09:31:49 +0300
committerPassman Bot <info@passman.cc>2018-12-19 09:31:49 +0300
commit57de51ba9d4634d71bb90f3bb4d583c1bf0be8d4 (patch)
tree49e5f062220392a8b91590cc68a6b42747c6d353
parentf5a52ef792df7d380ac46a4f46985aa943567924 (diff)
Passman 2.2.02.2.0
[tx-robot] updated from transifex Signed-off-by: Passman Bot <info@passman.cc>
-rw-r--r--CONTRIBUTING.md1
-rw-r--r--README.md39
-rw-r--r--appinfo/database.xml9
-rw-r--r--appinfo/info.xml10
-rw-r--r--appinfo/routes.php7
-rw-r--r--appinfo/signature.json554
-rw-r--r--bower.json43
-rw-r--r--composer.json10
-rw-r--r--controller/credentialcontroller.php9
-rw-r--r--controller/iconcontroller.php146
-rw-r--r--controller/translationcontroller.php51
-rw-r--r--css/admin.css5
-rw-r--r--css/passman.min.css6
-rw-r--r--css/public-page.css2
-rw-r--r--img/icons/Numix/apps/aim.svg6
-rw-r--r--img/icons/Numix/apps/goa-account-exchange.svg6
-rw-r--r--img/icons/Numix/apps/goa-account-facebook.svg5
-rw-r--r--img/icons/Numix/apps/goa-account-flickr.svg6
-rw-r--r--img/icons/Numix/apps/goa-account-foursquare.svg3
-rw-r--r--img/icons/Numix/apps/goa-account-google.svg9
-rw-r--r--img/icons/Numix/apps/goa-account-kerberos.svg5
-rw-r--r--img/icons/Numix/apps/goa-account-lastfm.svg11
-rw-r--r--img/icons/Numix/apps/goa-account-owncloud.svg13
-rw-r--r--img/icons/Numix/apps/goa-account-pocket.svg11
-rw-r--r--img/icons/Numix/apps/goa-account-twitter.svg5
-rw-r--r--img/icons/Numix/apps/goa-account-yahoo.svg6
-rw-r--r--img/icons/Numix/apps/icq.svg8
-rw-r--r--img/icons/Numix/apps/im-nov.svg5
-rw-r--r--img/icons/Numix/apps/jabber.svg9
-rw-r--r--img/icons/Numix/apps/jockey.svg12
-rw-r--r--img/icons/Numix/apps/live.svg8
-rw-r--r--img/icons/Numix/apps/ppa.svg9
-rw-r--r--img/icons/Numix/apps/salut.svg12
-rw-r--r--img/icons/Numix/apps/window-manager.svg3
-rw-r--r--img/icons/Numix/categories/application-community.svg3
-rw-r--r--img/icons/Numix/categories/applications-3D.svg10
-rw-r--r--img/icons/Numix/categories/applications-accessories.svg10
-rw-r--r--img/icons/Numix/categories/applications-arcade.svg3
-rw-r--r--img/icons/Numix/categories/applications-astronomy.svg11
-rw-r--r--img/icons/Numix/categories/applications-biology.svg20
-rw-r--r--img/icons/Numix/categories/applications-boardgames.svg9
-rw-r--r--img/icons/Numix/categories/applications-cardgames.svg4
-rw-r--r--img/icons/Numix/categories/applications-chat.svg6
-rw-r--r--img/icons/Numix/categories/applications-debugging.svg23
-rw-r--r--img/icons/Numix/categories/applications-development.svg6
-rw-r--r--img/icons/Numix/categories/applications-drawing.svg6
-rw-r--r--img/icons/Numix/categories/applications-education.svg8
-rw-r--r--img/icons/Numix/categories/applications-electronics.svg3
-rw-r--r--img/icons/Numix/categories/applications-engineering.svg4
-rw-r--r--img/icons/Numix/categories/applications-filesharing.svg3
-rw-r--r--img/icons/Numix/categories/applications-fonts.svg7
-rw-r--r--img/icons/Numix/categories/applications-games.svg3
-rw-r--r--img/icons/Numix/categories/applications-geography.svg8
-rw-r--r--img/icons/Numix/categories/applications-geology.svg9
-rw-r--r--img/icons/Numix/categories/applications-graphics.svg7
-rw-r--r--img/icons/Numix/categories/applications-haskell.svg6
-rw-r--r--img/icons/Numix/categories/applications-ide.svg3
-rw-r--r--img/icons/Numix/categories/applications-interfacedesign.svg15
-rw-r--r--img/icons/Numix/categories/applications-internet.svg13
-rw-r--r--img/icons/Numix/categories/applications-java.svg12
-rw-r--r--img/icons/Numix/categories/applications-libraries.svg5
-rw-r--r--img/icons/Numix/categories/applications-lisp.svg4
-rw-r--r--img/icons/Numix/categories/applications-mail.svg4
-rw-r--r--img/icons/Numix/categories/applications-mathematics.svg14
-rw-r--r--img/icons/Numix/categories/applications-monodevelopment.svg7
-rw-r--r--img/icons/Numix/categories/applications-multimedia.svg5
-rw-r--r--img/icons/Numix/categories/applications-ocaml.svg3
-rw-r--r--img/icons/Numix/categories/applications-office.svg3
-rw-r--r--img/icons/Numix/categories/applications-other.svg7
-rw-r--r--img/icons/Numix/categories/applications-painting.svg3
-rw-r--r--img/icons/Numix/categories/applications-perl.svg3
-rw-r--r--img/icons/Numix/categories/applications-photography.svg6
-rw-r--r--img/icons/Numix/categories/applications-physics.svg8
-rw-r--r--img/icons/Numix/categories/applications-profiling.svg15
-rw-r--r--img/icons/Numix/categories/applications-publishing.svg40
-rw-r--r--img/icons/Numix/categories/applications-puzzles.svg3
-rw-r--r--img/icons/Numix/categories/applications-python.svg4
-rw-r--r--img/icons/Numix/categories/applications-roleplaying.svg12
-rw-r--r--img/icons/Numix/categories/applications-ruby.svg13
-rw-r--r--img/icons/Numix/categories/applications-science.svg8
-rw-r--r--img/icons/Numix/categories/applications-sports.svg3
-rw-r--r--img/icons/Numix/categories/applications-system.svg3
-rw-r--r--img/icons/Numix/categories/applications-utilities.svg6
-rw-r--r--img/icons/Numix/categories/applications-versioncontrol.svg14
-rw-r--r--img/icons/Numix/categories/applications-viewers.svg4
-rw-r--r--img/icons/Numix/categories/gnome-applications.svg9
-rw-r--r--img/icons/Numix/categories/gnome-settings.svg12
-rw-r--r--img/icons/Numix/categories/gnome-system.svg20
-rw-r--r--img/icons/Numix/categories/package_system.svg20
-rw-r--r--img/icons/Numix/categories/preferences-autocompletion.svg3
-rw-r--r--img/icons/Numix/categories/preferences-bluetooth.svg10
-rw-r--r--img/icons/Numix/categories/preferences-calendar-and-tasks.svg12
-rw-r--r--img/icons/Numix/categories/preferences-certificates.svg3
-rw-r--r--img/icons/Numix/categories/preferences-composer.svg4
-rw-r--r--img/icons/Numix/categories/preferences-desktop-accessibility.svg3
-rw-r--r--img/icons/Numix/categories/preferences-desktop-display.svg6
-rw-r--r--img/icons/Numix/categories/preferences-desktop-peripherals-directory.svg15
-rw-r--r--img/icons/Numix/categories/preferences-desktop-personal-directory.svg3
-rw-r--r--img/icons/Numix/categories/preferences-mail-accounts.svg4
-rw-r--r--img/icons/Numix/categories/preferences-system-directory.svg5
-rw-r--r--img/icons/Numix/categories/preferences-system-network-proxy.svg3
-rw-r--r--img/icons/Numix/categories/preferences-system-network.svg6
-rw-r--r--img/icons/Numix/categories/preferences-system-power.svg4
-rw-r--r--img/icons/Numix/categories/preferences-system-privacy.svg4
-rw-r--r--img/icons/Numix/categories/preferences-system-time.svg11
-rw-r--r--img/icons/Numix/categories/preferences-system.svg4
-rw-r--r--img/icons/Numix/categories/redhat-system_tools.svg20
-rw-r--r--img/icons/Numix/categories/system-help.svg3
-rw-r--r--img/icons/Numix/categories/system_section.svg20
-rw-r--r--img/icons/essential-collection/svg/add-1.svg38
-rw-r--r--img/icons/essential-collection/svg/add-2.svg38
-rw-r--r--img/icons/essential-collection/svg/add-3.svg39
-rw-r--r--img/icons/essential-collection/svg/add.svg37
-rw-r--r--img/icons/essential-collection/svg/agenda.svg45
-rw-r--r--img/icons/essential-collection/svg/alarm-1.svg58
-rw-r--r--img/icons/essential-collection/svg/alarm-clock-1.svg82
-rw-r--r--img/icons/essential-collection/svg/alarm-clock.svg76
-rw-r--r--img/icons/essential-collection/svg/alarm.svg45
-rw-r--r--img/icons/essential-collection/svg/albums.svg116
-rw-r--r--img/icons/essential-collection/svg/app.svg43
-rw-r--r--img/icons/essential-collection/svg/archive-1.svg44
-rw-r--r--img/icons/essential-collection/svg/archive-2.svg51
-rw-r--r--img/icons/essential-collection/svg/archive-3.svg43
-rw-r--r--img/icons/essential-collection/svg/archive.svg50
-rw-r--r--img/icons/essential-collection/svg/attachment.svg39
-rw-r--r--img/icons/essential-collection/svg/back.svg38
-rw-r--r--img/icons/essential-collection/svg/battery-1.svg38
-rw-r--r--img/icons/essential-collection/svg/battery-2.svg39
-rw-r--r--img/icons/essential-collection/svg/battery-3.svg39
-rw-r--r--img/icons/essential-collection/svg/battery-4.svg39
-rw-r--r--img/icons/essential-collection/svg/battery-5.svg119
-rw-r--r--img/icons/essential-collection/svg/battery-6.svg94
-rw-r--r--img/icons/essential-collection/svg/battery-7.svg72
-rw-r--r--img/icons/essential-collection/svg/battery-8.svg58
-rw-r--r--img/icons/essential-collection/svg/battery-9.svg105
-rw-r--r--img/icons/essential-collection/svg/battery.svg41
-rw-r--r--img/icons/essential-collection/svg/binoculars.svg58
-rw-r--r--img/icons/essential-collection/svg/blueprint.svg74
-rw-r--r--img/icons/essential-collection/svg/bluetooth-1.svg41
-rw-r--r--img/icons/essential-collection/svg/bluetooth.svg41
-rw-r--r--img/icons/essential-collection/svg/bookmark-1.svg49
-rw-r--r--img/icons/essential-collection/svg/bookmark.svg37
-rw-r--r--img/icons/essential-collection/svg/briefcase.svg45
-rw-r--r--img/icons/essential-collection/svg/broken-link.svg47
-rw-r--r--img/icons/essential-collection/svg/calculator-1.svg46
-rw-r--r--img/icons/essential-collection/svg/calculator.svg52
-rw-r--r--img/icons/essential-collection/svg/calendar-1.svg66
-rw-r--r--img/icons/essential-collection/svg/calendar-2.svg74
-rw-r--r--img/icons/essential-collection/svg/calendar-3.svg65
-rw-r--r--img/icons/essential-collection/svg/calendar-4.svg66
-rw-r--r--img/icons/essential-collection/svg/calendar-5.svg43
-rw-r--r--img/icons/essential-collection/svg/calendar-6.svg81
-rw-r--r--img/icons/essential-collection/svg/calendar-7.svg74
-rw-r--r--img/icons/essential-collection/svg/calendar.svg61
-rw-r--r--img/icons/essential-collection/svg/checked-1.svg40
-rw-r--r--img/icons/essential-collection/svg/checked.svg38
-rw-r--r--img/icons/essential-collection/svg/clock-1.svg57
-rw-r--r--img/icons/essential-collection/svg/clock.svg54
-rw-r--r--img/icons/essential-collection/svg/close.svg39
-rw-r--r--img/icons/essential-collection/svg/cloud-computing-1.svg49
-rw-r--r--img/icons/essential-collection/svg/cloud-computing-2.svg47
-rw-r--r--img/icons/essential-collection/svg/cloud-computing-3.svg51
-rw-r--r--img/icons/essential-collection/svg/cloud-computing-4.svg46
-rw-r--r--img/icons/essential-collection/svg/cloud-computing-5.svg47
-rw-r--r--img/icons/essential-collection/svg/cloud-computing.svg47
-rw-r--r--img/icons/essential-collection/svg/cloud.svg44
-rw-r--r--img/icons/essential-collection/svg/command.svg46
-rw-r--r--img/icons/essential-collection/svg/compact-disc-1.svg61
-rw-r--r--img/icons/essential-collection/svg/compact-disc-2.svg48
-rw-r--r--img/icons/essential-collection/svg/compact-disc.svg47
-rw-r--r--img/icons/essential-collection/svg/compass.svg40
-rw-r--r--img/icons/essential-collection/svg/compose.svg45
-rw-r--r--img/icons/essential-collection/svg/controls-1.svg48
-rw-r--r--img/icons/essential-collection/svg/controls-2.svg46
-rw-r--r--img/icons/essential-collection/svg/controls-3.svg50
-rw-r--r--img/icons/essential-collection/svg/controls-4.svg47
-rw-r--r--img/icons/essential-collection/svg/controls-5.svg48
-rw-r--r--img/icons/essential-collection/svg/controls-6.svg47
-rw-r--r--img/icons/essential-collection/svg/controls-7.svg50
-rw-r--r--img/icons/essential-collection/svg/controls-8.svg64
-rw-r--r--img/icons/essential-collection/svg/controls-9.svg63
-rw-r--r--img/icons/essential-collection/svg/controls.svg44
-rw-r--r--img/icons/essential-collection/svg/database-1.svg56
-rw-r--r--img/icons/essential-collection/svg/database-2.svg56
-rw-r--r--img/icons/essential-collection/svg/database-3.svg65
-rw-r--r--img/icons/essential-collection/svg/database.svg77
-rw-r--r--img/icons/essential-collection/svg/diamond.svg40
-rw-r--r--img/icons/essential-collection/svg/diploma.svg69
-rw-r--r--img/icons/essential-collection/svg/dislike-1.svg41
-rw-r--r--img/icons/essential-collection/svg/dislike.svg47
-rw-r--r--img/icons/essential-collection/svg/divide-1.svg41
-rw-r--r--img/icons/essential-collection/svg/divide.svg40
-rw-r--r--img/icons/essential-collection/svg/division.svg39
-rw-r--r--img/icons/essential-collection/svg/document.svg62
-rw-r--r--img/icons/essential-collection/svg/download.svg39
-rw-r--r--img/icons/essential-collection/svg/edit-1.svg46
-rw-r--r--img/icons/essential-collection/svg/edit.svg63
-rw-r--r--img/icons/essential-collection/svg/eject-1.svg46
-rw-r--r--img/icons/essential-collection/svg/eject.svg37
-rw-r--r--img/icons/essential-collection/svg/equal-1.svg39
-rw-r--r--img/icons/essential-collection/svg/equal-2.svg38
-rw-r--r--img/icons/essential-collection/svg/equal.svg37
-rw-r--r--img/icons/essential-collection/svg/error.svg40
-rw-r--r--img/icons/essential-collection/svg/exit-1.svg40
-rw-r--r--img/icons/essential-collection/svg/exit-2.svg41
-rw-r--r--img/icons/essential-collection/svg/exit.svg39
-rw-r--r--img/icons/essential-collection/svg/eyeglasses.svg41
-rw-r--r--img/icons/essential-collection/svg/fast-forward-1.svg48
-rw-r--r--img/icons/essential-collection/svg/fast-forward.svg37
-rw-r--r--img/icons/essential-collection/svg/fax.svg55
-rw-r--r--img/icons/essential-collection/svg/file-1.svg45
-rw-r--r--img/icons/essential-collection/svg/file-2.svg43
-rw-r--r--img/icons/essential-collection/svg/file.svg44
-rw-r--r--img/icons/essential-collection/svg/film.svg53
-rw-r--r--img/icons/essential-collection/svg/fingerprint.svg70
-rw-r--r--img/icons/essential-collection/svg/flag-1.svg37
-rw-r--r--img/icons/essential-collection/svg/flag-2.svg40
-rw-r--r--img/icons/essential-collection/svg/flag-3.svg37
-rw-r--r--img/icons/essential-collection/svg/flag-4.svg40
-rw-r--r--img/icons/essential-collection/svg/flag.svg37
-rw-r--r--img/icons/essential-collection/svg/focus.svg46
-rw-r--r--img/icons/essential-collection/svg/folder-1.svg43
-rw-r--r--img/icons/essential-collection/svg/folder-10.svg41
-rw-r--r--img/icons/essential-collection/svg/folder-11.svg50
-rw-r--r--img/icons/essential-collection/svg/folder-12.svg47
-rw-r--r--img/icons/essential-collection/svg/folder-13.svg46
-rw-r--r--img/icons/essential-collection/svg/folder-14.svg47
-rw-r--r--img/icons/essential-collection/svg/folder-15.svg39
-rw-r--r--img/icons/essential-collection/svg/folder-16.svg39
-rw-r--r--img/icons/essential-collection/svg/folder-17.svg42
-rw-r--r--img/icons/essential-collection/svg/folder-18.svg42
-rw-r--r--img/icons/essential-collection/svg/folder-19.svg45
-rw-r--r--img/icons/essential-collection/svg/folder-2.svg38
-rw-r--r--img/icons/essential-collection/svg/folder-3.svg45
-rw-r--r--img/icons/essential-collection/svg/folder-4.svg44
-rw-r--r--img/icons/essential-collection/svg/folder-5.svg39
-rw-r--r--img/icons/essential-collection/svg/folder-6.svg43
-rw-r--r--img/icons/essential-collection/svg/folder-7.svg45
-rw-r--r--img/icons/essential-collection/svg/folder-8.svg54
-rw-r--r--img/icons/essential-collection/svg/folder-9.svg54
-rw-r--r--img/icons/essential-collection/svg/folder.svg44
-rw-r--r--img/icons/essential-collection/svg/forbidden.svg37
-rw-r--r--img/icons/essential-collection/svg/funnel.svg39
-rw-r--r--img/icons/essential-collection/svg/garbage-1.svg155
-rw-r--r--img/icons/essential-collection/svg/garbage-2.svg42
-rw-r--r--img/icons/essential-collection/svg/garbage.svg90
-rw-r--r--img/icons/essential-collection/svg/gift.svg45
-rw-r--r--img/icons/essential-collection/svg/help.svg115
-rw-r--r--img/icons/essential-collection/svg/hide.svg41
-rw-r--r--img/icons/essential-collection/svg/hold.svg43
-rw-r--r--img/icons/essential-collection/svg/home-1.svg39
-rw-r--r--img/icons/essential-collection/svg/home-2.svg42
-rw-r--r--img/icons/essential-collection/svg/home.svg41
-rw-r--r--img/icons/essential-collection/svg/hourglass-1.svg54
-rw-r--r--img/icons/essential-collection/svg/hourglass-2.svg49
-rw-r--r--img/icons/essential-collection/svg/hourglass-3.svg49
-rw-r--r--img/icons/essential-collection/svg/hourglass.svg83
-rw-r--r--img/icons/essential-collection/svg/house.svg58
-rw-r--r--img/icons/essential-collection/svg/id-card-1.svg47
-rw-r--r--img/icons/essential-collection/svg/id-card-2.svg57
-rw-r--r--img/icons/essential-collection/svg/id-card-3.svg63
-rw-r--r--img/icons/essential-collection/svg/id-card-4.svg57
-rw-r--r--img/icons/essential-collection/svg/id-card-5.svg67
-rw-r--r--img/icons/essential-collection/svg/id-card.svg64
-rw-r--r--img/icons/essential-collection/svg/idea.svg53
-rw-r--r--img/icons/essential-collection/svg/incoming.svg40
-rw-r--r--img/icons/essential-collection/svg/infinity.svg40
-rw-r--r--img/icons/essential-collection/svg/info.svg40
-rw-r--r--img/icons/essential-collection/svg/internet.svg46
-rw-r--r--img/icons/essential-collection/svg/key.svg42
-rw-r--r--img/icons/essential-collection/svg/lamp.svg41
-rw-r--r--img/icons/essential-collection/svg/layers-1.svg63
-rw-r--r--img/icons/essential-collection/svg/layers.svg40
-rw-r--r--img/icons/essential-collection/svg/like-1.svg38
-rw-r--r--img/icons/essential-collection/svg/like-2.svg40
-rw-r--r--img/icons/essential-collection/svg/like.svg47
-rw-r--r--img/icons/essential-collection/svg/link.svg49
-rw-r--r--img/icons/essential-collection/svg/list-1.svg45
-rw-r--r--img/icons/essential-collection/svg/list.svg49
-rw-r--r--img/icons/essential-collection/svg/lock-1.svg45
-rw-r--r--img/icons/essential-collection/svg/lock.svg45
-rw-r--r--img/icons/essential-collection/svg/locked-1.svg41
-rw-r--r--img/icons/essential-collection/svg/locked-2.svg45
-rw-r--r--img/icons/essential-collection/svg/locked-3.svg46
-rw-r--r--img/icons/essential-collection/svg/locked-4.svg42
-rw-r--r--img/icons/essential-collection/svg/locked-5.svg41
-rw-r--r--img/icons/essential-collection/svg/locked-6.svg49
-rw-r--r--img/icons/essential-collection/svg/locked.svg41
-rw-r--r--img/icons/essential-collection/svg/login.svg39
-rw-r--r--img/icons/essential-collection/svg/magic-wand.svg49
-rw-r--r--img/icons/essential-collection/svg/magnet-1.svg61
-rw-r--r--img/icons/essential-collection/svg/magnet-2.svg42
-rw-r--r--img/icons/essential-collection/svg/magnet.svg41
-rw-r--r--img/icons/essential-collection/svg/map-1.svg77
-rw-r--r--img/icons/essential-collection/svg/map-2.svg64
-rw-r--r--img/icons/essential-collection/svg/map-location.svg79
-rw-r--r--img/icons/essential-collection/svg/map.svg48
-rw-r--r--img/icons/essential-collection/svg/megaphone-1.svg70
-rw-r--r--img/icons/essential-collection/svg/megaphone.svg45
-rw-r--r--img/icons/essential-collection/svg/menu-1.svg39
-rw-r--r--img/icons/essential-collection/svg/menu-2.svg39
-rw-r--r--img/icons/essential-collection/svg/menu-3.svg39
-rw-r--r--img/icons/essential-collection/svg/menu-4.svg44
-rw-r--r--img/icons/essential-collection/svg/menu.svg40
-rw-r--r--img/icons/essential-collection/svg/microphone-1.svg85
-rw-r--r--img/icons/essential-collection/svg/microphone.svg43
-rw-r--r--img/icons/essential-collection/svg/minus-1.svg37
-rw-r--r--img/icons/essential-collection/svg/minus.svg37
-rw-r--r--img/icons/essential-collection/svg/more-1.svg41
-rw-r--r--img/icons/essential-collection/svg/more-2.svg42
-rw-r--r--img/icons/essential-collection/svg/more.svg41
-rw-r--r--img/icons/essential-collection/svg/multiply-1.svg38
-rw-r--r--img/icons/essential-collection/svg/multiply.svg37
-rw-r--r--img/icons/essential-collection/svg/music-player-1.svg40
-rw-r--r--img/icons/essential-collection/svg/music-player-2.svg48
-rw-r--r--img/icons/essential-collection/svg/music-player-3.svg43
-rw-r--r--img/icons/essential-collection/svg/music-player.svg41
-rw-r--r--img/icons/essential-collection/svg/mute.svg41
-rw-r--r--img/icons/essential-collection/svg/muted.svg44
-rw-r--r--img/icons/essential-collection/svg/navigation-1.svg37
-rw-r--r--img/icons/essential-collection/svg/navigation.svg36
-rw-r--r--img/icons/essential-collection/svg/network.svg46
-rw-r--r--img/icons/essential-collection/svg/newspaper.svg49
-rw-r--r--img/icons/essential-collection/svg/next.svg38
-rw-r--r--img/icons/essential-collection/svg/note.svg61
-rw-r--r--img/icons/essential-collection/svg/notebook-1.svg43
-rw-r--r--img/icons/essential-collection/svg/notebook-2.svg43
-rw-r--r--img/icons/essential-collection/svg/notebook-3.svg55
-rw-r--r--img/icons/essential-collection/svg/notebook-4.svg52
-rw-r--r--img/icons/essential-collection/svg/notebook-5.svg40
-rw-r--r--img/icons/essential-collection/svg/notebook.svg73
-rw-r--r--img/icons/essential-collection/svg/notepad-1.svg63
-rw-r--r--img/icons/essential-collection/svg/notepad-2.svg75
-rw-r--r--img/icons/essential-collection/svg/notepad.svg49
-rw-r--r--img/icons/essential-collection/svg/notification.svg38
-rw-r--r--img/icons/essential-collection/svg/paper-plane-1.svg38
-rw-r--r--img/icons/essential-collection/svg/paper-plane.svg39
-rw-r--r--img/icons/essential-collection/svg/pause-1.svg44
-rw-r--r--img/icons/essential-collection/svg/pause.svg37
-rw-r--r--img/icons/essential-collection/svg/percent-1.svg39
-rw-r--r--img/icons/essential-collection/svg/percent.svg38
-rw-r--r--img/icons/essential-collection/svg/perspective.svg50
-rw-r--r--img/icons/essential-collection/svg/photo-camera-1.svg45
-rw-r--r--img/icons/essential-collection/svg/photo-camera.svg50
-rw-r--r--img/icons/essential-collection/svg/photos.svg73
-rw-r--r--img/icons/essential-collection/svg/picture-1.svg43
-rw-r--r--img/icons/essential-collection/svg/picture-2.svg40
-rw-r--r--img/icons/essential-collection/svg/picture.svg41
-rw-r--r--img/icons/essential-collection/svg/pin.svg38
-rw-r--r--img/icons/essential-collection/svg/placeholder-1.svg41
-rw-r--r--img/icons/essential-collection/svg/placeholder-2.svg39
-rw-r--r--img/icons/essential-collection/svg/placeholder-3.svg38
-rw-r--r--img/icons/essential-collection/svg/placeholder.svg39
-rw-r--r--img/icons/essential-collection/svg/placeholders.svg43
-rw-r--r--img/icons/essential-collection/svg/play-button-1.svg42
-rw-r--r--img/icons/essential-collection/svg/play-button.svg37
-rw-r--r--img/icons/essential-collection/svg/plus.svg38
-rw-r--r--img/icons/essential-collection/svg/power.svg38
-rw-r--r--img/icons/essential-collection/svg/previous.svg46
-rw-r--r--img/icons/essential-collection/svg/price-tag.svg48
-rw-r--r--img/icons/essential-collection/svg/print.svg43
-rw-r--r--img/icons/essential-collection/svg/push-pin.svg40
-rw-r--r--img/icons/essential-collection/svg/radar.svg54
-rw-r--r--img/icons/essential-collection/svg/reading.svg39
-rw-r--r--img/icons/essential-collection/svg/record.svg46
-rw-r--r--img/icons/essential-collection/svg/repeat-1.svg46
-rw-r--r--img/icons/essential-collection/svg/repeat.svg41
-rw-r--r--img/icons/essential-collection/svg/restart.svg38
-rw-r--r--img/icons/essential-collection/svg/resume.svg68
-rw-r--r--img/icons/essential-collection/svg/rewind-1.svg48
-rw-r--r--img/icons/essential-collection/svg/rewind.svg37
-rw-r--r--img/icons/essential-collection/svg/route.svg79
-rw-r--r--img/icons/essential-collection/svg/save.svg48
-rw-r--r--img/icons/essential-collection/svg/search-1.svg41
-rw-r--r--img/icons/essential-collection/svg/search.svg41
-rw-r--r--img/icons/essential-collection/svg/send.svg39
-rw-r--r--img/icons/essential-collection/svg/server-1.svg67
-rw-r--r--img/icons/essential-collection/svg/server-2.svg66
-rw-r--r--img/icons/essential-collection/svg/server-3.svg88
-rw-r--r--img/icons/essential-collection/svg/server.svg74
-rw-r--r--img/icons/essential-collection/svg/settings-1.svg78
-rw-r--r--img/icons/essential-collection/svg/settings-2.svg123
-rw-r--r--img/icons/essential-collection/svg/settings-3.svg67
-rw-r--r--img/icons/essential-collection/svg/settings-4.svg43
-rw-r--r--img/icons/essential-collection/svg/settings-5.svg44
-rw-r--r--img/icons/essential-collection/svg/settings-6.svg47
-rw-r--r--img/icons/essential-collection/svg/settings-7.svg46
-rw-r--r--img/icons/essential-collection/svg/settings-8.svg73
-rw-r--r--img/icons/essential-collection/svg/settings-9.svg101
-rw-r--r--img/icons/essential-collection/svg/settings.svg79
-rw-r--r--img/icons/essential-collection/svg/share-1.svg46
-rw-r--r--img/icons/essential-collection/svg/share-2.svg50
-rw-r--r--img/icons/essential-collection/svg/share.svg43
-rw-r--r--img/icons/essential-collection/svg/shuffle-1.svg52
-rw-r--r--img/icons/essential-collection/svg/shuffle.svg44
-rw-r--r--img/icons/essential-collection/svg/shutdown.svg38
-rw-r--r--img/icons/essential-collection/svg/sign-1.svg42
-rw-r--r--img/icons/essential-collection/svg/sign.svg38
-rw-r--r--img/icons/essential-collection/svg/skip.svg46
-rw-r--r--img/icons/essential-collection/svg/smartphone-1.svg59
-rw-r--r--img/icons/essential-collection/svg/smartphone-10.svg46
-rw-r--r--img/icons/essential-collection/svg/smartphone-11.svg43
-rw-r--r--img/icons/essential-collection/svg/smartphone-2.svg49
-rw-r--r--img/icons/essential-collection/svg/smartphone-3.svg49
-rw-r--r--img/icons/essential-collection/svg/smartphone-4.svg44
-rw-r--r--img/icons/essential-collection/svg/smartphone-5.svg44
-rw-r--r--img/icons/essential-collection/svg/smartphone-6.svg55
-rw-r--r--img/icons/essential-collection/svg/smartphone-7.svg64
-rw-r--r--img/icons/essential-collection/svg/smartphone-8.svg50
-rw-r--r--img/icons/essential-collection/svg/smartphone-9.svg43
-rw-r--r--img/icons/essential-collection/svg/smartphone.svg49
-rw-r--r--img/icons/essential-collection/svg/speaker-1.svg45
-rw-r--r--img/icons/essential-collection/svg/speaker-2.svg48
-rw-r--r--img/icons/essential-collection/svg/speaker-3.svg39
-rw-r--r--img/icons/essential-collection/svg/speaker-4.svg45
-rw-r--r--img/icons/essential-collection/svg/speaker-5.svg43
-rw-r--r--img/icons/essential-collection/svg/speaker-6.svg41
-rw-r--r--img/icons/essential-collection/svg/speaker-7.svg39
-rw-r--r--img/icons/essential-collection/svg/speaker-8.svg41
-rw-r--r--img/icons/essential-collection/svg/speaker.svg42
-rw-r--r--img/icons/essential-collection/svg/spotlight.svg48
-rw-r--r--img/icons/essential-collection/svg/star-1.svg37
-rw-r--r--img/icons/essential-collection/svg/star.svg41
-rw-r--r--img/icons/essential-collection/svg/stop-1.svg40
-rw-r--r--img/icons/essential-collection/svg/stop.svg37
-rw-r--r--img/icons/essential-collection/svg/stopwatch-1.svg103
-rw-r--r--img/icons/essential-collection/svg/stopwatch-2.svg42
-rw-r--r--img/icons/essential-collection/svg/stopwatch-3.svg69
-rw-r--r--img/icons/essential-collection/svg/stopwatch-4.svg65
-rw-r--r--img/icons/essential-collection/svg/stopwatch.svg91
-rw-r--r--img/icons/essential-collection/svg/street-1.svg44
-rw-r--r--img/icons/essential-collection/svg/street.svg43
-rw-r--r--img/icons/essential-collection/svg/substract-1.svg37
-rw-r--r--img/icons/essential-collection/svg/substract.svg36
-rw-r--r--img/icons/essential-collection/svg/success.svg38
-rw-r--r--img/icons/essential-collection/svg/switch-1.svg38
-rw-r--r--img/icons/essential-collection/svg/switch-2.svg42
-rw-r--r--img/icons/essential-collection/svg/switch-3.svg43
-rw-r--r--img/icons/essential-collection/svg/switch-4.svg41
-rw-r--r--img/icons/essential-collection/svg/switch-5.svg43
-rw-r--r--img/icons/essential-collection/svg/switch-6.svg39
-rw-r--r--img/icons/essential-collection/svg/switch-7.svg40
-rw-r--r--img/icons/essential-collection/svg/switch.svg38
-rw-r--r--img/icons/essential-collection/svg/tabs-1.svg143
-rw-r--r--img/icons/essential-collection/svg/tabs.svg39
-rw-r--r--img/icons/essential-collection/svg/target.svg45
-rw-r--r--img/icons/essential-collection/svg/television-1.svg46
-rw-r--r--img/icons/essential-collection/svg/television.svg37
-rw-r--r--img/icons/essential-collection/svg/time.svg41
-rw-r--r--img/icons/essential-collection/svg/trash.svg43
-rw-r--r--img/icons/essential-collection/svg/umbrella.svg39
-rw-r--r--img/icons/essential-collection/svg/unlink.svg41
-rw-r--r--img/icons/essential-collection/svg/unlocked-1.svg43
-rw-r--r--img/icons/essential-collection/svg/unlocked-2.svg41
-rw-r--r--img/icons/essential-collection/svg/unlocked.svg49
-rw-r--r--img/icons/essential-collection/svg/upload.svg39
-rw-r--r--img/icons/essential-collection/svg/user-1.svg41
-rw-r--r--img/icons/essential-collection/svg/user-2.svg50
-rw-r--r--img/icons/essential-collection/svg/user-3.svg49
-rw-r--r--img/icons/essential-collection/svg/user-4.svg49
-rw-r--r--img/icons/essential-collection/svg/user-5.svg59
-rw-r--r--img/icons/essential-collection/svg/user-6.svg54
-rw-r--r--img/icons/essential-collection/svg/user-7.svg48
-rw-r--r--img/icons/essential-collection/svg/user.svg40
-rw-r--r--img/icons/essential-collection/svg/users-1.svg47
-rw-r--r--img/icons/essential-collection/svg/users.svg48
-rw-r--r--img/icons/essential-collection/svg/video-camera-1.svg43
-rw-r--r--img/icons/essential-collection/svg/video-camera.svg41
-rw-r--r--img/icons/essential-collection/svg/video-player-1.svg47
-rw-r--r--img/icons/essential-collection/svg/video-player-2.svg45
-rw-r--r--img/icons/essential-collection/svg/video-player.svg45
-rw-r--r--img/icons/essential-collection/svg/view-1.svg40
-rw-r--r--img/icons/essential-collection/svg/view-2.svg40
-rw-r--r--img/icons/essential-collection/svg/view.svg40
-rw-r--r--img/icons/essential-collection/svg/volume-control-1.svg45
-rw-r--r--img/icons/essential-collection/svg/volume-control.svg39
-rw-r--r--img/icons/essential-collection/svg/warning.svg38
-rw-r--r--img/icons/essential-collection/svg/wifi-1.svg56
-rw-r--r--img/icons/essential-collection/svg/wifi.svg46
-rw-r--r--img/icons/essential-collection/svg/windows-1.svg38
-rw-r--r--img/icons/essential-collection/svg/windows-2.svg44
-rw-r--r--img/icons/essential-collection/svg/windows-3.svg62
-rw-r--r--img/icons/essential-collection/svg/windows-4.svg62
-rw-r--r--img/icons/essential-collection/svg/windows.svg38
-rw-r--r--img/icons/essential-collection/svg/wireless-internet.svg44
-rw-r--r--img/icons/essential-collection/svg/worldwide-1.svg52
-rw-r--r--img/icons/essential-collection/svg/worldwide.svg47
-rw-r--r--img/icons/essential-collection/svg/zoom-in.svg40
-rw-r--r--img/icons/essential-collection/svg/zoom-out.svg38
-rw-r--r--img/icons/font-awesome/500px.svg2
-rw-r--r--img/icons/font-awesome/address-book-o.svg2
-rw-r--r--img/icons/font-awesome/address-book.svg2
-rw-r--r--img/icons/font-awesome/address-card-o.svg2
-rw-r--r--img/icons/font-awesome/address-card.svg2
-rw-r--r--img/icons/font-awesome/adjust.svg2
-rw-r--r--img/icons/font-awesome/adn.svg2
-rw-r--r--img/icons/font-awesome/align-center.svg2
-rw-r--r--img/icons/font-awesome/align-justify.svg2
-rw-r--r--img/icons/font-awesome/align-left.svg2
-rw-r--r--img/icons/font-awesome/align-right.svg2
-rw-r--r--img/icons/font-awesome/amazon.svg2
-rw-r--r--img/icons/font-awesome/ambulance.svg2
-rw-r--r--img/icons/font-awesome/american-sign-language-interpreting.svg2
-rw-r--r--img/icons/font-awesome/anchor.svg2
-rw-r--r--img/icons/font-awesome/android.svg2
-rw-r--r--img/icons/font-awesome/angellist.svg2
-rw-r--r--img/icons/font-awesome/angle-double-down.svg2
-rw-r--r--img/icons/font-awesome/angle-double-left.svg2
-rw-r--r--img/icons/font-awesome/angle-double-right.svg2
-rw-r--r--img/icons/font-awesome/angle-double-up.svg2
-rw-r--r--img/icons/font-awesome/angle-down.svg2
-rw-r--r--img/icons/font-awesome/angle-left.svg2
-rw-r--r--img/icons/font-awesome/angle-right.svg2
-rw-r--r--img/icons/font-awesome/angle-up.svg2
-rw-r--r--img/icons/font-awesome/apple.svg2
-rw-r--r--img/icons/font-awesome/archive.svg2
-rw-r--r--img/icons/font-awesome/area-chart.svg2
-rw-r--r--img/icons/font-awesome/arrow-circle-down.svg2
-rw-r--r--img/icons/font-awesome/arrow-circle-left.svg2
-rw-r--r--img/icons/font-awesome/arrow-circle-o-down.svg2
-rw-r--r--img/icons/font-awesome/arrow-circle-o-left.svg2
-rw-r--r--img/icons/font-awesome/arrow-circle-o-right.svg2
-rw-r--r--img/icons/font-awesome/arrow-circle-o-up.svg2
-rw-r--r--img/icons/font-awesome/arrow-circle-right.svg2
-rw-r--r--img/icons/font-awesome/arrow-circle-up.svg2
-rw-r--r--img/icons/font-awesome/arrow-down.svg2
-rw-r--r--img/icons/font-awesome/arrow-left.svg2
-rw-r--r--img/icons/font-awesome/arrow-right.svg2
-rw-r--r--img/icons/font-awesome/arrow-up.svg2
-rw-r--r--img/icons/font-awesome/arrows-alt.svg2
-rw-r--r--img/icons/font-awesome/arrows-h.svg2
-rw-r--r--img/icons/font-awesome/arrows-v.svg2
-rw-r--r--img/icons/font-awesome/arrows.svg2
-rw-r--r--img/icons/font-awesome/asl-interpreting.svg2
-rw-r--r--img/icons/font-awesome/assistive-listening-systems.svg2
-rw-r--r--img/icons/font-awesome/asterisk.svg2
-rw-r--r--img/icons/font-awesome/at.svg2
-rw-r--r--img/icons/font-awesome/audio-description.svg2
-rw-r--r--img/icons/font-awesome/automobile.svg2
-rw-r--r--img/icons/font-awesome/backward.svg2
-rw-r--r--img/icons/font-awesome/balance-scale.svg2
-rw-r--r--img/icons/font-awesome/ban.svg2
-rw-r--r--img/icons/font-awesome/bandcamp.svg2
-rw-r--r--img/icons/font-awesome/bank.svg2
-rw-r--r--img/icons/font-awesome/bar-chart-o.svg2
-rw-r--r--img/icons/font-awesome/bar-chart.svg2
-rw-r--r--img/icons/font-awesome/barcode.svg2
-rw-r--r--img/icons/font-awesome/bars.svg2
-rw-r--r--img/icons/font-awesome/bath.svg2
-rw-r--r--img/icons/font-awesome/bathtub.svg2
-rw-r--r--img/icons/font-awesome/battery-0.svg2
-rw-r--r--img/icons/font-awesome/battery-1.svg2
-rw-r--r--img/icons/font-awesome/battery-2.svg2
-rw-r--r--img/icons/font-awesome/battery-3.svg2
-rw-r--r--img/icons/font-awesome/battery-4.svg2
-rw-r--r--img/icons/font-awesome/battery-empty.svg2
-rw-r--r--img/icons/font-awesome/battery-full.svg2
-rw-r--r--img/icons/font-awesome/battery-half.svg2
-rw-r--r--img/icons/font-awesome/battery-quarter.svg2
-rw-r--r--img/icons/font-awesome/battery-three-quarters.svg2
-rw-r--r--img/icons/font-awesome/battery.svg2
-rw-r--r--img/icons/font-awesome/bed.svg2
-rw-r--r--img/icons/font-awesome/beer.svg2
-rw-r--r--img/icons/font-awesome/behance-square.svg2
-rw-r--r--img/icons/font-awesome/behance.svg2
-rw-r--r--img/icons/font-awesome/bell-o.svg2
-rw-r--r--img/icons/font-awesome/bell-slash-o.svg2
-rw-r--r--img/icons/font-awesome/bell-slash.svg2
-rw-r--r--img/icons/font-awesome/bell.svg2
-rw-r--r--img/icons/font-awesome/bicycle.svg2
-rw-r--r--img/icons/font-awesome/binoculars.svg2
-rw-r--r--img/icons/font-awesome/birthday-cake.svg2
-rw-r--r--img/icons/font-awesome/bitbucket-square.svg2
-rw-r--r--img/icons/font-awesome/bitbucket.svg2
-rw-r--r--img/icons/font-awesome/bitcoin.svg2
-rw-r--r--img/icons/font-awesome/black-tie.svg2
-rw-r--r--img/icons/font-awesome/blind.svg2
-rw-r--r--img/icons/font-awesome/bluetooth-b.svg2
-rw-r--r--img/icons/font-awesome/bluetooth.svg2
-rw-r--r--img/icons/font-awesome/bold.svg2
-rw-r--r--img/icons/font-awesome/bolt.svg2
-rw-r--r--img/icons/font-awesome/bomb.svg2
-rw-r--r--img/icons/font-awesome/book.svg2
-rw-r--r--img/icons/font-awesome/bookmark-o.svg2
-rw-r--r--img/icons/font-awesome/bookmark.svg2
-rw-r--r--img/icons/font-awesome/braille.svg2
-rw-r--r--img/icons/font-awesome/briefcase.svg2
-rw-r--r--img/icons/font-awesome/btc.svg2
-rw-r--r--img/icons/font-awesome/bug.svg2
-rw-r--r--img/icons/font-awesome/building-o.svg2
-rw-r--r--img/icons/font-awesome/building.svg2
-rw-r--r--img/icons/font-awesome/bullhorn.svg2
-rw-r--r--img/icons/font-awesome/bullseye.svg2
-rw-r--r--img/icons/font-awesome/bus.svg2
-rw-r--r--img/icons/font-awesome/buysellads.svg2
-rw-r--r--img/icons/font-awesome/cab.svg2
-rw-r--r--img/icons/font-awesome/calculator.svg2
-rw-r--r--img/icons/font-awesome/calendar-check-o.svg2
-rw-r--r--img/icons/font-awesome/calendar-minus-o.svg2
-rw-r--r--img/icons/font-awesome/calendar-o.svg2
-rw-r--r--img/icons/font-awesome/calendar-plus-o.svg2
-rw-r--r--img/icons/font-awesome/calendar-times-o.svg2
-rw-r--r--img/icons/font-awesome/calendar.svg2
-rw-r--r--img/icons/font-awesome/camera-retro.svg2
-rw-r--r--img/icons/font-awesome/camera.svg2
-rw-r--r--img/icons/font-awesome/car.svg2
-rw-r--r--img/icons/font-awesome/caret-down.svg2
-rw-r--r--img/icons/font-awesome/caret-left.svg2
-rw-r--r--img/icons/font-awesome/caret-right.svg2
-rw-r--r--img/icons/font-awesome/caret-square-o-down.svg2
-rw-r--r--img/icons/font-awesome/caret-square-o-left.svg2
-rw-r--r--img/icons/font-awesome/caret-square-o-right.svg2
-rw-r--r--img/icons/font-awesome/caret-square-o-up.svg2
-rw-r--r--img/icons/font-awesome/caret-up.svg2
-rw-r--r--img/icons/font-awesome/cart-arrow-down.svg2
-rw-r--r--img/icons/font-awesome/cart-plus.svg2
-rw-r--r--img/icons/font-awesome/cc-amex.svg2
-rw-r--r--img/icons/font-awesome/cc-diners-club.svg2
-rw-r--r--img/icons/font-awesome/cc-discover.svg2
-rw-r--r--img/icons/font-awesome/cc-jcb.svg2
-rw-r--r--img/icons/font-awesome/cc-mastercard.svg2
-rw-r--r--img/icons/font-awesome/cc-paypal.svg2
-rw-r--r--img/icons/font-awesome/cc-stripe.svg2
-rw-r--r--img/icons/font-awesome/cc-visa.svg2
-rw-r--r--img/icons/font-awesome/cc.svg2
-rw-r--r--img/icons/font-awesome/certificate.svg2
-rw-r--r--img/icons/font-awesome/chain-broken.svg2
-rw-r--r--img/icons/font-awesome/chain.svg2
-rw-r--r--img/icons/font-awesome/check-circle-o.svg2
-rw-r--r--img/icons/font-awesome/check-circle.svg2
-rw-r--r--img/icons/font-awesome/check-square-o.svg2
-rw-r--r--img/icons/font-awesome/check-square.svg2
-rw-r--r--img/icons/font-awesome/check.svg2
-rw-r--r--img/icons/font-awesome/chevron-circle-down.svg2
-rw-r--r--img/icons/font-awesome/chevron-circle-left.svg2
-rw-r--r--img/icons/font-awesome/chevron-circle-right.svg2
-rw-r--r--img/icons/font-awesome/chevron-circle-up.svg2
-rw-r--r--img/icons/font-awesome/chevron-down.svg2
-rw-r--r--img/icons/font-awesome/chevron-left.svg2
-rw-r--r--img/icons/font-awesome/chevron-right.svg2
-rw-r--r--img/icons/font-awesome/chevron-up.svg2
-rw-r--r--img/icons/font-awesome/child.svg2
-rw-r--r--img/icons/font-awesome/chrome.svg2
-rw-r--r--img/icons/font-awesome/circle-o-notch.svg2
-rw-r--r--img/icons/font-awesome/circle-o.svg2
-rw-r--r--img/icons/font-awesome/circle-thin.svg2
-rw-r--r--img/icons/font-awesome/circle.svg2
-rw-r--r--img/icons/font-awesome/clipboard.svg2
-rw-r--r--img/icons/font-awesome/clock-o.svg2
-rw-r--r--img/icons/font-awesome/clone.svg2
-rw-r--r--img/icons/font-awesome/close.svg2
-rw-r--r--img/icons/font-awesome/cloud-download.svg2
-rw-r--r--img/icons/font-awesome/cloud-upload.svg2
-rw-r--r--img/icons/font-awesome/cloud.svg2
-rw-r--r--img/icons/font-awesome/cny.svg2
-rw-r--r--img/icons/font-awesome/code-fork.svg2
-rw-r--r--img/icons/font-awesome/code.svg2
-rw-r--r--img/icons/font-awesome/codepen.svg2
-rw-r--r--img/icons/font-awesome/codiepie.svg2
-rw-r--r--img/icons/font-awesome/coffee.svg2
-rw-r--r--img/icons/font-awesome/cog.svg2
-rw-r--r--img/icons/font-awesome/cogs.svg2
-rw-r--r--img/icons/font-awesome/columns.svg2
-rw-r--r--img/icons/font-awesome/comment-o.svg2
-rw-r--r--img/icons/font-awesome/comment.svg2
-rw-r--r--img/icons/font-awesome/commenting-o.svg2
-rw-r--r--img/icons/font-awesome/commenting.svg2
-rw-r--r--img/icons/font-awesome/comments-o.svg2
-rw-r--r--img/icons/font-awesome/comments.svg2
-rw-r--r--img/icons/font-awesome/compass.svg2
-rw-r--r--img/icons/font-awesome/compress.svg2
-rw-r--r--img/icons/font-awesome/connectdevelop.svg2
-rw-r--r--img/icons/font-awesome/contao.svg2
-rw-r--r--img/icons/font-awesome/copy.svg2
-rw-r--r--img/icons/font-awesome/copyright.svg2
-rw-r--r--img/icons/font-awesome/creative-commons.svg2
-rw-r--r--img/icons/font-awesome/credit-card-alt.svg2
-rw-r--r--img/icons/font-awesome/credit-card.svg2
-rw-r--r--img/icons/font-awesome/crop.svg2
-rw-r--r--img/icons/font-awesome/crosshairs.svg2
-rw-r--r--img/icons/font-awesome/css3.svg2
-rw-r--r--img/icons/font-awesome/cube.svg2
-rw-r--r--img/icons/font-awesome/cubes.svg2
-rw-r--r--img/icons/font-awesome/cut.svg2
-rw-r--r--img/icons/font-awesome/cutlery.svg2
-rw-r--r--img/icons/font-awesome/dashboard.svg2
-rw-r--r--img/icons/font-awesome/dashcube.svg2
-rw-r--r--img/icons/font-awesome/database.svg2
-rw-r--r--img/icons/font-awesome/deaf.svg2
-rw-r--r--img/icons/font-awesome/deafness.svg2
-rw-r--r--img/icons/font-awesome/dedent.svg2
-rw-r--r--img/icons/font-awesome/delicious.svg2
-rw-r--r--img/icons/font-awesome/desktop.svg2
-rw-r--r--img/icons/font-awesome/deviantart.svg2
-rw-r--r--img/icons/font-awesome/diamond.svg2
-rw-r--r--img/icons/font-awesome/digg.svg2
-rw-r--r--img/icons/font-awesome/dollar.svg2
-rw-r--r--img/icons/font-awesome/dot-circle-o.svg2
-rw-r--r--img/icons/font-awesome/download.svg2
-rw-r--r--img/icons/font-awesome/dribbble.svg2
-rw-r--r--img/icons/font-awesome/drivers-license-o.svg2
-rw-r--r--img/icons/font-awesome/drivers-license.svg2
-rw-r--r--img/icons/font-awesome/dropbox.svg2
-rw-r--r--img/icons/font-awesome/drupal.svg2
-rw-r--r--img/icons/font-awesome/edge.svg2
-rw-r--r--img/icons/font-awesome/edit.svg2
-rw-r--r--img/icons/font-awesome/eercast.svg2
-rw-r--r--img/icons/font-awesome/eject.svg2
-rw-r--r--img/icons/font-awesome/ellipsis-h.svg2
-rw-r--r--img/icons/font-awesome/ellipsis-v.svg2
-rw-r--r--img/icons/font-awesome/empire.svg2
-rw-r--r--img/icons/font-awesome/envelope-o.svg2
-rw-r--r--img/icons/font-awesome/envelope-open-o.svg2
-rw-r--r--img/icons/font-awesome/envelope-open.svg2
-rw-r--r--img/icons/font-awesome/envelope-square.svg2
-rw-r--r--img/icons/font-awesome/envelope.svg2
-rw-r--r--img/icons/font-awesome/envira.svg2
-rw-r--r--img/icons/font-awesome/eraser.svg2
-rw-r--r--img/icons/font-awesome/etsy.svg2
-rw-r--r--img/icons/font-awesome/eur.svg2
-rw-r--r--img/icons/font-awesome/euro.svg2
-rw-r--r--img/icons/font-awesome/exchange.svg2
-rw-r--r--img/icons/font-awesome/exclamation-circle.svg2
-rw-r--r--img/icons/font-awesome/exclamation-triangle.svg2
-rw-r--r--img/icons/font-awesome/exclamation.svg2
-rw-r--r--img/icons/font-awesome/expand.svg2
-rw-r--r--img/icons/font-awesome/expeditedssl.svg2
-rw-r--r--img/icons/font-awesome/external-link-square.svg2
-rw-r--r--img/icons/font-awesome/external-link.svg2
-rw-r--r--img/icons/font-awesome/eye-slash.svg2
-rw-r--r--img/icons/font-awesome/eye.svg2
-rw-r--r--img/icons/font-awesome/eyedropper.svg2
-rw-r--r--img/icons/font-awesome/fa.svg2
-rw-r--r--img/icons/font-awesome/facebook-f.svg2
-rw-r--r--img/icons/font-awesome/facebook-official.svg2
-rw-r--r--img/icons/font-awesome/facebook-square.svg2
-rw-r--r--img/icons/font-awesome/facebook.svg2
-rw-r--r--img/icons/font-awesome/fast-backward.svg2
-rw-r--r--img/icons/font-awesome/fast-forward.svg2
-rw-r--r--img/icons/font-awesome/fax.svg2
-rw-r--r--img/icons/font-awesome/feed.svg2
-rw-r--r--img/icons/font-awesome/female.svg2
-rw-r--r--img/icons/font-awesome/fighter-jet.svg2
-rw-r--r--img/icons/font-awesome/file-archive-o.svg2
-rw-r--r--img/icons/font-awesome/file-audio-o.svg2
-rw-r--r--img/icons/font-awesome/file-code-o.svg2
-rw-r--r--img/icons/font-awesome/file-excel-o.svg2
-rw-r--r--img/icons/font-awesome/file-image-o.svg2
-rw-r--r--img/icons/font-awesome/file-movie-o.svg2
-rw-r--r--img/icons/font-awesome/file-o.svg2
-rw-r--r--img/icons/font-awesome/file-pdf-o.svg2
-rw-r--r--img/icons/font-awesome/file-photo-o.svg2
-rw-r--r--img/icons/font-awesome/file-picture-o.svg2
-rw-r--r--img/icons/font-awesome/file-powerpoint-o.svg2
-rw-r--r--img/icons/font-awesome/file-sound-o.svg2
-rw-r--r--img/icons/font-awesome/file-text-o.svg2
-rw-r--r--img/icons/font-awesome/file-text.svg2
-rw-r--r--img/icons/font-awesome/file-video-o.svg2
-rw-r--r--img/icons/font-awesome/file-word-o.svg2
-rw-r--r--img/icons/font-awesome/file-zip-o.svg2
-rw-r--r--img/icons/font-awesome/file.svg2
-rw-r--r--img/icons/font-awesome/files-o.svg2
-rw-r--r--img/icons/font-awesome/film.svg2
-rw-r--r--img/icons/font-awesome/filter.svg2
-rw-r--r--img/icons/font-awesome/fire-extinguisher.svg2
-rw-r--r--img/icons/font-awesome/fire.svg2
-rw-r--r--img/icons/font-awesome/firefox.svg2
-rw-r--r--img/icons/font-awesome/first-order.svg2
-rw-r--r--img/icons/font-awesome/flag-checkered.svg2
-rw-r--r--img/icons/font-awesome/flag-o.svg2
-rw-r--r--img/icons/font-awesome/flag.svg2
-rw-r--r--img/icons/font-awesome/flash.svg2
-rw-r--r--img/icons/font-awesome/flask.svg2
-rw-r--r--img/icons/font-awesome/flickr.svg2
-rw-r--r--img/icons/font-awesome/floppy-o.svg2
-rw-r--r--img/icons/font-awesome/folder-o.svg2
-rw-r--r--img/icons/font-awesome/folder-open-o.svg2
-rw-r--r--img/icons/font-awesome/folder-open.svg2
-rw-r--r--img/icons/font-awesome/folder.svg2
-rw-r--r--img/icons/font-awesome/font-awesome.svg2
-rw-r--r--img/icons/font-awesome/font.svg2
-rw-r--r--img/icons/font-awesome/fonticons.svg2
-rw-r--r--img/icons/font-awesome/fort-awesome.svg2
-rw-r--r--img/icons/font-awesome/forumbee.svg2
-rw-r--r--img/icons/font-awesome/forward.svg2
-rw-r--r--img/icons/font-awesome/foursquare.svg2
-rw-r--r--img/icons/font-awesome/free-code-camp.svg2
-rw-r--r--img/icons/font-awesome/frown-o.svg2
-rw-r--r--img/icons/font-awesome/futbol-o.svg2
-rw-r--r--img/icons/font-awesome/gamepad.svg2
-rw-r--r--img/icons/font-awesome/gavel.svg2
-rw-r--r--img/icons/font-awesome/gbp.svg2
-rw-r--r--img/icons/font-awesome/ge.svg2
-rw-r--r--img/icons/font-awesome/gear.svg2
-rw-r--r--img/icons/font-awesome/gears.svg2
-rw-r--r--img/icons/font-awesome/genderless.svg2
-rw-r--r--img/icons/font-awesome/get-pocket.svg2
-rw-r--r--img/icons/font-awesome/gg-circle.svg2
-rw-r--r--img/icons/font-awesome/gg.svg2
-rw-r--r--img/icons/font-awesome/gift.svg2
-rw-r--r--img/icons/font-awesome/git-square.svg2
-rw-r--r--img/icons/font-awesome/git.svg2
-rw-r--r--img/icons/font-awesome/github-alt.svg2
-rw-r--r--img/icons/font-awesome/github-square.svg2
-rw-r--r--img/icons/font-awesome/github.svg2
-rw-r--r--img/icons/font-awesome/gitlab.svg2
-rw-r--r--img/icons/font-awesome/gittip.svg2
-rw-r--r--img/icons/font-awesome/glass.svg2
-rw-r--r--img/icons/font-awesome/glide-g.svg2
-rw-r--r--img/icons/font-awesome/glide.svg2
-rw-r--r--img/icons/font-awesome/globe.svg2
-rw-r--r--img/icons/font-awesome/google-plus-circle.svg2
-rw-r--r--img/icons/font-awesome/google-plus-official.svg2
-rw-r--r--img/icons/font-awesome/google-plus-square.svg2
-rw-r--r--img/icons/font-awesome/google-plus.svg2
-rw-r--r--img/icons/font-awesome/google-wallet.svg2
-rw-r--r--img/icons/font-awesome/google.svg2
-rw-r--r--img/icons/font-awesome/graduation-cap.svg2
-rw-r--r--img/icons/font-awesome/gratipay.svg2
-rw-r--r--img/icons/font-awesome/grav.svg2
-rw-r--r--img/icons/font-awesome/group.svg2
-rw-r--r--img/icons/font-awesome/h-square.svg2
-rw-r--r--img/icons/font-awesome/hacker-news.svg2
-rw-r--r--img/icons/font-awesome/hand-grab-o.svg2
-rw-r--r--img/icons/font-awesome/hand-lizard-o.svg2
-rw-r--r--img/icons/font-awesome/hand-o-down.svg2
-rw-r--r--img/icons/font-awesome/hand-o-left.svg2
-rw-r--r--img/icons/font-awesome/hand-o-right.svg2
-rw-r--r--img/icons/font-awesome/hand-o-up.svg2
-rw-r--r--img/icons/font-awesome/hand-paper-o.svg2
-rw-r--r--img/icons/font-awesome/hand-peace-o.svg2
-rw-r--r--img/icons/font-awesome/hand-pointer-o.svg2
-rw-r--r--img/icons/font-awesome/hand-rock-o.svg2
-rw-r--r--img/icons/font-awesome/hand-scissors-o.svg2
-rw-r--r--img/icons/font-awesome/hand-spock-o.svg2
-rw-r--r--img/icons/font-awesome/hand-stop-o.svg2
-rw-r--r--img/icons/font-awesome/handshake-o.svg2
-rw-r--r--img/icons/font-awesome/hard-of-hearing.svg2
-rw-r--r--img/icons/font-awesome/hashtag.svg2
-rw-r--r--img/icons/font-awesome/hdd-o.svg2
-rw-r--r--img/icons/font-awesome/header.svg2
-rw-r--r--img/icons/font-awesome/headphones.svg2
-rw-r--r--img/icons/font-awesome/heart-o.svg2
-rw-r--r--img/icons/font-awesome/heart.svg2
-rw-r--r--img/icons/font-awesome/heartbeat.svg2
-rw-r--r--img/icons/font-awesome/history.svg2
-rw-r--r--img/icons/font-awesome/home.svg2
-rw-r--r--img/icons/font-awesome/hospital-o.svg2
-rw-r--r--img/icons/font-awesome/hotel.svg2
-rw-r--r--img/icons/font-awesome/hourglass-1.svg2
-rw-r--r--img/icons/font-awesome/hourglass-2.svg2
-rw-r--r--img/icons/font-awesome/hourglass-3.svg2
-rw-r--r--img/icons/font-awesome/hourglass-end.svg2
-rw-r--r--img/icons/font-awesome/hourglass-half.svg2
-rw-r--r--img/icons/font-awesome/hourglass-o.svg2
-rw-r--r--img/icons/font-awesome/hourglass-start.svg2
-rw-r--r--img/icons/font-awesome/hourglass.svg2
-rw-r--r--img/icons/font-awesome/houzz.svg2
-rw-r--r--img/icons/font-awesome/html5.svg2
-rw-r--r--img/icons/font-awesome/i-cursor.svg2
-rw-r--r--img/icons/font-awesome/id-badge.svg2
-rw-r--r--img/icons/font-awesome/id-card-o.svg2
-rw-r--r--img/icons/font-awesome/id-card.svg2
-rw-r--r--img/icons/font-awesome/ils.svg2
-rw-r--r--img/icons/font-awesome/image.svg2
-rw-r--r--img/icons/font-awesome/imdb.svg2
-rw-r--r--img/icons/font-awesome/inbox.svg2
-rw-r--r--img/icons/font-awesome/indent.svg2
-rw-r--r--img/icons/font-awesome/industry.svg2
-rw-r--r--img/icons/font-awesome/info-circle.svg2
-rw-r--r--img/icons/font-awesome/info.svg2
-rw-r--r--img/icons/font-awesome/inr.svg2
-rw-r--r--img/icons/font-awesome/instagram.svg2
-rw-r--r--img/icons/font-awesome/institution.svg2
-rw-r--r--img/icons/font-awesome/internet-explorer.svg2
-rw-r--r--img/icons/font-awesome/intersex.svg2
-rw-r--r--img/icons/font-awesome/ioxhost.svg2
-rw-r--r--img/icons/font-awesome/italic.svg2
-rw-r--r--img/icons/font-awesome/joomla.svg2
-rw-r--r--img/icons/font-awesome/jpy.svg2
-rw-r--r--img/icons/font-awesome/jsfiddle.svg2
-rw-r--r--img/icons/font-awesome/key.svg2
-rw-r--r--img/icons/font-awesome/keyboard-o.svg2
-rw-r--r--img/icons/font-awesome/krw.svg2
-rw-r--r--img/icons/font-awesome/language.svg2
-rw-r--r--img/icons/font-awesome/laptop.svg2
-rw-r--r--img/icons/font-awesome/lastfm-square.svg2
-rw-r--r--img/icons/font-awesome/lastfm.svg2
-rw-r--r--img/icons/font-awesome/leaf.svg2
-rw-r--r--img/icons/font-awesome/leanpub.svg2
-rw-r--r--img/icons/font-awesome/legal.svg2
-rw-r--r--img/icons/font-awesome/lemon-o.svg2
-rw-r--r--img/icons/font-awesome/level-down.svg2
-rw-r--r--img/icons/font-awesome/level-up.svg2
-rw-r--r--img/icons/font-awesome/life-bouy.svg2
-rw-r--r--img/icons/font-awesome/life-buoy.svg2
-rw-r--r--img/icons/font-awesome/life-ring.svg2
-rw-r--r--img/icons/font-awesome/life-saver.svg2
-rw-r--r--img/icons/font-awesome/lightbulb-o.svg2
-rw-r--r--img/icons/font-awesome/line-chart.svg2
-rw-r--r--img/icons/font-awesome/link.svg2
-rw-r--r--img/icons/font-awesome/linkedin-square.svg2
-rw-r--r--img/icons/font-awesome/linkedin.svg2
-rw-r--r--img/icons/font-awesome/linode.svg2
-rw-r--r--img/icons/font-awesome/linux.svg2
-rw-r--r--img/icons/font-awesome/list-alt.svg2
-rw-r--r--img/icons/font-awesome/list-ol.svg2
-rw-r--r--img/icons/font-awesome/list-ul.svg2
-rw-r--r--img/icons/font-awesome/list.svg2
-rw-r--r--img/icons/font-awesome/location-arrow.svg2
-rw-r--r--img/icons/font-awesome/lock.svg2
-rw-r--r--img/icons/font-awesome/long-arrow-down.svg2
-rw-r--r--img/icons/font-awesome/long-arrow-left.svg2
-rw-r--r--img/icons/font-awesome/long-arrow-right.svg2
-rw-r--r--img/icons/font-awesome/long-arrow-up.svg2
-rw-r--r--img/icons/font-awesome/low-vision.svg2
-rw-r--r--img/icons/font-awesome/magic.svg2
-rw-r--r--img/icons/font-awesome/magnet.svg2
-rw-r--r--img/icons/font-awesome/mail-forward.svg2
-rw-r--r--img/icons/font-awesome/mail-reply-all.svg2
-rw-r--r--img/icons/font-awesome/mail-reply.svg2
-rw-r--r--img/icons/font-awesome/male.svg2
-rw-r--r--img/icons/font-awesome/map-marker.svg2
-rw-r--r--img/icons/font-awesome/map-o.svg2
-rw-r--r--img/icons/font-awesome/map-pin.svg2
-rw-r--r--img/icons/font-awesome/map-signs.svg2
-rw-r--r--img/icons/font-awesome/map.svg2
-rw-r--r--img/icons/font-awesome/mars-double.svg2
-rw-r--r--img/icons/font-awesome/mars-stroke-h.svg2
-rw-r--r--img/icons/font-awesome/mars-stroke-v.svg2
-rw-r--r--img/icons/font-awesome/mars-stroke.svg2
-rw-r--r--img/icons/font-awesome/mars.svg2
-rw-r--r--img/icons/font-awesome/maxcdn.svg2
-rw-r--r--img/icons/font-awesome/meanpath.svg2
-rw-r--r--img/icons/font-awesome/medium.svg2
-rw-r--r--img/icons/font-awesome/medkit.svg2
-rw-r--r--img/icons/font-awesome/meetup.svg2
-rw-r--r--img/icons/font-awesome/meh-o.svg2
-rw-r--r--img/icons/font-awesome/mercury.svg2
-rw-r--r--img/icons/font-awesome/microchip.svg2
-rw-r--r--img/icons/font-awesome/microphone-slash.svg2
-rw-r--r--img/icons/font-awesome/microphone.svg2
-rw-r--r--img/icons/font-awesome/minus-circle.svg2
-rw-r--r--img/icons/font-awesome/minus-square-o.svg2
-rw-r--r--img/icons/font-awesome/minus-square.svg2
-rw-r--r--img/icons/font-awesome/minus.svg2
-rw-r--r--img/icons/font-awesome/mixcloud.svg2
-rw-r--r--img/icons/font-awesome/mobile-phone.svg2
-rw-r--r--img/icons/font-awesome/mobile.svg2
-rw-r--r--img/icons/font-awesome/modx.svg2
-rw-r--r--img/icons/font-awesome/money.svg2
-rw-r--r--img/icons/font-awesome/moon-o.svg2
-rw-r--r--img/icons/font-awesome/mortar-board.svg2
-rw-r--r--img/icons/font-awesome/motorcycle.svg2
-rw-r--r--img/icons/font-awesome/mouse-pointer.svg2
-rw-r--r--img/icons/font-awesome/music.svg2
-rw-r--r--img/icons/font-awesome/navicon.svg2
-rw-r--r--img/icons/font-awesome/neuter.svg2
-rw-r--r--img/icons/font-awesome/newspaper-o.svg2
-rw-r--r--img/icons/font-awesome/object-group.svg2
-rw-r--r--img/icons/font-awesome/object-ungroup.svg2
-rw-r--r--img/icons/font-awesome/odnoklassniki-square.svg2
-rw-r--r--img/icons/font-awesome/odnoklassniki.svg2
-rw-r--r--img/icons/font-awesome/opencart.svg2
-rw-r--r--img/icons/font-awesome/openid.svg2
-rw-r--r--img/icons/font-awesome/opera.svg2
-rw-r--r--img/icons/font-awesome/optin-monster.svg2
-rw-r--r--img/icons/font-awesome/outdent.svg2
-rw-r--r--img/icons/font-awesome/pagelines.svg2
-rw-r--r--img/icons/font-awesome/paint-brush.svg2
-rw-r--r--img/icons/font-awesome/paper-plane-o.svg2
-rw-r--r--img/icons/font-awesome/paper-plane.svg2
-rw-r--r--img/icons/font-awesome/paperclip.svg2
-rw-r--r--img/icons/font-awesome/paragraph.svg2
-rw-r--r--img/icons/font-awesome/paste.svg2
-rw-r--r--img/icons/font-awesome/pause-circle-o.svg2
-rw-r--r--img/icons/font-awesome/pause-circle.svg2
-rw-r--r--img/icons/font-awesome/pause.svg2
-rw-r--r--img/icons/font-awesome/paw.svg2
-rw-r--r--img/icons/font-awesome/paypal.svg2
-rw-r--r--img/icons/font-awesome/pencil-square-o.svg2
-rw-r--r--img/icons/font-awesome/pencil-square.svg2
-rw-r--r--img/icons/font-awesome/pencil.svg2
-rw-r--r--img/icons/font-awesome/percent.svg2
-rw-r--r--img/icons/font-awesome/phone-square.svg2
-rw-r--r--img/icons/font-awesome/phone.svg2
-rw-r--r--img/icons/font-awesome/photo.svg2
-rw-r--r--img/icons/font-awesome/picture-o.svg2
-rw-r--r--img/icons/font-awesome/pie-chart.svg2
-rw-r--r--img/icons/font-awesome/pied-piper-alt.svg2
-rw-r--r--img/icons/font-awesome/pied-piper-pp.svg2
-rw-r--r--img/icons/font-awesome/pied-piper.svg2
-rw-r--r--img/icons/font-awesome/pinterest-p.svg2
-rw-r--r--img/icons/font-awesome/pinterest-square.svg2
-rw-r--r--img/icons/font-awesome/pinterest.svg2
-rw-r--r--img/icons/font-awesome/plane.svg2
-rw-r--r--img/icons/font-awesome/play-circle-o.svg2
-rw-r--r--img/icons/font-awesome/play-circle.svg2
-rw-r--r--img/icons/font-awesome/play.svg2
-rw-r--r--img/icons/font-awesome/plug.svg2
-rw-r--r--img/icons/font-awesome/plus-circle.svg2
-rw-r--r--img/icons/font-awesome/plus-square-o.svg2
-rw-r--r--img/icons/font-awesome/plus-square.svg2
-rw-r--r--img/icons/font-awesome/plus.svg2
-rw-r--r--img/icons/font-awesome/podcast.svg2
-rw-r--r--img/icons/font-awesome/power-off.svg2
-rw-r--r--img/icons/font-awesome/print.svg2
-rw-r--r--img/icons/font-awesome/product-hunt.svg2
-rw-r--r--img/icons/font-awesome/puzzle-piece.svg2
-rw-r--r--img/icons/font-awesome/qq.svg2
-rw-r--r--img/icons/font-awesome/qrcode.svg2
-rw-r--r--img/icons/font-awesome/question-circle-o.svg2
-rw-r--r--img/icons/font-awesome/question-circle.svg2
-rw-r--r--img/icons/font-awesome/question.svg2
-rw-r--r--img/icons/font-awesome/quora.svg2
-rw-r--r--img/icons/font-awesome/quote-left.svg2
-rw-r--r--img/icons/font-awesome/quote-right.svg2
-rw-r--r--img/icons/font-awesome/ra.svg2
-rw-r--r--img/icons/font-awesome/random.svg2
-rw-r--r--img/icons/font-awesome/ravelry.svg2
-rw-r--r--img/icons/font-awesome/rebel.svg2
-rw-r--r--img/icons/font-awesome/recycle.svg2
-rw-r--r--img/icons/font-awesome/reddit-alien.svg2
-rw-r--r--img/icons/font-awesome/reddit-square.svg2
-rw-r--r--img/icons/font-awesome/reddit.svg2
-rw-r--r--img/icons/font-awesome/refresh.svg2
-rw-r--r--img/icons/font-awesome/registered.svg2
-rw-r--r--img/icons/font-awesome/remove.svg2
-rw-r--r--img/icons/font-awesome/renren.svg2
-rw-r--r--img/icons/font-awesome/reorder.svg2
-rw-r--r--img/icons/font-awesome/repeat.svg2
-rw-r--r--img/icons/font-awesome/reply-all.svg2
-rw-r--r--img/icons/font-awesome/reply.svg2
-rw-r--r--img/icons/font-awesome/resistance.svg2
-rw-r--r--img/icons/font-awesome/retweet.svg2
-rw-r--r--img/icons/font-awesome/rmb.svg2
-rw-r--r--img/icons/font-awesome/road.svg2
-rw-r--r--img/icons/font-awesome/rocket.svg2
-rw-r--r--img/icons/font-awesome/rotate-left.svg2
-rw-r--r--img/icons/font-awesome/rotate-right.svg2
-rw-r--r--img/icons/font-awesome/rouble.svg2
-rw-r--r--img/icons/font-awesome/rss-square.svg2
-rw-r--r--img/icons/font-awesome/rss.svg2
-rw-r--r--img/icons/font-awesome/rub.svg2
-rw-r--r--img/icons/font-awesome/ruble.svg2
-rw-r--r--img/icons/font-awesome/rupee.svg2
-rw-r--r--img/icons/font-awesome/s15.svg2
-rw-r--r--img/icons/font-awesome/safari.svg2
-rw-r--r--img/icons/font-awesome/save.svg2
-rw-r--r--img/icons/font-awesome/scissors.svg2
-rw-r--r--img/icons/font-awesome/scribd.svg2
-rw-r--r--img/icons/font-awesome/search-minus.svg2
-rw-r--r--img/icons/font-awesome/search-plus.svg2
-rw-r--r--img/icons/font-awesome/search.svg2
-rw-r--r--img/icons/font-awesome/sellsy.svg2
-rw-r--r--img/icons/font-awesome/send-o.svg2
-rw-r--r--img/icons/font-awesome/send.svg2
-rw-r--r--img/icons/font-awesome/server.svg2
-rw-r--r--img/icons/font-awesome/share-alt-square.svg2
-rw-r--r--img/icons/font-awesome/share-alt.svg2
-rw-r--r--img/icons/font-awesome/share-square-o.svg2
-rw-r--r--img/icons/font-awesome/share-square.svg2
-rw-r--r--img/icons/font-awesome/share.svg2
-rw-r--r--img/icons/font-awesome/shekel.svg2
-rw-r--r--img/icons/font-awesome/sheqel.svg2
-rw-r--r--img/icons/font-awesome/shield.svg2
-rw-r--r--img/icons/font-awesome/ship.svg2
-rw-r--r--img/icons/font-awesome/shirtsinbulk.svg2
-rw-r--r--img/icons/font-awesome/shopping-bag.svg2
-rw-r--r--img/icons/font-awesome/shopping-basket.svg2
-rw-r--r--img/icons/font-awesome/shopping-cart.svg2
-rw-r--r--img/icons/font-awesome/shower.svg2
-rw-r--r--img/icons/font-awesome/sign-in.svg2
-rw-r--r--img/icons/font-awesome/sign-language.svg2
-rw-r--r--img/icons/font-awesome/sign-out.svg2
-rw-r--r--img/icons/font-awesome/signal.svg2
-rw-r--r--img/icons/font-awesome/signing.svg2
-rw-r--r--img/icons/font-awesome/simplybuilt.svg2
-rw-r--r--img/icons/font-awesome/sitemap.svg2
-rw-r--r--img/icons/font-awesome/skyatlas.svg2
-rw-r--r--img/icons/font-awesome/skype.svg2
-rw-r--r--img/icons/font-awesome/slack.svg2
-rw-r--r--img/icons/font-awesome/sliders.svg2
-rw-r--r--img/icons/font-awesome/slideshare.svg2
-rw-r--r--img/icons/font-awesome/smile-o.svg2
-rw-r--r--img/icons/font-awesome/snapchat-ghost.svg2
-rw-r--r--img/icons/font-awesome/snapchat-square.svg2
-rw-r--r--img/icons/font-awesome/snapchat.svg2
-rw-r--r--img/icons/font-awesome/snowflake-o.svg2
-rw-r--r--img/icons/font-awesome/soccer-ball-o.svg2
-rw-r--r--img/icons/font-awesome/sort-alpha-asc.svg2
-rw-r--r--img/icons/font-awesome/sort-alpha-desc.svg2
-rw-r--r--img/icons/font-awesome/sort-amount-asc.svg2
-rw-r--r--img/icons/font-awesome/sort-amount-desc.svg2
-rw-r--r--img/icons/font-awesome/sort-asc.svg2
-rw-r--r--img/icons/font-awesome/sort-desc.svg2
-rw-r--r--img/icons/font-awesome/sort-down.svg2
-rw-r--r--img/icons/font-awesome/sort-numeric-asc.svg2
-rw-r--r--img/icons/font-awesome/sort-numeric-desc.svg2
-rw-r--r--img/icons/font-awesome/sort-up.svg2
-rw-r--r--img/icons/font-awesome/sort.svg2
-rw-r--r--img/icons/font-awesome/soundcloud.svg2
-rw-r--r--img/icons/font-awesome/space-shuttle.svg2
-rw-r--r--img/icons/font-awesome/spinner.svg2
-rw-r--r--img/icons/font-awesome/spoon.svg2
-rw-r--r--img/icons/font-awesome/spotify.svg2
-rw-r--r--img/icons/font-awesome/square-o.svg2
-rw-r--r--img/icons/font-awesome/square.svg2
-rw-r--r--img/icons/font-awesome/stack-exchange.svg2
-rw-r--r--img/icons/font-awesome/stack-overflow.svg2
-rw-r--r--img/icons/font-awesome/star-half-empty.svg2
-rw-r--r--img/icons/font-awesome/star-half-full.svg2
-rw-r--r--img/icons/font-awesome/star-half-o.svg2
-rw-r--r--img/icons/font-awesome/star-half.svg2
-rw-r--r--img/icons/font-awesome/star-o.svg2
-rw-r--r--img/icons/font-awesome/star.svg2
-rw-r--r--img/icons/font-awesome/steam-square.svg2
-rw-r--r--img/icons/font-awesome/steam.svg2
-rw-r--r--img/icons/font-awesome/step-backward.svg2
-rw-r--r--img/icons/font-awesome/step-forward.svg2
-rw-r--r--img/icons/font-awesome/stethoscope.svg2
-rw-r--r--img/icons/font-awesome/sticky-note-o.svg2
-rw-r--r--img/icons/font-awesome/sticky-note.svg2
-rw-r--r--img/icons/font-awesome/stop-circle-o.svg2
-rw-r--r--img/icons/font-awesome/stop-circle.svg2
-rw-r--r--img/icons/font-awesome/stop.svg2
-rw-r--r--img/icons/font-awesome/street-view.svg2
-rw-r--r--img/icons/font-awesome/strikethrough.svg2
-rw-r--r--img/icons/font-awesome/stumbleupon-circle.svg2
-rw-r--r--img/icons/font-awesome/stumbleupon.svg2
-rw-r--r--img/icons/font-awesome/subscript.svg2
-rw-r--r--img/icons/font-awesome/subway.svg2
-rw-r--r--img/icons/font-awesome/suitcase.svg2
-rw-r--r--img/icons/font-awesome/sun-o.svg2
-rw-r--r--img/icons/font-awesome/superpowers.svg2
-rw-r--r--img/icons/font-awesome/superscript.svg2
-rw-r--r--img/icons/font-awesome/support.svg2
-rw-r--r--img/icons/font-awesome/table.svg2
-rw-r--r--img/icons/font-awesome/tablet.svg2
-rw-r--r--img/icons/font-awesome/tachometer.svg2
-rw-r--r--img/icons/font-awesome/tag.svg2
-rw-r--r--img/icons/font-awesome/tags.svg2
-rw-r--r--img/icons/font-awesome/tasks.svg2
-rw-r--r--img/icons/font-awesome/taxi.svg2
-rw-r--r--img/icons/font-awesome/telegram.svg2
-rw-r--r--img/icons/font-awesome/television.svg2
-rw-r--r--img/icons/font-awesome/tencent-weibo.svg2
-rw-r--r--img/icons/font-awesome/terminal.svg2
-rw-r--r--img/icons/font-awesome/text-height.svg2
-rw-r--r--img/icons/font-awesome/text-width.svg2
-rw-r--r--img/icons/font-awesome/th-large.svg2
-rw-r--r--img/icons/font-awesome/th-list.svg2
-rw-r--r--img/icons/font-awesome/th.svg2
-rw-r--r--img/icons/font-awesome/themeisle.svg2
-rw-r--r--img/icons/font-awesome/thermometer-0.svg2
-rw-r--r--img/icons/font-awesome/thermometer-1.svg2
-rw-r--r--img/icons/font-awesome/thermometer-2.svg2
-rw-r--r--img/icons/font-awesome/thermometer-3.svg2
-rw-r--r--img/icons/font-awesome/thermometer-4.svg2
-rw-r--r--img/icons/font-awesome/thermometer-empty.svg2
-rw-r--r--img/icons/font-awesome/thermometer-full.svg2
-rw-r--r--img/icons/font-awesome/thermometer-half.svg2
-rw-r--r--img/icons/font-awesome/thermometer-quarter.svg2
-rw-r--r--img/icons/font-awesome/thermometer-three-quarters.svg2
-rw-r--r--img/icons/font-awesome/thermometer.svg2
-rw-r--r--img/icons/font-awesome/thumb-tack.svg2
-rw-r--r--img/icons/font-awesome/thumbs-down.svg2
-rw-r--r--img/icons/font-awesome/thumbs-o-down.svg2
-rw-r--r--img/icons/font-awesome/thumbs-o-up.svg2
-rw-r--r--img/icons/font-awesome/thumbs-up.svg2
-rw-r--r--img/icons/font-awesome/ticket.svg2
-rw-r--r--img/icons/font-awesome/times-circle-o.svg2
-rw-r--r--img/icons/font-awesome/times-circle.svg2
-rw-r--r--img/icons/font-awesome/times-rectangle-o.svg2
-rw-r--r--img/icons/font-awesome/times-rectangle.svg2
-rw-r--r--img/icons/font-awesome/times.svg2
-rw-r--r--img/icons/font-awesome/tint.svg2
-rw-r--r--img/icons/font-awesome/toggle-down.svg2
-rw-r--r--img/icons/font-awesome/toggle-left.svg2
-rw-r--r--img/icons/font-awesome/toggle-off.svg2
-rw-r--r--img/icons/font-awesome/toggle-on.svg2
-rw-r--r--img/icons/font-awesome/toggle-right.svg2
-rw-r--r--img/icons/font-awesome/toggle-up.svg2
-rw-r--r--img/icons/font-awesome/trademark.svg2
-rw-r--r--img/icons/font-awesome/train.svg2
-rw-r--r--img/icons/font-awesome/transgender-alt.svg2
-rw-r--r--img/icons/font-awesome/transgender.svg2
-rw-r--r--img/icons/font-awesome/trash-o.svg2
-rw-r--r--img/icons/font-awesome/trash.svg2
-rw-r--r--img/icons/font-awesome/tree.svg2
-rw-r--r--img/icons/font-awesome/trello.svg2
-rw-r--r--img/icons/font-awesome/tripadvisor.svg2
-rw-r--r--img/icons/font-awesome/trophy.svg2
-rw-r--r--img/icons/font-awesome/truck.svg2
-rw-r--r--img/icons/font-awesome/try.svg2
-rw-r--r--img/icons/font-awesome/tty.svg2
-rw-r--r--img/icons/font-awesome/tumblr-square.svg2
-rw-r--r--img/icons/font-awesome/tumblr.svg2
-rw-r--r--img/icons/font-awesome/turkish-lira.svg2
-rw-r--r--img/icons/font-awesome/tv.svg2
-rw-r--r--img/icons/font-awesome/twitch.svg2
-rw-r--r--img/icons/font-awesome/twitter-square.svg2
-rw-r--r--img/icons/font-awesome/twitter.svg2
-rw-r--r--img/icons/font-awesome/umbrella.svg2
-rw-r--r--img/icons/font-awesome/underline.svg2
-rw-r--r--img/icons/font-awesome/undo.svg2
-rw-r--r--img/icons/font-awesome/universal-access.svg2
-rw-r--r--img/icons/font-awesome/university.svg2
-rw-r--r--img/icons/font-awesome/unlink.svg2
-rw-r--r--img/icons/font-awesome/unlock-alt.svg2
-rw-r--r--img/icons/font-awesome/unlock.svg2
-rw-r--r--img/icons/font-awesome/unsorted.svg2
-rw-r--r--img/icons/font-awesome/upload.svg2
-rw-r--r--img/icons/font-awesome/usb.svg2
-rw-r--r--img/icons/font-awesome/usd.svg2
-rw-r--r--img/icons/font-awesome/user-circle-o.svg2
-rw-r--r--img/icons/font-awesome/user-circle.svg2
-rw-r--r--img/icons/font-awesome/user-md.svg2
-rw-r--r--img/icons/font-awesome/user-o.svg2
-rw-r--r--img/icons/font-awesome/user-plus.svg2
-rw-r--r--img/icons/font-awesome/user-secret.svg2
-rw-r--r--img/icons/font-awesome/user-times.svg2
-rw-r--r--img/icons/font-awesome/user.svg2
-rw-r--r--img/icons/font-awesome/users.svg2
-rw-r--r--img/icons/font-awesome/vcard-o.svg2
-rw-r--r--img/icons/font-awesome/vcard.svg2
-rw-r--r--img/icons/font-awesome/venus-double.svg2
-rw-r--r--img/icons/font-awesome/venus-mars.svg2
-rw-r--r--img/icons/font-awesome/venus.svg2
-rw-r--r--img/icons/font-awesome/viacoin.svg2
-rw-r--r--img/icons/font-awesome/viadeo-square.svg2
-rw-r--r--img/icons/font-awesome/viadeo.svg2
-rw-r--r--img/icons/font-awesome/video-camera.svg2
-rw-r--r--img/icons/font-awesome/vimeo-square.svg2
-rw-r--r--img/icons/font-awesome/vimeo.svg2
-rw-r--r--img/icons/font-awesome/vine.svg2
-rw-r--r--img/icons/font-awesome/vk.svg2
-rw-r--r--img/icons/font-awesome/volume-control-phone.svg2
-rw-r--r--img/icons/font-awesome/volume-down.svg2
-rw-r--r--img/icons/font-awesome/volume-off.svg2
-rw-r--r--img/icons/font-awesome/volume-up.svg2
-rw-r--r--img/icons/font-awesome/warning.svg2
-rw-r--r--img/icons/font-awesome/wechat.svg2
-rw-r--r--img/icons/font-awesome/weibo.svg2
-rw-r--r--img/icons/font-awesome/weixin.svg2
-rw-r--r--img/icons/font-awesome/whatsapp.svg2
-rw-r--r--img/icons/font-awesome/wheelchair-alt.svg2
-rw-r--r--img/icons/font-awesome/wheelchair.svg2
-rw-r--r--img/icons/font-awesome/wifi.svg2
-rw-r--r--img/icons/font-awesome/wikipedia-w.svg2
-rw-r--r--img/icons/font-awesome/window-close-o.svg2
-rw-r--r--img/icons/font-awesome/window-close.svg2
-rw-r--r--img/icons/font-awesome/window-maximize.svg2
-rw-r--r--img/icons/font-awesome/window-minimize.svg2
-rw-r--r--img/icons/font-awesome/window-restore.svg2
-rw-r--r--img/icons/font-awesome/windows.svg2
-rw-r--r--img/icons/font-awesome/won.svg2
-rw-r--r--img/icons/font-awesome/wordpress.svg2
-rw-r--r--img/icons/font-awesome/wpbeginner.svg2
-rw-r--r--img/icons/font-awesome/wpexplorer.svg2
-rw-r--r--img/icons/font-awesome/wpforms.svg2
-rw-r--r--img/icons/font-awesome/wrench.svg2
-rw-r--r--img/icons/font-awesome/xing-square.svg2
-rw-r--r--img/icons/font-awesome/xing.svg2
-rw-r--r--img/icons/font-awesome/y-combinator-square.svg2
-rw-r--r--img/icons/font-awesome/y-combinator.svg2
-rw-r--r--img/icons/font-awesome/yahoo.svg2
-rw-r--r--img/icons/font-awesome/yc-square.svg2
-rw-r--r--img/icons/font-awesome/yc.svg2
-rw-r--r--img/icons/font-awesome/yelp.svg2
-rw-r--r--img/icons/font-awesome/yen.svg2
-rw-r--r--img/icons/font-awesome/yoast.svg2
-rw-r--r--img/icons/font-awesome/youtube-play.svg2
-rw-r--r--img/icons/font-awesome/youtube-square.svg2
-rw-r--r--img/icons/font-awesome/youtube.svg2
-rw-r--r--js/passman.min.js24
-rw-r--r--l10n/ast.js17
-rw-r--r--l10n/ast.json17
-rw-r--r--l10n/ca.js131
-rw-r--r--l10n/ca.json131
-rw-r--r--l10n/cs.js172
-rw-r--r--l10n/cs.json172
-rw-r--r--l10n/da.js40
-rw-r--r--l10n/da.json40
-rw-r--r--l10n/de.js59
-rw-r--r--l10n/de.json59
-rw-r--r--l10n/de_DE.js59
-rw-r--r--l10n/de_DE.json59
-rw-r--r--l10n/el.js27
-rw-r--r--l10n/el.json27
-rw-r--r--l10n/en_GB.js22
-rw-r--r--l10n/en_GB.json22
-rw-r--r--l10n/es.js114
-rw-r--r--l10n/es.json114
-rw-r--r--l10n/es_419.js320
-rw-r--r--l10n/es_419.json318
-rw-r--r--l10n/es_AR.js7
-rw-r--r--l10n/es_AR.json7
-rw-r--r--l10n/es_CL.js321
-rw-r--r--l10n/es_CL.json319
-rw-r--r--l10n/es_CO.js321
-rw-r--r--l10n/es_CO.json319
-rw-r--r--l10n/es_CR.js321
-rw-r--r--l10n/es_CR.json319
-rw-r--r--l10n/es_DO.js321
-rw-r--r--l10n/es_DO.json319
-rw-r--r--l10n/es_EC.js321
-rw-r--r--l10n/es_EC.json319
-rw-r--r--l10n/es_GT.js321
-rw-r--r--l10n/es_GT.json319
-rw-r--r--l10n/es_HN.js320
-rw-r--r--l10n/es_HN.json318
-rw-r--r--l10n/es_MX.js32
-rw-r--r--l10n/es_MX.json32
-rw-r--r--l10n/es_NI.js320
-rw-r--r--l10n/es_NI.json318
-rw-r--r--l10n/es_PA.js320
-rw-r--r--l10n/es_PA.json318
-rw-r--r--l10n/es_PE.js320
-rw-r--r--l10n/es_PE.json318
-rw-r--r--l10n/es_PR.js320
-rw-r--r--l10n/es_PR.json318
-rw-r--r--l10n/es_PY.js320
-rw-r--r--l10n/es_PY.json318
-rw-r--r--l10n/es_SV.js321
-rw-r--r--l10n/es_SV.json319
-rw-r--r--l10n/es_UY.js320
-rw-r--r--l10n/es_UY.json318
-rw-r--r--l10n/fi.js39
-rw-r--r--l10n/fi.json39
-rw-r--r--l10n/fr.js47
-rw-r--r--l10n/fr.json47
-rw-r--r--l10n/gl.js284
-rw-r--r--l10n/gl.json282
-rw-r--r--l10n/he.js235
-rw-r--r--l10n/he.json233
-rw-r--r--l10n/hu.js135
-rw-r--r--l10n/hu.json135
-rw-r--r--l10n/is.js57
-rw-r--r--l10n/is.json57
-rw-r--r--l10n/it.js87
-rw-r--r--l10n/it.json87
-rw-r--r--l10n/ja.js323
-rw-r--r--l10n/ja.json321
-rw-r--r--l10n/ka_GE.js320
-rw-r--r--l10n/ka_GE.json318
-rw-r--r--l10n/ko.js320
-rw-r--r--l10n/ko.json318
-rw-r--r--l10n/lt_LT.js96
-rw-r--r--l10n/lt_LT.json96
-rw-r--r--l10n/lv.js5
-rw-r--r--l10n/lv.json5
-rw-r--r--l10n/nb.js42
-rw-r--r--l10n/nb.json42
-rw-r--r--l10n/nl.js55
-rw-r--r--l10n/nl.json55
-rw-r--r--l10n/pl.js35
-rw-r--r--l10n/pl.json35
-rw-r--r--l10n/pt_BR.js57
-rw-r--r--l10n/pt_BR.json57
-rw-r--r--l10n/ru.js30
-rw-r--r--l10n/ru.json30
-rw-r--r--l10n/sk.js211
-rw-r--r--l10n/sk.json211
-rw-r--r--l10n/sq.js17
-rw-r--r--l10n/sq.json17
-rw-r--r--l10n/sr.js336
-rw-r--r--l10n/sr.json334
-rw-r--r--l10n/sv.js70
-rw-r--r--l10n/sv.json70
-rw-r--r--l10n/tr.js39
-rw-r--r--l10n/tr.json39
-rw-r--r--l10n/zh_CN.js117
-rw-r--r--l10n/zh_CN.json117
-rw-r--r--lib/Db/Credential.php8
-rw-r--r--lib/Db/CredentialMapper.php4
-rw-r--r--lib/Service/CredentialService.php2
-rw-r--r--lib/Service/EncryptService.php2
-rw-r--r--lib/Service/IconService.php434
-rw-r--r--lib/Utility/Utils.php15
-rw-r--r--personal.php2
-rw-r--r--templates/main.php163
-rw-r--r--templates/public_share.php40
1383 files changed, 38523 insertions, 1001 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index b3ee16f2..e2379542 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,4 +1,5 @@
If you want to contribute make sure the commits are `verified`.
You can read how to GPG sign you commits [here](https://help.github.com/articles/signing-commits-using-gpg/).
+And read how to set up a PGP key for commit signing in the [nextcloud server wiki](https://github.com/nextcloud/server/wiki/How-to-sign-your-commits-using-PGP).
Issue's / Feature requests not honoring the template will be closed instantly.
diff --git a/README.md b/README.md
index f5a7ec49..d2c50d70 100644
--- a/README.md
+++ b/README.md
@@ -2,10 +2,17 @@
Passman is a full featured password manager.
[![Build Status](https://travis-ci.org/nextcloud/passman.svg?branch=master)](https://travis-ci.org/nextcloud/passman)
+[![Docker Automated buid](https://img.shields.io/docker/build/brantje/passman.svg)](hub.docker.com/r/brantje/passman/)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/749bb288c9fd4592a73056549d44a85e)](https://www.codacy.com/app/brantje/passman?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=nextcloud/passman&amp;utm_campaign=Badge_Grade)
[![Codacy Badge](https://api.codacy.com/project/badge/Coverage/749bb288c9fd4592a73056549d44a85e)](https://www.codacy.com/app/brantje/passman?utm_source=github.com&utm_medium=referral&utm_content=nextcloud/passman&utm_campaign=Badge_Coverage)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/passman/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nextcloud/passman/?branch=master)
+## Join us!
+There is a Telegram-Group:
+* [Passman General](https://t.me/passman_general)
+
+Those are mainly used to discuss all sorts of topics for Passman and it's apps!
+
## Contents
* [Screenshots](https://github.com/nextcloud/passman#Screenshots)
@@ -14,6 +21,8 @@ Passman is a full featured password manager.
* [Security](https://github.com/nextcloud/passman#security)
* [Password generation](https://github.com/nextcloud/passman#password-generation)
* [Storing credentials](https://github.com/nextcloud/passman#storing-credentials)
+* [Support passman](https://github.com/nextcloud/passman#support-passman)
+* [Development](https://github.com/nextcloud/passman#development)
* [API](https://github.com/nextcloud/passman#api)
* [Docker](https://github.com/nextcloud/passman#docker)
* [Maintainers](https://github.com/nextcloud/passman#main-developers)
@@ -55,8 +64,9 @@ For more screenshots: [Click here](http://imgur.com/a/giKVt)
For a demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)
## Tested on
-- NextCloud 10 / 11
-- ownCloud 9.1+
+- Nextcloud 14
+
+For older Versions see the [Releases Tab](https://github.com/nextcloud/passman/releases)
## External apps
@@ -101,8 +111,6 @@ This time using the following routine:
### Sharing credentials.
Passman allows users to share passwords (this can be turned off by an administrator).
-
-
## API
For developers Passman offers an [api](https://github.com/nextcloud/passman/wiki/API).
@@ -111,6 +119,7 @@ Passman is open source, and we would gladly accept a beer (or pizza!)
Please consider donating
- [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6YS8F97PETVU2)
- [Patreon](https://www.patreon.com/user?u=4833592)
+- [Flattr](https://flattr.com/@passman)
- bitcoin: 1H2c5tkGX54n48yEtM4Wm4UrAGTW85jQpe
## Code reviews
@@ -124,10 +133,24 @@ Please do the following
Or if you're feeling lazy, create an issue, and we'll think about it.
## Docker
-To run Passman with [Docker](https://www.docker.com/) you can use `docker run -p 8080:80 -p 8443:443 brantje/passman`
-You have to supply your own SSL certs.
+To run Passman with [Docker](https://www.docker.com/) you can use our test docker image.
+You have to supply your own SSL certs, self signed or Let's encrypt it doesn't matter.
+Please note that the docker is only for testing purposes, as database user / password are hardcoded.
+
+If you like to spiece up our docker image and make it a full fledged secure, production ready install, you're welcome to do so.
+Please note that:
+- Port 80 and 443 are used
+- SSL is enabled (or disabled if certs not found)
+- Startup time of container must be less than 15 seconds
+
Example:
-`docker run -p 8080:80 -p 8443:443 -v /directory/cert.pem:/data/ssl/cert.pem -v /directory/cert.key:/data/ssl/cert.key brantje/passman`
+```
+docker run -p 8080:80 -p 8443:443 -v /directory/cert.pem:/data/ssl/cert.pem -v /directory/cert.key:/data/ssl/cert.key brantje/passman
+```
+
+If you want a production ready container you can use the [Nextcloud docker](https://hub.docker.com/_/nextcloud/), and install passman as an app.
+
+
## Development
@@ -143,7 +166,7 @@ To run the unit tests install phpunit globally, and setup the environment variab
## Contributors
Add yours when creating a [pull request](https://help.github.com/articles/creating-a-pull-request/)!
-- None
+- Newhinton
## FAQ
diff --git a/appinfo/database.xml b/appinfo/database.xml
index d3f5817e..88cd1ad0 100644
--- a/appinfo/database.xml
+++ b/appinfo/database.xml
@@ -187,11 +187,6 @@
<notnull>false</notnull>
</field>
<field>
- <name>favicon</name>
- <type>clob</type>
- <notnull>false</notnull>
- </field>
- <field>
<name>renew_interval</name>
<type>bigint</type>
<unsigned>true</unsigned>
@@ -238,6 +233,10 @@
<name>shared_key</name>
<type>clob</type>
</field>
+ <field>
+ <name>icon</name>
+ <type>clob</type>
+ </field>
<index>
<name>passman_credential_id_index</name>
<field>
diff --git a/appinfo/info.xml b/appinfo/info.xml
index 92c2b298..9abd6b5b 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -8,6 +8,8 @@
Features:
- Vaults
- Vault key is never sent to the server
+- Browser extension for easy access to passwords
+- Android app for on the road access
- Credentials are client side encrypted with 256bit AES
- Credentials are server side encrypted with 256bit AES
- Ability to add custom fields to credentials
@@ -17,7 +19,7 @@ Features:
- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )
For an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)
]]></description>
- <version>2.1.4</version>
+ <version>2.2.0</version>
<licence>agpl</licence>
<author homepage="https://github.com/brantje">Sander Brand</author>
<author homepage="https://github.com/animalillo">Marcos Zuriaga</author>
@@ -35,13 +37,13 @@ For an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)
<screenshot small-thumbnail="https://img.passman.cc/thumbs/share_credential.png">https://img.passman.cc/share_credential.png</screenshot>
<screenshot small-thumbnail="https://img.passman.cc/thumbs/password_audit.png">https://img.passman.cc/password_audit.png</screenshot>
<dependencies>
- <php min-version="5.6"/>
+ <php min-version="7.0"/>
<database>sqlite</database>
<database>pgsql</database>
<database min-version="5.5">mysql</database>
<lib>openssl</lib>
- <owncloud min-version="9" max-version="11" />
- <nextcloud min-version="9" max-version="13" />
+ <nextcloud min-version="14" />
+ <owncloud min-version="14" />
</dependencies>
<background-jobs>
diff --git a/appinfo/routes.php b/appinfo/routes.php
index d06f5fce..ab7d9152 100644
--- a/appinfo/routes.php
+++ b/appinfo/routes.php
@@ -76,9 +76,14 @@ return [
//Translations
['name' => 'translation#getLanguageStrings', 'url' => '/api/v2/language', 'verb' => 'GET'],
+
+ #Icons
+ ['name' => 'icon#getIcon', 'url' => '/api/v2/icon/{base64Url}', 'verb' => 'GET'],
+ ['name' => 'icon#getIcon', 'url' => '/api/v2/icon/{base64Url}/{credentialId}', 'verb' => 'GET'],
+ ['name' => 'icon#getLocalIconList', 'url' => '/api/v2/icon/list', 'verb' => 'GET'],
+
//
['name' => 'vault#preflighted_cors', 'url' => '/api/v2/{path}', 'verb' => 'OPTIONS', 'requirements' => array('path' => '.+')],
-
//Internal API
['name' => 'internal#remind', 'url' => '/api/internal/notifications/remind/{credential_id}', 'verb' => 'POST'],
['name' => 'internal#read', 'url' => '/api/internal/notifications/read/{credential_id}', 'verb' => 'DELETE'],
diff --git a/appinfo/signature.json b/appinfo/signature.json
new file mode 100644
index 00000000..19f3fafe
--- /dev/null
+++ b/appinfo/signature.json
@@ -0,0 +1,554 @@
+{
+ "hashes": {
+ ".git\/COMMIT_EDITMSG": "5525e7c457724748178e6cd907d09b0b697237efb81fccef22748eaa90785be72a64277a8249c19512ac152edb257277dff7d838e5ef1ee7afd860c12d24924e",
+ ".git\/HEAD": "8770659bbbbd9e44e309864292b7f339f7276d67002847295af2bdb955a79ecc53e7f5530f8e8517ec70883e6494c5bd67c1ce4aa9e38e8c0c89c92509795b97",
+ ".git\/config": "61823d1b412ceb783f27c77c62aae2f928623637b7f045f059333269fefe0daf079e5ba80518a42efb3a826846024cb47f54ffd62181a973653ef0f6bd7d98b1",
+ ".git\/description": "f7e152f75b124c3e1c5d12f00427729d9eec4e2c1bf70d7606440a6600d003367eb178331e75ab976a61496e79c2c822020849d28ffd170946397b934611b471",
+ ".git\/hooks\/applypatch-msg.sample": "536cce804d84e25813993efdd240537b52d00ce9cdcecf1982f85096d56a521290104c825c00b370b2752201952a9616a3f4e28c5d27a5b4e4842101a2ff9bee",
+ ".git\/hooks\/commit-msg.sample": "d6bb7fa747f4625adf1877f546565cbe812ca7dd4168f7e9068e6732555d8737eba549546cf5946649e3f38de82d173aaf9c160a4c9f9445655258b4c5f955eb",
+ ".git\/hooks\/post-update.sample": "473ad124642571656276bf83b9ff63ab1804d3c23a5bdae52391c6f70a894849ac60c10c9d31deff3938922ce83b68b1e60c11592bbf7ea503f4acd39968cefa",
+ ".git\/hooks\/pre-applypatch.sample": "cb78aa7e9b9c146e5db65d86dd83f04e2b6942a06fab50c704a0fd900683f3b6ad1164e74afe2f267f6da91cdff0b9ab07713e12cefc6f8d741b5df194f4fda6",
+ ".git\/hooks\/pre-commit.sample": "4a7ac2ed2ffe50d2a997c3477b5855c3d19423c295a82f7d660be3418217a183b0ce25f94ae2e350f4d93eda3b75a4bd62cf27f0685d8a837919bcc9e7e0962a",
+ ".git\/hooks\/pre-push.sample": "37cd20a090494acb16c2255fe93dadeb409f2553afddc409dad5b5e99c9f5612a28eba397c0f3ae771e17edbe0a6c2a3af311154285e6d9c43e4cc4f06ba5b8d",
+ ".git\/hooks\/pre-rebase.sample": "bad3f48e56d7497bc2b04b2405195c067cb958c77b96583ae32921a2f0439b9b506d9c4d6ac2465ab46a6d2df0c6c1491308eced3a569320957d22491f40a7be",
+ ".git\/hooks\/prepare-commit-msg.sample": "fbf15f12136a413dd590e57392e6122714d67456beed50d9ef285e40076a138a7d44291b5642fe5c518dc56c640436caf6225d1a966e06c042b30e6a7d08dcef",
+ ".git\/hooks\/update.sample": "759abd33e5d1dda9b3e3d3116c47b23f616320d70cd66d567b1c4eeefeb6d78571d83b67d825d9e23aac35f0a2e0745cfab1381ecf486e30076b08797699f2c4",
+ ".git\/index": "9f7ba753d502b40b58c4fa5806eb7f26b239702178de4cbcc2227495ca8101e8f2cf551ea226aeea6ed493741a42b470d1a792d25e953bd606f6222c4b72f4aa",
+ ".git\/info\/exclude": "9828c6ecdf91bf117416e17f4ee9caee2e1e37b6fb00b9ff04035ace17a3089b9d0a25c6baa1046c0e1c62d3da88838e8fca74ea82973d6b975905fde58f3072",
+ ".git\/logs\/HEAD": "4c36f9a031870c4531fe91ae47e1a8ee6c0e69f2c10794aea80c4b20f11e9312d546a135106b733625d9b208ab10c258415a64a8bec97ee8c26ffcc904045777",
+ ".git\/logs\/refs\/heads\/dist": "735dcc6c01925dae727570c3c7b743b91270e36b4d41b7b32f17fba9494c642d33289fb4c774671e6b59a3bec7f97bce00548c34617951a6778bac234814923b",
+ ".git\/logs\/refs\/heads\/master": "885759d49dafba75fb4b2d09cab10cfd70854742509c87074ac780b99d35482a0dd4ca805180ee83e7a61b4841df7b0c775abe3c0951e7a45644b0af256e357f",
+ ".git\/logs\/refs\/remotes\/origin\/HEAD": "885759d49dafba75fb4b2d09cab10cfd70854742509c87074ac780b99d35482a0dd4ca805180ee83e7a61b4841df7b0c775abe3c0951e7a45644b0af256e357f",
+ ".git\/logs\/refs\/remotes\/origin\/dist": "1502d2dc54e2a50001a639b3be7234ee7f067c4c091b4792b01af5e1780891badd9eebd07e20b7aa91825514bc8c3fa8e9238aa70893808e81d293aa11d4f504",
+ ".git\/objects\/00\/7a5b284ddbb253535fcb93670aa87e61fdf93c": "85b058acd0b9dfd7f3282c5e7c2c071e0d28022a56c8f2a61bbb3b1e7ed90a27c0664f0854ceebced3e479672197c0212e756a0c3b73c936b9b5e6df5a2a0f2b",
+ ".git\/objects\/01\/1bd7dd3290729f6e52b8d128814fc9e8278a0b": "6855ebc8120884610655a3c2e625e699897b7ef4bb54bcb83513361569f1f427a35c612e1f1e2b67fd34d5350f41f4a94a66bcb28901dd1362d44e8bb5581359",
+ ".git\/objects\/01\/cff126079efbeb47076d481cf07c071117a6e9": "71ddc88a81748d8c035ad113bcfff80319c1b36a3b40c2a41a4c655c5f12a413237ff718a1bf4b97dfc215949c9187a1e3f33d61fa44cd3fcf50edc56c484dff",
+ ".git\/objects\/02\/b37cd060f63111a17d014fd833aa77e7e6465a": "b96264d00d05176b368aae39482837e2efae6d880f3454403e344b98b0dce8d3d2e971176b33b295eccd91d09592a3ce80f5e978f9178b9398957555fa7c84ec",
+ ".git\/objects\/02\/da569184b28303130b94b57b21c16eb19f16e3": "73f42e3dc74029410295de0adac80df5108905cfcc695cda89df0877b2e8f8e68044ed15af2b457ceca640cd19ea7f2918a1d3d0423aac0f87f0ea75509ca4c4",
+ ".git\/objects\/07\/e41ac2ad94e5e0d0b9447e8e646c8abc4f4866": "122f20a4821eae850ecdbf41299400aa081141155fbb642bcadd24fe0b25ef9fb0176d17948c5904b5bdb053aa0c678368b8ffba194fe19e59ff0c934175383e",
+ ".git\/objects\/09\/01bd86e557664decd3d7e8d958efe659accd2e": "cc97d0002dc32f1c375d4e0c70a0ebf95192c081cc4797e7fe738a5c78a6f7eed84f06f01b11f746a1267e1c76ed3da01d3bf287bae336062dc2011a0c838c1e",
+ ".git\/objects\/0a\/f034dd4dbc85286a99eceb2d3816d5b41d75fb": "a7a33a6ed33c2e9633b2a8cd878973c88e313ea71136604b49d07e6323a6e426d43019cdf1d2350be6ec79975411466417e3e99d72f2219c387c0674d70d9f15",
+ ".git\/objects\/0c\/26a1e53c886198ecb6d88031d22dc50748edfc": "4bea213211d817c24d0b5b756907b98f653de2838b4da544fd65f5885fa90388def587d45b2b3d8396ea1a9f7c38fde194ed851aa6717631870e6db1aaad2d37",
+ ".git\/objects\/0d\/09a42df5504dc6afbf2e22bca9c92504359003": "966208660bea606b81bc233addd3516acbf55db65c96d420237cd05c079f9985ffd629ed6dc10bd2a9241b6ef087ae72f9aa7d7c2d10eff8ef7c59404119a872",
+ ".git\/objects\/0e\/20928c28dcea7c1a022b81616f2f2a61c91443": "f282342104d9be1f9fb6b32c98b59c82ca477559159f37a2a4c78af3459ed54e8a94d27b522b2bdfe4cf7d9db8180b6f447c6ddeef215c82e6f53cd75917e478",
+ ".git\/objects\/0e\/281d18605981438b6baf2ad5c24b7fe3538b08": "26563d4e2928be2440f75b2142439705bcbe28a2aab525099e403e9db710c7cfa059450d9b62e22d94f54ad61941a6804e81ba5ebe9486bf9a934082761e4d1d",
+ ".git\/objects\/0e\/c204613da2def2656989923b209f3d72e37bc9": "6ab3a534b94f4e0c2190a27c5e96a07df8f303637fd3a1dacc1fad717903438ebada2123de6e413e88e5a058a560bdbe9b6b40692bea171e57c6aaab9333c294",
+ ".git\/objects\/0f\/72f3ba55668da7251a2c5ccf62d86ee55c936f": "571c689e2cd49ba20e93e1953565d3963d3d8826775eeb6b1b3e60c733b8c92951e5ba2a7c64b16d50f5ed5bb57658f10489425ab2b7e390131afa48e16bf832",
+ ".git\/objects\/0f\/e5efcbb6f89de4d39b39476cb4129ddfb9896d": "fe1866df930fcc44e5709270cd46e9e62aafea3c935ec6cb92d3ced1500bd05f5380813f0f4b327f02aab0cba5422693496b174e7dc9d0dd813010642f3777b4",
+ ".git\/objects\/10\/ac346670fb8dcce58df4b11809cf7ea894e4e3": "5ba8420b5147c56f501a32d346a140a296b4a3aba8fff7d3146185c9976b9989a575edad8edde704a797d0d89d6259878fe2a6cf8b0ef6d97c98d679be346fcd",
+ ".git\/objects\/10\/b7d98d89e9c33089c15a6da9b717822a3e70d7": "2f2634ea720817df055a6e925f2becb55bea05d83bd23daf01b094d82f77529c53139151435aa2a6ed61eb450c05b2bd55a87424ac827c328e0a7a6dd162a911",
+ ".git\/objects\/11\/f154546328a5d242110f2a4f6f00af7ea47983": "1662aabf1a2afedc29d6679669bccd4d76bb2f11beab3d18b6041b80115999700f6b898c08448142de7c49c01c45c0a8dfba9a477f6dbd7088a4692d592c1b62",
+ ".git\/objects\/12\/a7f23dfe1a296dbe1645fe5cd4a444ffcb78f0": "f82895a37224fdb9f148faba921ee26c98b275310c41fcfc8ea583111ead9a0e66defbd01a2e40cc54b2954f493c75be9f88c95924d721c0539b43505fb0e65c",
+ ".git\/objects\/12\/deaecddbeaed36b623e9b5441bd7c4fa8d78b4": "18ebc4b48cc83ef0d7eeee2fa1609d45fd932856878fbbb3559f684ebd0c0fb9817a5a19c634fbc6dc65257ed92f2ccb3902eb2baa9ab5d3e6be61a173a3dfc0",
+ ".git\/objects\/13\/686ce3979e43690cf9333c10f8a0a6cad7ab06": "e9ec8b2fa4035972c15464575c2d64f4ab273937db8a94e405a42dc7a5fea267d9d2495b07dc0eeb3882bbafe17f1e3780a4ef85975775692e48eb9e58d43b87",
+ ".git\/objects\/13\/7869c3266a0702868e2e9c5652284acedc6282": "fefd3e4291f919f2015bdbfc8158e5824a040a4da360c00a1e94145df5ec8f209bb368fb1b6937c65b10b4247ffc4350ccb6bc1f52909107b33128366ac662d2",
+ ".git\/objects\/15\/f97be73f1fa7145fa7b8263628b985f3a2e74e": "bdcd80627783c32e52e88fea9b578d72854c212c106c07e960ae0242bc46f6b641cc4308f368c67f5b90fd42e9e091981b5b24aa3a40b8476af8deab0c8a464e",
+ ".git\/objects\/16\/4e21d4db55ff1716077b938b68559418a23500": "ba725f1f925ce47255aa652d6fbb17694e2e9b2547fe296068d6deba93c79d43697f25a42c30e6d3c46eed0f32f368e3cff16c2fd38180e878c6307f3b41b915",
+ ".git\/objects\/16\/a255d67ad989fcad0b4f2a210619a25a37da62": "b465977a10dbe696886d9f5fe14c02b8355da23eedd635efd071e231f19bbccc47b22f9822f959cbee19c2eaf4b8683b185858fbe5b132d777a87049de7586ea",
+ ".git\/objects\/16\/f5f82b466cf954342f633c3326c57850f6d1b6": "5b465557ad8a29535ba7f1a24c417d8789588816c5fcef77ed6b38635a0ed473847c4db3d863fafba4376bae2922c06800ffe6f6074e54b132386c89f2d6eec7",
+ ".git\/objects\/17\/6e24b4a29f5a07ccdde3b05cfa3870a6107b09": "f52d8e66185b3a6f18ef206c829c8838848b9bf3f25eb45e264a978474148a041b82f3e5bf5fa9e2100b15d0bda08e66e2a47ea56ff5334fb74028852c9965fe",
+ ".git\/objects\/17\/af0803812d707949147b4cb508fcc4f302ca0e": "a786f27d0b8a31eb44777fc2643f4591e2ee87339d2ee1167964083dc84c0add178931a5da1c2419c640f7cd8da1a3df615e3ec5129db89eac7071959098f1e7",
+ ".git\/objects\/17\/b2fd0f3b9c44482edc2ede12818b936a5dac3c": "9d8dab1af940a4597c18bbf3c63aff4566c6433980dd92bef4bba8f6de37b65816e7605a6ee326809ae279210e2b287675c17b749b340116ca5802e2b8fb7ca8",
+ ".git\/objects\/18\/3f28bd369c429e248f126e81c9d4eebd5b7d2a": "dfe3f6ab76f4ee5fdf7f4524317480c45e50e0b68798adf053655ebb761907edf772e785a27a6f56896d4af2fca4edc97fb80b3a1908d66ca4aef62270664ae7",
+ ".git\/objects\/18\/c91efc942ac23e214e691e9cd2fad0f1804747": "295665a019c06dc94fe779823bc0ed7617024a63ec5803022e8b6a2e93f4139bb7d2103957beb3aba3d858bf453619f05cd4c4a1d61ee228e2f2442318e0339d",
+ ".git\/objects\/19\/97755deda44f76b945226dd8f88878c65a1f13": "67e1df457c5f0ecfb8f2e7953c9cd19d80b40d56baaf02ffff35dfd5f3ba305ffff73425a29b2b36d64462e23c0c5315a305c95042ee86372e1136c7499bb4f4",
+ ".git\/objects\/1a\/00396c6a105b5a0d2b7440ef5db89594f93cf1": "d9496e4e92c3e6d53af8b2d4f5cc54b20dd147e08bd13d740e0cff5872c59fdf7d78195f41f90ca689fcbfb7e2ee47683b5dc6b5e1f3fc0f9ac40a00fa81484e",
+ ".git\/objects\/1a\/4c68e601dfee1da2d15a3797d53380dda5289e": "06b24fbf85f7b8eb36d765c9d07bed33a6a1a7894656c06aa7a8b07788c9c7f7cb21367a4b28e2fe9116ba51b7d52d36fa710459eebea7a98db9f5225f97130b",
+ ".git\/objects\/1b\/116b649614bd2b53e67a2c384c82efa1ac3db1": "ed6a04f27c7c6e46d36d99bc5bbd19cd33a68dc75be0045cd922159d557a1cc832657723f1208ef0177eb501c9f171f160eae7cac28e25ba8a4a915ab454686c",
+ ".git\/objects\/1b\/300fe1baf341e02c76f44f7cc57f8a906052f5": "bb9caaae6eb400a7168e7eda0574ae67f2547df5e4b4f98ef0cb633ecbcd0c69c4639cfba3522eb882eecdbf7b1f476e1ea75e5b56245d50bb75eb089d6b27d8",
+ ".git\/objects\/1b\/961981fe85f7d84729bf6f93fea0ef67f057a3": "3764722efce2f1e0f3a6a41d7c381f7687fbd2812043377568e7b519a3095f1e31a850eadbac101b9cb71f39d3369a04c960843c55f127213ef599814700b8f0",
+ ".git\/objects\/1c\/44875b9874243803c3d82d51ba1cd9fa9b237d": "07881cc43411f6eda0a607cb604805573e97f93ca9180942c810400346e149807f655350b332c39d25a0fa33c6dc3a1236d139b0640d0896ac528f5878a65061",
+ ".git\/objects\/1c\/e972f20cb2a280640a1f141f668b0bc8c0685c": "906ff51699f22b3749e365dd9c88a3341cedf963b12901a4cee6e99872d58dcd1f4270b4d3bd78439ddba879e510f69e54d329a50f5f39da960ad44da825391c",
+ ".git\/objects\/1d\/4a0e527939c2d7b1be173e252da77ae9517579": "98cd80d551684f04ef3058963af0cda8178db60466c1b92486143fdeb560134fe7ee238ec102d15dec14ccd9c3e2c50cbbdb8cd8fdf40f055728d3bc3bc9619f",
+ ".git\/objects\/1d\/a039055d33cf5d358c010c44da39a744cef3f2": "c3c7af1d16f9c0d183f5e7fc73472555c973815319311af9698119f49c171cc0b26c6cb365619e2ce7d1c8064b43bcf953dcf363f55509e9df49d771b7643551",
+ ".git\/objects\/1e\/194374e776d9a6e5648a8a989fc2888d8863bc": "39e843d62abc3847fc891ed6bad1364ddaa0a3c3b45b77ae14bd213111911f118597aac4abf9de977be44d09be04b4e28356ed6b4f52e89beff4947158ed7ff1",
+ ".git\/objects\/1f\/38d2fa1506135c114c77b567360d3e600a6add": "f4c4383c1e683210746d547a15b8e67811e8965895bdfc5ea2185fb88c1e735e6e6586d7cbeea08d89e2f9f0d2df0d3a9d765f1fa3c75ef73dc131593d22156a",
+ ".git\/objects\/1f\/7378bdeb030002367809bc2c4fc9faa3842b37": "91254a7de2e8fc46bca53b73e01a559260d70e68c2704a0031d2ecf000466922f6e7e359d52be73a44b835cc37a6bb672e66c1aba60d0e2d6de4ad4ec7c89005",
+ ".git\/objects\/1f\/b46537930939fb9fa40247a9159cb202c24206": "6fc36d3840ae4b2fe8b590de4821768ec5aa0619bee649a51ca0cbf894414c12d69bb6fcae1d2242832dbbadf3553c59c6be7b93c15ea493ae9613b242e79c8e",
+ ".git\/objects\/1f\/e341416b25ce3cbe79c8bd93140ba17a10b433": "7d7b82919110065815857b561e13e6c1795ad351319d7c04c829b4dcfe065b8128a0ae97924b9c2d4cfe1a3a3ce1e7cfec39a92c25b43d665b7d56ecefd28dea",
+ ".git\/objects\/20\/418655afdf28d73aa2586eb517a020ba85b76d": "2f46f867c97b6089269b2d5424707700b06dd739cf947cf2733cd64eb5dbbd3ef304693a39c16e8886d212d41f927715c17a199edfe9680c5ddb2025274c6ce9",
+ ".git\/objects\/20\/875de23e4e535c430f6018ace3125d3ce1d66e": "12a1132dad74896520d366b4945807da0de106ce822654a56cb2efd5dd6e5e8934819bf88a57f6073144f62c0a654b1366f34a14a1856200c09b3eabcfc85457",
+ ".git\/objects\/20\/ceac82e9dfe4af77ae07c432dde093e198b402": "fc3fec1d46632e67d1682a1e3bef45d086a596f05cf144ffe77ea93d75de593e87c6ffa95fab18ecb3eb8577a2df55c99686b095f250d3c0707bff315163c1e2",
+ ".git\/objects\/21\/0f6aad5f51e8121a37d5d0b805c5569fcfe676": "b0dae834e1d8cc3f0e04901bdb3c31a95749bfce723773cc233e7a1f498368157d6d61d1b9e6ea5aba3116abf6616337c08f3305e5e8441df574f78b35090914",
+ ".git\/objects\/21\/aa2f2186201fde8cd01795519c46a429524809": "772f78c2b07049bb335d7b07532b3f1049c1429f2b9a25ff4c0a4973ca1e232303e2301aba9b071fba6cda8297f7a0fec078781dfaeb59d54c68b2916ffc261a",
+ ".git\/objects\/21\/e908357bdacdc2fb2d7c508c068e87b95c2a39": "6b7847e4cac4c747f2357c22691159679496e9a08d30231ad526b55210ed25f89c94c96ece5bb8f4e4061be898e9546c9ebbe773308256913548b01e4495fb08",
+ ".git\/objects\/22\/2a9964f895c610b3735968a663ba67ba54b6e4": "f8acd80e6af604727907a34c2003ba8016c36942a27fcf8225a1314fe7e32eea1498b4644f12719cf27f1c223c4209a1737915fcdb180583bf39ac1e02c66bca",
+ ".git\/objects\/22\/a10accf18eb5a59e79d604185d14ad41d04e94": "5a594979562522049f90ecc0dbca58aea42cbd501bfe60b90ae2d04c7cb5bffda77ab607fe906eec3831a9e11c44408750cb9a07142a57497c06907dbdfc5915",
+ ".git\/objects\/24\/18f08df6b597fbaec64de2ccb834a0693d69b3": "e897df980315dc286a6af8cb94d6c4c2289fd734b66e1a2e99fa4b3a3c4c964056e7ae700d82b1aba50f78d010b28cc5d1f90ca80e7916ffdac729a418536edd",
+ ".git\/objects\/25\/65bd17a9d8bf8213d69cd65d9f4b2c72808064": "87d5fb6c7406b999e7398250c3294c0e340d53c4b34dc2a078e6c14561383f5f06f53ee66655a9d4cfb21036784b9a5e24e28a328bec220b886599e0b2924d9c",
+ ".git\/objects\/26\/de75cb066fddd2d3189e85277d41f835a1981f": "927b33c88871f8d88fdc78c9d69742c805ca06eaf313bfb804dc279c746f8abe95bdc940a78cd2f6f05c8467d37795f14f376cea82e0f9085de477510fb07c60",
+ ".git\/objects\/27\/3ba0643d78c59be39ccc965e2a8536f6dd89f3": "8c0157abfd50d6826e3aebe7973030fc48cc8793317e105a01c56919ba7a0a9c83f2bca17a06b676cde3a8683a6829412ff9071fe4592b87af96d5f52b2c7e45",
+ ".git\/objects\/27\/70c002c6cbb5ac8b9adacb52b49afa48cd8936": "7bcfeabd93ab25cf95cec6cd3512882f248a58cd9875642a5d8d7e41743a70e562a24c5a40c1a25e530ae1924f34196ce80c675a9715b63709272c2c1d4d1b4a",
+ ".git\/objects\/27\/b3a36726ff4eda914e3b93f4bcb1c7ce318e64": "345c19a812f35541b520e65ee96a7acc37a4ce93a73f35ed6070a9c701cb8b4adcb1361e418ccaa02e16878b00dff755b40f07fd39beb6d113f2a56c1211699f",
+ ".git\/objects\/28\/1541da3fcb4873c483ec31d980d33e557b3768": "5e70ee0050fb672a74b148d95bc02beacbc23367e42340eab0c2afe98c41f9838110b9704c5c82cbc266fd2e989f4ac12776eb8d23b67628688cdf860f01d771",
+ ".git\/objects\/28\/615192818feff3f75ceb8b5415dd32b271d929": "e237d0563ebcbefa5bead195d537f148c36bb08d1c6f1d268252a1d97c71e6a9fe24b7d5fb1984bde7ceb68650702a6863013cb599986d1b213c27a99bf14a96",
+ ".git\/objects\/28\/705676691e795dd69c3b23984fe5f94f1335cd": "d7a292546d05b6adae878d12cd1b06f9be2dbe26041f4ca3e6fbbb517e4a965d9ebd97ae9058e3205fcb9bdfe64f4bdcbb1bdd6f40058e07e71e24c71ce7b5ec",
+ ".git\/objects\/2a\/e04dcf0ff422d7c3fdd5c31baecf0396bf72d0": "dbd3b92d05e0b08a66cc0f35bef2d9a3fe413c9197325c323d5f7046cacf616f2d2f6b94fbef94a6696e8ef5fb0c41edaec4804f204b6582613969fffd5d5a4a",
+ ".git\/objects\/2c\/656ea682158d0a2e9116800eb26ff6b4f8ce1e": "d1576aa1ccd52a5ebcdef62f00ce8953ab408f447c31332f29320e0b96322b6355024e5452dcece9552ab279118849864f63fc3fb927f623eee50c1ed11eda7b",
+ ".git\/objects\/2c\/9aae9b763e1016e57d135e6010a84b14b5010a": "22260a205a8cd1753ff8cb577ba6278a843cd0c90a69a240dc9073f0d8477653925b914b7f4896e08122d2af304820666a180cac0e45013a63ee828908a65c04",
+ ".git\/objects\/2d\/728665ccc2023b547400c8f6e30b0195d12bb5": "01528e9f5907aaa9e974262ed0bf54f72fef261f80c8c29a4e4bb4ec5a1e1e393574c8834af62267b00a8b4c17d1847829214a8696afa53b4376831b1d4f0194",
+ ".git\/objects\/2d\/7c7ae01695aec3d47503b2b3d809cdf2771b21": "9f95250ccc85866e0c78d85ace8072851fde0c317878602fd5920f173da17bdf8a0aa4e5efd60d0ae7c7478b44907ec47defd6fb0cdbe5fe3ff8c31d206577b6",
+ ".git\/objects\/2d\/a32ac7fbc811cc55bcb56003095481cb288257": "c2b77e2a7eee5fe1e538255a493526b5a7a806c944fc14385e9abda0c9d8a64de8038e0dd0f72205d18ceee40994d6acd01a01b6e1960c197ce975369eec8fac",
+ ".git\/objects\/2f\/28af748c43904e1bfc8f99d343e5f454ff35e8": "18260be93d31999011c99c1fe00e4d6e36423e72edac7c0ea658a782a3b9ac25c6f3800f53a5710d99c9dd5612f7c9a676a5242d23ab98f9f3cf139a471b90f8",
+ ".git\/objects\/2f\/ae103964b3f58cfa0ae9451cdb76a62be5c9d3": "0e9a71766f89fb45699534a8060d00a475432e624d513c1584425f8345067e139fc7a77322446abf8b0254dff2413964bca9c5994318f1025b5604eec8f9e45d",
+ ".git\/objects\/30\/ae71561b131a482dbf9addc07d9ded08d38077": "823130c5904adff899496e569c0f5bdd57b14cbb78ea18f65187a607bb7bfbd316182ee57cf3da499e194a202dcc5b9b2f83abf6c229a675ae5a44a7d2881c3d",
+ ".git\/objects\/31\/2c3c47d15821d1de131e4060c4253b5c911958": "9bd8fd156cbf341e75e3d1611eaa63a3682de3d51378637e1b79989dbdafac12b2ec246f768d40e729b770b7b803dc84b9dfc75acfe79af2ef8c415835df1853",
+ ".git\/objects\/31\/cc3448c1b8ad1c0481de6d13ca16f84592e57e": "20efb439fd69f89156d59b68918c5e10f231f42da7d832cb42c9f20e1af36172e59b4c56f9926892e834489ecac9d371abec2bf859101353fdb57a7187ba971d",
+ ".git\/objects\/32\/2685b51c494cd5348100b755b6dfa1787fbc89": "153d3c91b36bc3d7ab8e19e8ded33aa18871e85d197936b5ec9f09e051f613335d329b7a5717baa24724dec4279292f194a4729f9c5249d2e2ea9bc5dccd084f",
+ ".git\/objects\/32\/92080b0321297d2bc239800705acb76b7d2220": "d0b805536b16b06000da422e4072fbea3d0a0524d873e99fa5a59db7c8b16d3eed78a6646dc2a659a8387872b0b0f4b10c1114d3ca3c3dc03009c68210bbe757",
+ ".git\/objects\/33\/3cc59e185c7656f1a56b86303f036089b2f715": "6704e810dfde52d1d64782319e8898e1efc7d37360a254924a00fdbc11a566871334e0def13f22df1e81007c4b18aee35898ac5b624e23c175b65c4297817155",
+ ".git\/objects\/35\/2d9d607e5b303a2e8c7b49cd38bf51c57dc512": "40595569a0ddb8a9df2d4adfcd454afb2c107bac012c6ba51b8111a8ab871a9eaf60c9fe94455d276cfc4a89b9a261de54acf44ece26b816436e7e44fb280564",
+ ".git\/objects\/35\/7608ebcdc7eb5b14e00b1b3e2732bb23fbf9a0": "6d6715ed8a93a0b8971e9aa14a065cc75825ee8b3f4f47afa9e9c106d67aa9f1ba0001fb639cf8150eee09c75a6469e134c05883863e79323abdf17b3748dc5d",
+ ".git\/objects\/36\/792fde686d4e4f4b129a70545a8fda9e43decf": "732f99421f09300daf23c6560ca6b6de610e5ca2615e1f92ae14e31c9026d01ea2f9e04364eafda236139f709cf9967857ec9502a17d0e1ec35ead79c84951f6",
+ ".git\/objects\/36\/ace0d18228c6780c8bb89382520c306e78789b": "d3f68bdc7664d5266b1a308c3587cff3de09f5fc44e21529f4e75cc023d1b43c68e20b80ebca435fc0db24ac6bc32c03714c0265b01ab172389b4d70938f41e5",
+ ".git\/objects\/37\/6636715ca8b7332dffb423a70d0b0f3a12eb32": "ff2ed1faa7b97da635eef4b115cefa343c5bcec49a375b3e1081f69035d06bd0bce6044ada46b0e993ea6afd1d4ec669d6026290434fc577339ad5a5f90c1e6f",
+ ".git\/objects\/37\/f8e5e243d3cccc02d79114a1d5b1f9a37e8ce6": "79686606651f0466832787f5fff1d4f4e3b283bc7b20889e0f3f8c0110409a10d7530cff7635674fbc7360534c5e754a60991df0944bbf82ac1ae151a004f737",
+ ".git\/objects\/38\/4e424649874edf77ba8adbed7ae306b5b876d2": "fc2b76af056f9affd67c554453085928a6cbda85f3c29334a67ec522d3ecb48365af83d33292f84d7fef54bed082be80538b71656e30ae4e29054c8ec1b2b694",
+ ".git\/objects\/3a\/5d3b0d14c82e208fd9a8900333efd2a00e2f19": "b940616d19c8908e55fb1b68c0fd4abbe82f16ed94967f188fe74aa24593678f2be8f0c2b9c6692a9051bd1ab240101f1d1038be707301745de1dea0b9a696fb",
+ ".git\/objects\/3b\/50252791f170df53c6c81853bc65d849cc07cc": "6ad3c2aa34d8dcdb660e44e59c5322ef4e578fd309b87eaee4d5271a29f7890abaa8f6b3dba16a2f63a00358008e1cd92dea5610938caa3d1df2a0a43af35a66",
+ ".git\/objects\/3c\/6cb9f226326dad901086afeb3a0c4f17807378": "bf01aa71aca415d5b7f2d1fcb364a54fb19889d54fac078e4fcd31f63653f26cb16c7564070fb46ce2e7f3edb246677695183d76effb48a171317da0883095de",
+ ".git\/objects\/3c\/cbd9f088968065b24d7cf69083a53cd27cac80": "3b1778886e369713e20cd8bd96413bf69371d6288d01419a5301866f98ed462dd2e021fdb3f65a30a5629b250e530885c5ea50c88a8c7b00b62fc48c13f9b21a",
+ ".git\/objects\/3e\/9fa70f57b70557be13082a140396eed34b0f3d": "bd802d28e265653879ee726a00f242e2072c308e4e4394784891fc7646dfd4d25bd0f7ac8295796559a664083ff235a577da351189c5275d72ec01c5010782f3",
+ ".git\/objects\/3f\/9e5a7ced5c00570fc00c78f708a10a28d07abe": "f60c7a8f08f6929449ba92943de3c7217b4d7662abd81b61a42e6df22527086166c2ea5ebeeb605737715e6846d5ea188affe3420ddc1af8af79c14df0b22197",
+ ".git\/objects\/41\/02a3dbc6c714b6c34bacc8ad885b8ee64e24e3": "013edf94f38e3a552780363a0cb7a6bdec212dc80e4b50f1fc56cc7d7d5f31cbad5e1e457c300d619ed352fc15d021dbfe423ba6e5e8dccf4ccf3e60eb87ba92",
+ ".git\/objects\/41\/623dda163a907548e6936e080ac7e4307f4d7e": "49c4ec2021bbe1798714c71b7a075b6a2f63573dc12044c39b94ead3617d166205a86d5dcac8f88294126b94e0b59243a77f17609d6148ec49cfbe08f80e87e8",
+ ".git\/objects\/41\/ebe232528ed25d110a342f8879437dab801048": "08d58812fab805bea2ff1b4f98d47a114d442527a98fc136a5b8c3aa2c674ddf01be9b29440f67ae4ba5a17b8207935f5bf8af12a5c451cac1d2535a286fa37d",
+ ".git\/objects\/42\/5f5d8568f6e5d8a8c35a841769d1bb87161bd6": "dd652d6cfb77be604d19860c783f16696564e1d9f864631da5c1e964998f490fb55321b1a1df926a6525ad5bccf5cbe53034a61e1250e408e8df4aa0d187d6bc",
+ ".git\/objects\/44\/7073c7c552046ecaa9beca9f10e5a1284d09b2": "5f050fd9ebc31d6378f7467ae88158c1237679c03a01555884931f6b5b007eec4d1a0739bbf7b27a66fece6a98e5d9792cfb9ef19a65e8f34357470fea727847",
+ ".git\/objects\/44\/9b93b74f1f32d19d5e4f2221003add25606910": "7ff07b74efc9f1d37d0051d46127dda866a39caaaeeaa910b56c60856715762a45f535296bdbbc6b70c6ee670030bc616faea71ad0b67d6327c66b9a79e212aa",
+ ".git\/objects\/44\/cf89daf04773a9a67160a62a4ff2dcee55a500": "a21a85697ff94acb5ef06a2ec9fd3efd8c743fa4bdd9d3254f4849cd3a25cbe8bb44d438f48c83442f50477f54e091a370c81c6d1a6035d62fb85a15597bce52",
+ ".git\/objects\/44\/e83f96b8be0a9b91d21a895d4d3ed5eefbb93a": "b77a28ea71e63da0a147b7b08f2e7115d8186581f95466dfc1b58d9813f7439cff9219ba34098f0614a39485d20102b03087b8ecab50a582289db1b72392c3fe",
+ ".git\/objects\/45\/ec6e13ca70762d863f033612c52a5a896d8c6f": "9c0aeb7bf7858bfecf7fb870d0383cbb648e5fbae1c86ac4c8344ce72f1a21e5b9611a71e7a094235ba02f2dd703f0dc26c8144ef773194074ad2127ec09fe36",
+ ".git\/objects\/46\/1141282953860acde2e70d102e1ad4275e810a": "25f91b9af5555c167d18c1b1907ee98d31a5b961142b9cc4e72da9d0813efee313f76c2885dd90d0adcf2853f0669e29e46d978c76e1d9c3880a027cd38a757c",
+ ".git\/objects\/46\/2e4a7b8bb5f236f3fb9e316f5a60841268c881": "15ad777f765615846db0ad52be8c2de59815a5fb9a92e6d320a9c3364272ee60ad2af1b669f6396b74c2ef7fb5fc77296e9c761fde70ded27f881a4a643ea898",
+ ".git\/objects\/47\/d39e98b612c490ee1e66460cbbc4903548bbd1": "cd74e4c931c607a62d5b54544d2625b005961e13bba6d88a67d8d507735aa1e05499e5c251c544a26b8de1b1c5d9c71db6ff6d18dc775cb032f05e8fc80d7751",
+ ".git\/objects\/4a\/2804917eb7455522ff0282ee1d4356ad4326c2": "8bb6e66b556215dd3132b76a685e19908f34bca305e0357a0f6c3cfdd3929e9895d52333e4fc41e9bdaf43aa87b9687699304c014e9417993538491b6ddc240e",
+ ".git\/objects\/4a\/4f3388acacf76e92bf73fd2820b1693b47a7c9": "19bc396ab49c17ee99a27e5c07f26f9270f2f0cce9222e4f6bd9da6dadd7974a72192b7c963ce656d8175735ec20919a1c03dcf28d1dd3c5bd44d8488f48f94d",
+ ".git\/objects\/4a\/7b1f8eea4ed39b4781ca3cdaf2485278ce83ff": "37490a5b7a4239348d9ab45a3e108fab4fb3868495a8e02afe43d0d46cb8984199f3190a3d0149c5fa8c648981c2e2ed0788ff0d2f43c2a9a1fae3a7b49e0136",
+ ".git\/objects\/4b\/64e63c3b403a5a3fbbb50347e6ee1437e9ee9f": "62c0d737b915d91bc7b8368f1c266a03c44a11158b0bcc1637ff342f8a35e33f6776018f5b40b0df113bca76ac021ab93c974511d5d289024f6177ea432a23ed",
+ ".git\/objects\/4b\/f4d6cf890905e2e5b66f036ddbe932e496c3c6": "a7e8fcb53827e27ba3a33d2be70007f545a5695371cb295f461ebbbdfb713eb244d6ac9953da968a5b11c9c54dd736400e2267d6478ab4871cbe417a07bb0ffe",
+ ".git\/objects\/4e\/721e1fa4c31127fd2b4107587aecf178e67825": "249ab38c4d03c0e88429a1c2984d0936c089be30c8c7c98635b6d7973665960b5411c271e0158a27dcbf9ff2c12dce7e0e64f44ec62a9e8a520a6a6fc4a3fb3b",
+ ".git\/objects\/4f\/d9dea096ab11f02f149cd3f20ca15fe18d4545": "33ea0f93cd36f21cb894986f33655ea2f6cca80f3cdcff8e27f8edbcc68b1831bbd6e06d1f364d55269df6eea95a036e06f83735a784879aef80dc79a3baa64c",
+ ".git\/objects\/4f\/f9eece8ef642c9222dcb7730f5cdabd8817ad6": "2b17341d02c87745438caa711773aa25edbbd9799f11b9640844ef8f19e32f873d4c74b7b5ec10fa769b0d6ea951a190fbe6c890fa33353d0d80f95af4a9a1a4",
+ ".git\/objects\/50\/711ae5c5f55596506cfcde1d061d32098a9f40": "995f412528b7e71cbbf4fe7445e8eda86f35021c911afc7820a91de592a35c7c54d788c8e5399e4da02458474d8939d2a2890d79800a0c6bfaf4dbd794307e8c",
+ ".git\/objects\/51\/14e561e36145583c728f5040d6d85d9ef1201e": "505e3bfe7159fa8f946aa5b9334b06332a57a711d2f60402787d1d5eb4e569a3c0b4b0c563655bf01d2ec68a3e56bb4e858a989d757150c65b025b7c83ef42a2",
+ ".git\/objects\/51\/352a989c56d242b8c9521efd17fdfa4e583e48": "41c4674314f29b25ddc7b3ce475cba1307213102579c59b2c88e8923deb06007ab565b84283fc002625c5be6f03a555569a93f24af03e388daca82a031d39aac",
+ ".git\/objects\/52\/7b8f2b894a17bd4506ea7eca92f6c34834f148": "d4e7ab6dd96e670a5fb4ad9aadc7112f2ca300c81d80600f3debc85ee444380028c73d279c429e6d1eb7939f6853009446fe3d998104b2d914152e4b2536ae24",
+ ".git\/objects\/54\/8e6c62e84ad42e83429105a870451658332758": "ee55883256c5d72dce70c2b00c3323feba9bd4a2eb8fbbbae4e24bdfc7655fe58a75f87fcd2e92858ddbe649c4073cb56a2a507515abbc381c72dce04f524f8f",
+ ".git\/objects\/55\/542e548946b1c754a2b0b06e49c355114dab57": "4afca54b41872917282a112e0fbf7551495bc015d1872fc510d5e64a7da2c39a8a4ef66f7b86d8fee2bdf879d5244281bf33e6e4ae26bef7f979e5bd03911510",
+ ".git\/objects\/55\/96e8b516323275ad4cf5235a19281d93f5ae86": "7fc7aa825c8392fbcc9bd6c8befec6dd03d6b3faf11e649cd58c26abd9f72221216dc3c4df1ee26db306bebf84ee1aee32ee55c4bdf5074ec397962d73d556fb",
+ ".git\/objects\/56\/1897e02e100992a71e498b012e1cd1dbf91378": "d63bf8aab3bf8268a203d6b6a741fa66d450a5b858ac5b67f42676702188504e19c17ea038cdf716257cecad877f52a5ff0547d9aa7bf99847d521b2f645e39c",
+ ".git\/objects\/56\/50e340634993684ee18f89d6acffd5eb0dde4c": "8c83d77b1b64f44e13e56e1e9213bf49df3dfc840cf751f87d5b01f728ed79d79e6ee193e947dba00a3f4cd982a1f69e8f239126abcafa2c79fea4c93a433061",
+ ".git\/objects\/57\/8acc43436645986d76609268b7b405fb1e8fa0": "ebebdd88350c1d2035b03a4a1c7937d2ca85c9f069c855cb86513c2fbeb7f294b069429700a01d4ecd7cf17c2e8b1cab3f20d452883ca5b0854340e2dbb6ee08",
+ ".git\/objects\/57\/8fd51246116463c5555da0f844b2137c67cddb": "7fc94ba407f55421ed3dd82bd1885d4ffc9b93fb28b71c06b0c4d1b1fbf55b2c59d31d760c8f4aff7d4fe928da2fda4184cd80874ceb4f9f7d9cda27392948d1",
+ ".git\/objects\/59\/3e37b4fae39a67698395e8a9dd4354f35d59cd": "73b53c323ceb470d14667c67f86cb5759bdc4be88d7f476459191341c2ced2cce2bd60ea8e6f139db9e5ea201d1f3f02e2512d7fabf3b036f318b52d6f7d4047",
+ ".git\/objects\/59\/f14e6932281b10d1721aa1892ad896cca0d637": "12ae8a204575f3be657cfabd9df92c2b86650f2aaff27cc19a146eef964a8f256f1ba16add71db2011494a67692bab95046f0a2e580d7ac27be41c6b6c0b0fc9",
+ ".git\/objects\/5c\/42cabbb4178dcc38d2d4e5549d5c09266219ee": "0f3c8b9a67b8c1f029c01193759153dbae59f4b19ca66cc215cc445a47e76128b540c79936b0addefc30044c70e2a8ae1d80efb8e07b5c5bfca0ebce228f20e0",
+ ".git\/objects\/5c\/6843f7c482ac4bdb2828c4b52e9a46b367a4bc": "354ebffde818552c30b81874432220ae8ba3b74050ed1b7831f17fe062b69b02c7d68996164d0e9a2c052154ed77c0b28c6c5d66da455d246f233e8d2b6f1554",
+ ".git\/objects\/5c\/b01dac11136bad0229db917b1fa500a98600a3": "3f1b7f73681a797ac78a871efdd7ca69cda5d58b1031e6feaf0f39eec49380346d254faab2ddbe85de1a9b9b71c5b378dcd185465ec6a41e2bb1e43f1c3c949a",
+ ".git\/objects\/5c\/ed3e3aedf1288dac3305b61967de8b997759ae": "93f3af65e28f2b20bbe389fa628db24d90a97557b6b09d15a60355275e88254b7f9fe476ce229e3632874373141d1b4ff1b5c9fc74f0ae23ce39589302c36c07",
+ ".git\/objects\/5e\/30f2e94d2cc73c184bc942a6fa846b02c03e16": "36e73b678cace19100491954e4f4fc2dd89c8ff5d52201ffc206ca28e639e60fe7f083a17ad142ee6065a033dac41020a37c3f18dcdf305a21628fcca3886307",
+ ".git\/objects\/5e\/b7c7df1ccb1d0e89dd13a3f883a79f817bab2f": "aa834f081e42480ae2c32fdcd9cd174edd094ab57fb78ff777e87e03be76c03f63868466e5f38daf9e52666c6d0db77e405b71cd51442655766bf7eeb1aad237",
+ ".git\/objects\/5e\/d36dd1678ea05a29dfdd3a6845a8b8f737de52": "fc3cd76497798c3385d49cf16706d2c9538c5da4f6b74da18a1ad0df4404e9f2ac304e0661f2d20e31817204991100fe99f9cb3119fb307c8aeb84ebdfb42ac0",
+ ".git\/objects\/5e\/e8c025a565d1403c68168447146dcf09d301f9": "c4c32fd5ec8ae1121f1445aa7d15e2bd146876c29817288b30312656288fb0cf85b31774a5f7ec1624335b67b2ac5a13f9a77cb3fbe5a0a81897b439dbb5deb6",
+ ".git\/objects\/5f\/30fbeee4e4d28d28c5f3ab7947ec875be7cfa1": "6fb60a88f3da48dc4d8936efa090bf6d0008094d98d4d1923c32153d30d4ab1207e70937f58db5218f975fbdb2e43bbce7b299acee43ea283f727996c30c2387",
+ ".git\/objects\/5f\/356bd0796500c1b990781b6ebf36b4be63c71a": "97c3cda87026f607269d5d1d74ec2163abe6fd2f11075e40efd31d202cb000e57b8d1c59428e2e7c0c799e1e1d4b9c348ad063e9e16bd3511c0822ed4692759e",
+ ".git\/objects\/60\/767f983d82a49b0c4effbbd6d0cb51da11b49f": "dd197e7f3e3bb25c2b60e49cdb493ab7f4d67559408e51a9689802cf19a8ecc82359d67fd8cae4002b8845df589ab037cb34995370e56c5c6c4423f77f4ae402",
+ ".git\/objects\/61\/42f16ecb7e31c3402cdfed58a8936b57ad1ffe": "0bd3a805863e300d4fd71b73e688ea16e7ff613cff278c2a8f989f126980f04cc4c369894c9c259ca199873cf15d6e73493f2e3d4f9fcd15b96cca4b451916be",
+ ".git\/objects\/61\/45e01133f7dd5c77eff134381553a708dec6ac": "b00e7bca22890d3bb30b5ccdb1c681cab65f78b163b9f5f658a477332dc980f5e515367beef7be2452e5cbb7b35d8ebb179fbabecfb797687eb3ddb2d812cad6",
+ ".git\/objects\/61\/a51c97c6a6282691b2b907baab4271f0c156cf": "32463105d1da6593053c0d49fd7e7866f9ab3d5fa81e1201a97c175c9f08626b9203c0c46161a1ba8ea7d4d48993181cf40ae2bc8fdddeb418feb6bfcd883a27",
+ ".git\/objects\/61\/ae91e44e79beec8d6ba40683cb8aab054eafdf": "b5dc813bf107bec03edec96262f2ba9771190e277cc62d6ac129ba820be5cd0ce41ccf77177c0eb77abba70f4be8b8df98ca0dcdeeeda70ce86d94483b301645",
+ ".git\/objects\/62\/78a6516b2654b3b010ab4bd6b8840304d0be77": "ca812f0d6a2b1c72b209e43a570bf96a3e406f86257cb93fce41385c16a6128d1668327bdb89846b050adf091db597d4387720a58a443652015d741b963e66cd",
+ ".git\/objects\/63\/092f9a4d7df7e50029ade728c82f6f823015b5": "add50dfc69be6b5b945ef8c63067e529b2cac6340de17100a485c23668aec8bab3153a06c21099f26bef82003d341f06b1b00ad791957fa849dfce35d00c8843",
+ ".git\/objects\/63\/0d68245c730b1e7b66324edf5c58f1eae94095": "2e31584a1fdbcb582acbc3ce849b971f0516e212f89a232bf5bd8b50456fb15dfa7233f55792a3b37721f6e43af3a4c9d1588438e76360a78b8744d6bd88771d",
+ ".git\/objects\/63\/7cc61d085dce9e84a45f107b87c37fb573e7bd": "763ca729d04428f41d56418092ab943d729442ab04c35d34662f77cedeeb54f238bccb66cbe35298a1e47bdf168d7a2e4109d3f3386daa18a9bf85629b68fee3",
+ ".git\/objects\/65\/b7988a9c028d00c02200960c777fc31d44afd1": "cb1b180f3b843898a40fb712b30c49e96cde86c8aa0cc2bd06d7cfe6bccd80299616806eab909e36baabbb31071e7938b7ab00789c670720150a013a122b341c",
+ ".git\/objects\/66\/265269395ec42c5d6e4660a432922817d8bee1": "f59e48ecae883cb7d9b93a57db8ffe4df28949d93a3c13159fbf5ad9dbe08e992676ad5d1cb6ff13bcc2e4744dfc8bacc0d720431df5aa69b9e1af1c01e6ce18",
+ ".git\/objects\/67\/586fdc8b61628e4373bf4d0324e4d11eaae6d4": "7a12207d96f852ce1d087c261df76b8bd2eba914e91b4b3583d262759acb2f40050b50ffd041983e4d9dafd9090c113e2d133c0ec45aaa4e717281baac365e6a",
+ ".git\/objects\/68\/51e56ebdf1cd2ab28a69d3b9487dbd386c4742": "8edc983434056a2671babd1265c240c6832a7d700e44c2a76dd0e01b6ce1e2c1dd38fc4b92ff2d472ed0efc40769bace9f23441ae1cf6513a34e14a6284dc1b9",
+ ".git\/objects\/68\/9d13c3b7b914f7fb6de77e58efd28549c331e4": "c0a69dcd283280d35e31daad631d47b8352bc07644ec7e53eceb872efae07ee35c93745d155b6fe0518428986447793519ea1831138f476cf95743a475035db7",
+ ".git\/objects\/68\/f9075cbdfc99a61182a4d32ff6f212709e59c0": "bf290441dea7fb076e10cbd10ffeebbe916175517d6496dc90683eff2c6252ce7ed9c3ef4b9648af3b204118e5bc65d52097d60f97dca87aad26de95742ab918",
+ ".git\/objects\/68\/fe71de3a0fb3ca31e1150b4ceee82a8a62758f": "79b58048aa93688f43e2597b09f8996db5eee1b69751a9d85532f91b65ff264d2e8e06012b2f68e22425ba74c2f71cc14737d269405a1b0c3f2da004978213db",
+ ".git\/objects\/69\/c563ba23430ef2e94e7bf29aeef261b868471a": "c9a11d737e77fe5592ce0e581e155ceecd14722ea8c3ce29e8544fdc0fd0e32a957e82edf06ca9a51aafa257446c2910fcda36967baeb1dbe82859c8bf2f254e",
+ ".git\/objects\/6a\/8870e38f4713efdf92c5c620ca3bc6753a0644": "dc2bde52c6007cdbe946f14e06bb9aabeaaf8b0b223d408dfa7f7fc87b6cf5f31f748881629217956395fe5cf41401b62084bc343b64eed6f27b544ef0cd317c",
+ ".git\/objects\/6b\/40294f15137c5a8434d3243f6eef69d586aaed": "e10bd41a06e3bdcb793d16529d04668dbd3917f703c80a6978bc01d37c31ce5a3aa6ccf1a333f86adef1d0732109809926d3638068e0e4270e0ed1d1b5a52e2c",
+ ".git\/objects\/6b\/92c698b5bd50e7a6829355343083c4639e41e9": "ad125763036be9a17211f680d902f4774b5873c856ac45b7dd75ffc72662394f802a7283e9b39c33a7855e458b7871e80484e4bc02054e54af96e18549eb317e",
+ ".git\/objects\/6b\/a6466e35bac3afb8274970e2c2b706562ff472": "c90a91ac59061cd47144f7808ebe6059e25801eefe880f2f5f5aaeb573702131ab2800590fc6b7432068c3b32add8126e223f242f3acd4b32df84ebd56da2188",
+ ".git\/objects\/6b\/b938ecb35649f4f00c3519486acc6e3fcfae15": "e6da635e5c321b0dabe0d6732eaaa7b8697c932522f31a60ee8bc642c792553f0862286c4ace5b524ce3b2f0194652ed5f59b89b1771b1b53306b6f5fb9b8e08",
+ ".git\/objects\/6b\/e6cebb8a9b2fd8a5838d0db4ccd118f5b51224": "e2feee9d97e245458062be4086b7dd3786a452859f3a1b2b307e2f9aa4d80d4ad7b193d71a50b10fe7da3d615785d22aef29d637df2644d92049fda1149dc26e",
+ ".git\/objects\/6c\/96ebedd8e450b931fe4864f18d108d8758863f": "14f2857aa4c3007e0de3a73ffcded1db8e2ac42ef7529fe7a029b03dd04d24309e21b5d61da3d51452c1a9b583feb7951f1866364add78cc585146995824856e",
+ ".git\/objects\/6e\/7483cf61b490c08ed644d6ef802c69472eb247": "ffe39b6750fa55621f0a0ef06933c439cb28150b2c78682ae88ecef66cc8633efa98201f72b9e60b3f4e3a9d70648606543d1406f5fd6e23ceb70a5a81889da8",
+ ".git\/objects\/6e\/ac3266664da392aec0228e85aa2fb7e0866345": "bc45f092c52235d5fcd5784cff9a8cf21267dde63c7c5daafede3917c298b5b2c4f6c2540319560a7fc88d669f673ffc28a5622f5b9341b1c3d20d0323362638",
+ ".git\/objects\/6f\/55d928f1e809c339b72c4732b46afcab86cba7": "9e30098a75cb4faf04a103a378fa41aa00ac55322249ab4b912214455f86811bac5d9e16ae42dc7af399c782e2e34e5b9d9c509aabb002f4a6e28c625983ab47",
+ ".git\/objects\/6f\/96ecc2cc23bae7731093d410bb316652ffc6e9": "a7f95a50b66bd112c0dca795c543d0280d7aa679b6835d6e27be1623a058ef954849422a82f7b2de9c5114a347404335fbe6e0472ebc94f5f6ba056dcb746d6e",
+ ".git\/objects\/71\/951d51e489f83c744f39991cae001f7299f8fd": "dcd2aca1a2b255a50fefac31b6cf5dec8758f2533ec67daf9b3f204b05e2b777e5c14244e1abb85474d7c302db8fb755ec9a63658f9529a7681b242f3255eaac",
+ ".git\/objects\/71\/b6e06c1bd7134c4e2e1f6530eb5d82d9346d17": "8082cbd39df3238fa0545b8e74118a036cd1001ab90185f1e4ccf75302a9ab2deac644ffa4517f4b3eeda7edadae1b7c450d252f1581e9dad9a08a8fa6f10f7e",
+ ".git\/objects\/72\/823e305d077858683bd19318cd20679566c9e5": "adca28c450f78609c003bdab649f701673300680743425ab1f5589c9969db2c4b06413fc66bcfa29a7e166ed88eec5b39a9855dad0f705219a90f99e1011ff27",
+ ".git\/objects\/74\/fa0864ecf10327b825b1bb7687584a0e56bda0": "cd9b44910b337dbb904e0b60c779cfa4568eb0a9085ff6f8e5149f07f133c2d60ab24259bdc6c673c3e2b9a116210b15f20f63e7ed02acb9580898b3f65dbd71",
+ ".git\/objects\/75\/058b9f9f141648f0d09324c93e253674e309df": "b2ef25b74fb077ad4b0c468cbcd82a104ac1600c796bd04fa6e247f833ed2f6ff5c07d5402c27fc62a849b0d8af564f29e5cc1c7c38e7002ccfd980da99297ce",
+ ".git\/objects\/75\/515b6f08e3dd95b432f49a1ab6112f4eb53fec": "95b3c9792004cd4fd91fe4aafe26b4d52cfc8265a1d10f3b58c1ed379be4d0b92934fceb591e4b8f52aa38999cafff73b64e482587d5e5e247e1258923666340",
+ ".git\/objects\/75\/7ad281dff3879682b4efc597de4b05908b748a": "852a1d5a559ed6af2f23831960e64877ab944783c8eba3d4b6dc4b0ca181846c52558e5d0a9b0c32151ac27037fa8008ef6f792457d479a17f1afb9a3c000141",
+ ".git\/objects\/76\/28412545b8e377d0dff20b8acf21ecdf999cb5": "48d91dbe7d40ce85f0595ca075b654d66eb89e2689704de80696b8bd0be376d7dca54ab433665124c85a51a57f1170795754560beb5d3ef5ca1cfd0c7b081a9c",
+ ".git\/objects\/76\/b9f2db1471238dd8ff92cd6b0a340989bec9e8": "0d80440f0c6096f246b79cfd7537931bd81e5ee0dd33551fa9cb4b2483170f5da7e885866477fb7e47b8cc6398f39aaf6447b0d522545d1cbebc4842a8312e7e",
+ ".git\/objects\/7a\/96a6bc0d5f309d08c6cd79c885ed1a600ff9a2": "8b14e4ecb6029dca69d1e4391e3da3ced2da6083d714da199b744a4a5e8af13cb8cf7a1c2319aeaef0cf043efd393c549ac78bb1ada584fcf98242773d672e5a",
+ ".git\/objects\/7b\/b75162fe3c10aa01bc300a6e9edc6fc159829c": "78037f389680cded2ed1aec065ec6916db2249b1e5538ce6b302d17d80fb1100bbe87aad75dcce1957a9805afd3cf0fe99a26f73b6e1ea5af5d8092ccf4bcd2a",
+ ".git\/objects\/7c\/0658f136f5f96738fa06098d42d59bba46c4d6": "2a3d72155811d1f7702e02183590ebdbf6e7ac0288613b33ce6f9af113767c8d513fab26fbdac707b3e8fe17a6984edea2fa0f3fcddb8651c9b3e8f97b067f3f",
+ ".git\/objects\/7c\/6f3303fe485ad5ba1e7a290d08fcc5d621b55b": "24ca27cdec7675dfb73180a875e859c976bf4efaee6b3499cb47476d9bead4f24f5423d97715d2e27ee5ddb3d611645fe5bbf1c9f9b4f3a0e855480b32af2339",
+ ".git\/objects\/7c\/b651154b967bfce673e7148f8436c65ad3ecad": "e7d51e6757c0001ae355f5af504e51de176a0ee1c1afa2ed3167584bb7f8c2e7ebb39d5f337510df87723edc93ad44544b89ba8e91ad61a0e1a067505518bf43",
+ ".git\/objects\/7d\/47ecd4870b47629817071ab93d80be988215da": "f9120294fe38124207a0f1ed55e7a482b34346871b185c0f2aa75e956023ed4a068df7a734ddb27ed378b31a1c33044438d8fe7b856546d1b3f9c4beb469c725",
+ ".git\/objects\/7d\/958c0f8044140a57137961adb4cbcbcc253c57": "02615fd4ecb86f460bc06991c50660ad99452cec21f89c04d041d68a73d2535fab76e3c492aa8cc3dddb749f7220e231d704fcc1b120a215ce1ec12236fbffc4",
+ ".git\/objects\/7d\/d5bce0be2643c6eb750d47b2a2d0128b61ca3d": "36dd743c0dbc20a7a5e74b61b3629ddcf587a5f9a1d0225e4426668a641077f7f72ac064137947499f39627dc0ba3e167d33d56b6cab2d60ac81d7852c8cb4c9",
+ ".git\/objects\/7d\/f191e33d3b1e4508a5bbe48060ab14ca72f3eb": "380b9021c9115acd5582a57b64186d7b134ff0871764eac51d2ec1757bd454332539ba410cfddee1db6828a0f8865ad65174087a55bf48b7824fd462e506958c",
+ ".git\/objects\/7e\/7bfa07778337aa2a35e8efdc8236c9ddf0fba5": "42a848414096db3a8970b1d824a058e680fb26acab807af398ec6602ef865fdd79954686760fdeeaee767636158f8c7f90c833265dfe30cb7b6f9d4f55cc3287",
+ ".git\/objects\/7e\/b74fd127ee5eddf3b95fee6a20dc1684b0963b": "ac4521001436026ea85055ee2b794fe580d0380e790a710f198f70da42e19bc6d261d8042cfb5e132e497c032c75f0ac197f168b8da10f8cb619c2e11a82eff5",
+ ".git\/objects\/7e\/cc4371a5796bb212335f257b1c3a3ada13351b": "1d8296a9b616a8776a2f22db898ea64dd2a5fc88202c48c271f0dd5d0538114fe14dd837cbbeb65ee5b05ffc6213a50d3a7baecd883aa480d0c3edcb7286f588",
+ ".git\/objects\/7e\/d773169d89a97eaa180b5d20e8d0e9906d741c": "e2d1ecb0f20f8afa798452a6a8d451ef10c2df9248972fcde11bf08a958e74bd50d1b7930e0cdffb91190233aeeadf1806984b9e57057aff80bf737831109552",
+ ".git\/objects\/80\/5507f014957515db785a743fa4ccf1f8483cea": "ea7d0c7d30a2808b708159fd4c6074810d8c35b551b8c16d1add0a23ac869f5343331389153ee90bbe1cb51632708c0895b48b3f344f9ec76e8a69ed01a92c2f",
+ ".git\/objects\/81\/47f1161fcd3d6b0661e4c404baf61b33f1014b": "6176c3a9fd4c7336952c73fb60ff48faa9316aff94a96a6634cef1dd6b8261e4a65e036bc24a377421cc5585e38371fc03a377db1b28647632e1817e0e9bc5b1",
+ ".git\/objects\/81\/d0754b3e12ad1996ed3632f851e5689d352e43": "c1eb4d7d4e8b854423205ed7894977e9781d2971455ac4f04bb57ba2118868db1b0fab03333fd1415cc01a45b8847789870b657703fd5fefa44ba5bdda2cf7d7",
+ ".git\/objects\/82\/820722bffbf1ce8a4c462563977da182d5f1a4": "ce46cac7e31d3ad47d884a93480c5dbd68f73b582c17378339d0aebd9567d8150b09a1544de800e1caf90d73efe5b33e3779af56e0c6014083c5b41cf7d97d16",
+ ".git\/objects\/82\/9b792797cee23e4a8d73987b40b1336d288798": "921088075b9a3d997f449cf84b8793fd209c194b8afae2a949ebe596077044813f6d3dda7115439eb5a4c71c623931edeaf7923e9b975d07bd93350de673f0dc",
+ ".git\/objects\/82\/bbc34b3decf38fb7c6436a7b2a1aeddf080231": "d117709ed57ddd744d310dde383ae07a4d94f92f4d1c6d87d6827419ac563d16b4d9dfc3ddb0b76c14f69115fb7c8654558e71b75ff8d6e84833eeba86458958",
+ ".git\/objects\/83\/5d7b1df049d09d71a8dc4a5b602a13f99b78b9": "a9db82d575485ea5410933f1bb39866b31ad617c639c5647044622681ff8872007b6cadce77afa5daf4c1100277a2d625ec50d0937ebd7e5a76abd75d9548c7d",
+ ".git\/objects\/83\/c0e14aea4c1e3a352d0a1e22c6ac87a1258fa4": "939a769cdbee8c2ae92cf6c8245e5ba8a868310cd1c7d69e80f7e0d63d1bef6c1a6657c9a43eedb677ace9ba6d0d8135cc09b39069940767f4032611d37a7e5a",
+ ".git\/objects\/84\/2bdfcef9dcd1e8dc6531e37a299e9113e3fd67": "3b8d0b3d09ef389b1a088359af9a757c7ea73bcc3322b086511bd7b09ab02311e3c2887a9374bfdb1a5ce656c9c55da5390b9f0cdcf84483c4de6375c6c9630a",
+ ".git\/objects\/84\/4b8956f9abcd791b1d7b80d57858bacf222045": "c5feb8e2b998fcca0b0db4a83565aa4e4e238ea60515902adc8e696e8c565ab5f3b6578c63be2963d925e1eaea8fc85b3cb04c84f1d3d75edb747dee4664609a",
+ ".git\/objects\/85\/e788870e210697d89cefe3e01b66cbf0512412": "3592eee88345c8f81fd267c0d5aa63449dd3395c38c4861be229c32717ebf96eec3c84aaba25ac3ed8168f970d1b99a479632294de17ab8737db0238d6dea75a",
+ ".git\/objects\/86\/756e91636d59485831f32e1a4aff84bf6e8313": "6621eed949ebe3b438887f6242d775ddf6269f46b2f00ef3e450868597579cf201e7830b0068dd9ade8fb5736fa369213efb165cc41536ae594777d25b00f53c",
+ ".git\/objects\/87\/0730ad326c67a11fe13b4494aa165f6f21135f": "d877f5cc16d652d72247bd2017c343b60c1c7eafaa8b446092b54c1164d8936ab7a9f966ff0a7070c4d1a828f9e97a4eb0ce49371c9d5c35165fda328af70803",
+ ".git\/objects\/87\/2f6cc7dcd20d313ce1cfd5c9ce2546a354435d": "c65ba313ce632c26bf707cefe7c48f9fe099eecd5eac135f35288fab808eb84b275ef4a76856919c7417a28601641a6aa74ca2371e2db683f5c2f86501b9dde8",
+ ".git\/objects\/88\/9ddf5a8d9c8feac3fed8e9045147a77266279e": "61015c58a92c0936c4dd5e5a78539eee8cdcc0a7f5f26d50ee985ffede708ef3dc919d3190e7929647ed160591aed22e384a0e6614a8498b95ee9c646d56de87",
+ ".git\/objects\/88\/c5dc042060f3f9f4ca4de935ca8c33fb08b7fa": "52a29679849aec0d23e8815f5baf43d38f436caa2a976df6cad9030d5623d1d7aeca230da055ead00cb70b0e121b3b8be4ba6de4cf932cda3568a2791039952d",
+ ".git\/objects\/89\/a804acadddcaeaca4dbc58072c177061733016": "c4d107268c1131167ccd238d8e627e19d8cf557626130681d326d30499758714c84a5e02f4bb06cb91e462b48a6d104dcbd7cc49b47a5c3a291f80e0bb0df2ed",
+ ".git\/objects\/8a\/dcc752c2d1a5095c6977153444bccc2e7b0723": "d38aae78648743b1c7af960cff293249c32a1824876cfff5043b63be9b35ebc88b28b3444585e14f41506d4db131517ba534c5b6ea4cf8e79b6db50e9461edc4",
+ ".git\/objects\/8b\/66187fe067c3aa389ce8c98108f349ceae159c": "a62ae7548a2e2cefaab5f1baa01838ae75440aebec16cf8f0bbaf27438a6a6dcfea670b51f47ed918d3f5c42e649d5a45cb6ab3c1f07f072da49907f47e09e49",
+ ".git\/objects\/8c\/8ee481853615ad98944b7306b1f8535e558e96": "e32f3cbb8dc403aaeb7c4eae0a1751605321ad41ac6a28b737d4aac4e36de94c4b9578251d5e7584f1837dcea24c4d8cf461a41d4b66c10e768ee2a4f1685982",
+ ".git\/objects\/8d\/87772f6118bb068059dc1db73923c3f97a36a0": "571a741c59d538c1827d876282e2805d3cb9b0fba661b1c06dc4c96b394f1ff812775605001c86333a0dd3fd3af521cc9867e23b9703bd2be171285cf7f1bda7",
+ ".git\/objects\/8d\/e5c76ee06eb0c3e4fd5f42a1e45fe2546d9d7d": "df6082a5cf599bd2f0e50c0f71a6c4d9e98ace73ac65223653144a51f5b87e89db73c5e4ce93e0849f92f0c253ddc3b3488ba5ee263184814f8a95a419427e78",
+ ".git\/objects\/8f\/311f732ea545aadc12ab5745f61090d5bf233c": "0b772cc669efe66c65eaf8e8e067815c356f50aabdd5133db4f8014f240c681a6006480f71fb94d3618c9c22c30476db609a5a07abd11688b167396b76086291",
+ ".git\/objects\/8f\/cdc8024021b099d6bc1b432a99f5e527d92660": "11c578a8daa48bce8074e7c605c4303799ee623998aa28554c5b5e02d5ace62f8a26e36f0b3994a33873d105ca3be7cf79a0988bd41dd20ad832a4f8853ae1e6",
+ ".git\/objects\/8f\/e0c5d3d91aa1aae7e3797108ece4f8d6e04362": "3f0e5452bf6d94ab58ae98c466e7c2039dba2e3d3465c74359be15e09c95c1566b09d689312adc77ac0b5ebe0d380a048994fe895772e4174a28ae7ffcfc079e",
+ ".git\/objects\/8f\/f23cedd2ea1e2a66751097569aec404b0e6be9": "b5f1f0f1bd98a06f1c369c5270af9262603b3f632bef9a1e7e858cfa21c919eb34943c97104d3ec39a0df4c63f760d1a5775aceb7f77bee46433fe28f9297d6e",
+ ".git\/objects\/90\/8452abf35e679d6765995cea967ffeb0b88fe5": "c754530705f424273815c3aaf7121d3637f70e8b4af94aef1a967ad35953e4fe886b710ca68a6b892d860270e456459370cd8c7e5df757a34cce46028ec15087",
+ ".git\/objects\/90\/90b7a4ad22b3f2128936f048b8c22f4c9357df": "188c9fed5b05e46e616abadd07ea52a8503235d2df80a99a1e71bf0c531733f8f4ad25bd754504dd8c1ce6abea6be0bed03b9483b68c5daba5403aea82cec953",
+ ".git\/objects\/92\/3f2a3791eddc0770a8296d6e86c9496ad0b554": "cc65497bb2cf3c938554e1bac938591b20a00fa7cbe4cc1bced2f6e8e4f1afcaeb3f087142aca4e3fe144aa8a7b4df1ed3461b84bf44f49ab8d6106debb3e824",
+ ".git\/objects\/92\/9087fb3a629bd5196aa9a6de2d05886c15b205": "6595f6d87613d61b87ad3a11852ae5c40a81dff48b278b99c87fd2e38dba667409e99174434b2199ca1973821504e3319b8ef55e7da9900cb131d6fc51ea4048",
+ ".git\/objects\/92\/b4bde8b944598a80cd5ceeb15f7e14cb2b96cd": "72c05cd302f7c43235fc30debac05266ab977405ac6e5a7f6b5e336696231b850dc3e974804a19ead5ba48b7254f95e7fc478e611332815bd4cc53c3aed599b2",
+ ".git\/objects\/92\/c2b2982cc1c659ef9135d28a784cef00f7110f": "53c48c7953d56d86d5e1844c35e7befa336f1488eccdebb6c39a096379a344ea860b69da8296f92eacbe530b6813d9734cc2b32d5b0bb900b02dd37ada57e49e",
+ ".git\/objects\/93\/2e76ff23e6a5b5a7dc575d6d09d477d51740c8": "c8e4ae7fd008d8f4b63dd2edb387df4157d40f7c51e72dcce688f52bfd0db3693e63b8e41ec9cefecab072d8b65dfd7111f3add76dc867203ee0579b6ae44548",
+ ".git\/objects\/93\/5b2089792cba4728d2bc8da8d0a5b2d9fc8040": "79b24774f18363145dfb143875f1ac0b141b23429c4211838b9c4feb3c2b343ca2cb7dc79aaf52d7fdb69cd4e3cec2203af758943db9806b0c61f3f284893452",
+ ".git\/objects\/94\/1e967f9c54493b3e3ff84bf5204744374805ae": "ba51e647a138a9201f5cf81d61abd8ba3a1678385444cd27e852c13bd7a01ecc4605851db93a29377a2b6076f1652aa9ae4e411de96630f27192d6c529b16bea",
+ ".git\/objects\/94\/5441fbd6d034336fe2ed5969ab149417d8546a": "029f12e39664af199f27f95e6a7ab24da6be7fc6b79bda5bb0fdeec29614b3b92be472491683005dc4000bcf4d665bfa13d953088039c6dd9860e5c75fe2a3a2",
+ ".git\/objects\/94\/9113d7e438989c66507ed016182b5454118a43": "4375d99f03398628a0286e9f9c0037edf8b08a030df892b5d10d3376a32b4b10886c646f4ec95366fffe56d0b7f2a218f8872a09d723a4201cfe9d75529229cd",
+ ".git\/objects\/94\/c85c4bf4b2fce046c8216b11818633388de927": "c26181e19e8d6699203e35b343c9d04910c55cd9056d545b61e393599d98bee7c87c8f0efa55ce606ca6002ed7206c1dcd40593ecde4c94475b3a90e4d0d3244",
+ ".git\/objects\/96\/c129dbe0d5b6ae43f7858658c761ed49aab727": "a92390f17b11f5edca590a07d7a0ef4270732d764de49d374d66499f17c97e4dc35b6ba7ff0e3a6365d276b6ac90c6f7796b0ce03167ae28c882fe9151e64fe0",
+ ".git\/objects\/96\/c1afafab7f3a2ece0e9dd48780c894279eceb8": "03a085591ebdeea699b905ae8ebd5947e9ee22005f29bcc86488b26a9f8f6fee8600b1a1cf91e7689e10189a70351f6fc5e06baa1b6bf8bcfb5ea87893b9df7d",
+ ".git\/objects\/99\/04dc0d153abb68029fb5509e15beeb7ab4d63c": "69322559460e5a7f933fe4d8a67f609b6efca329178884b371cbf763e859ff653cf562974322b12a8f1680eeb8df5426880529021c4ad21efea381685562f483",
+ ".git\/objects\/9a\/f860a96cee7517d618bdafbac75360239b1959": "dc8614c558fcc23603d541abcf1779429e943c828ce8e36506f50fed47248af521b9269221a8612a73879c72100c410b40105b81a09bf7570f4fb7618c80f9b3",
+ ".git\/objects\/9b\/20f620bcc5837f4a88479c8bf3ef171ee849e2": "24791a2f4a4dd9da08aca33eb87b0acf1b6b1e0a44f7e7aa34be1f9157f34a82a22bfe4a224e715b5f497086a09bf2bcb9e65e26928d579152c788b92b5fb47c",
+ ".git\/objects\/9b\/7ba3ac264ef0790c8a9e34b3e290d0e2f190d7": "59775aa9bf1eab16ce5fc856a73773d886406c7c63b2043784deb76c333c1d5bbc8482f992fb8145d275ffda2d6b0a24fcfa4f5f343b4ba6f0b277acfbe06cdc",
+ ".git\/objects\/9b\/95bef898a6644e840cbce5262d306bffff5995": "8358ab67203588abfbd196d0dcaae8e669b615261cf2b0d895ba213a045d4f1c8e69aa9e9e58cda4030dde89f7f2ec0aad42be08243fc36bf9d9b32b1746e6d6",
+ ".git\/objects\/9b\/a6bd5654631593c72fb33a9d36ad1aec2c7e04": "3c7b266fd618f5c76d4e2ff7d9af440a66992926c4deb1d18a4d4b5abd00a1467d00c3b536fa2cba1417f9aec8f2aff1107f0ce66c608e91eea0c83bf3a9e41d",
+ ".git\/objects\/9b\/fe863d98154bf7afe930af55ff8f2deb484bc1": "1bf6494eeb67af4e8c4ddf988a6c5939d35e365789ee8da9878b160152b9199a8b6b864b25282553aa6c22278389a825279f7816132f605b8b93ae8bfad7b39c",
+ ".git\/objects\/9c\/369e76f358d20ed4d8bbb366ce31289e3b0ba8": "c1b083dbf301ba5fe5dfa300a7cc2c0189a9497c555c8bd2f81bf1d4a7d279144e12bdd1df70e4910e5b71d3a28139377ce0f27809ddc46ea511a801368f9b4c",
+ ".git\/objects\/9f\/cc8cdab29893e465de2d5ef6b232daba08ae04": "f0ac4175dfea9d2ffc0fcc8a2439f44cc4973d85da27b565d34586d26be4ec7500fde0ead97505da32db524d9a4d5aaaba2518fef2508345440cd3135ca92cb6",
+ ".git\/objects\/9f\/f20b3d4f7044a7c4950f6c2bae300708913def": "9edfcf0e0e505085d32bb5e2adb40f9225ce3b405f4646b7e41e8d233837d4fc401437e29cf435f03ea7373a445cff1dc516b8a465b7ca0b77a8b4e5e8dfaebe",
+ ".git\/objects\/a0\/81ee4427eebe6904f78143b4cfaeebcb79fb21": "4571042bb9584db7ad5f8c07143ecf27328a6556645720f6a47b4c2ef34a066a9c0b13d4c044d01e291e65b50484543a96fba02484f5b000b9e6f16b6e5a2037",
+ ".git\/objects\/a1\/fe153cbd91553e6d2c50ee939513884d0ade07": "79ae3049788f6dc7d7be5946567189e7aa882633e501fa63d03c54497480110d810c38a3d5a777220470e54fdc5b8c65d133d7a1307cfaddc145851bac1ab5a3",
+ ".git\/objects\/a2\/48118ed960312eaa58072af3e3e8ecb8e4d369": "48643498713915f3e346e3ba1e0ec075dc2295d658dc469db7db20931ba07be6eed803ca4a328974ddca5304338ae3933b5a825c2f9b9f357401790d4b578b71",
+ ".git\/objects\/a2\/5b8bbff95b51e6fb192b1122d0a733f3fbcb40": "bd23dd306e4bf6ebdd2b8679709d99233ee625d2c8f20948f95df2981e66cc6db13e4bcff965608e612b35bd7749c546a4dace5270eda6f9fc4e66ac1ea9923a",
+ ".git\/objects\/a2\/a06f82eb0cbc80742174891d09206432ec1916": "bdc8078b9d72ae2bc6cf7317bbc59631f2188144dae7e10faea5979a09ae1aeb3a5682a44bcb3f29eee7c805ddc35f9f168a500c4ea688ef41b9415d57dc898a",
+ ".git\/objects\/a2\/cfbcfcb08f91355c1e0a7f831cf94330043018": "59f207ceec77739f0c52d7c48ff9b769e358a7a8301f138512170403aaf264891f25b6c323a52dda75732d1a5de4637bed18513af15ddac9ef1041cc85420b8b",
+ ".git\/objects\/a3\/5fffdf48b9670de0a867caaa4575fa86732949": "172e1b9abcaf97ebff0d258b0b6b0b39df9a7a5dfdb92b982c0346f5bb511e00768668978827828aae2a3b5f8fd9f4ca1b112c9126d58b31a59c355a3eed77c3",
+ ".git\/objects\/a3\/919e4741f20d09668366d5201c55d2f4029638": "debea40209f02b8058a25b8c158cc4af43570a3b01c7e86f432d0d483de1c4c786a4444e847547ae983e8d8a264cd161cad531fd5d77d3965482bfeec9432fbe",
+ ".git\/objects\/a4\/3fe78f2359c89fe88e16ecf9796eb5ae84705b": "6f8720bc9f810d8b390ff83cfc05cee4be9ac974a2a305afa061a323eda3fe2bd8afe46af6c38fcc9df47c0297db8bfbda61655e552077ad45c1a6bde975686a",
+ ".git\/objects\/a4\/6ade7df7f0a1d0f6b6323efc6d28c943e45738": "d23e5d11d1132b2196e2dad461a0d33be63644720926736f4a7a99068ba7b7a96510d9f44dd2aa57d3ae6c601966a64f083bf979be02f08d3617678e6db72239",
+ ".git\/objects\/a4\/dc8e3a5b8c3ee887cd4c996d379decb99a19ad": "9f8c9d1a7f8d1738600df5869a7dff0980110389610598658064d985625df34dcbf8a4ce9fb8afeda0c8dfd419dde9996b116332f1fc986c1d93d0246cb6d061",
+ ".git\/objects\/a4\/e6c71e2b84ccbd8a66a625e961ec9e6a6d22b0": "1610df59c74e470283513ce85d5a48a99d093a55d55d7eee8b6b9725072d616e99bd2235675a63d9e9338aa095a1496f1ab5edf6530639e86c184e09330701d4",
+ ".git\/objects\/a6\/5c05ca9f0078fe19a924202e640afa984ea5dc": "d038416a65b60a0f7ab4aaf1285d414d4eea7fbad7e2744751583caf9e2e6565d2625704a68244e75322c10fb9c17c25871b90c0b3cf6abf29aec8fd09ac417b",
+ ".git\/objects\/a6\/ceba60dc0578f1ddb253346b401e14f619fcdc": "0ff87cb96e6ff34cbc08dd4be7cdd2a454dcc8051413e83f183ded6a49161ebdfa86fe2bcbbfd69cc2cd74d8bdefabf84f1b7ef448592dc5ee6ab79e902c9c3c",
+ ".git\/objects\/a9\/f6c666a7c2830a2ca59fcf6dd0d04367647947": "5682367684f1267cee21a37410efec85a1399973680ee5cfc6fd58e3f221cf59f13b17e2ce11cd5d8768c221650aff95f8f5ab8a6b861aec2a0e267611e04d01",
+ ".git\/objects\/ab\/1a92d40df61b5e43c86f9e9da52ec0f2b3139b": "5479f315e37c2c4e1ca2b4fd26bebc7f0326259d8f528c200a474a1fd405b6b64e3143d01a79c305bea8f6c8e363d28e724b4d4f385c91837aefb70edc251a22",
+ ".git\/objects\/ab\/d55a1a8b2deeb9223c9be91cde16042d878d12": "33b0d21db94cdba071e5536834a63d6b2ee084d65834f3db81ccb630cbdafc6b15bfd5122b110f054b8ffcd8819a276f407d32978eccc7e4b1c3145e2182a881",
+ ".git\/objects\/ac\/d9cad15d8030dba32430081a3eeb83c0417ad3": "49253515f7948e289f4b7b3894777991ae32719925c1218e1663ae07349eb973a259a7c9ec1dd0e3aea632c3d41812191bc04d11b4ba30b3f2edcb770afb9fda",
+ ".git\/objects\/ad\/025a3fb57132fe32f4dc47238bb8ba15d3bff9": "91a29274183647eae8512da85b38bd143dd83c795ab9280e13a37a20486b5226cd0c580ab922c92a76d0b967ac207acc0c23fc59ae47231cb37b6041994b86aa",
+ ".git\/objects\/ad\/0b30e1e35f1bb78b99d3427250b804f7fdd8f7": "f0cf91943f056a115db4f43c091dc8e988b9f7e32961aca8fe2eb3a3423852b408ea0fb60430ac84c01050ea5a06045a633fdc465e6ef10a3479c107230094d5",
+ ".git\/objects\/ad\/17b61405077a906c6dfcfc1ca4d97eacbaf374": "f33d3221e60dff69159023156f17111efc8d77420b88c1ad615ed97bd03d03bd52b23420b9b10e654addc512dfef678b077d279490d2be1695aef24588bbcc97",
+ ".git\/objects\/ad\/25e9a1f566550e36999929c439ad9c018c747c": "a09929e33d5c4bf4a61ec76609d8fce4e2017b0d34ed44649e0b379e61db949983d1ffb5055f1a40d8a584614c6c2a4c9f8750f0d0376cec631f659ae4989b8f",
+ ".git\/objects\/ae\/16552b3b39053e4228a7ae42db88bac8a42321": "395b4e66d0d3c57e35773edce35a53a5c1bb0448f0dc9c30efc31c277add45552a6845df8001febb3252ebe94f8e35488b72d1042ebd116852d75aab2e521140",
+ ".git\/objects\/af\/0d5602728524c41ad7076ac03d74ee97631248": "63673da499eef8aaeb5ec54c0ca4599013176cbea4d2887179c9bddce9f7732f7d80dec41a6e1c56ea3298fdeb589d3ede4072f2d108e4783d1421fb7b1a3443",
+ ".git\/objects\/af\/50104c73a8a2cbecc5aad509cd119eb4aa1d8a": "c16c85379011865867106856fe08d036e12b30d62a8e748cb82fe7c4fee9ba72c56366fba534c50bda90a84ca55cc2571585e0b4d28d67396353b7f2fbd92542",
+ ".git\/objects\/af\/db21508c0c278d56da398d0ac8a8a9fdb045ee": "46cbe3e1415989c9fdb22d4ef8ef64c3c4fa737111698e9421be428403cb932a4638f826c292dd1071b18df7b1f3a2f448e5304a2bdaf2333e33d6d0d12e6889",
+ ".git\/objects\/b0\/2ce4e8204405f3967f846b54e5b878d6cfe08b": "c13e727887f2d216aa07a02dbc7ecdf7c8d65837a8ac0f44f8c5ed84f817b1d21ac7702547bef6a5a042ea9e6c9a2c54b81d84ad30454bcb3d7714ca71ba0fc4",
+ ".git\/objects\/b1\/b5d61782347a8659b61b9805c08b84ecbbc713": "95e3a9b6603841abb1099b458b09ddf0ace6218622635eb42f06f139276012ae4e5d3bb28dd0a4a8c3d9ec7f196f716dff317384e70e5f3e988fe7daa91e9f7c",
+ ".git\/objects\/b1\/d89068bbd68852b06e7b6509936249629b0f30": "a6564907fa5f082a9f60ed9e99049aeaf7ce412876e4a595dfcea255eb5f9b798b3a9c39cbf944fa78723adb3cfb503fe383b0e5bd417c70f14587223a5402db",
+ ".git\/objects\/b1\/e044d3ff9fdc7d8bdf39afa24514ace5840df5": "8b75663ce198fc03d1dbf3ef79696bc6607c12375dfbe92d5576c88f418f7054d45741c984888b0236dff8f0e85b8e6e6cd364e59179ef0592f265bc87d8034d",
+ ".git\/objects\/b3\/eb3e6dc9c27b5588a1e68af5a85fe997e91af2": "270007e0c0da2f6afcfe09c8c43318d7d94875899ef99f9733afcd35e50bd64ca9345b0b245b0093d335cd36efbd43d54738748313d493d1ed54473504fabdfb",
+ ".git\/objects\/b3\/ee16f232140ab95dbdd8f3e4f12c8bce3c31ec": "a73eac2cbae365393f394ee901ec7c2c0277e98e9d2d3ca3fe7b3d97daaa68650f2717b11fc120d83aa033ceeb800f0bc0b66c3ec4bbd0329b4d2d816dca4284",
+ ".git\/objects\/b4\/5e92512196a336e5b442627d419c68c8bc5d54": "f062c4b9957a8d036c963cea5b4f0f8a1a92493d3b96a4823ffb45eade78018236be5c63281f54fda1ae722cfe466cacdf3bc42e526081db34f8c4999be54652",
+ ".git\/objects\/b5\/1330fd3c2db420f2db20cd060d5351c0354069": "2fb1fb8ef72f8ee15eab94f254c410fe7ab4849e53a5939a83d8aa7eeec8d3596cf8e34b21f307e38ce64f6b820e42772fad3ef459246e6782a182c7f403a14b",
+ ".git\/objects\/b6\/ba12f5ec398e434183eb2c35b5f10e336a3990": "1f0403a8670d78b66a81c372843f87389909994bb46e9ba2d11790c66ab20b55ed9b1c68e0a7f2c2bc14ce63fd2771452071e20f6f9f813bb27b067d30784bb1",
+ ".git\/objects\/b7\/8863792ab10fce936c2e9a76f4e15dbea8199b": "b3cf8ca53fa7040023f62427faf57ab772ce9e7c312e7c48ad87094d520f3059b3c77309c61e70bc3ad0db8b366d583b024b9e3d09f498a13ae2a4494f82fc7a",
+ ".git\/objects\/b7\/f3053235cacaa1c893cd741a648675e7387ea1": "61921473a049f47e0cdecc929821e31a1c44565c3dcc52afd61e7aed09927154af7849c795b477d9057b2628950cb24140ba6de7b4d1e777e4ba5ef0315ff14f",
+ ".git\/objects\/b8\/f454bad65f1d60248d3b6bb7377b7bd26e1c45": "b47b6466bc85b85fd9135bdeb976082425b070fd1851b6b1b18ed1e4fefad3763caab07508dd0a299dc8bd62982aaebaf72dbb50d9f6fd28ec8026ec1cb57f27",
+ ".git\/objects\/b9\/70bd310cffc0029028b93569cf8951894f0aa3": "7321133852e129b04d4d71775926e79ecc15ac9e976d504e55d5790be38c02407c80a19a423d08cea82bdb76a2ecba30c96fa6ecca6d6e531b9791dc8cb623be",
+ ".git\/objects\/b9\/81c1a07687a6722259e2bec4c3f31f470c3298": "36ce3537dd4d65da21a2253ba885e7a3178f0b9882e167e5ea9523b07ebd94d3773c5fccbe0a57e9d5ac2a26aec6d782d3a20ae63fa4cba2af01816731e6f4dc",
+ ".git\/objects\/b9\/bfcf08e9bc23264e4eee2b6914012b2f57dbd4": "ed945c3c883916cf4d944ea658a4f94efc9427d4da76b8985a78be8afef328fc4315ba8cf61253c4e7070e01331837b220cb82b2cd28402cad900768f44c2fb2",
+ ".git\/objects\/bc\/391b9800b6204ddbb6ed865c5880cf739c035a": "ceefe756e29beacd3a35c19a09d792182e01957f249fefef98516f730c66e401b696b75fc7ed51a8a3c42e1b8063ef5075a9d04e38aaeb7efd8e30d3a26b17cc",
+ ".git\/objects\/bc\/fee8620a61a3fe7f5980eaabbefcf061d2d8d4": "65f869024ef54d86fc642a15dbb52abb15c1553c61eee9f4c673bc0eb11cf0cea8b6b96b1bc7ff1ffaf7e99ffb84f6167a60446dadff42c7c39293427c998f54",
+ ".git\/objects\/bd\/0c19f2234efbeacac277c9687ea02ca8bcce63": "2fd1a7dbefa8ef784e86a437ef71de46d5d14c9af901ad2fdcb4ad785b569ddf4fe8f146debe0aa8d31153f937569a2c0ce0cdcb620333414ac838b4cb12d3f4",
+ ".git\/objects\/bd\/71fd9e776b221866228ebed87b5a2f541d2fed": "5f73d94c0c6c82514f5633267faa14f414f286fc4f5f4cf77ffd68fda032c519aaa8cd542613374621eb3d0ed874225b51a8a4542189146f7abbbe9c0da470c2",
+ ".git\/objects\/bd\/7b066f1c2125fd09a44668f15d906ae34df6ec": "c768ad4bac59223631ca3116c88e5a6cbd0ecadea5cc9bcee198be5707eb8840fd56149b19cc43418a0053b3d992804122c89924b3418bbc3fced76101fee2db",
+ ".git\/objects\/bd\/9520c500eeaa0c20e901e2879d323509fa5242": "89912cc27e689ea874698c394447553692214ae0e48e89cef5ef22003b86f413ae98fb44146a0151b2e6a68e258a698c3380625d7c36d9be8d00767b2955eeef",
+ ".git\/objects\/be\/2d21be8715b3ca544ec043f5a60392432ecab1": "560a4592b6e8e7f03491b6d7305851ad2a847f034a5bfcbd74ddd626699b82ce94be70d1f6d13e6be4a17f3992c615dd6ad224fe7142f8d2bf6cec551f195d86",
+ ".git\/objects\/bf\/fda13de787d748df66fdfdd67380ee91e24f48": "266727e490701bf48c11a55a4afe7340ae0f442b87288b1bc714eeee3220a3c8b877dbd9dae55cb561d131bcab5a765b85ee79c17188f558fc9b8a8646a891b6",
+ ".git\/objects\/c0\/2fc66b7398c35a5455f1a4268a41a0097c610d": "0efbb08ad6dbe29fa53c117fe3c308e2c900e4d63815aaa0b23f3c977882eefe6802976f9ca0288a88428869cb91f54e1634adc2a2bf1e93ca5081a2bf8b5da8",
+ ".git\/objects\/c0\/9c8943a05e4412c433c632a7860565a3b83172": "eaa1d1179c20f474920fa0aa3624f8183a7a4e33a469e72d18f3e5bdb5427a4f688634e806809784bf1667680051649a0ab48e770159db7ef621551e2da58753",
+ ".git\/objects\/c2\/004023805be7e8dbcad5606abe71374edc693b": "7762830a4efaefc0e336cbe595b520fd63906047c9d9677fcb8d48dafe8e36aa9a74870dc7f230ce44b629652531537b420cb2b4ace25eede0cb8753018d3b96",
+ ".git\/objects\/c2\/2a6a774ea30bc2b924359731cdb39ba960f02f": "f312c9dec776a05cef6fb022f6236cd10327352ded3c0037f81d65aa4305e6c48df04d45c333de3c1d294746846fcc15faa358fe69fc25601a312abe34dffcb2",
+ ".git\/objects\/c2\/d151a8673cd540ddc270a21618e5cca43695df": "d008e91649373f764f0f959397a83cf554eb094cdb13d50be913f414875c8b4293198fee9063ff3dc4dc12d92d7383212c3bc663a5bd7204758996af9e192419",
+ ".git\/objects\/c5\/ca591b3d0b753c8ad616e4594acf88a7ba7cd7": "ff377744e69959b5340da7bf250fe7dea148b6d66f28b1511e9ab0d84398b4b1c05ebb601e216be1f64379d48fb2dfd0d93c1da4191cbfb5dcde76ff0abc2d6e",
+ ".git\/objects\/c5\/d540dea1e887be26fcd8201b0d46159a53eb97": "17e207461c930019863d33b6d08cf2b4089ccd78d8cecc4c0297bceb7c8df7bdf4e2afcab59ce06695eb0b91534248be2842cc98c274b7b8c65a844bed0c8b68",
+ ".git\/objects\/c6\/7ab563369699d84104e643828e3c76c074df41": "07957db5c887c1c9c5598397c52164aa082b915245c9865473a13099c73dae287643103f584a2f1deff6dd730239c1d81658e33b0102e381f3d5d4ec228320a5",
+ ".git\/objects\/c7\/b00d2ba8896fd29de846b19f89fcf0d56ad152": "3bfc508522d1e959f6351cd4a5deab526897b7c675c150365d3c30229f3d905afd7ba32dcaa5585b072f6acbcc258ea98eb5e9485c18c11476a9084eae8d457a",
+ ".git\/objects\/c9\/ce2ae9fe95323f47ad9d9be350b91860c914e2": "5f6726475ceea60ccdee5bcc062de7d0f6fef517bddcd7988394482a20e7ca8ec32d29b19ede61e56233bf90f35d83f6090b6b2ae3d6f48e867c026dbb17a538",
+ ".git\/objects\/ca\/0a038e01f83ed256ab9c10b7612938ea4aea6e": "7968b69f36620a63a832d818db72b8b3a5bb250b92d486adf73db8c147a5c774b14dcd0f47f31234867647d0e25f335d5a820e373116e7d4ab47d3111c46f426",
+ ".git\/objects\/ca\/55379a6631d2ea42e7074c9adbd616bd27e6d0": "1d6b9e13e6caab824fd68c5735be9791ae0eefd43c307cbce39128f20c5ddc75977ac91329a79b0c9f49528e98d2d1d275506fba12c6f691354ae9cd9e1ba0b3",
+ ".git\/objects\/ca\/5d3f96d245366a3310b5ee9f319c654e81a114": "1e9570db58334e373d865b31cf41e447c2742d0762f9853bb023baaa9ba4e6f7f362726877e31d33189f2a7ba007d8b8f64fd992ca2b42015b66075c8eabf8ac",
+ ".git\/objects\/cc\/8ee4410db3f8f84ebc483f0e024ded75e2a83f": "0d4059183d91a4d1785c8aa3d4289040349faf44176a853bda1f86a46a5f45f9be2e2a544e1c45908cd2a1895e198fdfa237b2ddebf3edc26945618ed58738b2",
+ ".git\/objects\/cc\/c1544bac9d9122e57bbe728148c51a870ddf8c": "271261cc12c5aeb02eebb78030d09622942c52bb9b2c3a329eb17f995280fd69f23c41adc52ff8ac9f7689eb6a4ea338d625922e07cebd2185115f0fd473cd66",
+ ".git\/objects\/cd\/981a6c5ff96612f8428f90fef98f2696e78432": "1e0fb0d99bc93d0218445591fd82c570599e8e2787705b5a1d31498f5fd3db9643af609395d34bf8d4b681e4174b3865f8415692165e84770160fb943a2c0dad",
+ ".git\/objects\/ce\/8af28bd9aa8f4571c14c6780dffc6e8e971d23": "7de40380139200f1e2ec2ede4b5359978f1e21ac18f3160a5ff1fc061db3e8b7dc9f17948fd1253557571be4612ecee061923fd0b758d42507e9195d2ca74eae",
+ ".git\/objects\/d0\/55e08e13ff990dfe13c732991c4c690d320efa": "af4bef9e09d991b167112fc71df10983791312604553a6055cea32fcfa4ff51404e79d286cf6e671efa93fa4aad953da08a496be640f0aed66efb08ef50fd805",
+ ".git\/objects\/d0\/67f0dfcac44236f4a69b0f750d3ad3e3c3c254": "3acdae1bb3e119fed1d088f94facb2e4317f90608ca720234ddf011caf215944ad82b74020c2aba2f7e05a46f2f92755d864da4c98c9e45a0d1b238e357b6f5b",
+ ".git\/objects\/d0\/6f5fceb91cbe6213fe2a366a177f845b6c0a7a": "21a4ea71ed5697d4a056bb850b3f5f46b7b35657f70a5624eb380658524ffd034e26a3afaa0ac42b97085814382ec9538f652366702b949b851fbbca984cbd25",
+ ".git\/objects\/d0\/cbe293cc47f86e5e55ff2923e4c9e53f524aca": "0a72985313731b1015faaf293bb3bd95583da0128d75281a8bcf4f61452aaeea765959c5b278515ff5226af1bdd7ab26d7f8ae39a8a9fa2d2bbdc1d16a9161d4",
+ ".git\/objects\/d1\/7c4159f9264f9a301f051c68f1cd6d4ea3664c": "88f38940ec23de5cc91ed4143477c653880c5d2159f7fd594c032b4f22c50796e8064afd99cfbcd992d018f4449ca897dfafbdb123a5bc31b8b1cbefed5ec7b4",
+ ".git\/objects\/d1\/b3a4f07696e0858c70c94251e32f686500b26b": "0e14de60395c9e784e1aa4580f2414f55378d7448c5907cccb6106f09a6ca8b9a7679bdf2eacd37a77ddcb259510f7288275dd48236410e555a86ee4f3aefdc7",
+ ".git\/objects\/d1\/dd0ea9b6863da8118919061d57ce88f21ff62f": "692d0e7de30cd77f75e22cd453efdd54a88be7d7a4825d3fefdfd0de126c7b1f4d7287d59e1b0ef498627e38331390d79264f27bc5160b2846ca15d2680007f2",
+ ".git\/objects\/d2\/7c185f7143415e04516a6aba5e30518494a87e": "98bc33fdd290cd1e47b6f7d51d3769bcdb04e31e81c98d3636143e060220ab5b12124a32cc48eb0dbb26554524514eb4e52b1a10d6028d90c35d2cb849a325e2",
+ ".git\/objects\/d2\/b4926d6e18584b865adb9597cb577174de395c": "6bfc9c0804d9225d268786f75f8109a46cb9c42b01d9b173b86cce1b68b5cf2ff1c63383701468af6e9319dd0ee3e58a8a1556771719b37376dce12f6c171b7b",
+ ".git\/objects\/d2\/b5d9fa1b058389ddabc6f1bcf9e3aeef61c9c2": "db3702f276685927d7b5f71e3e38ce126d5b513e02151abfa21c006eea2eb07386e3cb55aa8196b6403512377bc985b4b749eb9bda198c17a48ff6ff2942cc9b",
+ ".git\/objects\/d3\/f5817ef83757572b29a19b42d7fb73c5fcca85": "514fd9a3b18fc39769b505b40c8b62f0b9822b985917bb13121a7ff618906834bdeb95d64c75dd66cc6c3fca5d45cb73bcc707c2fb4cfbf24202c8959bdd77ba",
+ ".git\/objects\/d4\/de13e832d567ff29c5b4e9561b8c370348cc9c": "293d0a1c5ce130521c2af34a62afd7ff894b0219f779e2cf8a0f849f726ce820c06d8ec8676d2606471869ec8e98c33098f2a7ee6bfd0646a9a4b31fdb510342",
+ ".git\/objects\/d5\/d31dc3a615196cc5db63f9831ca4fbb7b45c0c": "1278e7ea3b7a4661d28a6a52770597450b0063ee26e0997d58ff51c777967b5a5932ee6886155f2715f4706c09e1043512af8a271b317a674bb6162de6044821",
+ ".git\/objects\/d6\/ea32af146fe85313a4b3986a17e028451d2df7": "5bff9b8d3339b0a93bdbb895f19b6cb8133c7b1bb2797ce23c864220296349fe426b71eabf26643401665dd58b7777ea59a03fb58f41e4698bbfcc15125d1534",
+ ".git\/objects\/d7\/e47909281ee51b564079baf036acaa4714c7f1": "f81d97892668d1d0e4121fa867f6a9ea0ba2fe927bd81296bef6c09af52151e9b63357bfc6ede71935f1632b68f8b6ff21b0b9aa74ff200d14cfcfcd9708959b",
+ ".git\/objects\/d8\/d6722389d953a163cd01802d31136e646a69d1": "9f94107305ffa8d3acf16bc02064a56123097eb4f49348fa28eb213b9fad53b327c41896e384ec64cf4bc967e3e0e997b1b359f47a71d1fcb6fd571e3647fb36",
+ ".git\/objects\/d9\/50f3b23f8475e062ae4c9cd8b145b086fc3db9": "659594c7528250c168ba6ed1c16619bade22afed812f11701c8f455e929bcd1db8ee98c70079e8542c67705bb10349ad4f368793d66c6d7f5c3a0a1a9f75c21c",
+ ".git\/objects\/db\/a14371387f1c7e1c14360462bbcfc4a753276c": "51aa6cb7e6863d68f301138aa2400f7bfb80f2425fcf71d1c3f751eae47b12fdccc2b34ce6d3b50b8b4703a0f81a013e4b4740fc94eec191c4d34b6f3406f1ba",
+ ".git\/objects\/db\/fb17674d2e98924a218095b599b17695f8f192": "df0221e1c6ced0ab4b0a78033b59b89fd88ba4d43c5f9acab5b7bb0f072024e0e7d35e4fe3a4666b04fc327196ad114c5e95bfc686df26565c4b2d5a989cb02b",
+ ".git\/objects\/dc\/df7960533f63103927760213da41c9b7a47a59": "8c6d135116f1e78f7c73a112ca48955f96f6351e225dc08614cf346bf63fc55a86bd9eb1cb8ac060ed455b4e59e0f26e68491d25afdbafa7145e170821bb1e83",
+ ".git\/objects\/dd\/68da21b2065c3ce61b8813c3609ea0d16f9bc1": "7f0059252d98ae5ff97219754cf9e41e887b25d1da0428e4744175d8ec30cc401130e7b42103829e26b0f222c9007eb7a1ff6cbc56f218c40b966cdcbd8d7dc7",
+ ".git\/objects\/dd\/9eb897da11aa512ceaca3539380677ded8f123": "480a184666564fca33c95ace378e559a6f69eedbb2185d6a6ced71b3c88e0ca126f9f5f547c4d0458f576825d4e6669730aaf07a892b0e428f97c69052c08b73",
+ ".git\/objects\/df\/d58f7532c42d428f2eff2d00f6acc0c5dbd264": "9c999c85e8f79ee7034a40675cc0a9a7f841735badcbf65daebb3abde2ecad64aa5f06364da4eff791a07a10150911a5081af47890fa923b71f9b339807a36cc",
+ ".git\/objects\/e1\/2d2b62957e76ad7831c07459d3da8e085b6a45": "c64e7e317d79bd3bd545b0112a020b1dbf5dc1cd4b5bee027129c34acbf5eb52ddd6ac7d0d9d0eefcfea28e8b48e05d2fc611fe4160fa710eaaa92a1f69baaf9",
+ ".git\/objects\/e2\/24f68070ccbc4aac18cf6e3057d3e22e4bc4b2": "45c2f535d619b7759b490281816be17478083a24eabea074adc96b22d759cb9ec6aba09f44ed530803a7a43a07a96db9dfd4b61963403918d82a2d4efebf99e9",
+ ".git\/objects\/e2\/bda70b7cf6db77b47aa28fe01149caba4254f2": "af5b73532152931d297b89d366be86f8a3f5199bbe4b215f806d00e4577daf2a0f0057548da43e0f28a7d0f304a385b64a202a0226e6d4ff9f9cf759a083d8a0",
+ ".git\/objects\/e4\/1cd958524eea3e194080c923061e483020f742": "01997f40d974af125d564d1199c467e7e0ee37c28c8f3fb9849a4f0896486a6cb5e05881bdb4acfe4301f23585ca15039b5b35fd072e6629e1a4cf0236badae2",
+ ".git\/objects\/e4\/d47e31ba1588e43c89a2d0389f1718249c4700": "9549cf4a7a6fd0e0423f614b7a2dfa04e7388299804ff679fa546dfb02c490c21cfe38c2e37a93bacc84d8fd92e43e53d16049b27f19a60aabb593c7ea3ac91c",
+ ".git\/objects\/e5\/06060e191b39a8f61da040fbcf63fbec4bee08": "ac67460e24d24f685ff818294c06f9f5b82063da714e3e9fb8d321f7f150d5cbe91dbd59a0d7575b09263fae27787fcbecd6abda4efbd467db176befa6901d28",
+ ".git\/objects\/e5\/7a80a34f872387b3a121c6f603347279a4c185": "b9a796d13b650304dced8f25602cf563405a1dd5e3159a26a3941da1d992f91826fe3c27b6ce07716b5064555b274a58def3f6f685d4a97ab1f055a441b27941",
+ ".git\/objects\/e6\/bad5197aa46133e4104649f9b89ebf63e1779e": "5aa1e210979eb8a4ad8bc97c2b506414480746c75a84752e5d8c24c2c9fa6d5b84e8f776e46ed0cb4146804abf77e29c81f9967f75040683e502df97b6e5e297",
+ ".git\/objects\/e7\/32ee21adfd0f8aa179aeb298979f42fe45b1b7": "60123c083591d10e0318c5dd694887240c4150bc855bcc88ec26b206252ea21ec08bf813fd45e062c98416cadd4df8fc06f9c348e9ddf938c62233d08bc8d047",
+ ".git\/objects\/e7\/70ff3fb2fe6f2b0da19b67e5b8e2e8fdffe1ec": "31fc7143be17521d6e6c6567b45bba1936d276f69a10b4df1e74bbd726dc6498636df55641866bc63f2d3c4a3717fff45f7f02287c7f1a5728085ffa923b4f44",
+ ".git\/objects\/e7\/78b687e01e56a2257671de19a22b969e276e85": "edfecbface1d7d735ab39cfc74070da0f5fa1aeabb937ef702f6603a51ee462490c21897d7128548b1f51acd564c2f008bfb9c2b4f0f64cd15b105aa380a480f",
+ ".git\/objects\/e8\/7d73e7aec7535abfc0a0989871e3016a366a69": "a109b692e2c2d3dd31481b3689ec4c0b54fc87c17abe6f63cd61fcbb6ef45b960ec5208b68a76d745c5bea3150b986e37b714a95d15d82b84c205dae5b6cd956",
+ ".git\/objects\/e8\/82de5230046c5bb2d5b1faf1fe454d7eff2fb7": "68d4e5f484be3c4a043d4aca8391ab23d35a417d5b804ad84e7f53740bec04d8b6103450c19a84c5865ea40de3f8623bc74b7cd176756901da620734c57e37cd",
+ ".git\/objects\/e8\/8df533ea585afef46c8e60a34b4a93a8e48ad6": "63658ecb11f80f0675bb383c59c2e485e78766a77d05bc2e107004484d5a0d72582e126dae8baeafdc8916defe27892fb405e6c8d49da4b16d1a52289099bd5a",
+ ".git\/objects\/e8\/9f2661cb486c79095bee1a13646b4eda8ab326": "114a9f892e4f266c1557b0056242c03b685c664ad30bbab84c594fa904f18ba773af4ce35f1e91ef00a405dd9ec5a8be45087d2891b33e826126084b8015882f",
+ ".git\/objects\/e8\/bced84755653d8701d27b53a33a458175f29a0": "546da5001147aac97f80c4bfd7e7aca6b849c44d52bc13af51151c900a3500d4dac9c5dec50f268790342b5c952614cc1d39e2b9ea453c48effec4f14176baac",
+ ".git\/objects\/e8\/e7839117ca03405e557a3690c6c1be44891def": "91865736a00718d6a2050ba08ec6faee6a8fa4bcaac8d72e17d670068cf7a7b87934505193aac330c495f92192d50b4d4f320d2659b8e5c9021ddc626ebaad99",
+ ".git\/objects\/ea\/4dd20a21d2dc3304bcafc1fef623138debe12f": "dc8a077faf04367fa912f9bedcc754685e2aa816eb9dfa22f9c1e987edb52bd54555e011156878be2c4b1cd272970c6a7ba0b7bdf90c915dba8e0d01e3de2cc7",
+ ".git\/objects\/eb\/4cd2941e7e1cb176911301afa167b83c242cbf": "e8b3eb0f4e514dac977e027e51362351150b89db038d2de29cc005da4b5259e506ec1c8c629107f93dc38fe270dc3a4a20f27b3b44ff38d9e87be0704a04b997",
+ ".git\/objects\/ec\/d862decbc7998b66d84b7cd7ab952250418386": "3196e2a2cdb67ec36fafb5ac6a733fbd817dbf6a2b258a633e894bc0c960d7d7bcc4fbb9af3d9d85f74d06c9dfc52b06bb16998118b9550bcf2991c8232c4e55",
+ ".git\/objects\/ed\/c70f8c9acddef123ab581aae9825355c1e974f": "54dd38468e3e7429452939e04d2f912510f71503e35495c2354cdfcfb76849a1456a06f9b9ec0aa56a95c2472b0318609699e52304732abce1922abead66c7dd",
+ ".git\/objects\/ef\/83d39823e99397747fb60dc581f4e139cd3001": "108aa8b83b08a19779b794dbea755b23e78ce8c46e25d570fdea0b7093471c4a3299b71054e499962bb042d346de78dab96a50594f28838e96ecc14798212424",
+ ".git\/objects\/f0\/dda857e32c94e61cdc8315da81ea56b8cc24ee": "ae11260cecc9874f90185ee1e24bb389de3d5a33703059a534d10fc94f128f64042981f4744fc2c709c418e4318759c2f67450f79d2cb844d3d225adacee0c5d",
+ ".git\/objects\/f2\/21e50a2ef60738ba30932d834530cdfe55cb3e": "283a427581f932b3fa0dafebabd23bf006f95a6247ba2b0d4661feae966463096e6e1db2ffcc7ac31af22323af94066b48d746009e57724ba2d2e65f21a76d5b",
+ ".git\/objects\/f3\/d43ada08f6cd4a7484e07e8021ccd0298a2d80": "1ef51c935df7147401bf6edc4295267f02efe2e086247aac14e0dd3372f902fa80202d073d6d0627ea12525aec3767e5311ca2555c327f0bf4c2ae6408e1c77c",
+ ".git\/objects\/f4\/05e16c4aa15e4e4e36e53dbc72090d4c72539f": "0fccd17816d07536c8e2a4d069725caa10fb18210a072a6f1c9323f99464bdb21a5378badcc23e7780ca36f9e47024c276ef7d795e9444ed1511362a8dec2528",
+ ".git\/objects\/f4\/3dfa50ab9d36a398593b307c285ad09b1ee44a": "21ea332d0289ce05ece1e77e5512530b07b420af4c58cd8f6b5c5c14c402ddbd1fbd00f88923d1b4a9ce8e6fc6f18c3dc5d480851e2d47b17c565b319d294d76",
+ ".git\/objects\/f4\/8c9b65f3eb61d22264c6863c6ec5e2ba45b38a": "39f570a0cfbd45147410c21f991655c6bb74138f0661f300d86845a5abfe3f5a8ae55f780404fdaa8a1930d4020d0165a563839db0c576f1cc1d0fa328a11b07",
+ ".git\/objects\/f5\/a52ef792df7d380ac46a4f46985aa943567924": "2052747803c9e0447d4606950088276f25a91d512a6fe16fdcae154cda195255b938c2cf2dfda6d02c0e7e94178337cbcf49e25554b0be01a733854e8688454f",
+ ".git\/objects\/f5\/a7ec49b975a4a5cd7c28979a57b00c7eb5219a": "e40bbc969584dbb3978c5ad44cdef248e9ea5da065d3695a1a90f4429dbf926090dc1c64a95bf63d46a0add8e58016928d224665c002ae47674ee25f97302554",
+ ".git\/objects\/f6\/60a264b44b855d2d738dee7090d62e9b17e563": "a65de2307024a992e49ce0c50710983c839b25f13f532b469a222d450ece44ba3a6308523deb949ec2feb9add82bd509c47ea31ed5071b011ef1db1fe29b2774",
+ ".git\/objects\/f6\/a06b95b838d22c4879917b4afcee2ad6011b8b": "6ece7c3907f1685ede2a2e028cf4deac9d4f0dbdb6b64afbf736bbb66960eaa5fa3d7e64ecc8bdaa3a53c607ab4a7d601b8b61082706340c136bbb24b820b04e",
+ ".git\/objects\/f8\/3914e6911a9fb6cb7b019fe8a295964d9c1b74": "3a276fde5bbd2d8883b292231a8231a74c3fc3b080894f4cc64f4a674c255abdf02e45a09f650509cc6c606c513b0bfdf091f92b8f3966b3b702a76aa8dd5ac4",
+ ".git\/objects\/f8\/55cfe50d97240bcfb9f84679ddd90a17ba4fb5": "4e0eaa10ab7fd00103b4645329b1550929b2863df5419f6a1efe74feb379793ee46c3c9075e0ed415100906717783a46e3b2ae88dfb1ec18005a4ca9f4b255c4",
+ ".git\/objects\/f8\/5efc81d01152c3eeabaac607afee9c9039147d": "da2cb69821adf48221e27e9b9866f08d9c0a0a642c6133ac56e8b90ab036f17fd9d7a9b7723872b0857a03f41af24e41991d7e8c376a9788566e92506667ccde",
+ ".git\/objects\/f9\/1f4719aacba3bcbf3de26b3f963ebec1e7b7ae": "8a8757f547b86a39aca2ee4469a8c99834aefade8a0b39e024b51120e1bc1e0d2a4001af0239d0addf42891c541500b3cfdf8eb6b573f61342fcf572e8326f39",
+ ".git\/objects\/fb\/096ce9957d7e755e7cf93d73467e45eae8e809": "20bf64391b1721c090aa71517e5330633c1508f075182ec4c50830e179ebd315aa21101c0e6cf0b713633699124f93867a4f0272be9549102b336bfd67c6a173",
+ ".git\/objects\/fb\/2cd752941f63b8b767ff9534cad9869a2f8dc1": "2faa08067d193de9e924287a6b77e5fe13ef3f3f733ef98ccf3960060a687fa990ce0f7a2088457ce528e3f50c179fc91d9e21089b8a8a2710a27e2e10f9052d",
+ ".git\/objects\/fb\/8e07bdd14474c1a35d1256b5647ffb43576c8b": "1be932e4cb6ca7609553632f9eb5868e3fe12864b493d703f17624710b22fafc658dcd705a8ebf962ebddba0f897746e7a8e35462307a5ab1cd284889a5014e9",
+ ".git\/objects\/fb\/f293a842044c3a7786576bb3abd2d942e85aed": "ac92055b8f373ec8dcd22f1396edb3b7b9a48730c3581ebf4a2848895cf09865d8bba194e127bda879e27d5c0fc40c146bacebc50cd3f9ae819edc8b2213e169",
+ ".git\/objects\/fd\/b7f380bae87d62ff7c67b9aca9ab77b2aaef1a": "22f6368983931e259c8372ef8450fdb0ebd6f42f09c1fd32ff542e15d90bffab969d4f362a97a2237fa12f3d34753a276b2384f59a76a8414c525334160c9b50",
+ ".git\/objects\/fe\/4991c149063cd3ded2222d2c00547cbfb9a8c0": "3ac30ca764fe9283d0cb9ff481e0b3b5579742f29dfbb743dc03c64042b900e9ef5f67ea89b051cdcd283fd1eaf11ebe702690bc2f481879448c40719ab177eb",
+ ".git\/objects\/fe\/8dc26d24d12f83ec87204b274d85642734558e": "4e4ea9b7ca803f8f3e5d75d7b14451f513cd8e63f32fee9c9fd4cea80b811aee6ccec7968c470073c7c8c983e4d97eab811a320551db7a468cd7495b838f340e",
+ ".git\/objects\/pack\/pack-23051288102c369a7adecf9056bf30a447c4daf9.idx": "5d3a56d9ed89ddfeac0e627214c91594602e7bf23a06f38aeb269bb059769e67d1338efe4b39e5f36706fc6eb1122715da00f8ef0727f26d267b914fc6e9b22b",
+ ".git\/objects\/pack\/pack-23051288102c369a7adecf9056bf30a447c4daf9.pack": "b64ad9756ac0f3dc96b20f52241fefa54c4f1b6def5f13ec6166a4949e405cf51f8a67860a9113476a0884a59c0b25d179f8e126078ffad48a0c0d96f46b1248",
+ ".git\/packed-refs": "4415f2572e6eaafd6e2a08547edcb6f1b9455243b38093e45ec066e0f15f121d5f92c177da98cd7bcd3b58ee29d67f17ef85f619d0bbd7664c036cc80296fe57",
+ ".git\/refs\/heads\/dist": "8735ed2572d6849dfac3d3b0ff050dfad9a65207683d2013959a834c19ac420e30db70b8320d8d3b22abc93947b75c2fcd528e55c59af6505ef1b9cdcd81c9a8",
+ ".git\/refs\/heads\/master": "1a0011e27243d3905eab2f7a05deaa2367201c2cc7739bb3911eda6116c88d389caf49c7b1f312601a776517b368129a48aaec29d947668df0e06546d82bb3f0",
+ ".git\/refs\/remotes\/origin\/HEAD": "0d686b330d5704fdbb9588d62bbddda273f86b24db52ddbdb73c0c304aabb8e6f8a1df806b360113de6783bdc138f8731c03c22db1537cc4ad14975eb28d031f",
+ ".git\/refs\/remotes\/origin\/dist": "8735ed2572d6849dfac3d3b0ff050dfad9a65207683d2013959a834c19ac420e30db70b8320d8d3b22abc93947b75c2fcd528e55c59af6505ef1b9cdcd81c9a8",
+ ".git\/refs\/tags\/2.0.0": "438d3fca7415bb259a9daef24ee05d2d864dbe55d609583b719bc9fc5688bff737eaafa0881bd3d40141d3e42ded0cf89d5829d853c3148b6e8c00a3953b660b",
+ ".git\/refs\/tags\/2.0.0-RC4": "8bbb072b4ecb8fa189026a3ae073e9dbc1fee18a2400512673ef2d836c9ae78b0f2174f98395872a3957a97fea65c0cce3a05f98d8f00d2d7ff9da287ec8bde3",
+ ".git\/refs\/tags\/2.0.1": "3a530fae7a8ef19b907f7dae055011f1dc567b67a0ae73e3b25c5a4417de303fcf6681950e19dce873b3576eb72c324913f73ba756184c1bc56adb019f9ea86e",
+ ".git\/refs\/tags\/2.0.2": "fd6c05cd4f548f74c54fef014980313f89bec5a94c746d231dc79f19fc46d823ddfd324b3af4a5e631119a0073ce87ca37ea0c59d65fbf5e64426df161af2ea5",
+ ".git\/refs\/tags\/2.1.0": "be33d6179c3b73d0554d6e9add7443d121d0e0b8aceb502f26e8adbe351328665de7e9c4f76affe6058a9e19b5720e4e7f4ac4908f802bcf90d7f630bb7694e3",
+ ".git\/refs\/tags\/2.1.1": "586b2818848ff571dcb9243f5af38b5d9c4a1c1b4696cc70ebe727260df0b1a2e887c21aeb054491e55657372ce6517e4a0ddb0f82e97c584f79947bae3ef55f",
+ ".git\/refs\/tags\/2.1.2": "b9947528547ed641dd82223e9ace709a7db1999aa5a26a850b03f7b373e95cf698f597137c57cdb88bb96c9ea528d7e232909366fc76c6e991266c025b3b113d",
+ ".git\/refs\/tags\/2.1.4": "e7889ee508166389553930e372072a3f43283e02dac6bdb36d0689bccb7b516fd24658ca4a6b4681df5198b29a795bdccc1f8af711167f9492218c674f2c06ec",
+ "AUTHORS.md": "68f4f402b98fc1a1d9f6f6db5cd4629761d7f59bb38372033d2fe8254f2aa7aff8ae94248990dcd2a2eab9ca04c6dcc24bfe57851f189d9f16074d9432a61432",
+ "CHANGELOG.md": "8b5c5b8a797b2ca8d18f412c957fa2ce6c2e89fd1f8c5c504c500a1230e03682b03b5d150ba26f0315ff5d6d7fa73d186bc7e82f275d3486c9576a8dd8fa6cf6",
+ "CNAME": "e55e0fa8a096aa3ca13b1bed3613eb919b6253e687c2e80f88e1d0083d31742ddfe8f2568dd8684ae099d5de11db8545a3346d157f6ea37f4af0164a5fc57f76",
+ "CONTRIBUTING.md": "db7affd208352212d89896a74aa6813f38e08fac325c476d932d5f2bc479f6397214aae360157f5e343cf1e9ed47bea61a1f89bb349754aee03c2f6f0367a07b",
+ "COPYING": "6e90d46be391aa645bcf4dfaa67f452cb15a73749f1895633789c7763b43cc0b65d391e5e95652c9a9a2063c956e0e8099a4e1ce4b70b0636629f9eac39c1080",
+ "ISSUE_TEMPLATE.md": "527f341dcdba996872ac7af7cb26a9a32e65d85b4d73a3b45b71dd5cb61430cfeb22e101c896d6b79e6db363ab6052b8f67fd1c1e49776edd1826ae476025d7f",
+ "LICENSE": "3a02a6ec14e9d076b79aea8301eab31053c6600b68dcfa6261e10edaa7296a87c8767e35f2411d234b90111fcaf6b4a55c49aa2790a1a0d015213218bb7549fc",
+ "README.md": "bdeba632767750db4673bebf02e5e643cfd487c9d5c173b3ac94d9996d3e518697329bd54cdb4b42146398fb563f013d27035f4307165d581a9e256008a1b6fc",
+ "appinfo\/app.php": "1b8ded948afb6c900af9b87d875211a9f124938e077e026bfd6e95ceb5ffd83c51e51c12c5f961444137d6057b6d8a5a4d1259841bd533edb0750d2fed94388b",
+ "appinfo\/autoload.php": "4221e5e05ff7b28b9026a0f3af57faa2e71d7e87885ffa84fdd013bfe4339705491dd52fe575f2d166f6550b85c6cdd8a12141d0019524d12f2b292e02ea9116",
+ "appinfo\/database.xml": "1d7567980097f4e1b0683474650fba02fa5245d3773455797ff3917599bb274ac80675ccb4151f9dcc5f20bfdace38c818c28fcfca19e97061b2c9d8de70f634",
+ "appinfo\/info.xml": "d9d212dc5848456b50c8bd2552661a2d5daa2c6ecdb32b8cf9916a476e0de3c57c761f40870f7fa80ba8bffbe38ee8a1b4503ba52b09a0b28e06a90b8da56acc",
+ "appinfo\/routes.php": "76105d8e20c6ccef09fbf422eadd9bbf456625a42988ec1b5d44df48460049177555d3995ca17ca678a7cc64bcc9685042fcf875731f1611754ac00c56c64040",
+ "controller\/admincontroller.php": "b5002927ecf4beebf23de4e5077da94d9885c6a4af2a557b52cb2145c4978949f7dcd9ac45e73d4db52c4358166a30185154c451f2a56b08b0a15d96e305240f",
+ "controller\/credentialcontroller.php": "705a0d602ce7cbfef2a3cb283e0effd26503edf0392ccff4bc0f707a1cbd408723df7210a81f929b21580112d8dedcd6dc0e2e03edb0c121c4fe2f8cd956ee62",
+ "controller\/filecontroller.php": "25a3b559bcf11e66ae02d3e830cbd9d86cf41033fd7a32dafe4356fe25c85d317a6e363a89063fa34985ae3a771c8a65b736677abbb6230c15121384ffe2140e",
+ "controller\/internalcontroller.php": "98a7c330134714462158c9d9010964c3c079d10cf7f785d69cfeb2ef98735ea6e07631ffebb4018e77698d2727ffffefd22ce4447a334e02cfc5eabf95cf77a8",
+ "controller\/pagecontroller.php": "08d49efd00313c2e76959a382e38f460929ca0d94bee924386fa5b7c11cdf76a3ed06634d4770a2eb0947f1f9fe7250be3b15e339bb737ea941152823b4078a5",
+ "controller\/settingscontroller.php": "61d202e4a2e2ef531405e6265abf6a3e6f5a375a06f623fd28c102ff62326e4878ff0978bdb528a1fe3e1c5a7866e9b9bddc5e8a1141cdea1657c624c512a021",
+ "controller\/sharecontroller.php": "958410cfbe1834ca0b4093e52017856a89c8084e08370fa7d55a156fbdf72ee3baeac50fcfde38aadbe8f525073d67bbaf398585692ce124c6028e57ff5d61c3",
+ "controller\/translationcontroller.php": "996ef8a984c24f2f320ce79758637879c1d8db3a7fd753a385b523937154b209482c23e9119b9a03a5b5d20e0fa33bb8c2ffc9f9101f26b05a1d33afdaf2d5ad",
+ "controller\/vaultcontroller.php": "4f363e871793a88009bf84d6918c9e575473e1e10d6d6dc6558fcd94459768d84b159ea90115bf903d2d9df86c907510c9314d376438d2a75d26accf73c234c3",
+ "css\/FontAwesome.otf": "37c86662e62100b8f50647328656f851af41db3167ec18b373163632136e733c4c70dbeef161e6b090c518d66044d9720b8f6c90e7b571d7a0b61d4d6680b375",
+ "css\/admin.css": "0f8da1daa995b2932b585ec9dc1648b4b6a5963ce49ec554d2c380111b10f3d855879e19fd4cfb44cef608c82a357deb1fd5c545dd493b85f83c58612a235dfb",
+ "css\/bookmarklet.css": "87666f2e5ab0590d2c1f68b1e9e9b340bc220a1ad93c343ac8df09e7487028ca14f0c25adf2bb21464c023de08cd37a5bfb35b9967283d8230ef9cc460ccc9e2",
+ "css\/fontawesome-webfont.eot": "b580a871780eceabe0418627ebf9557c682264947816783befd4a2b1f405ad5fa82582e2904ac38e35163b44c12da84ea2825c27446457566557b4c526bb8957",
+ "css\/fontawesome-webfont.svg": "cd4c1d6756aa4d8e98ef4f7549ef2d73cc407bbba17a22ba31ddefbf74cd51de8a5c51a200db7f99e408f38988444a44156e7dc1136775b5cf6376972770ed29",
+ "css\/fontawesome-webfont.ttf": "70e5aa1fc883d453e3dd3386e6c5f5839af852d8b67123d43a5ea89e8c6c94c50a755c8ccc2e7f0ef4b78fe116af5b03edfb104da8e15226c7e84dd7a60fb3fa",
+ "css\/fontawesome-webfont.woff": "6d465acf39b4cdb365bfdc32ea06637a9f14ed1c1508353a7e0627b6b88efe8acca77accad3a4bf3f8eafeb638b7867ec98ea6be3338e63af4067ec3f6c5fa18",
+ "css\/fontawesome-webfont.woff2": "dd945face918edf20b7283b7416ae7b3735269945e3f3e379e770425024c1de1fcdc7cfb952381d295d0d1f58c8ab191fd29030f2051d10501557bd7bfbe3658",
+ "css\/passman.min.css": "dc910fca542302e2efd482f2d309c9154bbd43c93d7782617f85df98428576de20ba74c85f9cbeb8047fd7f7082451da3020b5bcc9b29545b7258e492ce80b71",
+ "css\/public-page.css": "16a932a5fe21d4d69a72fabee3dd201e73f0d42327628b7f366e14b7e4b9b9f5e0aee218b30c1d88c99406fceb9e8e42d6aa60fdc8188425c771f8c0dd4f872f",
+ "css\/vendor\/font-awesome\/FontAwesome.otf": "37c86662e62100b8f50647328656f851af41db3167ec18b373163632136e733c4c70dbeef161e6b090c518d66044d9720b8f6c90e7b571d7a0b61d4d6680b375",
+ "css\/vendor\/font-awesome\/font-awesome.min.css": "cdc8d0c238256f28bfffa2b251f73d1a3ad96410425682efc333541a3aaf8c638f8b1367f03667ff31570bc5f1d1be920af6c9c633b6f897008575ac1d2f6ee3",
+ "css\/vendor\/font-awesome\/fontawesome-webfont.eot": "b580a871780eceabe0418627ebf9557c682264947816783befd4a2b1f405ad5fa82582e2904ac38e35163b44c12da84ea2825c27446457566557b4c526bb8957",
+ "css\/vendor\/font-awesome\/fontawesome-webfont.svg": "cd4c1d6756aa4d8e98ef4f7549ef2d73cc407bbba17a22ba31ddefbf74cd51de8a5c51a200db7f99e408f38988444a44156e7dc1136775b5cf6376972770ed29",
+ "css\/vendor\/font-awesome\/fontawesome-webfont.ttf": "70e5aa1fc883d453e3dd3386e6c5f5839af852d8b67123d43a5ea89e8c6c94c50a755c8ccc2e7f0ef4b78fe116af5b03edfb104da8e15226c7e84dd7a60fb3fa",
+ "css\/vendor\/font-awesome\/fontawesome-webfont.woff": "6d465acf39b4cdb365bfdc32ea06637a9f14ed1c1508353a7e0627b6b88efe8acca77accad3a4bf3f8eafeb638b7867ec98ea6be3338e63af4067ec3f6c5fa18",
+ "css\/vendor\/font-awesome\/fontawesome-webfont.woff2": "dd945face918edf20b7283b7416ae7b3735269945e3f3e379e770425024c1de1fcdc7cfb952381d295d0d1f58c8ab191fd29030f2051d10501557bd7bfbe3658",
+ "docs\/api.md": "1b77a7762fe22810a8fc9e10fa5388138abae6ee047b72b8cc1b924d57461feca5e33827368a17702850d6061b1e8242ddc6a932f8f7636ade18bc2aa45312a4",
+ "img\/app.svg": "ffac090977b450a168535657bd3d5314b7d999ca7e3fc5c07da6bfbf04bea5f6c2b2ece0c27ad1798e57806c767ee10cfb4182093727ee0cbface74235f0b66f",
+ "js\/passman.min.js": "655d60df9d00b82522c89fffb67591a9ccc3704c6066f189373efa3d4bd0cf8d75eb2f91d8fb6ed838311bdd436a8584a80ba80064aeb8a831e3411d08238d3e",
+ "js\/settings-admin.js": "ea7b4bd8a4355ff9e8c1299fdc4e96e616b0c206d71dd7a9ed42910b0b46b5e36016da66457853124e71dad516d771ddb85466607db7be8f2432a5e9285cc8d6",
+ "l10n\/ast.js": "bfe69fa4b9222bb23d23d31451d370ac0e35560532ee241b6c0ba7fed3c49edcbb74ffd6c5420e2874e0b49d32ee1694e9f04301f2f79f7f44b94306a75762e6",
+ "l10n\/ast.json": "99527a4fe2a8af1d166321446fbf75de3034983b9448c25d696d9cfcb10e5d185c10e61b81a6c4664c4b405c4d65c79597990f8ac5d1affb2b286231d916cedc",
+ "l10n\/ca.js": "3a57982cdf96cef3fcbff6570b26ea86d15e15ea34af25e2fa6ea3e67c297d36fbbf0e692588af8efb83446c4de5cbe91aba336f222f904bf2f225efffae609a",
+ "l10n\/ca.json": "cb111e7ca14fb64d2211fa8e8ede4819c0a3bdb807e05cb2dfd18cd50dc2b5bb3b4974063da2eebd23b34d5d9556e83ad72940b2e8833d63e5ed1fae24d7914b",
+ "l10n\/cs.js": "824dd60f8d3a23ee20780af61bdea97f2cd3a2615fd3d7c4e12d0fa82692354310be553574a7fdeffc0104817ba17bfa1c5926cf6bbd0df8ce6150c84dbe7be7",
+ "l10n\/cs.json": "797a5cad195d4984ec5ce4cf2ab50bcec407c18a6603c82c7f5ec1a9b05abad51789f944fd496427d0ac4ee4cf6116320354a9ec0dcd4936fe9e51ce0a55ac96",
+ "l10n\/cs_CZ.js": "4262c812349a7cdb51b39c5fad4b1a199fd7e97bb01f1ff10a2949d59ad33e687b15f4cd6b07d7d2f9e0df74e3f28b91c123d7f03f5f7d4192ce67ed3e8167c8",
+ "l10n\/cs_CZ.json": "83cb62ec59c3c0e1320c911bfe01c8106404b098b2243c47d35177b4806a577cf64d094b6eae5d9e1e574d43318c469cfdfef36404d0471b84d793d83350f0d3",
+ "l10n\/da.js": "0c2b07c0dcc06adc46dbbceaf2fcd7b48184de0ad73f9c1ca2f8bc5c18a11eb966a9ae0e88f1448321f4c8ac1161a66e4a25e0330c7279c1d4617e52a4d96fe6",
+ "l10n\/da.json": "39576ff666126207b6ea701ff7b76cd2c4192a67c17c06136cfef551e732821d7a08b8559154cefb04bbc671a6a80d268c0094e87e77a582164b12aafc622814",
+ "l10n\/de.js": "2e775a09492e21f5e8ede11a98f127a2f068bb493e43823b3418636d50a5821784071d169681f433d8b8f5ea00767084b82593ccf746471a26bcccc4d090d3df",
+ "l10n\/de.json": "73c4b23a66dec2a03f2d2b1bd6650f51d0cdc10631c2a9788dfb38a7738e46d8ac638fbb85e8db853658fcbdeef631c86a51e4241ef9f4d9ad71e707746f9295",
+ "l10n\/de_DE.js": "81924fd18e245c2c2ce32f1cfadde38cf177a7c29c316f2f794e0324c9a921bb54f64017b1184cb588a86756e0c0195228265a0cc00ce27ff7214308a79458ee",
+ "l10n\/de_DE.json": "18421f28d7c67bafe2e3499d16bf12b897188a9a687736b695b99a7878a74acdb28d4e1e159e836ab6d6056ffb68d3dadf8aa4b55ce12ef6e7082ba170586f0f",
+ "l10n\/el.js": "139740703b0c6a716433b5003fd552b09677255c9748a285a200456bf925d6ded7446c099a3d6c7aeb746b7ce0d4bed24c79b272be2cfa3a03112f83b7655760",
+ "l10n\/el.json": "552db522bab13684a62a90c9c1806c491121acf30af344daeba5e762b1139a9d0b89d083492f60b11cc65d9326fd1d2a82b9d8c25428c1120149ef3c7faf51cf",
+ "l10n\/en_GB.js": "102c1e96094c860f049f417a426e4e4a21f4041e0f78025bc391c50f247c1efedce3ba62c26b249f52d64561cd8ca820779cc2e97f71f97a3f2b658c20bf4bf1",
+ "l10n\/en_GB.json": "63d0cd2b1bf8f621336b815ba80d19ca9f37e25ff88e75b70054b744e95583579c42d1a29917b4794b5a6a9f249f95eb719e4ee4fd091badd0db6982e7af2f20",
+ "l10n\/es.js": "dff7b2a2b8e42bab5116b2af2eaa6b989e927fc1c6d495e54d26a4b7d19f8b1629bf020bcba9c49dfaa6b5be6836c5fdbf20365596658dc2ddc7df0d9b3e2d20",
+ "l10n\/es.json": "b593f6dbb21569db87a4b31515b3ad6a19878a482f54d1169735bba23340ae75c0f673a457df35e117953f0fe93f26f182a1ae826132defefb9b58ee7f5b2168",
+ "l10n\/es_AR.js": "2bc09dfd219fef1ce57e55644b31e6b1e33d2435b6df81625d02043015ff8f679c1a375ad372ce679bec47c2546a58c8c84cff7ad1b86fd5b16ba83209ae2135",
+ "l10n\/es_AR.json": "a8e87ba9d96b74e591070f56082d6911f7654d651670ec6a48acbe802d6eba7bb12ed85daf0a46b135e7f4b81656df570327d6aa71926e4835fd7dc31b8a4071",
+ "l10n\/es_MX.js": "b542b2141537408791d3b02f9144d479c9d2e6b41503a647cac45c2aa989d2a2a7d1f775b31b4ba4a35d503d42b8feecb56e544c29bfa4f87bb87928620bf15f",
+ "l10n\/es_MX.json": "6697ea329db3067e22acfe279caec95e437ce92736e74d0ba3c022cdade1fd340a8ca5076577683e07ba30a6aceb6764c2ad109a425886adbeb24f17abf41b38",
+ "l10n\/fi.js": "65795c60b1ad08718f2bab881ca4c0097f6f3c96f6936f9b99c7ab1512e5f7cff11e6ab3f1062cfcfc56580960b57cdcb203d6253d4e4057b93e94cc69a79344",
+ "l10n\/fi.json": "37095e263204e959425d548566bc8de56408dbdc567f1915d63a1c9c2b575c944cbec37ac3e27fbe9977c088f978b1d060e14e79f3ba511a715e8b6397cbede7",
+ "l10n\/fr.js": "8e203686e4e0edc7e05ed1720a9820423dd69cbfabea2b8f6f1f22b45bee1b1540cc7588029d38475beec476ceb4d917b63df2bf6944f20392054e86ea29b634",
+ "l10n\/fr.json": "b3f4237bfb3097b3db23855d5b022c6cbe4507c870a909c1c123abedba5d4980d7a1ee772bfb066196c9dcd7d7f7cfb6b8fb297c28dfdc822cb9f454c459da71",
+ "l10n\/hu.js": "f99514680b625c0b831d6b6fc8ee2c13397f6ee69211549ec949f9faec002cf9c7087c9fec3df6ecee0fa533b94e8e7acf65d9e8a1c85d0eb0105956995935ed",
+ "l10n\/hu.json": "70c03447e360a840d2de255af7241456a278193a4385a44f7790e9e01ee42c5e68f1ec40e487a379a2ef9bdcb3edd82c423b4ddcb6b757737137e7146dd6e7fc",
+ "l10n\/hu_HU.js": "6d23415b99a50ec648dd67019e51e833162e2258a647c817ae1ee9d450b9d849ed79ba45c54b4f3d353b47b79404e49f8d01feb60de21fa29a18bc7697915e4c",
+ "l10n\/hu_HU.json": "0f87f990cbeb559334ef6cddaa9bac461dfdd6143fb3fc3e136db945685cba6f36c72790b8bbd096da0ff34feb7ba3b322b6ccda89f66c7e5d2ca1f2b5713821",
+ "l10n\/is.js": "d0d6eabef18e61c790945c9a62cec6e2fc7e43ee82c2f6779d06b6c80521e1eaf89adc7a324f22b33f9f99383ec5fdbd5507f340ead3c1e84360eaf8c6c0c48c",
+ "l10n\/is.json": "0996ce188dfd583ea45d594116ecf3e6a9bc699549bd3f2a078cd13222e177b7b455f9d6bd74f7d1d1c4ec47fbb02d80808d981e0ce4afafbbaad4b75192e638",
+ "l10n\/it.js": "a3fbd6ebd3db9f22938533b7b3b60a468a6f8e9ba7ec4020f1d863fb414ab64a49d3e1e9dff936a60c3d61cc1168e9f6a71636854ef1b61f1d02a2529da8b489",
+ "l10n\/it.json": "39769aef3c91121e899f0d238b59dff95eac84897c7e4b40ee3a5962c34eef0acb6e35994e1c2452e98369345e45f0d6443ad9f768efe5ab7862e9f966dd497b",
+ "l10n\/lt_LT.js": "1e418f0d589af6360e0c08b1f972ddac64629796965635bc3638c823d0af6033659c1a478cde5057492553a8c8bad2a64a82ee94acb571b84a579f6fc23c230f",
+ "l10n\/lt_LT.json": "d2a0fe617a2d0a7a6528015e9bf271ecc5d21f6a016a1cc4824102537fccd21dc2001446db602f13b3812c569d2196eb66837b31a8cd98bb4c6721930e9c86e2",
+ "l10n\/lv.js": "248e5c72e2e5781f50e9a3e74172b47d55459d750d30b3c9c906d5f5ba6cf6984fb65883a26414379dec693c331c2e92709a0381a23cd34600294f9d6ba36d9f",
+ "l10n\/lv.json": "5c22b41498ab7a70dabdf78b844b13c34facc428567c5ca12d64e5eb1e2be8f8f46302741cb5070bfa7e3fe97436b24cc1a0b13fa74c1bf04efa005d8e453d5f",
+ "l10n\/nb.js": "2f090234132c44aef4224001cc7cad87d9a7c93cdd84a78a459a07e38da35dc3f2ee90183a9f405b7c2537628f5ef955c0377041056c7efb30af66280714d98e",
+ "l10n\/nb.json": "48cfc7bd5ae5a985beda7df8a3001b05f43031a2c426a412ceb07439d657368110f105f0496207c91ca2abe801a996edd17d979bea4722871b127d35ccfd63c5",
+ "l10n\/nb_NO.js": "c977fa65e11de0960bf6e5cc28ba034cd64c62c57e9c658c84200d2d8388e96f2c6656484cd40c1e8e6ea60c67f8bf2e944aaf338fe7e4a460bea91d200cad17",
+ "l10n\/nb_NO.json": "ab2cede15f0d86016eccbb0c1fde76e9a2a1a4856a55e84ab5b9daeb7c71b6838a842102d3ef383080a7363134bd35446804714044b32025d8cb1a6f0aafe5d3",
+ "l10n\/nl.js": "26d864fc3363a4a13dfc8a6cf9dff0dbdaabc22d82e4a8c550f52071db7e98d8ffbcbbc5d7c2e63c18a01a3835efe08c312ee194b57db582857572a42a441982",
+ "l10n\/nl.json": "b614f76c5563fa1b1c6e4a15cd1e556d3805acc4f984b6d130368e98b4e573c0dba91ceb9a3d18f163613baea35c77fa32b913e9d40e279cba3ae28217b83eb5",
+ "l10n\/pl.js": "db3fa42dfba84a6b3e295ecc75600a099d7634a3a3344195138c9f44fe53a0bceeae6306cca5c656f55ee62fe02b65ccc113963f4c4850ec4dd6f684f571ec6f",
+ "l10n\/pl.json": "c582fa309e23c4cd95c9c18a17523749c39c518799087d7f81048abb8466221f746db4a14b0bad43728465e2f23f70f618d5debb0ba8edbde215fda6f270aa9f",
+ "l10n\/pt_BR.js": "ae5b14513a2deb8e63b10e3d81c054d4299435abe2b808327fa2c53aad5c9f2f50e1f5ecabc38587bff70f477be0bc4e70efa247efe9526b7c328046bb32404b",
+ "l10n\/pt_BR.json": "5d8fa6352663392bbdb454c8cec29b58175d0bf7634db9be2afdfddb01b3a9198e67ef10acd892a37be74c2724ad77547d0e5ec619097f734413bbefd73783b4",
+ "l10n\/ru.js": "3828e4aff1fd41e4f777aea4761f27df72e7c85a377af18068aa1ab1efa3ff1e01e08bb97f2fd4409fcf7a3b1a0be16544269200664dfc2a70c36046e37d2199",
+ "l10n\/ru.json": "acdb5b0d311af00edad1027917aeef257ec1c57bba98240eab60f03465cdf19ff45a0d27145275db9233b4bed6fdd5b539cdb8b6811ff00b26ef4d305da2d3d8",
+ "l10n\/sk.js": "79b654505f805cde0338e164ca1cb931848e980624ed48035bca88f5880485610e6ac6872d41c3eb30d704d770c10805fb6e80214d9aaf1a5c8e08da3af1fa7f",
+ "l10n\/sk.json": "2eab79d87f9f22c5f51118db1e6857e0d1b26361b1f203c0d400caf16e5fec6115581998b52019de96f61e7c82f2a56c7d78196df89ea07251f5a0a0a8692d7a",
+ "l10n\/sq.js": "82e08261ba3f05d863ef110b29a9333eaeef9b6fad723b1c3bc0206c5b30d22be1e30e7dcac56d4d2c6bb351f3c78a65e152ee1beada24d8b4e864c62c7784fe",
+ "l10n\/sq.json": "a98dfba832cbd23cc4c0d34fee94bba0fd43232c41cf03f32e96326e151f2b54422e79ef2e10b1df8c7e5540ec4ed2d01ec9a4f0c8ff28347d859411f29ee7fc",
+ "l10n\/sv.js": "b1f190dec7a79726905d0f188451f83e0645cf49c5ebd7eedf242309e1ed9d2f9d0ef698e37487529e385ebd63a7c50695bf139b4853904a52575634d796f92d",
+ "l10n\/sv.json": "b11769540642685ac5ec6e65caedb52622bdc198ff57b9244e29a653a7a8dde222425f1f80440f0678fb2ff6e9494b385c8597af866355df253df28f729e8839",
+ "l10n\/tr.js": "150baab193bb5315932bc7a9c8cdb0ce593bb4c4b0b1323440ee498151c5e7efc5e6d270b4f46e39adc12a71daf95e5f232cf08cc8cd7d511fdad4ff8097f6d5",
+ "l10n\/tr.json": "67d62a32059f1de374257ae54c922b45ec1d2f5f33c404b669f66adb52969f9ed084ec1a929d8c9ce5daec7657de1d14c80d621b1440c9c51ef9e228c8aa9a28",
+ "l10n\/zh_CN.js": "3a62d61fda583b80e501808a8868ebdc56f94224e27ac68de28a568f27fe9971850bd6385f1c515a9ae4bf0c84a95784b051c5e9bd30b6c14172026ff6816ec0",
+ "l10n\/zh_CN.json": "b627316e048f8037be6183bab410884d8c877139071b4a54f63ac46ba31a41f128c429e9bc8ac06dfcb96b491fedd3683ceffe9a66f19bc9cd348d8e74b31318",
+ "launch_phpunit.sh.sample": "703662246d58ef600e030f5bb741163e7ac69e48c277fbca0adb0790cecd653f6e22ab1b3c320568c22f41761318fd23e2c41ebb02a18e7b6b5f0c38d1de5314",
+ "lib\/Activity.php": "a783615077c78ff5f37bf2a4c477541557b589556fd291c8b20cbcaaf63796e1accfdf22605bd98dc6f8147a72ad3521524895b220e4e24a7fe872f99db6f5a0",
+ "lib\/AppInfo\/Application.php": "b09650507cc310112ccde0b1dab84acb2ba6cc387cbf42cdb4628766e41054d4996352252d439921d809b6933a49c24e1c28694bb83ef89d4cacec39b0ff8d3f",
+ "lib\/BackgroundJob\/ExpireCredentials.php": "078b39c221ad97d04c3f043a959bb24b18ffd48137782861f41f97b9385d6a637e6698e2fcad954cf157e1734ec30134009c13fdef7239e78965662d7a43448c",
+ "lib\/Db\/Credential.php": "e389586f5cd4d324277a7ac8e10376c4014436009c62a1e11d447928104b057f96a4dafceaeb2a134bffa0f7426ece218c8e690d8b6f921ab8dbc1aa53e19ae2",
+ "lib\/Db\/CredentialMapper.php": "59c760a1b710bc5030f8a0460a459deab276cb870e8a8901c8d53ee2d06ad097aefb1356122148f9f5fa8cf0ea8f966c85e9ef846cd65678900d5e46c0809677",
+ "lib\/Db\/CredentialRevision.php": "3e2cb5cc22968ed78eb4bcdbccebb4f498d7fdb476ac4f156abedbea506cd5ff49d2f37088a84bbe1e98dcad55820c985e342cbd0f1b43e2c091f952a0375792",
+ "lib\/Db\/CredentialRevisionMapper.php": "10066e0fcce55b42e2da104d3d02b29fec35969a2a6902555f925464425512a37d89aa9cd9c6ef32e30213a8033f51a85a8a8f867c5d6dbe6bf0271d8d7606a6",
+ "lib\/Db\/DeleteVaultRequest.php": "5809e754f4719cee40312058105728ec94cd9e6fd01c66cd2661b1d43a126da7474080851fac548f03fb5300924f7544d9bbe1687ba329a63b62a72c284f76f7",
+ "lib\/Db\/DeleteVaultRequestMapper.php": "fc7075440e6db7c405594d8a6d92335a3d5656ed716b7bad5dbf0bd04b9dc35e4d3b3daa7ef0cb3c6b850ef38040e2ca10aab56b93582022fc9c105330aae6a9",
+ "lib\/Db\/EntityJSONSerializer.php": "38744fa6be56599f2c816ee9733e78f468d6f0eb12edb7c1463666efcf61b9828631cb0e770c96bc1f28ad2a391dc4b733e89d1cedf90895a68f4dd848a5b6f8",
+ "lib\/Db\/File.php": "a55fed61a52b7b166bc89a2a09c12f2245bc5902690b3538d8656f6d2aedd3bdd7ae2c2f4a2b4b069cd23b9a8d9aa1b094d068012dad25046a96b796798271a1",
+ "lib\/Db\/FileMapper.php": "ff2c8fdfe178c5049536862bd077a2506e418c02164720cf48bbebd9a1a7cc3d20faafd5b5e9bfe4d9d695e2da783fcc63a797d6ff4b9b7123dc1dc5b021ac3a",
+ "lib\/Db\/ShareRequest.php": "b1a45a44edb87cc6efc2045737c5895504cdb0d4570c426de67cb089930df512c5a985f60d9001efd2c8034626f37667b20618215b5e251ad446c94c04aed761",
+ "lib\/Db\/ShareRequestMapper.php": "b98e127caa418cc7a06436882c13d0adc8b48467aa09a891ff05d3670501c6d145fbfb8613701457464dffa7788cb1714f1d898b79d1ebd155f025f7f230face",
+ "lib\/Db\/SharingACL.php": "7a0e3b016445dd95164aeecae3bcea2e17a7191d8490b3b9dc76732afd768d9da8caeaa3c8cf2846e9dacab99d5f61ffb045c505e9605d09aa3640e84ab0f0ad",
+ "lib\/Db\/SharingACLMapper.php": "5b093916cd4c3fbe50d2cda12ff47a38a1c53518e14ca144dfc5a009a2d0cb1159b3bde3ea4978579434ace5b6953d4e76b7a5b13a525cdc156be67903efb79e",
+ "lib\/Db\/Vault.php": "3831bb36084eeb33190b892ed88204e6f99de4fa0a9a7e8e4af1f838895bd92d50c3967bf2833bc93b353a660fe9404f2c718fb917785a43ac2f9c8858305901",
+ "lib\/Db\/VaultMapper.php": "1ff9d66ea8cac950eddb71c04f3bf1ad322c92c61ae0aef244774e7b8126b4d7b3cb4638a1b6bb94e0952eb61e5fb21b314c9e8e160507c5e126f4403a710d16",
+ "lib\/Notifier.php": "88073307b4285c799bcd6aeeaf521356a36dc35ef0bef3e99a18af3cc44ffa26a658c2cefbaf64c149ec0cb521964307b9ad550cf633d398c36d62dd172cc737",
+ "lib\/Service\/ActivityService.php": "62f56a359b2a27930123f00b2a5382599fbc536c26b358c95814b0519ebb3cd3d5fa7e05575831555f8a9600941f68e4f6302daaad0f1038bc6835cb19ee0a03",
+ "lib\/Service\/CredentialRevisionService.php": "fdf0d1a263da6d5b1b6738745f7d543321bd8d3beac7dd2ccae82cf416ffb77b160f0a716a9342e6d055a90a92d46c2b281ffd735627a7c4f4223805575923d7",
+ "lib\/Service\/CredentialService.php": "a6348948b2489f640a71468f8f54b3867fb9d4ef059d1a848e300dc31bf28944b968919cfb1e25d3bac7785a412c61641c2d3fbb89c85990ab02489656968b31",
+ "lib\/Service\/CronService.php": "77e449a5ebff47aacf53d8eb1a1f3a70daae3e4b723cb000909a4d7643ca39597a725cb42aae80f30c5a1d16cbbacaa426c3a01353e266647f5892f389281407",
+ "lib\/Service\/DeleteVaultRequestService.php": "4c204d3a0fbe03ca8bb90146faf7742936eaff3ed70e5370ac514da13409aa311d4ceb3825e48050ab7dc06e0ab06253a34c056ea7525e62fac35f134df8f0ec",
+ "lib\/Service\/EncryptService.php": "9d7296d55f2794abae31eb7794f247d9d4b329d166bd46dec054f54f3ff6e9507e54530f39b9fbde9f83d39856509a0db6d7b713f358395f8001f1e54870f2b7",
+ "lib\/Service\/FileService.php": "4ae7e1e5dfec092b99f5cd6255a20ed9a27d0e2baa05d1ec8598bf8b457e5c9c75f1f7780ce492b26c67494266868b014029294618a69387d47399832573e174",
+ "lib\/Service\/NotificationService.php": "b115e5444b0f41de6aa48e517a068bfb9d8ee012cacff1d3e98aa8e6107a2a95f772416608932022e4bb1a15218b066e4bc380288dbe236597c334a972117cc1",
+ "lib\/Service\/SettingsService.php": "a9f62fafbc8386988a827da67465d296eaf229f6a89c7045300f1d8eaf6662a604391d382e66ef25c1744508016db69457ad2d016bee84ff9fd8bcb65245b7bb",
+ "lib\/Service\/ShareService.php": "ac176f9f41a51f18c630e9e6e0492235f1717b2712f4721b64a90996c8746c39f5c5069f4790021d47673a6e618d1186e16bae0d1899c0217c4fe92f47ffa2d2",
+ "lib\/Service\/VaultService.php": "ca9361a5deff311dccc7d20ee4415ea83c3fdfca710f47b1f44ae94590f783e32214832a358874dac57f1a149cc8fa08f3c005e96bae0362833a6c22ea49937f",
+ "lib\/Utility\/NotFoundJSONResponse.php": "072974b2e5808c4955bbb30acc54537408f7aba5bee84ad8d7e089b31edbe1813813f0456565f7115080e3308d14c46999e6dd422a5dafe3e7535160172fdb6b",
+ "lib\/Utility\/PermissionEntity.php": "e49aadcfd024cc1708443bfa60b46bed1c9323cb54aae0802cbb6d14fc85bfc1c5f4e9ddde4c3814c536a08b1b87136d4e8444ed5e891a7b3698bc5a2abdf01e",
+ "lib\/Utility\/Utils.php": "34ba2dfddd74beeb387164d6c02fe283d963052690b2c4b6506ee1f0ca42157cc933d33096131b8ad5448b655d50a5b0f45438fda230e173f6972b012b0b0121",
+ "middleware\/apimiddleware.php": "cd6f0a8888b2570fa313835a1ec86744bf553f3f343e3134d7cf2c959de7ad82f8e1ad47c7a3422d57b960e9d7571f69b4b1eef57a13541b3a7a21dce4f2661a",
+ "middleware\/sharemiddleware.php": "ab7e1833e58437f3dd56e95789ebce56456de1982a6765ae7b674246ae5ce329dd1fc8b0a3b8937f415a3b620639319777afecae487c9326dc3101ccdd234ecf",
+ "migration\/serversideencryption.php": "9ae642f9347381e3acf5d19ce83a83c57fe6eb575e784d5209c2c3b815b4d4525eaa715c449890f83e1dfb86cda272279c48ae9491975e17cc71047b0cdcb481",
+ "personal.php": "c2428b14d7df27c8b2f2385f8fcc8ffcb25d0cb38278af5dcc1cae3cb4e405a7be707d67e6a9b3c0f46c259df99cdc1d7ac288b95ff96de4b8b0149bc921189f",
+ "templates\/admin.settings.php": "a6ec9ff574734f2f54c40abeec017057325056af70277e2f76034736ffbd553f133cc49d7fc809836ca7e07843cf2e47de3ed66e798d40f5a75a38139c12d854",
+ "templates\/bookmarklet.php": "1fdaeaa47fba22e1cd161571739d45dd83562613ac32e3e304a3bec77639c1dfaeb4a1c617398abd589881799bf69111c0833c9a02fffab595a4a8dacb22b675",
+ "templates\/main.php": "eabc5c0e65ff0afe308808859421cd02b2eabb3116eaa776609b491b4affb00b7762dbe204b47a47db7e7d030f5b95470ac411a9a98ccad7b81cab2ea955d32c",
+ "templates\/part.admin.php": "c117d64708c105ce5f273e49758bda4f433d42bac073919283820bcd29ea00cb69977aec089a736248a0ec9bba5412475fd1cb934cd050353e597383a2172412",
+ "templates\/public_share.php": "1a532ce079e67fac80020d73107e00053de1468e19b1be6ba2bc642c0274e0bc6a44fb2e67b46e7e98d842245d914087380c4fecebf4d95461cd9c18ce308773"
+ },
+ "signature": "qKwqTULAdkGmzCd4PMg8zVPz40HkwUJh6r9lCfVpo0ei+r4NRE4iaXQL\/NMkcW0Y8u2Zu+4assfDlPlxFaSdkvrHz0iBgvSi4e4\/XAdofFMQ\/fz6aX8ZDvrbF+SThAyguq26Z7zIg\/SJ1g6ONp4a1jJOu+moR5+Pss5+HUA4w+d+lVM9kSR8rDF4dobRseqtJEITwNPvIyDJCVN4ohC7pji8lsIbNeBktvnZX8FAvkRhjVOVm2wu0NY49VZ2C850oNdkHd66qfbWOy3UQNtd9HlML4\/q7vT6p1f9lLz06R53YnpWzbKkwKI3R5qND+RQqTI5rG1CvwIn93vsbNP3MWxVCx\/u30w02uvJi9WeRzfmySRpYOSLWNWsjnEEZjolI6OCYGZe7oGlfO5ULjFJO3Lz2O8uIu2BbZ+cXtnxQoqG1UV2o75pqDnoBJ+pUGYocGFqxoRLKf7HTC1nCtN60LJ7pHxBQQgGnJh1\/OKVD\/BTdOvJIuN+SlyuzUR+gzFUiG9ZjrbqTyvtoSnjHn8UDueRMn6zO76tfMcCjigL65bRTINRjm4tvI8plh\/1n08W+A1EhuMFnN436UNHVBPIoGk9foaD8Jm1aoRzxpyD\/t5I7kBXsERJvTyX\/zXsjFJg9s1r2djo4vvMWxUG5JKaB0gaWy2b+Nq5j\/\/DL\/8hVmY=",
+ "certificate": "-----BEGIN CERTIFICATE-----\r\nMIIE9DCCAtwCAhA7MA0GCSqGSIb3DQEBCwUAMG0xCzAJBgNVBAYTAlVTMQ8wDQYD\r\nVQQIDAZCb3N0b24xFjAUBgNVBAoMDW93bkNsb3VkIEluYy4xNTAzBgNVBAMMLG93\r\nbkNsb3VkIENvZGUgU2lnbmluZyBJbnRlcm1lZGlhdGUgQXV0aG9yaXR5MB4XDTE3\r\nMDczMTA3MTgxOVoXDTI3MDcyOTA3MTgxOVowEjEQMA4GA1UEAwwHcGFzc21hbjCC\r\nAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANScNfBdA3n6IGi2gbnRm4St\r\ns3BSAUs8YYe3UVoLmShxhPqxtNATrxSyAKN+wX5svVii3NwRWL7hQaMGlXWhTi8U\r\nCaHdLDk5lTF4cKGOXt18fj\/p7AMNf9ICNdPyw9VYJeotboDKHJp2xGISsK9DW3Yk\r\nIjCPVAfRnv+dcLeFrQMcCu8iRZd\/uas7yYH1++VrfvC9XlpNC6VVtt7VLniaL42G\r\nSV8gLaITWld4MIkk\/kJipYwneIMBl\/Wm6n3O+v5VrUvoSKyqbbiAnOeX3x99K6lY\r\nQIAjKLhfzJeUK7vLQ3p+XUjbZgF8\/PTpQzYrD\/vRy+Fg2cL4KbNJpvzmAFAEJZ9u\r\nLlzw5gF\/x9j+cSAxwGvGr7KnYJh4qpy6+BmA\/CWHm\/Bpgc2d\/IRDIwq9hdZNYfU9\r\nfksn0Ygzw6qr9ZgbXLzVXNSZmb0opDMYbUG1NAuP6NkgRkTwoq5J3z3irvMAYuoL\r\nx+P0itF08rjPB+fG\/QCsc6KP8C20OuvPn2i2MjEswr7GQ3nmZIjvOcvOwMee1kWP\r\nd2q3HAjGlHpLP3E64jcNya73Q8m9knkDl\/SVKdKK1JQuuAMytsYVwqZpKa1QRos0\r\n+YN2665J1+lQ19YFxQJh\/3WgkSQCBz19Ev6JdM\/cP4QhJQqW4iTxKYRrcas+EnzL\r\n+iKyH53rgwymxfsOTFf7AgMBAAEwDQYJKoZIhvcNAQELBQADggIBAMbgDbQfUBNs\r\nniOdS15mPK8WQ1B4m77pZXpPsleuqgAca5CjlQuvzpm3XQ\/eptUsA2VKMHrHdm0\/\r\nNYepqpFB37K6xeJw+LcdKKtSZoZEeeXjGbfXLwoXzOjbpIRhzNf7UTZrVBhjf4Ma\r\n0zMll6HYG3Xti\/nfVqBmEQqblbkoP0xWosoAnB+biypKax3O+MrDQu61aQ7QmM9Y\r\nzhcf22ACkOzbdZKMTCCSrmG6eOaZY2eFCXAYewKmR6TYZ\/iZTRNsACS2oaRazCyW\r\nOfHZo+YDZ9EB0AH1CAW1X\/8JiBtVN1aX8Pc5T1ZkLhL1cOV\/c1YvHsCfYeAKV\/7z\r\nt1GQFXwIEl8oDkMVaQtyLHugC5axDTCdaS4Nc\/wDPxrcR7PdDKPOQ+pWWtJVpwOQ\r\njuqJ992gnUB2WPfSZfEdKmvh0EW1GcZiAfdac\/AOrlKBGK6CwMICyfx\/+oOFoT74\r\n8FkLEUlJ1\/H9rZWUHeckyq5hSfkvdli4B3WMdrR0b03G37poW3dwVq8mvUvUgMJZ\r\nfAYfh9dXIz3jxdcZpUNthuKbFW+cgR8RbmgYFWUf72UO3wwqYO70UHwPt5wE4ErV\r\n8ZMjV0bUfNxLnUqfnGZpPQTrJGFRaQBeXHlu0ZFWMHVGTfQDxSq6TR\/y4xC2EOEk\r\nscCuZVbVgElIHcCOcrnaIp4DLu5ApUuO\r\n-----END CERTIFICATE-----"
+} \ No newline at end of file
diff --git a/bower.json b/bower.json
new file mode 100644
index 00000000..8567955a
--- /dev/null
+++ b/bower.json
@@ -0,0 +1,43 @@
+{
+ "name": "Passman",
+ "description": "Passman is a fully featured password manager",
+ "main": "",
+ "authors": [
+ "Sander Brand <brantje(AT)gmail.com>"
+ ],
+ "license": "AGPLv3",
+ "homepage": "passman.cc",
+ "private": true,
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "bower_components",
+ "core/vendor",
+ "test",
+ "tests"
+ ],
+ "dependencies": {
+ "angular": "1.5.8",
+ "angular-animate": "1.5.8",
+ "angular-cookies": "1.5.8",
+ "angular-local-storage": "0.4.0",
+ "angular-mocks": "1.5.8",
+ "angular-off-click": "1.0.6",
+ "angular-resource": "1.5.8",
+ "angular-route": "1.5.8",
+ "angular-sanitize": "1.5.8",
+ "angular-touch": "1.5.8",
+ "angular-translate": "2.9.0",
+ "angular-xeditable": "0.3.0",
+ "angular-datetime-picker": "",
+ "ng-clipboard": "1.5.10",
+ "ng-password-meter": "0.4.0",
+ "ng-tags-input": "3.1.1",
+ "papa-parse": "4.1.2",
+ "llqrcode": "0.0.2",
+ "sha": " 2.0.1",
+ "sjcl": " 1.0.8",
+ "ui-sortable": "0.19.0",
+ "zxcvbn": "4.4.2"
+ }
+}
diff --git a/composer.json b/composer.json
new file mode 100644
index 00000000..fe3f573d
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,10 @@
+{
+ "name": "nextcloud/passman",
+ "authors": [
+ {
+ "name": "brantje",
+ "email": "brantje@gmail.com"
+ }
+ ],
+ "require": {}
+}
diff --git a/controller/credentialcontroller.php b/controller/credentialcontroller.php
index 8c8ee481..cb3a3265 100644
--- a/controller/credentialcontroller.php
+++ b/controller/credentialcontroller.php
@@ -104,7 +104,8 @@ class CredentialController extends ApiController {
'', array(),
$link, $this->userId, Activity::TYPE_ITEM_ACTION);
}
- return new JSONResponse($credential);
+
+ return new JSONResponse($this->credentialService->getCredentialByGUID($credential->getGuid()));
}
/**
@@ -122,7 +123,7 @@ class CredentialController extends ApiController {
*/
public function updateCredential($changed, $created,
$credential_id, $custom_fields, $delete_time, $credential_guid,
- $description, $email, $expire_time, $favicon, $files, $guid,
+ $description, $email, $expire_time, $icon, $files, $guid,
$hidden, $label, $otp, $password, $renew_interval,
$tags, $url, $username, $vault_id, $revision_created, $shared_key, $acl, $unshare_action, $set_share_key, $skip_revision) {
@@ -142,7 +143,7 @@ class CredentialController extends ApiController {
'username' => $username,
'password' => $password,
'url' => $url,
- 'favicon' => $favicon,
+ 'icon' => json_encode($icon),
'renew_interval' => $renew_interval,
'expire_time' => $expire_time,
'files' => $files,
@@ -258,7 +259,7 @@ class CredentialController extends ApiController {
$credential = $this->credentialService->updateCredential($credential);
- return new JSONResponse($credential);
+ return new JSONResponse($this->credentialService->getCredentialByGUID($credential->getGuid()));
}
/**
diff --git a/controller/iconcontroller.php b/controller/iconcontroller.php
new file mode 100644
index 00000000..792b7742
--- /dev/null
+++ b/controller/iconcontroller.php
@@ -0,0 +1,146 @@
+<?php
+/**
+ * Nextcloud - passman
+ *
+ * This file is licensed under the Affero General Public License version 3 or
+ * later. See the COPYING file.
+ *
+ * @author Sander Brand <brantje@gmail.com>
+ * @copyright Sander Brand 2016
+ */
+
+namespace OCA\Passman\Controller;
+
+use Doctrine\DBAL\Exception\DriverException;
+use OC\App\AppManager;
+use OCA\Passman\Service\IconService;
+use OCA\Passman\Utility\Utils;
+use OCP\AppFramework\Db\DoesNotExistException;
+use OCP\AppFramework\Http\DataDownloadResponse;
+use OCP\AppFramework\Http\Response;
+use OCP\IConfig;
+use OCP\IRequest;
+use OCP\AppFramework\Http\JSONResponse;
+use OCP\AppFramework\ApiController;
+use OCA\Passman\Service\CredentialService;
+use \OCP\App;
+use OCP\IURLGenerator;
+
+class IconController extends ApiController {
+ private $userId;
+ private $credentialService;
+ private $am;
+ private $urlGenerator;
+
+ public function __construct($AppName,
+ IRequest $request,
+ $UserId,
+ CredentialService $credentialService,
+ AppManager $am,
+ IURLGenerator $urlGenerator
+ ) {
+ parent::__construct(
+ $AppName,
+ $request,
+ 'GET, POST, DELETE, PUT, PATCH, OPTIONS',
+ 'Authorization, Content-Type, Accept',
+ 86400);
+ $this->userId = $UserId;
+ $this->credentialService = $credentialService;
+ $this->am = $am;
+ $this->urlGenerator = $urlGenerator;
+
+ }
+
+ /**
+ * @NoAdminRequired
+ * @NoCSRFRequired
+ */
+ public function getIcon($base64Url, $credentialId) {
+ $url = base64_decode(str_replace('_','/', $base64Url));
+
+ if($credentialId) {
+ try {
+ $credential = $this->credentialService->getCredentialById($credentialId, $this->userId);
+ $credential = $credential->jsonSerialize();
+ } catch (DoesNotExistException $e){
+ // Credential is not found, continue
+ $credential = false;
+ }
+ }
+
+ if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
+ $url = "http://" . $url;
+ }
+
+ $icon = new IconService($url);
+
+ $data = base64_decode("iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABHVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADF3oJhAAAAXnRSTlMAAQIDBAUGBwgJCwwOEBITFBUWFxgaHB4hJCUnKissMDI0ODs9PkFCQ0RNUVJWV1lbXF1hY2Zna2xtcXh7f4KDhYmUm52lq62vsLW3ucHFyszO0dPV197i7/H3+fv9358zuQAAAWdJREFUWMPtldlWwjAURdPWogyKOKM4z0NRQRRHnAdE0QoI1eb/P8OnmzYlSZs+unIes+/ZbdOuFCFuBmc2Dk+qpe18EsVIptTGJJ3jrGR99B4H8jQlUTfOMSM3ZtT+SAsz8z0ZrZ//wZy4S1H6C1iQtfD+tCsS4EJYP9kV9rGTCRE0fMOfxZypITO7++5b/NCE/S3fx7PsLc9/eeuWqK/3vA9ngAJ3BPwmBIIdMnYbvNNLgo4Egg4MvelBpD0D6/F3YYJcJd0PEw7AWa6gCCNnLLoPtMoVPMJIikVNoE2uAN6BzcZ1MPA2wRA+AUIHwHkn1BAM7LH5OvBhjiAFA6tsXgCe4wjSMLDC5nPAx5Xg3wrGylfk1GlcM/MC/KFW6fvRVbBkLuj+omwf401KUJcXtCiBIy+gT4UYfawrgRIogRIogRLwBG4MAfVnsuX7XX8fWfKCU0qgvcr2mwaiDZYtsw/tMtnCP4F4Y01BhTeiAAAAAElFTkSuQmCC");
+ $type = 'png';
+
+ if ($icon->icoExists) {
+ $data = $icon->icoData;
+ $type = $icon->icoType;
+ }
+ if (isset($credential) && $credential['user_id'] == $this->userId) {
+ $iconData = [
+ 'type' => ($type) ? $type : 'x-icon',
+ 'content' => base64_encode($data)
+ ];
+ $credential['icon'] = json_encode($iconData);
+ try {
+ if($credential) {
+ $this->credentialService->updateCredential($credential);
+ }
+ } catch (DriverException $exception) {
+ /**
+ * @FIXME Syntax error or access violation: 1118 Row size too large
+ * This happens when favicons are quite big.
+ * Githubs one is 33kb and triggers the try catch
+ */
+ }
+ }
+
+
+ $offset = 3600 * 24 * 30;
+ $contentType = 'image/png';
+ $response = new DataDownloadResponse($data, 'icon', $contentType);
+
+ $response->addHeader('Content-Type', $contentType);
+ $response->addHeader('Content-Length:', mb_strlen($data));
+ $response->addHeader('Expires: ', gmdate("D, d M Y H:i:s", time() + $offset) . " GMT");
+ $response->setETag($base64Url);
+ $response->cacheFor($offset);
+
+ return $response;
+ }
+
+ /**
+ * @NoAdminRequired
+ * @NoCSRFRequired
+ */
+ public function getLocalIconList() {
+ $dir = $this->am->getAppPath('passman');
+ $result = Utils::getDirContents($dir . '/img/icons');
+
+ $icons = [];
+ foreach ($result as $icon) {
+ $iconPath = $icon;
+ $path = explode('passman/', $iconPath);
+ $pack = explode('/', $path[1])[2];
+ $mime = mime_content_type($iconPath);
+ //print_r($path);
+ if($mime !== 'directory') {
+ $icon = [];
+ $icon['mimetype'] = mime_content_type($iconPath);
+ $icon['url'] = $this->urlGenerator->linkTo('passman', $path[1]);
+ $icon['pack'] = $pack;
+ if(!isset($icons[$pack])){
+ $icons[$pack] = [];
+ }
+ $icons[$pack][] = $icon;
+ }
+ }
+ return new JSONResponse($icons);
+ }
+} \ No newline at end of file
diff --git a/controller/translationcontroller.php b/controller/translationcontroller.php
index 6eac3266..2e293b33 100644
--- a/controller/translationcontroller.php
+++ b/controller/translationcontroller.php
@@ -41,7 +41,7 @@ class TranslationController extends ApiController {
public function getLanguageStrings() {
$translations = array(
// js/app/controllers/bookmarklet.js
- 'generating.sharing.keys' => $this->trans->t('Generating sharing keys ( %step / 2)'),
+ 'generating.sharing.keys' => $this->trans->t('Generating sharing keys ( %s / 2)','%step'),
'invalid.vault.key' => $this->trans->t('Incorrect vault password!'),
'password.do.not.match' => $this->trans->t('Passwords do not match'),
'general' => $this->trans->t('General'),
@@ -57,7 +57,7 @@ class TranslationController extends ApiController {
'credential.updated' => $this->trans->t('Credential updated'),
'credential.recovered' => $this->trans->t('Credential recovered'),
'credential.destroyed' => $this->trans->t('Credential destroyed'),
- 'error.loading.file.perm' => $this->trans->t('Error downloading file, you probably don\'t have sufficient permissions'),
+ 'error.loading.file.perm' => $this->trans->t('Error downloading file, you probably have insufficient permissions'),
// js/app/controllers/edit_credential.js
'invalid.qr' => $this->trans->t('Invalid QR code'),
@@ -68,10 +68,10 @@ class TranslationController extends ApiController {
'done' => $this->trans->t('Done'),
// js/app/controllers/import.js
- 'import.file.read' => $this->trans->t('File read successfully.'),
+ 'import.file.read' => $this->trans->t('File read.'),
'import.steps' => $this->trans->t('Proceed with the following steps to import your file'),
- 'import.no.label' => $this->trans->t('Credential has no label, skipping'),
+ 'import.no.label' => $this->trans->t('Skipping unlabeled credential'),
'import.adding' => $this->trans->t('Adding {{credential}}'),
'import.added' => $this->trans->t('Added {{credential}}'),
'import.skipping' => $this->trans->t('Skipping credential, missing label on line {{line}}'),
@@ -104,7 +104,7 @@ class TranslationController extends ApiController {
'settings.export' => $this->trans->t('Export credentials'),
'settings.sharing' => $this->trans->t('Sharing'),
'changepw.navigate.away.warning' => $this->trans->t('Are you sure you want to leave? This will destroy all your credentials'),
- 'incorrect.password' => $this->trans->t('Your old password is incorrect!'),
+ 'incorrect.password' => $this->trans->t('Old password field incorrect!'),
'password.no.match' => $this->trans->t('New password does not match!'),
'login.new.pass' => $this->trans->t('Please log in with your new vault password'),
@@ -139,6 +139,11 @@ class TranslationController extends ApiController {
'username' => $this->trans->t('Username'),
'password.r' => $this->trans->t('Repeat password'),
'add.tag' => $this->trans->t('Add tag'),
+ 'pick.icon' => $this->trans->t('Pick an icon'),
+ 'pick.icon.search' => $this->trans->t('Search icons'),
+ 'pick.icon.custom.label' => $this->trans->t('Upload a custom icon:'),
+ 'use.icon' => $this->trans->t('Use this icon'),
+ 'selected.icon' => $this->trans->t('Selected icon'),
// templates/views/partials/edit_credential/custom_fields.html
'field.label' => $this->trans->t('Field label'),
@@ -205,7 +210,7 @@ class TranslationController extends ApiController {
'version' => $this->trans->t('Version'),
'donate.support' => $this->trans->t('Donate to support development'),
'bookmarklet' => $this->trans->t('Bookmarklet'),
- 'bookmarklet.info1' => $this->trans->t('Save your passwords with 1 click!'),
+ 'bookmarklet.info1' => $this->trans->t('Save your passwords with one click.'),
'bookmarklet.info2' => $this->trans->t('Drag below button to your bookmark toolbar.'),
'delete.vault' => $this->trans->t('Delete vault'),
'vault.password' => $this->trans->t('Vault password'),
@@ -233,7 +238,7 @@ class TranslationController extends ApiController {
'generating.keys' => $this->trans->t('Generating sharing keys'),
// templates/views/partials/forms/settings/tool.html
- 'tool.intro' => $this->trans->t('The password tool will scan your password, calculate the average crack time and list those which are below the threshold'),
+ 'tool.intro' => $this->trans->t('The password tool scans your password, calculates average cracking time, listing those below the threshold'),
'min.strength' => $this->trans->t('Minimum password stength'),
'scan.start' => $this->trans->t('Start scan'),
'scan.result.msg' => $this->trans->t('Result'),
@@ -242,13 +247,13 @@ class TranslationController extends ApiController {
'action' => $this->trans->t('Action'),
// templates/vieuws/partials/forms/share_credential/basics.html
- 'search.u.g' => $this->trans->t('Search users or groups…'),
+ 'search.u.g' => $this->trans->t('Search users…'),
'search.result.missing' => $this->trans->t('Missing users? Only users that have vaults are shown.'),
'cyphering' => $this->trans->t('Cyphering'),
'uploading' => $this->trans->t('Uploading'),
'user' => $this->trans->t('User'),
'crypto.time' => $this->trans->t('Crypto time'),
- 'crypto.total.time' => $this->trans->t('Total time spent cyphering'),
+ 'crypto.total.time' => $this->trans->t('Total time spent encrypting'),
'perm.read' => $this->trans->t('Read'),
'perm.write' => $this->trans->t('Write'),
'perm.files' => $this->trans->t('Files'),
@@ -260,7 +265,7 @@ class TranslationController extends ApiController {
'enable.link.sharing' => $this->trans->t('Enable link sharing'),
'share.until.date' => $this->trans->t('Share until date'),
'expire.views' => $this->trans->t('Expire after views'),
- 'click.share' => $this->trans->t('Click Share first'),
+ 'click.share' => $this->trans->t('Click \"Share\" first'),
'show.files' => $this->trans->t('Show files'),
@@ -336,7 +341,7 @@ class TranslationController extends ApiController {
'use.regex' => $this->trans->t('Use regex'),
'sharereq.title' => $this->trans->t('You have incoming share requests.'),
'sharereq.line1' => $this->trans->t('If you want to put the credential in another vault,'),
- 'sharereq.line2' => $this->trans->t('log out of this vault and log in to the vault you want the shared credential in.'),
+ 'sharereq.line2' => $this->trans->t('log out of this vault and log into the vault you want the shared credential in.'),
'permissions' => $this->trans->t('Permissions'),
'received.from' => $this->trans->t('Received from'),
'date' => $this->trans->t('Date'),
@@ -344,6 +349,16 @@ class TranslationController extends ApiController {
'decline' => $this->trans->t('Decline'),
'session.time.left' => $this->trans->t('You have {{session_time}} left before logout.'),
'vault.locked' => $this->trans->t('Your vault has been locked for {{time}} because of {{tries}} failed attempts!'),
+ 'vault.hint.hello' => $this->trans->t('Hello there!'),
+ 'vault.hint.hello.add' => $this->trans->t('It does not seem that you have any passwords. Do you want to add one?'),
+ 'vault.hint.list.nogood' => $this->trans->t('You don\'t have good credentials'),
+ 'vault.hint.list.nomedium' => $this->trans->t('You don\'t have medium credentials'),
+ 'vault.hint.list.nobad' => $this->trans->t('You don\'t have bad credentials'),
+ 'vault.hint.list.noexpired' => $this->trans->t('You don\'t have expired credentials'),
+ 'vault.hint.list.nodeleted' => $this->trans->t('You don\'t have deleted credentials'),
+ 'vault.hint.list.notags' => $this->trans->t('There are no credentials with your selected tags'),
+ 'vault.hint.list.nosearch' => $this->trans->t('There are no credentials matching'),
+
// templates/views/vaults.html
'last.access' => $this->trans->t('Last accessed'),
@@ -356,7 +371,7 @@ class TranslationController extends ApiController {
'new.vault.name' => $this->trans->t('Please give your new vault a name.'),
'new.vault.pass' => $this->trans->t('Vault password'),
'new.vault.passr' => $this->trans->t('Repeat vault password'),
- 'new.vault.sharing_key_notice' => $this->trans->t('Your sharing key\'s will have a strength of 1024 bit, which you can change in Settings later .'),
+ 'new.vault.sharing_key_notice' => $this->trans->t('Your sharing keys will have a strength of 1024 bit, which you can change in \"Settings\" later .'),
'new.vault.create' => $this->trans->t('Create vault'),
'go.back.vaults' => $this->trans->t('Go back to vaults'),
'input.vault.password' => $this->trans->t('Please input the password for'),
@@ -381,13 +396,23 @@ class TranslationController extends ApiController {
// templates/bookmarklet.php
'http.warning' => $this->trans->t('Warning! Adding credentials over HTTP is insecure!'),
- 'bm.active.vault' => $this->trans->t('Logged in to {{vault_name}}'),
+ 'bm.active.vault' => $this->trans->t('Logged into {{vault_name}}'),
'change.vault' => $this->trans->t('Change vault'),
// templates/main.php
'deleted.credentials' => $this->trans->t('Deleted credentials'),
'logout' => $this->trans->t('Logout'),
'donate' => $this->trans->t('Donate'),
+ 'navigation.show.all' => $this->trans->t('Show All'),
+ 'navigation.tags' => $this->trans->t('Tags'),
+ 'navigation.tags.search' => $this->trans->t('Search Tags'),
+ 'navigation.strength.good' => $this->trans->t('Good Strength'),
+ 'navigation.strength.medium' => $this->trans->t('Medium Strength'),
+ 'navigation.strength.bad' => $this->trans->t('Bad Strength'),
+ 'navigation.expired' => $this->trans->t('Expired'),
+ 'navigation.advanced.filter' => $this->trans->t('Filter Tags'),
+ 'navigation.advanced.checkbox' => $this->trans->t('Simple Navigation'),
+
// templates/public_share.php
'share.page.text' => $this->trans->t('Someone has shared a credential with you.'),
diff --git a/css/admin.css b/css/admin.css
index e732ee21..f362cfb5 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -4,10 +4,5 @@
width: 350px; }
#passwordSharingSettings #requests-table {
width: 100%; }
-#passwordSharingSettings .link {
- color: #0066ff !important;
- cursor: pointer; }
-#passwordSharingSettings .link:hover {
- text-decoration: underline; }
/*# sourceMappingURL=admin.css.map */
diff --git a/css/passman.min.css b/css/passman.min.css
index 2c9aae9b..a5e15668 100644
--- a/css/passman.min.css
+++ b/css/passman.min.css
@@ -2,7 +2,7 @@
angular-xeditable - 0.3.0
Edit-in-place for angular.js
Build date: 2016-09-06
-*/.editable-buttons,.editable-range output{display:inline-block;vertical-align:top}.editable-wrap{display:inline-block;white-space:pre;margin:0}.editable-wrap .editable-controls,.editable-wrap .editable-controls>input,.editable-wrap .editable-controls>select,.editable-wrap .editable-controls>textarea,.editable-wrap .editable-error{margin-bottom:0}.editable-wrap .editable-input{display:inline-block}.editable-buttons button{margin-left:5px}.editable-input.editable-has-buttons{width:auto}.editable-bstime .editable-input input[type=text]{width:46px}.editable-bstime .well-small{margin-bottom:0;padding:10px}.editable-range output{min-width:30px;text-align:center}.editable-color input[type=color]{width:50px}.editable-checkbox label span,.editable-checklist label span,.editable-radiolist label span{margin-left:7px;margin-right:10px}.editable-hide{display:none!important}.editable-click,a.editable-click{text-decoration:none;color:#428bca;border-bottom:dashed 1px #428bca}.editable-click:hover,a.editable-click:hover{text-decoration:none;color:#2a6496;border-bottom-color:#2a6496}.editable-empty,.editable-empty:focus,.editable-empty:hover,a.editable-empty,a.editable-empty:focus,a.editable-empty:hover{font-style:italic;color:#D14;text-decoration:none}.link:hover,.pass-meter .link:hover{text-decoration:underline}.popover-wrapper>a{display:inline!important}.popover-wrapper{display:inline;position:relative}.popover-wrapper form{position:absolute;top:-53px;background:#FFF;border:1px solid #AAA;border-radius:5px;padding:7px;width:auto;display:inline-block;left:50%;z-index:101}.popover-wrapper form:after,.popover-wrapper form:before{content:"";width:0;position:absolute;height:0}.popover-wrapper form:before{border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #AAA;bottom:-10px}.popover-wrapper form:after{border-left:9px solid transparent;border-right:9px solid transparent;border-top:9px solid #FFF;bottom:-9px}@media screen and (max-width:750px){.popover-wrapper form{margin-left:-60px}.popover-wrapper form:before{left:50px}.popover-wrapper form:after{left:51px}}@media screen and (min-width:750px){.popover-wrapper form{margin-left:-110px}.popover-wrapper form:before{left:100px}.popover-wrapper form:after{left:101px}}.angularjs-datetime-picker{color:#333;font:400 14px sans-serif;border:1px solid #ddd;display:inline-block;background:#fff}.angularjs-datetime-picker>.adp-month{text-align:center;line-height:22px;padding:10px;background:#fcfcfc;text-transform:uppercase;font-weight:700;border-bottom:1px solid #ddd;position:relative}.angularjs-datetime-picker>.adp-month>button{color:#555;font:400 14px sans-serif;outline:0;position:absolute;background:0 0;border:none;cursor:pointer}.angularjs-datetime-picker>.adp-month>button:hover{color:#333}.angularjs-datetime-picker>.adp-month>button.adp-prev{left:10px}.angularjs-datetime-picker>.adp-month>button.adp-next{right:10px}.angularjs-datetime-picker>.adp-days{width:210px;margin:10px;text-align:center}.container,.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.angularjs-datetime-picker>.adp-days>.adp-day,.angularjs-datetime-picker>.adp-days>.adp-day-of-week{box-sizing:border-box;-moz-box-sizing:border-box;border:1px solid transparent;width:30px;line-height:28px;float:left}.angularjs-datetime-picker>.adp-days>.adp-day-of-week{font-weight:700}.angularjs-datetime-picker>.adp-days>.adp-day:not(.selectable){opacity:.15;cursor:default}.angularjs-datetime-picker>.adp-days>.adp-day.selectable,.pass-meter .details span,.pass-meter .link{cursor:pointer}.angularjs-datetime-picker>.adp-days>.adp-day.selected{background:#e0e0e0}.angularjs-datetime-picker>.adp-days>.adp-day.selectable:hover{background:#eee}.angularjs-datetime-picker>.adp-days:after{content:'';display:block;clear:left;height:0}.clearfix,.clearfix:after,.container-fluid:after,.container:after,.detail_box .row,.row:after{clear:both}.angularjs-datetime-picker input[type=range]{width:150px}/*!
+*/.editable-buttons,.editable-range output{display:inline-block;vertical-align:top}.editable-wrap{display:inline-block;white-space:pre;margin:0}.editable-wrap .editable-controls,.editable-wrap .editable-controls>input,.editable-wrap .editable-controls>select,.editable-wrap .editable-controls>textarea,.editable-wrap .editable-error{margin-bottom:0}.editable-wrap .editable-input{display:inline-block}.editable-buttons button{margin-left:5px}.editable-input.editable-has-buttons{width:auto}.editable-bstime .editable-input input[type=text]{width:46px}.editable-bstime .well-small{margin-bottom:0;padding:10px}.editable-range output{min-width:30px;text-align:center}.editable-color input[type=color]{width:50px}.editable-checkbox label span,.editable-checklist label span,.editable-radiolist label span{margin-left:7px;margin-right:10px}.editable-hide{display:none!important}.editable-click,a.editable-click{text-decoration:none;color:#428bca;border-bottom:dashed 1px #428bca}.editable-click:hover,a.editable-click:hover{text-decoration:none;color:#2a6496;border-bottom-color:#2a6496}.editable-empty,.editable-empty:focus,.editable-empty:hover,a.editable-empty,a.editable-empty:focus,a.editable-empty:hover{font-style:italic;color:#D14;text-decoration:none}.popover-wrapper>a{display:inline!important}.popover-wrapper{display:inline;position:relative}.popover-wrapper form{position:absolute;top:-53px;background:#FFF;border:1px solid #AAA;border-radius:5px;padding:7px;width:auto;display:inline-block;left:50%;z-index:101}.popover-wrapper form:after,.popover-wrapper form:before{content:"";width:0;position:absolute;height:0}.popover-wrapper form:before{border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #AAA;bottom:-10px}.popover-wrapper form:after{border-left:9px solid transparent;border-right:9px solid transparent;border-top:9px solid #FFF;bottom:-9px}@media screen and (max-width:750px){.popover-wrapper form{margin-left:-60px}.popover-wrapper form:before{left:50px}.popover-wrapper form:after{left:51px}}@media screen and (min-width:750px){.popover-wrapper form{margin-left:-110px}.popover-wrapper form:before{left:100px}.popover-wrapper form:after{left:101px}}.angularjs-datetime-picker{color:#333;font:400 14px sans-serif;border:1px solid #ddd;display:inline-block;background:#fff}.angularjs-datetime-picker>.adp-month{text-align:center;line-height:22px;padding:10px;background:#fcfcfc;text-transform:uppercase;font-weight:700;border-bottom:1px solid #ddd;position:relative}.angularjs-datetime-picker>.adp-month>button{color:#555;font:400 14px sans-serif;outline:0;position:absolute;background:0 0;border:none;cursor:pointer}.angularjs-datetime-picker>.adp-month>button:hover{color:#333}.angularjs-datetime-picker>.adp-month>button.adp-prev{left:10px}.angularjs-datetime-picker>.adp-month>button.adp-next{right:10px}.angularjs-datetime-picker>.adp-days{width:210px;margin:10px;text-align:center}.container,.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.angularjs-datetime-picker>.adp-days>.adp-day,.angularjs-datetime-picker>.adp-days>.adp-day-of-week{box-sizing:border-box;-moz-box-sizing:border-box;border:1px solid transparent;width:30px;line-height:28px;float:left}.angularjs-datetime-picker>.adp-days>.adp-day-of-week{font-weight:700}.angularjs-datetime-picker>.adp-days>.adp-day:not(.selectable){opacity:.15;cursor:default}.angularjs-datetime-picker>.adp-days>.adp-day.selectable,.pass-meter .details span,.pass-meter .link{cursor:pointer}.angularjs-datetime-picker>.adp-days>.adp-day.selected{background:#e0e0e0}.angularjs-datetime-picker>.adp-days>.adp-day.selectable:hover{background:#eee}.angularjs-datetime-picker>.adp-days:after{content:'';display:block;clear:left;height:0}.clearfix,.clearfix:after,.container-fluid:after,.container:after,.detail_box .row,.row:after{clear:both}.angularjs-datetime-picker input[type=range]{width:150px}/*!
* Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
@@ -24,7 +24,7 @@ Build date: 2016-09-06
* Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.row:after,.row:before{content:" ";display:table}.center-block{display:block;margin-left:auto;margin-right:auto}.fa.fa-pull-left,.fa.pull-left{margin-right:.3em}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}.fa,.fa-stack{display:inline-block}/*!
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.row:after,.row:before{content:" ";display:table}.center-block{display:block;margin-left:auto;margin-right:auto}.fa.fa-pull-left,.fa.pull-left{margin-right:.3em}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}.fa,.fa-stack{display:inline-block}/*!
* Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */@font-face{font-family:FontAwesome;src:url(fontawesome-webfont.eot?v=4.6.3);src:url(fontawesome-webfont.eot?#iefix&v=4.6.3) format('embedded-opentype'),url(fontawesome-webfont.woff2?v=4.6.3) format('woff2'),url(fontawesome-webfont.woff?v=4.6.3) format('woff'),url(fontawesome-webfont.ttf?v=4.6.3) format('truetype'),url(fontawesome-webfont.svg?v=4.6.3#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa.fa-pull-right,.fa.pull-right{margin-left:.3em}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.pass-meter .details,.pass-meter .pass-meter-message{font-family:"Arial Black",Gadget,sans-serif;font-size:10px;line-height:10px;color:#555;min-height:7px}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-television:before,.fa-tv:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.pass-meter{width:100%;padding-top:3px;padding-bottom:30px}.pass-meter.hidden{display:none}.pass-meter .details,.pass-meter .pass-meter-message{margin-top:3px}.pass-meter-col{float:left;width:25%;padding:1px}.pass-meter-col .indicator{border-radius:3px;background-color:#eee;height:5px}.pass-meter-col.poor .indicator{background-color:#ef4e3a}.pass-meter-col.weak .indicator{background-color:#F27B1C}.pass-meter-col.good .indicator{background-color:#6c3}.pass-meter-col.strong .indicator{background-color:#33A7E3}.pass-meter .pass-meter-message{width:49%;text-align:right;float:right}.pass-meter .details{width:49%;text-align:left;float:left;cursor:pointer}.pass-meter .details:hover,.pass-meter .link{color:#06f!important}.detail_box .row .col{float:left;width:49%}.match-sequence .sequence{float:left;width:auto;margin-right:10px}.match-sequence .sequence table td:nth-child(2){padding-left:4px}.sequence .token{text-align:center}.sequence code{border:1px solid;padding:3px}tags-input{display:block}tags-input *,tags-input :after,tags-input :before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}tags-input .host{position:relative;margin-top:5px;margin-bottom:5px;height:100%}tags-input .host:active{outline:0}tags-input .tags{-moz-appearance:textfield;-webkit-appearance:textfield;padding:1px;overflow:hidden;word-wrap:break-word;cursor:text;background-color:#fff;border:1px solid #a9a9a9;box-shadow:1px 1px 1px 0 #d3d3d3 inset;height:100%}tags-input .tags.focused{outline:0;-webkit-box-shadow:0 0 3px 1px rgba(5,139,242,.6);-moz-box-shadow:0 0 3px 1px rgba(5,139,242,.6);box-shadow:0 0 3px 1px rgba(5,139,242,.6)}tags-input .tags .tag-list{margin:0;padding:0;list-style-type:none}tags-input .tags .tag-item{margin:2px;padding:0 5px;display:inline-block;float:left;font:14px "Helvetica Neue",Helvetica,Arial,sans-serif;height:26px;line-height:25px;border:1px solid #acacac;border-radius:3px;color:#ececec}tags-input .tags .tag-item.selected{background:#ce3702!important}tags-input .tags .tag-item .remove-button{margin:0 0 0 5px;padding:0;border:none;background:0 0;cursor:pointer;vertical-align:middle;font:700 16px Arial,sans-serif;color:#585858}tags-input .tags .input.invalid-tag,tags-input .tags .tag-item .remove-button:active{color:red}tags-input .tags .input{border:0;outline:0;margin:2px;padding:0 0 0 5px;float:left;height:26px;font:14px "Helvetica Neue",Helvetica,Arial,sans-serif}tags-input .tags .input::-ms-clear{display:none}tags-input.ng-invalid .tags{-webkit-box-shadow:0 0 3px 1px rgba(255,0,0,.6);-moz-box-shadow:0 0 3px 1px rgba(255,0,0,.6);box-shadow:0 0 3px 1px rgba(255,0,0,.6)}tags-input[disabled] .host:focus{outline:0}tags-input[disabled] .tags{background-color:#eee;cursor:default}tags-input[disabled] .tags .tag-item{opacity:.65;background:-webkit-linear-gradient(top,#f0f9ff 0,rgba(203,235,255,.75) 47%,rgba(161,219,255,.62) 100%);background:linear-gradient(to bottom,#f0f9ff 0,rgba(203,235,255,.75) 47%,rgba(161,219,255,.62) 100%)}tags-input[disabled] .tags .tag-item .remove-button{cursor:default}tags-input[disabled] .tags .tag-item .remove-button:active{color:#585858}tags-input[disabled] .tags .input{background-color:#eee;cursor:default}tags-input .autocomplete{margin-top:5px;position:absolute;padding:5px 0;z-index:999;width:100%;background-color:#fff;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}tags-input .autocomplete .suggestion-list{margin:0;padding:0;list-style-type:none;max-height:280px;overflow-y:auto;position:relative}tags-input .autocomplete .suggestion-item{padding:5px 10px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:16px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#000;background-color:#fff}tags-input .autocomplete .suggestion-item.selected,tags-input .autocomplete .suggestion-item.selected em{color:#fff;background-color:#0097cf}tags-input .autocomplete .suggestion-item em{font:normal 700 16px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#000;background-color:#fff}.button-geen{background:#37ce02;color:#fff}.button-geen:hover{background:#3ad802;color:#fff}.button-red{background:#ce3702;color:#fff}.button-red:hover{background:#d83a02;color:#fff}.link{color:#06f!important;cursor:pointer}.tab_header{margin:44px 0 0;list-style:none;padding:0}.tab_header li.tab:first-child{margin-left:0}.tab_header li.tab{float:left;border-bottom-width:0;margin:0;padding:10px;cursor:pointer;border-right:1px solid #eee;-webkit-transition:background-color 250ms linear;-moz-transition:background-color 250ms linear;-o-transition:background-color 250ms linear;-ms-transition:background-color 250ms linear;transition:background-color 250ms linear}.tab_header li.tab .indicator{display:none}.tab_header li.active{color:#fff;position:relative}.tab_header li.active .indicator{display:inline-block;position:absolute;height:7px;left:0;right:0;bottom:-1px}.tab_container{border:1px solid;border-color:#eee;border-top-color:#0082c9;border-bottom:0;clear:both;padding:0 1em}.pw-gen{overflow:hidden}.pw-gen input{width:calc(100% - 80px)!important;float:left;background:#fff;color:#555;cursor:text;font-family:inherit;border:1px solid #ddd;outline:0;border-radius:3px;margin:3px 3px 3px 0;padding:7px 6px 5px;font-size:13px;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;background-clip:padding-box}.pw-gen .generate_pw{float:left;margin-top:3px;margin-left:-3px}.pw-gen .generate_pw .cell{padding:5px;display:inline-block;font-size:14px;border:1px solid #ddd;background-color:#eaeaea;cursor:pointer}.pw-gen .generate_pw .cell:hover{color:#06f}.pw-gen .generate_pw .cell:last-child{-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;background-clip:padding-box}.warning_bar{position:absolute;width:100%;padding:12px;font-weight:700;text-align:center;z-index:800;background-color:red;color:#fff}.vault_wrapper .login_form,.vault_wrapper .reset_form{padding:16px}.warning_bar .fa-times{float:right;color:#000;cursor:pointer}.vault_wrapper{margin:0 auto;margin-top:20px;width:100%;max-width:420px;-webkit-border-radius:5px;border-radius:5px;background-clip:padding-box;box-shadow:0 1px 1px #777;background:#eee;display:block}.vault_wrapper .vaultlist{z-index:500}.vault_wrapper .vaultlist div,.vault_wrapper .vaultlist li,.vault_wrapper .vaultlist small,.vault_wrapper .vaultlist span{cursor:pointer}.vault_wrapper .vaultlist small{color:#8e8e8e}.vault_wrapper .vaultlist li.selected{background-color:#0082c9!important;color:#ddd}.vault_wrapper .vaultlist li{border-bottom:1px solid #8e8e8e;padding:16px}.vault_wrapper .vaultlist li:hover{background-color:#f7f7f7}.vault_wrapper .login_form .error{color:#ce3702}.vault_wrapper .login_form .pw-input .last_access{color:#8e8e8e}.vault_wrapper .login_form input[type=password],.vault_wrapper .login_form input[type=text]{width:100%;-webkit-border-radius:5px;border-radius:5px;background-clip:padding-box}.vault_wrapper .login_form .button_wrapper .button{width:45%;display:inline-block}.vault_wrapper .login_form .button{margin-top:10px}.vault_wrapper .reset_form label{margin-top:20px;display:block}.vault_wrapper .reset_form input[type=text]{width:100%}.vault_wrapper .login_opts{margin-bottom:10px}@media screen and (max-width:768px){.vault_wrapper{width:90%}}#app-content{overflow-x:hidden}#app-content #app-content-wrapper{min-height:95%}#app-content #app-content-wrapper #passman-controls{text-align:center;border-bottom:1px solid #c9c9c9}#app-content #app-content-wrapper #passman-controls.sidebar-shown{padding-right:27%!important}@media screen and (max-width:765px){#app-content #app-content-wrapper #passman-controls.sidebar-shown .title{display:none}}@media screen and (min-width:769px) and (max-width:1120px){#app-content #app-content-wrapper #passman-controls.sidebar-shown .title{display:none}}#app-content #app-content-wrapper .title{text-align:center;display:inline-block;font-weight:700;margin-top:10px}@media screen and (max-width:575px){#app-content #app-content-wrapper .title{display:none}}@media screen and (min-width:769px) and (max-width:820px){#app-content #app-content-wrapper .title{display:none}}#app-content #app-content-wrapper .actions.creatable{float:left;overflow:hidden}#app-content #app-content-wrapper .actions.creatable .bubble{position:relative;width:185px;-webkit-border-radius:5px;border-radius:5px;background-clip:padding-box;box-shadow:0 1px 10px rgba(50,50,50,.7)}#app-content #app-content-wrapper .actions.creatable .bubble ul li{padding-left:10px}#app-content #app-content-wrapper .actions.creatable .bubble ul .menuitem{font-size:12px;display:inline}#app-content #app-content-wrapper .actions.creatable .bubble:after{right:inherit;left:10px;top:-19px}#app-content #app-content-wrapper .viewModes{float:right;margin-right:5px;margin-top:3px}#app-content #app-content-wrapper .viewModes .view-mode:first-child{-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;background-clip:padding-box;border:1px solid rgba(240,240,240,.9)}#app-content #app-content-wrapper .viewModes .view-mode:last-child{-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;background-clip:padding-box;border:1px solid rgba(240,240,240,.9)}#app-content #app-content-wrapper .viewModes .view-mode{background-color:rgba(240,240,240,.9);cursor:pointer;display:inline-block;padding:7px}#app-content #app-content-wrapper .viewModes .view-mode.active{display:inline-block;padding:7px;background-color:rgba(226,226,226,.9)}#app-content #app-content-wrapper .searchboxContainer{display:inline-block;margin-right:14px;float:right}#app-content #app-content-wrapper .searchboxContainer .searchbox{display:inline-block}#app-content #app-content-wrapper .searchboxContainer .searchclear{color:#ccc;cursor:pointer;font-size:18px;height:14px;margin:auto;position:absolute!important;right:10px;top:12px;z-index:99999999}#app-content #app-content-wrapper .searchboxContainer .searchOptions{position:relative;bottom:5px;background:#fff;border:1px solid #ddd;padding:5px;width:calc(100% - 3px);box-shadow:3px 3px 5px #888;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;background-clip:padding-box}#app-content #app-content-wrapper .credential-table{width:100%;margin-top:44px}#app-content #app-content-wrapper .credential-table tr:hover{background-color:#f5f5f5}#app-content #app-content-wrapper .credential-table tr.selected{background-color:#f8f8f8}#app-content #app-content-wrapper .credential-table tr td{cursor:pointer;padding:5px;border-bottom:1px solid #eee}#app-content #app-content-wrapper .credential-table tr td .icon{font-size:19px;float:left;margin-right:5px;margin-left:3px}#app-content #app-content-wrapper .credential-table tr td .icon-more{display:inline-block;float:right;margin-left:5px;margin-top:1px;opacity:.4;height:20px;width:32px;cursor:pointer}#app-content #app-content-wrapper .credential-table tr td .icon-more:hover{opacity:1}#app-content #app-content-wrapper .credential-table tr td .popovermenu{margin-top:25px;height:100px;width:100px;right:-2px!important;box-shadow:0 1px 10px rgba(50,50,50,.7)}#app-content #app-content-wrapper .credential-table tr td .popovermenu ul{display:block;width:100px;height:75px}#app-content #app-content-wrapper .credential-table tr td .popovermenu ul li{padding:0}#app-content #app-content-wrapper .credential-table tr td .popovermenu ul .menuitem{font-size:12px;display:inline}#app-content #app-content-wrapper .credential-table tr td .popovermenu .action{padding:10px;margin:-10px}#app-content #app-content-wrapper .tags{float:right}#app-content #app-content-wrapper .edit_credential .password_settings label .label,#app-content #app-content-wrapper .edit_credential .tags{float:left}#app-content #app-content-wrapper .tags .tag{background-color:rgba(240,240,240,.9);padding:4px;font-size:12px;margin-right:3px;-webkit-border-radius:5px;border-radius:5px;background-clip:padding-box}#app-content #app-content-wrapper .tags .tag:last-child{margin-right:8px}#app-content #app-content-wrapper .grid-view{margin-top:44px;display:flex;flex-wrap:wrap}#app-content #app-content-wrapper .grid-view .credential{display:flex;width:100%;border:2px solid rgba(240,240,240,.9);margin:25px;-webkit-border-radius:10px;border-radius:10px;background-clip:padding-box}#app-content #app-content-wrapper .grid-view .credential .credential_content{display:flex;padding:2px;flex-direction:column;width:100%;cursor:pointer;font-size:1.75em;text-align:center}#app-content #app-content-wrapper .grid-view .credential .credential_content .label{padding-top:.5em;padding-left:1em;padding-right:1em;line-height:1.3em;word-wrap:break-word}#app-content #app-content-wrapper .grid-view .credential .credential_content .tags{margin-bottom:.5em}#app-content #app-content-wrapper .grid-view .credential .credential_content .tags .tag{color:#000!important;margin-top:5px;display:inline-block}#app-content #app-content-wrapper .edit_credential .custom_fields table thead th,#app-content #app-content-wrapper .edit_credential .files table thead th,.btn-danger{color:#fff}@media all and (min-width:40em){#app-content #app-content-wrapper .grid-view .credential{width:40%}}@media all and (min-width:58em){#app-content #app-content-wrapper .grid-view .credential{width:26%}}@media all and (min-width:78em){#app-content #app-content-wrapper .grid-view .credential{width:20%}}#app-content #app-content-wrapper .edit_credential input[type=password],#app-content #app-content-wrapper .edit_credential input[type=text],#app-content #app-content-wrapper .edit_credential tags-input .tags{width:100%}#app-content #app-content-wrapper .edit_credential{padding-top:10px}#app-content #app-content-wrapper .edit_credential label{display:block}#app-content #app-content-wrapper .edit_credential .tags .tag{background-color:rgba(240,240,240,.9);padding:4px;font-size:11px}#app-content #app-content-wrapper .edit_credential .credential_textarea{width:100%;height:100px}#app-content #app-content-wrapper .edit_credential .password_settings label{overflow:hidden}#app-content #app-content-wrapper .edit_credential .password_settings label input[type=checkbox]{width:auto!important;float:left}#app-content #app-content-wrapper .edit_credential .password_settings label .label.sm{font-size:12px}#app-content #app-content-wrapper .edit_credential .field-value .valueInput{padding-right:0}#app-content #app-content-wrapper .edit_credential .field-value .valueInput .pw-gen .generate_pw .cell:last-child,#app-content #app-content-wrapper .edit_credential .field-value .valueInput input{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;background-clip:padding-box}#app-content #app-content-wrapper .edit_credential .field-value .selectType{padding-left:0;margin-left:-4px}#app-content #app-content-wrapper .edit_credential .field-value .selectType select{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;background-clip:padding-box}#app-content #app-content-wrapper .edit_credential .custom_fields,#app-content #app-content-wrapper .edit_credential .files{margin-top:10px}#app-content #app-content-wrapper .edit_credential .custom_fields table,#app-content #app-content-wrapper .edit_credential .files table{width:100%}#app-content #app-content-wrapper .edit_credential .custom_fields table thead th.dragger,#app-content #app-content-wrapper .edit_credential .files table thead th.dragger{width:3%}#app-content #app-content-wrapper .edit_credential .custom_fields table thead th.field_actions,#app-content #app-content-wrapper .edit_credential .files table thead th.field_actions{width:15%}#app-content #app-content-wrapper .edit_credential .custom_fields table tr:hover,#app-content #app-content-wrapper .edit_credential .files table tr:hover{background-color:transparent}#app-content #app-content-wrapper .edit_credential .custom_fields table tr td.dragger,#app-content #app-content-wrapper .edit_credential .files table tr td.dragger{width:3%;text-align:center;cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}#app-content #app-content-wrapper .edit_credential .custom_fields table tr td.field_actions,#app-content #app-content-wrapper .edit_credential .files table tr td.field_actions{font-size:13px;width:15%}#app-content #app-content-wrapper .edit_credential .custom_fields table tr td.field_actions i,#app-content #app-content-wrapper .edit_credential .files table tr td.field_actions i{cursor:pointer}#app-content #app-content-wrapper .edit_credential .custom_fields table tr td,#app-content #app-content-wrapper .edit_credential .custom_fields table tr th,#app-content #app-content-wrapper .edit_credential .files table tr td,#app-content #app-content-wrapper .edit_credential .files table tr th{width:20%;padding:5px}#app-content #app-content-wrapper .edit_credential .custom_fields table tr td .editable-has-buttons.editable-input,#app-content #app-content-wrapper .edit_credential .custom_fields table tr th .editable-has-buttons.editable-input,#app-content #app-content-wrapper .edit_credential .files table tr td .editable-has-buttons.editable-input,#app-content #app-content-wrapper .edit_credential .files table tr th .editable-has-buttons.editable-input{width:55%}#app-content #app-content-wrapper .edit_credential .custom_fields table tr td,#app-content #app-content-wrapper .edit_credential .files table tr td{height:50px;vertical-align:middle}#app-content #app-content-wrapper .edit_credential .otpText{padding-right:10px}#app-content #app-content-wrapper .app_sidebar{padding:10px;overflow-y:auto}#app-content #app-content-wrapper .app_sidebar h2{margin-bottom:10px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:90%}#app-content #app-content-wrapper .app_sidebar .close.icon-close{position:absolute;top:10px;right:10px;cursor:pointer}#app-content #app-content-wrapper .app_sidebar.item_selected{height:25%;display:inline-block}#app-content #app-content-wrapper .app_sidebar .credential-data .row{margin-bottom:11px}#app-content #app-content-wrapper .app_sidebar .credential-data .tags{margin-top:15px;margin-bottom:15px;float:none}#app-content #app-content-wrapper .app_sidebar .credential-data .tags .tag{background-color:rgba(240,240,240,.9);padding:4px;margin-right:3px}.credential_field .tools .cell,.inputfile+label{margin-right:4px;cursor:pointer}.credential_field{overflow:hidden}.credential_field .cell,.credential_field .value{float:left}.credential_field .value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:70%}.credential_field .tools{margin-left:10px;overflow:hidden;float:left}.progress{margin-top:10px;height:20px}.progress .progress-bar{position:relative;height:20px;background-image:none;background-color:#0082c9}.progress .progress-bar .progress-label{position:absolute;top:0;z-index:2;text-align:center;width:100%}.loaderContainer{height:140px;width:120px;margin-top:30px;margin-left:-60px;top:50%;left:50%;position:absolute}.loaderContainer .text{width:120px;text-align:center}.loader{border-bottom:10px solid #1d2d44;border-left:10px solid #c9c9c9;border-right:10px solid #c9c9c9;border-top:10px solid #c9c9c9;height:120px;width:120px;border-radius:120px;animation:1.1s linear 0s normal none infinite running load8}@keyframes load8{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.inputfile{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}#app-navigation li a tags-input,#app-navigation li a.taginput{opacity:1}.inputfile+label{font-size:1.25em;background-color:rgba(240,240,240,.9);margin-top:4px;padding:5px;border-right:1px solid #c9c9c9}.inputfile+label:hover,.inputfile:focus+label{background-color:#c9c9c9}.error,.shared_table .fa-trash:hover{color:#ce3702}.settings-container div{padding-left:15px}.nav-trashbin{position:fixed!important;bottom:44px;width:inherit!important;background-color:#fff;border-right:1px solid #eee}.nav-trashbin a{padding:0 20px}.nav-trashbin a .fa{margin-right:15px}#app-navigation li a{overflow:visible}#app-navigation li a tags-input li{width:auto!important}#app-navigation>ul ul{display:inherit!important}.sharing_table td:first-child{width:55%}.sharing_table td:first-child tags-input .tags,.table{width:100%}.sharing_table td:first-child .autocomplete{margin-top:35px}.share_credential{padding-top:10px}.share_credential input{width:auto}.share_credential>div{margin-bottom:10px}.shared_table .fa-trash{cursor:pointer}.scan-result-table{margin-top:10px}.scan-result-table .score{padding-left:0;padding-right:15px}.import_log{max-height:600px;overflow-y:auto}.import_log textarea{width:90%;height:200px}.tab_container.settings{margin-bottom:50px}.import-steps{padding-left:16px;margin-bottom:10px}.import-steps li{list-style-type:disc}.import-table-outter{overflow-x:scroll}.import-table{padding-right:15px}.import-table .inspect{text-align:center;width:25px;cursor:pointer}.import-table td,.import-table th{text-align:left;padding:3px 5px}#app-settings-content:not(.ng-hide){height:90px;display:inherit!important;padding:0;transition:height .15s ease-out}#app-settings-content.ng-hide{display:inherit!important;height:0;padding:0;transition:height .15s ease-in}.ui-dialog{z-index:9999}#notification .row{margin-left:0!important;margin-right:0!important}#passman-controls{position:fixed;top:45px;right:0;left:0;padding:0!important;margin:0;background-color:rgba(255,255,255,.95);z-index:50;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;height:44px!important}@media only screen and (max-width:768px){#passman-controls{width:100%}}@media only screen and (min-width:768px){#app-navigation+#app-content #passman-controls{left:250px;width:calc(100% - 250px)!important}}#passman-controls,#passman-controls .button,#passman-controls input[type=submit],#passman-controls input[type=text],#passman-controls input[type=password],#passman-controls select{box-sizing:border-box;display:inline-block;height:36px;padding:7px 10px}.nopadding{padding-right:0;padding-left:0}input[type=checkbox]{min-height:inherit}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1} \ No newline at end of file
+ */@font-face{font-family:FontAwesome;src:url(fontawesome-webfont.eot?v=4.6.3);src:url(fontawesome-webfont.eot?#iefix&v=4.6.3) format('embedded-opentype'),url(fontawesome-webfont.woff2?v=4.6.3) format('woff2'),url(fontawesome-webfont.woff?v=4.6.3) format('woff'),url(fontawesome-webfont.ttf?v=4.6.3) format('truetype'),url(fontawesome-webfont.svg?v=4.6.3#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa.fa-pull-right,.fa.pull-right{margin-left:.3em}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.pass-meter .details,.pass-meter .pass-meter-message{font-family:"Arial Black",Gadget,sans-serif;font-size:10px;line-height:10px;color:#555;min-height:7px}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-television:before,.fa-tv:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.pass-meter{width:100%;padding-top:3px;padding-bottom:30px}.pass-meter.hidden{display:none}.pass-meter .details,.pass-meter .pass-meter-message{margin-top:3px}.pass-meter-col{float:left;width:25%;padding:1px}.pass-meter-col .indicator{border-radius:3px;background-color:#eee;height:5px}.pass-meter-col.poor .indicator{background-color:#ef4e3a}.pass-meter-col.weak .indicator{background-color:#F27B1C}.pass-meter-col.good .indicator{background-color:#6c3}.pass-meter-col.strong .indicator{background-color:#33A7E3}.pass-meter .pass-meter-message{width:49%;text-align:right;float:right}.pass-meter .details{width:49%;text-align:left;float:left;cursor:pointer}.pass-meter .details:hover,.pass-meter .link{color:#06f!important}.pass-meter .link:hover{text-decoration:underline}.detail_box .row .col{float:left;width:49%}.match-sequence .sequence{float:left;width:auto;margin-right:10px}.match-sequence .sequence table td:nth-child(2){padding-left:4px}.sequence .token{text-align:center}.sequence code{border:1px solid;padding:3px}tags-input{display:block}tags-input *,tags-input :after,tags-input :before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}tags-input .host{position:relative;margin-top:5px;margin-bottom:5px;height:100%}tags-input .host:active{outline:0}tags-input .tags{-moz-appearance:textfield;-webkit-appearance:textfield;padding:1px;overflow:hidden;word-wrap:break-word;cursor:text;background-color:#fff;border:1px solid #a9a9a9;box-shadow:1px 1px 1px 0 #d3d3d3 inset;height:100%}tags-input .tags.focused{outline:0;-webkit-box-shadow:0 0 3px 1px rgba(5,139,242,.6);-moz-box-shadow:0 0 3px 1px rgba(5,139,242,.6);box-shadow:0 0 3px 1px rgba(5,139,242,.6)}tags-input .tags .tag-list{margin:0;padding:0;list-style-type:none}tags-input .tags .tag-item{margin:2px;padding:0 5px;display:inline-block;float:left;font:14px "Helvetica Neue",Helvetica,Arial,sans-serif;height:26px;line-height:25px;border:1px solid #acacac;border-radius:3px;color:#ececec}tags-input .tags .tag-item.selected{background:#ce3702!important}tags-input .tags .tag-item .remove-button{margin:0 0 0 5px;padding:0;border:none;background:0 0;cursor:pointer;vertical-align:middle;font:700 16px Arial,sans-serif;color:#585858}tags-input .tags .input.invalid-tag,tags-input .tags .tag-item .remove-button:active{color:red}tags-input .tags .input{border:0;outline:0;margin:2px;padding:0 0 0 5px;float:left;height:26px;font:14px "Helvetica Neue",Helvetica,Arial,sans-serif}tags-input .tags .input::-ms-clear{display:none}tags-input.ng-invalid .tags{-webkit-box-shadow:0 0 3px 1px rgba(255,0,0,.6);-moz-box-shadow:0 0 3px 1px rgba(255,0,0,.6);box-shadow:0 0 3px 1px rgba(255,0,0,.6)}tags-input[disabled] .host:focus{outline:0}tags-input[disabled] .tags{background-color:#eee;cursor:default}tags-input[disabled] .tags .tag-item{opacity:.65;background:-webkit-linear-gradient(top,#f0f9ff 0,rgba(203,235,255,.75) 47%,rgba(161,219,255,.62) 100%);background:linear-gradient(to bottom,#f0f9ff 0,rgba(203,235,255,.75) 47%,rgba(161,219,255,.62) 100%)}tags-input[disabled] .tags .tag-item .remove-button{cursor:default}tags-input[disabled] .tags .tag-item .remove-button:active{color:#585858}tags-input[disabled] .tags .input{background-color:#eee;cursor:default}tags-input .autocomplete{margin-top:5px;position:absolute;padding:5px 0;z-index:999;width:100%;background-color:#fff;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}tags-input .autocomplete .suggestion-list{margin:0;padding:0;list-style-type:none;max-height:280px;overflow-y:auto;position:relative}tags-input .autocomplete .suggestion-item{padding:5px 10px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:16px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#000;background-color:#fff}tags-input .autocomplete .suggestion-item.selected,tags-input .autocomplete .suggestion-item.selected em{color:#fff;background-color:#0097cf}tags-input .autocomplete .suggestion-item em{font:normal 700 16px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#000;background-color:#fff}.button-geen{background:#37ce02;color:#fff}.button-geen:hover{background:#3ad802;color:#fff}.button-red{background:#ce3702;color:#fff}.button-red:hover{background:#d83a02;color:#fff}.tab_header{width:calc(100vw - 300px);margin:0;list-style:none;padding:0}.tab_header li.tab:first-child{margin-left:0}.tab_header li.tab{float:left;border-bottom-width:0;margin:0;padding:10px;cursor:pointer;border-right:1px solid #eee;-webkit-transition:background-color 250ms linear;-moz-transition:background-color 250ms linear;-o-transition:background-color 250ms linear;-ms-transition:background-color 250ms linear;transition:background-color 250ms linear}.tab_header li.tab .indicator{display:none}.tab_header li.inactive{background-color:#fff!important;color:unset!important}.tab_header li.active .indicator{display:inline-block;position:absolute;height:7px;left:0;right:0;bottom:-1px}.tab_container{border:1px solid #eee;border-top-color:#0082c9;border-bottom-width:0;clear:both;padding:0 1em}.pw-gen{overflow:hidden}.pw-gen input{width:calc(100% - 76px)!important;float:left;background:#fff;color:#555;cursor:text;font-family:inherit;border:1px solid #ddd;outline:0;border-radius:3px;margin:3px 3px 3px 0;padding:7px 6px 5px;font-size:13px;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;background-clip:padding-box}.pw-gen .generate_pw{float:left;margin-top:3px;margin-left:-3px;padding-bottom:1px}.pw-gen .generate_pw .cell{padding:5px;display:inline-block;font-size:14px;border:1px solid #ddd;background-color:#eaeaea;cursor:pointer}.pw-gen .generate_pw .cell:hover{color:#06f}.pw-gen .generate_pw .cell:last-child{-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;background-clip:padding-box}.warning_bar{position:absolute;width:100%;padding:12px;font-weight:700;text-align:center;z-index:1800;background-color:red;color:#fff}.vault_wrapper .login_form,.vault_wrapper .reset_form{padding:16px}.warning_bar .fa-times{float:right;color:#000;cursor:pointer}.vault_wrapper{margin:0 auto auto;max-width:420px;-webkit-border-radius:5px;border-radius:5px;background-clip:padding-box;box-shadow:0 1px 1px #777;background:#eee;display:block}.vault_wrapper .vaultlist{z-index:500}.vault_wrapper .vaultlist div,.vault_wrapper .vaultlist li,.vault_wrapper .vaultlist small,.vault_wrapper .vaultlist span{cursor:pointer}.vault_wrapper .vaultlist small{color:#8e8e8e}.vault_wrapper .vaultlist li.selected{background-color:#0082c9!important;color:#ddd}.vault_wrapper .vaultlist li{border-bottom:1px solid #8e8e8e;padding:16px}.vault_wrapper .vaultlist li:hover{background-color:#f7f7f7}.vault_wrapper .login_form .error{color:#ce3702}.vault_wrapper .login_form .pw-input .last_access{color:#8e8e8e}.vault_wrapper .login_form input[type=password],.vault_wrapper .login_form input[type=text]{width:100%;-webkit-border-radius:5px;border-radius:5px;background-clip:padding-box}.vault_wrapper .login_form .button_wrapper .button{width:45%;display:inline-block}.vault_wrapper .login_form .button{margin-top:10px}.vault_wrapper .reset_form label{margin-top:20px;display:block}.vault_wrapper .reset_form input[type=text]{width:100%}.vault_wrapper .login_opts{margin-bottom:10px}@media screen and (max-width:768px){.vault_wrapper{width:90%}}#content{padding-top:47px!important;height:100%;width:100%}.icon-image{width:16px}.angularjs-datetime-picker{z-index:1000}.link{color:var(--color-primary)}#app-sidebar{height:auto}#app-sidebar .sidebar{display:inline-block}#app-sidebar .sidebar .sidebar-icon{margin-right:15px}#app-sidebar .sidebar .sidebar-icon .icon-image,#app-sidebar .sidebar .sidebar-icon i{width:44px}#app-sidebar .sidebar .sidebar-label{float:right;line-height:44px}.vaultlist_sidebar_hidden{width:100vw!important;margin-left:0!important}#app-content{margin-left:300px;overflow-x:hidden}@media only screen and (max-width:769px){#app-content{width:100vw}}@media only screen and (min-width:770px){#app-content{width:calc(100vw - 300px)}}#app-content #app-content-wrapper{min-height:95%;display:flex;height:calc(100vh - 49px)}#app-content #app-content-wrapper #passman-controls{text-align:center;border-bottom:1px solid #c9c9c9}@media screen and (max-width:765px){#app-content #app-content-wrapper #passman-controls.sidebar-shown .title{display:none}}@media screen and (min-width:769px) and (max-width:1120px){#app-content #app-content-wrapper #passman-controls.sidebar-shown .title{display:none}}#app-content #app-content-wrapper .title{text-align:center;display:inline-block;font-weight:700;margin-top:10px}@media screen and (max-width:575px){#app-content #app-content-wrapper .title{display:none}}@media screen and (min-width:769px) and (max-width:820px){#app-content #app-content-wrapper .title{display:none}}#app-content #app-content-wrapper .breadcrumb{float:left}#app-content #app-content-wrapper .actions.creatable{float:left;overflow:hidden}#app-content #app-content-wrapper .actions.creatable .bubble{position:relative;width:185px;-webkit-border-radius:5px;border-radius:5px;background-clip:padding-box;box-shadow:0 1px 10px rgba(50,50,50,.7)}#app-content #app-content-wrapper .actions.creatable .bubble ul li{padding-left:10px}#app-content #app-content-wrapper .actions.creatable .bubble ul .menuitem{font-size:12px;display:inline}#app-content #app-content-wrapper .actions.creatable .bubble:after{right:inherit;left:10px;top:-19px}#app-content #app-content-wrapper .viewModes{float:right;margin-right:5px;margin-top:3px}#app-content #app-content-wrapper .viewModes .view-mode:first-child{-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;background-clip:padding-box;border:1px solid rgba(240,240,240,.9)}#app-content #app-content-wrapper .viewModes .view-mode:last-child{-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;background-clip:padding-box;border:1px solid rgba(240,240,240,.9)}#app-content #app-content-wrapper .viewModes .view-mode{background-color:rgba(240,240,240,.9);cursor:pointer;display:inline-block;padding:7px}#app-content #app-content-wrapper .viewModes .view-mode.active{display:inline-block;padding:7px;background-color:rgba(226,226,226,.9)}#app-content #app-content-wrapper .searchboxContainer{visibility:hidden;display:none;margin-right:14px;float:right}#app-content #app-content-wrapper .searchboxContainer .searchbox{display:inline-block}#app-content #app-content-wrapper .searchboxContainer .searchclear{color:#ccc;cursor:pointer;font-size:18px;height:14px;margin:auto;position:absolute!important;right:10px;top:12px;z-index:99999999}#app-content #app-content-wrapper .searchboxContainer .searchOptions{position:relative;bottom:5px;background:#fff;border:1px solid #ddd;padding:5px;width:calc(100% - 3px);box-shadow:3px 3px 5px #888;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;background-clip:padding-box}#app-content #app-content-wrapper .credential-table{width:100%}#app-content #app-content-wrapper .credential-table tr:hover{background-color:#f5f5f5}#app-content #app-content-wrapper .credential-table tr.selected{background-color:#f8f8f8}#app-content #app-content-wrapper .credential-table tr td{cursor:pointer;padding:5px;border-bottom:1px solid #eee}#app-content #app-content-wrapper .credential-table tr td .icon{font-size:19px;float:left;margin-right:5px;margin-left:3px}#app-content #app-content-wrapper .credential-table tr td .icon-more{display:inline-block;float:right;margin-left:5px;margin-top:1px;opacity:.4;height:20px;width:32px;cursor:pointer}#app-content #app-content-wrapper .credential-table tr td .icon-more:hover{opacity:1}#app-content #app-content-wrapper .credential-table tr td .popovermenu{margin-top:25px;height:100px;width:100px;right:-2px!important;box-shadow:0 1px 10px rgba(50,50,50,.7)}#app-content #app-content-wrapper .credential-table tr td .popovermenu ul{display:block;width:100px;height:75px}#app-content #app-content-wrapper .credential-table tr td .popovermenu ul li{padding:0}#app-content #app-content-wrapper .credential-table tr td .popovermenu ul .menuitem{font-size:12px;display:inline}#app-content #app-content-wrapper .credential-table tr td .popovermenu .action{padding:10px;margin:-10px}#app-content #app-content-wrapper .tags{float:right}#app-content #app-content-wrapper .tags .tag{background-color:rgba(240,240,240,.9);padding:4px;font-size:12px;margin-right:3px;-webkit-border-radius:5px;border-radius:5px;background-clip:padding-box}#app-content #app-content-wrapper .tags .tag:last-child{margin-right:8px}#app-content #app-content-wrapper .grid-view{width:100%;height:100%;display:flex;flex-wrap:wrap}#app-content #app-content-wrapper .grid-view .credential{display:flex;width:100%;border:2px solid rgba(240,240,240,.9);margin:25px;-webkit-border-radius:10px;border-radius:10px;background-clip:padding-box}#app-content #app-content-wrapper .grid-view .credential .credential_content{display:flex;padding:2px;flex-direction:column;width:100%;cursor:pointer;font-size:1.75em}#app-content #app-content-wrapper .grid-view .credential .credential_content .label{padding-top:.5em;padding-right:1em;line-height:1.3em;word-wrap:break-word;float:right}#app-content #app-content-wrapper .grid-view .credential .credential_content .tags{margin:0 0 auto;text-align:right}#app-content #app-content-wrapper .grid-view .credential .credential_content .tags .tag{color:#000!important;margin-top:5px;display:inline-block;left:0}@media all and (min-width:40em){#app-content #app-content-wrapper .grid-view .credential{width:40%}}@media all and (min-width:58em){#app-content #app-content-wrapper .grid-view .credential{width:26%}}@media all and (min-width:78em){#app-content #app-content-wrapper .grid-view .credential{width:20%}}#app-content #app-content-wrapper .edit_credential input[type=password],#app-content #app-content-wrapper .edit_credential input[type=text],#app-content #app-content-wrapper .edit_credential tags-input .tags{width:100%}#app-content #app-content-wrapper .edit_credential{padding-top:10px}#app-content #app-content-wrapper .edit_credential label{display:block}#app-content #app-content-wrapper .edit_credential .tags{float:left}#app-content #app-content-wrapper .edit_credential .tags .tag{background-color:rgba(240,240,240,.9);padding:4px;font-size:11px}#app-content #app-content-wrapper .edit_credential .credential_textarea{width:100%;height:100px}#app-content #app-content-wrapper .edit_credential .password_settings label{overflow:hidden}#app-content #app-content-wrapper .edit_credential .password_settings label input[type=checkbox]{width:auto!important;float:left}#app-content #app-content-wrapper .edit_credential .password_settings label .label{float:left}#app-content #app-content-wrapper .edit_credential .password_settings label .label.sm{font-size:12px}#app-content #app-content-wrapper .edit_credential .password_settings .password-settings-padding-left-fix{padding-left:0!important}#app-content #app-content-wrapper .edit_credential .field-value .valueInput{padding-right:0}#app-content #app-content-wrapper .edit_credential .field-value .valueInput .pw-gen .generate_pw .cell:last-child,#app-content #app-content-wrapper .edit_credential .field-value .valueInput input{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;background-clip:padding-box}#app-content #app-content-wrapper .edit_credential .field-value .selectType{padding-left:0;margin-left:0}#app-content #app-content-wrapper .edit_credential .field-value .selectType select{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;background-clip:padding-box}#app-content #app-content-wrapper .edit_credential .custom_fields,#app-content #app-content-wrapper .edit_credential .files{margin-top:10px}#app-content #app-content-wrapper .edit_credential .custom_fields table,#app-content #app-content-wrapper .edit_credential .files table{width:100%}#app-content #app-content-wrapper .edit_credential .custom_fields table thead th.dragger,#app-content #app-content-wrapper .edit_credential .files table thead th.dragger{width:3%}#app-content #app-content-wrapper .edit_credential .custom_fields table thead th,#app-content #app-content-wrapper .edit_credential .files table thead th{color:#fff}#app-content #app-content-wrapper .edit_credential .custom_fields table thead th.field_actions,#app-content #app-content-wrapper .edit_credential .files table thead th.field_actions{width:15%}#app-content #app-content-wrapper .edit_credential .custom_fields table tr:hover,#app-content #app-content-wrapper .edit_credential .files table tr:hover{background-color:transparent}#app-content #app-content-wrapper .edit_credential .custom_fields table tr td.dragger,#app-content #app-content-wrapper .edit_credential .files table tr td.dragger{width:3%;text-align:center;cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}#app-content #app-content-wrapper .edit_credential .custom_fields table tr td.field_actions,#app-content #app-content-wrapper .edit_credential .files table tr td.field_actions{font-size:13px;width:15%}#app-content #app-content-wrapper .edit_credential .custom_fields table tr td.field_actions i,#app-content #app-content-wrapper .edit_credential .files table tr td.field_actions i{cursor:pointer}#app-content #app-content-wrapper .edit_credential .custom_fields table tr td,#app-content #app-content-wrapper .edit_credential .custom_fields table tr th,#app-content #app-content-wrapper .edit_credential .files table tr td,#app-content #app-content-wrapper .edit_credential .files table tr th{width:20%;padding:5px}#app-content #app-content-wrapper .edit_credential .custom_fields table tr td .editable-has-buttons.editable-input,#app-content #app-content-wrapper .edit_credential .custom_fields table tr th .editable-has-buttons.editable-input,#app-content #app-content-wrapper .edit_credential .files table tr td .editable-has-buttons.editable-input,#app-content #app-content-wrapper .edit_credential .files table tr th .editable-has-buttons.editable-input{width:55%}#app-content #app-content-wrapper .edit_credential .custom_fields table tr td,#app-content #app-content-wrapper .edit_credential .files table tr td{height:50px;vertical-align:middle}#app-content #app-content-wrapper .edit_credential .otpText{padding-right:10px}#app-content #app-content-wrapper .edit_credential .import-selection select{margin-left:15px}#app-content #app-content-wrapper .main_list{flex:1;float:left;height:auto;overflow:auto;width:100%}#app-content #app-content-wrapper .main_list .share{overflow:hidden}#app-content #app-content-wrapper .main_list .nopasswords{margin-right:auto;margin-left:auto;margin-top:10%;text-align:center}#app-content #app-content-wrapper .main_list .belowList{margin-right:auto;margin-left:auto;margin-top:1%;text-align:center}#app-content #app-content-wrapper .app_sidebar{float:right;padding:10px;overflow-y:auto}.credential_field,.credential_field .tools,.icon-label,.inputfile{overflow:hidden}#app-content #app-content-wrapper .app_sidebar h2{margin-bottom:10px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:90%}#app-content #app-content-wrapper .app_sidebar .close.icon-close{position:absolute;top:10px;right:10px;cursor:pointer}#app-content #app-content-wrapper .app_sidebar.item_selected{height:25%;display:inline-block}#app-content #app-content-wrapper .app_sidebar .credential-data .row{margin-bottom:11px}#app-content #app-content-wrapper .app_sidebar .credential-data .tags{margin-top:15px;margin-bottom:15px;float:none}#app-content #app-content-wrapper .app_sidebar .credential-data .tags .tag{background-color:rgba(240,240,240,.9);padding:4px;margin-right:3px}.credential_field .tools .cell,.inputfile+label{margin-right:4px;cursor:pointer}.credential_field .cell,.credential_field .value{float:left}.credential_field .value{white-space:nowrap;text-overflow:ellipsis;max-width:100%}.credential_field .tools{margin-left:10px;margin-top:8px;float:left}.progress{margin-top:10px;height:20px}.progress .progress-bar{position:relative;height:20px;background-image:none;background-color:#0082c9}.progress .progress-bar .progress-label{position:absolute;top:0;z-index:2;text-align:center;width:100%}.loaderContainer{height:140px;width:120px;margin-top:30px;margin-left:-60px;top:30%;left:50%;position:absolute}.loaderContainer .text{width:120px;text-align:center}.loader{border-bottom:10px solid #1d2d44;border-left:10px solid #c9c9c9;border-right:10px solid #c9c9c9;border-top:10px solid #c9c9c9;height:120px;width:120px;border-radius:120px;animation:1.1s linear 0s normal none infinite running load8}@keyframes load8{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.inputfile{width:.1px;height:.1px;opacity:0;position:absolute;z-index:-1}.inputfile+label{font-size:1.25em;background-color:rgba(240,240,240,.9);margin-top:4px;padding:5px;border-right:1px solid #c9c9c9}.inputfile+label:hover,.inputfile:focus+label{background-color:#c9c9c9}.btn-danger{color:#000;background-color:red}.icon-label input{width:calc(100% - 28px)!important;float:left;background:#fff;color:#555;cursor:text;font-family:inherit;border:1px solid #ddd;outline:0;border-radius:3px;margin:3px 0;padding:7px 6px 5px;font-size:13px;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;background-clip:padding-box}.icon-label .icon-picker{float:left;margin-top:3px}.icon-label .icon-picker .cell{height:32px;padding:7px 12px 2px;font-size:14px;border:1px solid #ddd;background-color:#eaeaea;cursor:pointer;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;background-clip:padding-box}.icon-label .icon-picker .cell:hover{color:#06f}.error,.shared_table .fa-trash:hover{color:#ce3702}#iconPicker .iconList{float:left;width:60%;max-height:310px;overflow:auto}#iconPicker .iconList .icon{padding:10px;cursor:pointer;float:left}.settings-container div,.settings-container-label{padding-left:15px}#iconPicker .iconList .icon img{cursor:pointer}#iconPicker .iconModifier{margin-left:10px;float:right;width:calc(40% - 10px)}#iconPicker .iconSearch{width:100%}.settings-container button{width:80%;margin-left:15px;margin-right:15px}#app-navigation>ul>li>a{z-index:auto}#app-navigation>ul>li{display:block}.nav-trashbin{width:inherit!important;border-right:1px solid #eee}.nav-trashbin a{background-color:#fff!important;opacity:1!important;z-index:140}.nav-trashbin a.active{background-image:var(--icon-delete-e9322d)}.nav-trashbin a .fa{margin-right:15px}#app-navigation .collapsible:hover .app-navigation-entry-bullet{background:var(--color-primary)!important}#app-navigation a .selected{opacity:1!important;box-shadow:inset 4px 0 var(--color-primary)!important}#app-navigation li a tags-input,#app-navigation li a.taginput{opacity:1}#app-navigation li .app-navigation-entry-bullet-color{background-color:var(--color-primary)}#app-navigation li .bullet-color-red{background-color:red}#app-navigation li .bullet-color-yellow{background-color:#ebbb00}#app-navigation li .bullet-color-green{background-color:#4db728}#app-navigation li .highlight-selected{background-color:var(--color-primary)}#app-navigation li .autocomplete{position:relative}#app-navigation li a{overflow:visible}#app-navigation li a tags-input li{width:auto!important}#app-navigation>ul ul{display:inherit!important}.hidden-list,.template-hidden{display:none!important}.icon-expired{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M0 0h24v24H0z' fill='none'/><path d='M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z'/></svg>")}.sharing_table .button{min-height:42px;margin:5px 0 0}.sharing_table td:first-child{width:55%}.sharing_table td:first-child tags-input .tags,.table{width:100%}.sharing_table td:first-child .autocomplete{margin-top:35px}.share_credential{padding-top:10px}.share_credential input{width:auto}.share_credential>div{margin-bottom:10px}.shared_table .pending{margin-right:10px}.shared_table .fa-trash{cursor:pointer}.scan-result-table{margin-top:10px}.scan-result-table .score{padding-left:0;padding-right:15px}.import_log{max-height:600px;overflow-y:auto}.import_log textarea{width:90%;height:200px}.tab_container.settings{margin-bottom:50px}.tab_container.settings textarea{height:300px}.import-steps{padding-left:16px;margin-bottom:10px}.import-steps li{list-style-type:disc}.import-table-outter{overflow-x:scroll}.import-table{padding-right:15px}.import-table .inspect{text-align:center;width:25px;cursor:pointer}.import-table td,.import-table th{text-align:left;padding:3px 5px}.hide-animation{display:inherit!important;transition:ease-in-out .15s}.hide-animation.ng-hide{opacity:0}.ui-dialog{z-index:9999}#notification .row{margin-left:0!important;margin-right:0!important}#passman-controls{position:fixed;margin:-45px 0 0;right:0;left:0;border-bottom:1px solid #c9c9c9;padding:0!important;background-color:rgba(255,255,255,.95);z-index:50;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;height:44px!important}@media only screen and (max-width:769px){#passman-controls .breadcrumb{padding-left:15px}}#passman-controls .breadcrumb .addCredential{padding-top:1px}@media only screen and (max-width:768px){#passman-controls{width:100%}}@media only screen and (min-width:768px){#app-navigation+#app-content #passman-controls{left:300px;width:calc(100% - 300px)!important}}#passman-controls,#passman-controls .button,#passman-controls input[type=submit],#passman-controls input[type=text],#passman-controls input[type=password],#passman-controls select{box-sizing:border-box;display:inline-block;height:36px;padding:7px 10px}.nopadding{padding-right:0;padding-left:0}input[type=checkbox]{min-height:inherit}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.ui-button.ui-widget{min-height:unset!important} \ No newline at end of file
diff --git a/css/public-page.css b/css/public-page.css
index 408e704b..032b0096 100644
--- a/css/public-page.css
+++ b/css/public-page.css
@@ -1 +1 @@
-.credential_container .text,.footer{text-align:center}header{display:none}#content-wrapper{padding-top:0}.credential_container{margin-top:20px;margin-bottom:20px;padding:20px;background:#f8f8f8;border:1px solid #c9c9c9;-webkit-border-radius:5px;border-radius:5px;background-clip:padding-box}.credential_container h2{font-weight:700}.credential_container .text,.credential_container button{margin:0 auto;display:block}.credential_container .text i,.credential_container button i{margin-right:5px}.credential_field{overflow:hidden}.credential_field .cell,.credential_field .value{float:left}.credential_field .tools{margin-left:10px;overflow:hidden;float:left}.credential_field .tools .cell{cursor:pointer;margin-right:4px}table{white-space:normal}table td:first-child{min-width:110px}table td{padding-bottom:1em;vertical-align:top}.tags .tag{background-color:rgba(240,240,240,.9);padding:4px;font-size:12px;margin-right:3px;-webkit-border-radius:5px;border-radius:5px;background-clip:padding-box}.tags .tag:last-child{margin-right:8px}.footer{font-size:10px;position:relative;bottom:-20px} \ No newline at end of file
+.credential_container .text,.footer{text-align:center}header{display:none}#content-wrapper{padding-top:0}.share-controller{width:100%}.share-controller .share-container{margin-top:50px;margin-left:auto;margin-right:auto;width:25%}.credential_container{margin-top:20px;margin-bottom:20px;padding:20px;background:#f8f8f8;border:1px solid #c9c9c9;-webkit-border-radius:5px;border-radius:5px;background-clip:padding-box}.credential_container h2{font-weight:700}.credential_container .text,.credential_container button{margin:0 auto;margin-bottom:25px;display:block}.credential_container .text i,.credential_container button i{margin-right:5px}.credential_field{overflow:hidden}.credential_field .cell,.credential_field .value{float:left}.credential_field .tools{margin-left:10px;overflow:hidden;float:left}.credential_field .tools .cell{cursor:pointer;margin-right:4px}table{white-space:normal}table td:first-child{min-width:110px}table td{padding-bottom:1em;vertical-align:top}.tags .tag{background-color:rgba(240,240,240,.9);padding:4px;font-size:12px;margin-right:3px;-webkit-border-radius:5px;border-radius:5px;background-clip:padding-box}.tags .tag:last-child{margin-right:8px}.footer{font-size:10px;position:relative;bottom:-20px} \ No newline at end of file
diff --git a/img/icons/Numix/apps/aim.svg b/img/icons/Numix/apps/aim.svg
new file mode 100644
index 00000000..a32ef5f0
--- /dev/null
+++ b/img/icons/Numix/apps/aim.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48">
+ <g>
+ <path d="m 19.98 17.906 c 0.723 0.34 4.363 -0.371 4.738 -0.051 c 0.375 0.324 -0.918 1.551 -0.191 2.09 c 1.727 1.285 6.289 1.664 10.387 0.152 l 1.551 4.266 c -2.25 1.242 -5.621 1.961 -9.934 1.551 l 11.328 11.406 l -4.195 3.777 l -8.715 -9.152 c -3.527 6.176 -8.137 8.594 -11.762 10.805 l -3.047 -4.805 c 14.383 -9.08 6.41 -13.148 9.898 -18.336 c 0.277 -0.414 -0.531 -1.305 -0.059 -1.703 m 0 0" style="fill:#fc0;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 29.652 12.11 c 0 3.789 -3.07 6.859 -6.859 6.859 c -3.793 0 -6.863 -3.07 -6.863 -6.859 c 0 -3.789 3.07 -6.863 6.863 -6.863 c 3.789 0 6.859 3.074 6.859 6.863 m 0 0" style="fill:#fc0;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/goa-account-exchange.svg b/img/icons/Numix/apps/goa-account-exchange.svg
new file mode 100644
index 00000000..027cf484
--- /dev/null
+++ b/img/icons/Numix/apps/goa-account-exchange.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="M56 8v22H34V8m22 0" fill="#7fcc28"/>
+ <path d="M8 8h22v22H8M8 8" fill="#f15119"/>
+ <path d="M30 34v22H8V34m22 0" fill="#00abec"/>
+ <path d="M34 34h22v22H34m0-22" fill="#fbb909"/>
+</svg>
diff --git a/img/icons/Numix/apps/goa-account-facebook.svg b/img/icons/Numix/apps/goa-account-facebook.svg
new file mode 100644
index 00000000..8a66e9d4
--- /dev/null
+++ b/img/icons/Numix/apps/goa-account-facebook.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48">
+ <g>
+ <path d="m 15.75 18.11 l 3.535 0 l 0 -2.355 c 0 -1.836 0.262 -3.105 0.695 -4.01 c 0.445 -0.902 1.25 -1.637 2.41 -2.199 c 1.18 -0.574 2.668 -0.859 4.461 -0.859 c 1.836 0 3.766 0.473 5.398 1.176 l -1.18 3.539 c -1.023 -0.223 -1.707 -0.285 -2.656 -0.285 c -0.938 0 -1.637 0.094 -2.23 0.582 c -0.594 0.484 -1.01 0.949 -1 2.059 l 0 2.355 l 5.891 0 l 0 3.539 l -5.891 0 l 0 17.676 l -5.895 0 l 0 -17.676 l -3.535 0" style="fill:#3b569c;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/goa-account-flickr.svg b/img/icons/Numix/apps/goa-account-flickr.svg
new file mode 100644
index 00000000..e682b59c
--- /dev/null
+++ b/img/icons/Numix/apps/goa-account-flickr.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48">
+ <g>
+ <path d="m 23 24 c 0 3.316 -2.688 6 -6 6 c -3.313 0 -6 -2.684 -6 -6 c 0 -3.313 2.688 -5.996 6 -5.996 c 3.313 0 6 2.684 6 5.996 m 0 0" style="fill:#6492c2;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 37 24 c -0.004 3.313 -2.688 5.996 -6 5.996 c -3.313 0 -6 -2.684 -6 -5.996 c 0 -3.313 2.684 -6 6 -6 c 3.313 0 6 2.688 6 6 m 0 0" style="fill:#f142a6;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/goa-account-foursquare.svg b/img/icons/Numix/apps/goa-account-foursquare.svg
new file mode 100644
index 00000000..a4aba454
--- /dev/null
+++ b/img/icons/Numix/apps/goa-account-foursquare.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="M 42.49 19.88 C 42.4 20.47 41.8 21 41.1 21 L 31.04 21 C 29.92 21 29 21.92 29 23.04 l 0 1.92 c 0 1.12 0.92 2.04 2.04 2.04 l 8.51 0 c 0.79 0 1.45 0.76 1.28 1.58 -0.16 0.86 -1.05 4.84 -1.15 5.3 C 39.63 34.4 39.1 35 38.3 35 l -7.19 0 c -1.45 0.03 -1.74 0.06 -2.59 1.12 -0.86 1.05 -8.39 10.77 -8.39 10.77 C 20.06 46.99 20 46.95 20 46.86 L 20 14.38 C 20 13.62 20.62 13 21.38 13 l 21 0 c 0.72 0 1.45 0.72 1.255 1.64 z M 19.57 8 C 16.1 8 15 10.66 15 12.34 l 0 40.67 c 0 2 1.02 2.59 1.58 2.83 0.56 0.23 1.86 0.4 2.91 -0.66 0 0 12 -14.72 12.24 -14.95 C 31.93 40 32 40 32.2 40 l 7.98 0 c 3.28 0 3.91 -2.27 4.27 -3.65 0.3 -1.15 3.68 -16.99 4.73 -22.2 0.79 -4 -0.23 -6.16 -3.98 -6.15 z" fill="#fa4778"/>
+</svg>
diff --git a/img/icons/Numix/apps/goa-account-google.svg b/img/icons/Numix/apps/goa-account-google.svg
new file mode 100644
index 00000000..941a584a
--- /dev/null
+++ b/img/icons/Numix/apps/goa-account-google.svg
@@ -0,0 +1,9 @@
+<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" style="enable-background:new 0 0 400 400">
+ <g transform="matrix(1.3333333,0,0,1.3333333,7.8950526e-7,-21.333332)">
+ <path d="m 10.375 28.27 c -1.725 1.99 -3.053 4.372 -3.777 7.08 -0.378 1.412 -0.566 2.83 -0.592 4.23 -0.008 0.275 -0.007 0.55 -0.002 0.826 0.024 1.41 0.213 2.838 0.594 4.26 0.725 2.704 2.051 5.087 3.775 7.08 l 3.699 -4.975 c -0.737 -1.087 -1.319 -2.308 -1.68 -3.654 -0.231 -0.86 -0.348 -1.721 -0.385 -2.572 -0.008 -0.187 -0.018 -0.373 -0.018 -0.561 0 -0.111 0.008 -0.22 0.012 -0.33 0.026 -0.909 0.146 -1.828 0.393 -2.748 0.361 -1.346 0.941 -2.567 1.678 -3.654 l -3.697 -4.975 z" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#fbbc05;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:nonzero;color-rendering:auto;color-interpolation:sRGB"/>
+ <path d="m 12.659 43.965 -4.859 3.848 c 2.922 6.01 9.08 10.188 16.184 10.188 c 1.445 0 2.847 -0.186 4.195 -0.512 0.024 -0.006 0.048 -0.01 0.072 -0.016 0.008 -0.002 0.016 -0.004 0.023 -0.006 0.24 -0.06 0.478 -0.124 0.715 -0.193 0.345 -0.098 0.688 -0.206 1.029 -0.326 0.023 -0.008 0.047 -0.013 0.07 -0.021 0.004 -0.001 0.008 -0.002 0.012 -0.004 0.982 -0.351 1.946 -0.792 2.881 -1.332 2.424 -1.4 4.382 -3.297 5.857 -5.479 l -5.762 -2.285 c -0.844 0.975 -1.854 1.837 -3.033 2.527 -0.035 0.021 -0.07 0.042 -0.105 0.063 -0.59 0.338 -1.194 0.62 -1.811 0.846 -0.308 0.113 -0.618 0.21 -0.93 0.297 -0.027 0.007 -0.053 0.014 -0.08 0.021 -0.269 0.073 -0.54 0.133 -0.811 0.188 c -0.752 0.147 -1.527 0.232 -2.324 0.232 -5.269 0 -9.697 -3.343 -11.324 -8.04" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#34a853;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:nonzero;color-rendering:auto;color-interpolation:sRGB"/>
+ <path d="m 24 37 0 6 11.621 0 c -0.762 2.985 -2.634 5.509 -5.158 7.117 l 4.859 3.846 c 4.066 -3.306 6.678 -8.341 6.678 -13.963 0 -1.024 -0.107 -2.02 -0.273 -3 -5.909 0 -11.818 0 -17.727 0" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#4285f4;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:nonzero;color-rendering:auto;color-interpolation:sRGB"/>
+ <path d="m 23.984 22 c -7.106 0 -13.261 4.176 -16.184 10.188 l 4.859 3.848 c 1.627 -4.692 6.06 -8.04 11.324 -8.04 c 3.075 0 5.859 1.146 7.975 3.03 l 4.217 -4.217 c -3.213 -2.973 -7.492 -4.809 -12.191 -4.809" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#ea4335;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:nonzero;color-rendering:auto;color-interpolation:sRGB"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/goa-account-kerberos.svg b/img/icons/Numix/apps/goa-account-kerberos.svg
new file mode 100644
index 00000000..b8659a3c
--- /dev/null
+++ b/img/icons/Numix/apps/goa-account-kerberos.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48">
+ <g>
+ <path d="m 14.184 37.5 c 1.652 -8.59 -2.801 -11.453 -6.98 -8.199 l -1.895 -1.176 l 3.352 -3.797 l 0.074 -1.809 l 3.207 -2.047 l -0.805 -2.051 c 1.375 0.602 2.648 0.512 3.145 1.93 c 2.965 0.359 5.809 3.438 5.676 5.484 c 1.852 -5.363 4.441 -8.227 -3.285 -12.09 l -0.242 -2.047 l 4.836 1.234 l 1.531 -0.813 l 2.289 1.414 l 1.648 -1.234 c -0.469 1.176 0.582 1.504 -0.289 2.5 c 2.457 2.047 1.688 8.473 1.953 11.125 c 0.688 -2.082 2.293 -4.402 5.082 -5.04 c 0.219 -1.266 2 -1.262 3.02 -2.168 l -0.332 2.02 l 2.82 1.926 l 0.035 1.84 l 3.668 4.07 l -2.57 1.234 c -6.094 -4.703 -7.859 1.484 -6.02 7.688 m -19.914 0" style="fill:#781918;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/goa-account-lastfm.svg b/img/icons/Numix/apps/goa-account-lastfm.svg
new file mode 100644
index 00000000..3a58f35b
--- /dev/null
+++ b/img/icons/Numix/apps/goa-account-lastfm.svg
@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <defs>
+ <linearGradient id="b" x1="1" x2="0" y1="48" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-90 24 24)">
+ <stop stop-color="#e2262b"/>
+ <stop offset="1" stop-color="#e4383e"/>
+ </linearGradient>
+ </defs>
+ <g transform="scale(1.3333333333333333)">
+ <path d="M17.586 31.926c-.52-.07-1.445-.37-2.062-.668-4.02-1.926-5.664-6.777-3.684-10.863 2.262-4.672 8.434-5.863 12.148-2.344 1.074 1.017 1.55 1.884 3.168 5.728 1.688 4.02 2 4.652 2.547 5.188.586.57 1.13.762 2.168.762 1.708 0 2.927-1.055 2.927-2.527 0-1.245-.438-1.644-2.672-2.437-3.402-1.227-4.504-2.336-4.508-4.563 0-1.188.3-1.98 1.066-2.8 1.098-1.173 2.992-1.56 4.668-.978.716.254 2.212 1.578 2.212 1.957 0 .183-.867.745-1.348.878-.254.066-.473-.02-.766-.3-.594-.57-.996-.747-1.707-.747-1.226 0-1.987.74-1.987 1.93s.484 1.59 2.902 2.407c3.332 1.125 4.316 2.14 4.336 4.492.02 2.03-.894 3.495-2.714 4.362-.828.39-1.11.44-2.46.44-1.93-.003-2.798-.358-3.88-1.577-.727-.82-1.465-2.36-3.828-7.977-.98-2.328-2.238-3.47-4.336-3.918-1.063-.227-2.543-.016-3.508.492-.94.492-1.992 1.602-2.488 2.617-.41.823-.45 1.054-.45 2.487 0 1.367.056 1.69.4 2.44.52 1.146 1.542 2.204 2.667 2.774.813.41 1.066.462 2.363.462 1.246 0 1.566-.06 2.31-.414.847-.414 1.987-1.43 2.452-2.19l.242-.396.477 1.09c.266.602.48 1.168.48 1.27 0 .3-1.078 1.285-2.066 1.898-1.5.926-3.222 1.273-5.062 1.023m-.004-.004" fill="url(#b)" transform="matrix(1.38514 0 0 1.38514 -9.238 -9.25)"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/goa-account-owncloud.svg b/img/icons/Numix/apps/goa-account-owncloud.svg
new file mode 100644
index 00000000..0aa92394
--- /dev/null
+++ b/img/icons/Numix/apps/goa-account-owncloud.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48">
+ <g>
+ <path d="m 308.82 78.92 c 0 11.211 -9.08 20.318 -20.318 20.318 c -11.239 0 -20.318 -9.107 -20.318 -20.318 c 0 -11.239 9.08 -20.346 20.318 -20.346 c 11.239 0 20.318 9.107 20.318 20.346 m 0 0" transform="matrix(0.141112,0,0,0.141112,-24.945489,7.765741)" style="stroke-opacity:1;fill:#1b2d44;stroke-miterlimit:4;fill-opacity:1;stroke:#f9f9f9;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1"/>
+ <path d="m 288.47 149.56 c 0 20.568 -16.692 37.26 -37.26 37.26 c -20.568 0 -37.23 -16.692 -37.23 -37.26 c 0 -20.568 16.664 -37.23 37.23 -37.23 c 20.568 0 37.26 16.664 37.26 37.23 m 0 0" transform="matrix(0.141112,0,0,0.141112,-24.945489,7.765741)" style="stroke-opacity:1;fill:#1b2d44;stroke-miterlimit:4;fill-opacity:1;stroke:#f9f9f9;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1"/>
+ <path d="m 333.48 124.79 c 0 22.23 -18.02 40.28 -40.25 40.28 c -22.23 0 -40.25 -18.05 -40.25 -40.28 c 0 -22.23 18.02 -40.25 40.25 -40.25 c 22.23 0 40.25 18.02 40.25 40.25 m 0 0" transform="matrix(0.141112,0,0,0.141112,-24.945489,7.765741)" style="stroke-opacity:1;fill:#1b2d44;stroke-miterlimit:4;fill-opacity:1;stroke:#f9f9f9;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1"/>
+ <path d="m 412.57 108.48 c 0 20.568 -16.664 37.23 -37.23 37.23 c -20.568 0 -37.23 -16.664 -37.23 -37.23 c 0 -20.568 16.664 -37.26 37.23 -37.26 c 20.568 0 37.23 16.692 37.23 37.26 m 0 0" transform="matrix(0.141112,0,0,0.141112,-24.945489,7.765741)" style="stroke-opacity:1;fill:#1b2d44;stroke-miterlimit:4;fill-opacity:1;stroke:#f9f9f9;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1"/>
+ <path d="m 371.74 79.5 c 0 20.568 -16.664 37.23 -37.23 37.23 c -20.568 0 -37.26 -16.664 -37.26 -37.23 c 0 -20.568 16.692 -37.23 37.26 -37.23 c 20.568 0 37.23 16.664 37.23 37.23 m 0 0" transform="matrix(0.141112,0,0,0.141112,-24.945489,7.765741)" style="stroke-opacity:1;fill:#1b2d44;stroke-miterlimit:4;fill-opacity:1;stroke:#f9f9f9;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1"/>
+ <path d="m 479.73 163.96 c 0 11.765 -9.55 21.287 -21.315 21.287 c -11.737 0 -21.287 -9.523 -21.287 -21.287 c 0 -11.765 9.55 -21.315 21.287 -21.315 c 11.765 0 21.315 9.55 21.315 21.315 m 0 0" transform="matrix(0.141112,0,0,0.141112,-24.945489,7.765741)" style="stroke-opacity:1;fill:#1b2d44;stroke-miterlimit:4;fill-opacity:1;stroke:#f9f9f9;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1"/>
+ <path d="m 453.43 147.57 c 0 22.23 -18.02 40.25 -40.28 40.25 c -22.23 0 -40.25 -18.02 -40.25 -40.25 c 0 -22.256 18.02 -40.28 40.25 -40.28 c 22.256 0 40.28 18.02 40.28 40.28 m 0 0" transform="matrix(0.141112,0,0,0.141112,-24.945489,7.765741)" style="stroke-opacity:1;fill:#1b2d44;stroke-miterlimit:4;fill-opacity:1;stroke:#f9f9f9;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1"/>
+ <path d="m 312.06 166.01 c 0 11.765 -9.523 21.287 -21.287 21.287 c -11.765 0 -21.287 -9.523 -21.287 -21.287 c 0 -11.765 9.523 -21.287 21.287 -21.287 c 11.765 0 21.287 9.523 21.287 21.287 m 0 0" transform="matrix(0.141112,0,0,0.141112,-24.945489,7.765741)" style="stroke-opacity:1;fill:#1b2d44;stroke-miterlimit:4;fill-opacity:1;stroke:#f9f9f9;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1"/>
+ <path d="m 166.57 -64.48 c 0 21.333 -17.312 38.624 -38.645 38.624 c -21.333 0 -38.624 -17.291 -38.624 -38.624 c 0 -21.333 17.291 -38.624 38.624 -38.624 c 21.333 0 38.645 17.291 38.645 38.624 m 0 0" transform="matrix(0.187503,0,0,0.187503,-0.00282153,38.999539)" style="stroke-opacity:1;fill:#1b2d44;stroke-miterlimit:4;fill-opacity:1;stroke:#f9f9f9;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/goa-account-pocket.svg b/img/icons/Numix/apps/goa-account-pocket.svg
new file mode 100644
index 00000000..368ea3ed
--- /dev/null
+++ b/img/icons/Numix/apps/goa-account-pocket.svg
@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48">
+ <g>
+ <path d="m 16.617 18.01 c -0.836 0 -1.641 0.121 -2.117 0.672 c -0.734 0.844 -0.445 2.523 -0.445 3.543 c 0 1.559 -0.105 3.223 0.211 4.758 c 0.34 1.645 1.539 3.434 2.887 4.551 c 0.98 0.809 2.031 1.379 3.242 1.848 c 1.188 0.414 2.324 0.602 3.52 0.617 c 1.094 0 2.191 -0.113 3.23 -0.449 c 1.059 -0.34 2.133 -0.828 3.02 -1.457 c 0.93 -0.715 1.672 -1.418 2.262 -2.305 c 0.426 -0.656 0.789 -1.371 1.055 -2.102 c 0.664 -1.809 0.473 -3.93 0.473 -5.813 c 0 -0.848 0.227 -2.383 -0.348 -3.102 c -0.867 -1.086 -2.777 -0.703 -4.203 -0.703 l -10.934 0 c -0.543 0 -1.207 -0.074 -1.855 -0.07 m 12.12 4.648 c 0.23 0 0.473 0.059 0.723 0.211 c 0.574 0.344 0.758 1.172 0.352 1.684 c -0.371 0.48 -0.926 0.863 -1.395 1.258 l -2.418 2.098 c -0.535 0.477 -1.078 1.148 -1.867 1.223 c -0.785 0.07 -1.309 -0.512 -1.813 -0.969 l -2.527 -2.199 c -0.52 -0.43 -1.25 -0.906 -1.617 -1.457 c -0.508 -0.781 0.082 -1.711 1.012 -1.832 c 0.594 -0.078 1.012 0.258 1.426 0.59 l 2.363 2.043 c 0.246 0.211 0.648 0.762 0.992 0.809 c 0.379 0.051 0.961 -0.695 1.207 -0.91 l 1.758 -1.504 c 0.504 -0.457 1.109 -1.039 1.801 -1.047 m 0.004 0.004" style="fill:#ed3f54;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 16.17 13.27 l 2.168 -1.246 c 1.77 -0.809 3.66 -1.219 5.602 -1.219 l 0 -1.805 c -2.051 0.16 -3.988 0.422 -5.902 1.246 c -0.484 0.207 -1.523 0.52 -1.805 0.992 c -0.266 0.449 -0.063 1.512 -0.063 2.031 m 0 0" style="fill:#51bab7;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 23.941 9 l 0 1.805 c 1.867 0 3.719 0.379 5.418 1.16 l 2.352 1.305 c 0 -0.52 0.219 -1.695 -0.063 -2.133 c -0.281 -0.43 -1.285 -0.727 -1.746 -0.926 c -1.859 -0.797 -3.938 -1.211 -5.961 -1.211 m 0 0" style="fill:#ee4054;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 31.711 11.164 c 0 0.578 -0.191 1.555 0.035 2.086 c 0.148 0.348 0.695 0.625 0.969 0.871 c 0.684 0.617 1.336 1.289 1.875 2.035 c 1.477 2.043 2.594 4.652 2.598 7.211 c 0.008 2.852 -0.582 5.523 -2.172 7.938 c -0.574 0.871 -1.273 1.676 -2.035 2.387 c -0.332 0.313 -1.055 0.699 -1.234 1.117 c -0.223 0.52 -0.035 1.465 -0.035 2.027 c 1.695 -0.641 3.27 -2.438 4.328 -3.848 c 3.949 -5.258 3.949 -12.719 0 -17.977 c -1.059 -1.41 -2.633 -3.207 -4.328 -3.848 m 0 0" style="fill:#fbb74b;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 16.11 11.223 c -1.898 1.281 -3.527 2.758 -4.773 4.691 c -3.375 5.23 -3.055 12.176 0.672 17.13 c 1.063 1.418 2.531 2.961 4.164 3.73 c 0 -0.547 0.176 -1.465 -0.039 -1.969 c -0.176 -0.406 -0.848 -0.738 -1.168 -1.043 c -0.781 -0.746 -1.504 -1.555 -2.102 -2.461 c -1.594 -2.422 -2.367 -5.34 -2.168 -8.238 c 0.184 -2.684 1.266 -5.316 2.973 -7.395 l 1.477 -1.543 l 0.965 -0.828 c 0.215 -0.355 0.156 -1.703 0 -2.078 m 0 0" style="fill:#82ecb9;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 16.17 34.793 c 0 0.504 -0.195 1.531 0.063 1.969 c 0.281 0.473 1.32 0.781 1.805 0.992 c 1.914 0.824 3.852 1.086 5.902 1.246 l 0 -1.742 c -1.996 0 -3.98 -0.426 -5.781 -1.309 c -0.59 -0.293 -1.395 -0.629 -1.805 -1.156 m -0.184 0" style="fill:#51bab7;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 23.941 37.26 l 0 1.742 c 2.023 0 4.102 -0.414 5.961 -1.211 c 0.461 -0.199 1.465 -0.496 1.746 -0.926 c 0.277 -0.426 0.063 -1.566 0.063 -2.07 l -2.352 1.301 c -1.699 0.781 -3.551 1.164 -5.418 1.164 m 10.418 -2.465 l 0.059 0.059 m -0.059 -0.059" style="fill:#ee4054;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/goa-account-twitter.svg b/img/icons/Numix/apps/goa-account-twitter.svg
new file mode 100644
index 00000000..59cbaa7d
--- /dev/null
+++ b/img/icons/Numix/apps/goa-account-twitter.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48">
+ <g>
+ <path d="m 27.41 12.844 c -2.441 0.91 -3.98 3.25 -3.809 5.809 l 0.063 0.988 l -0.977 -0.121 c -3.551 -0.461 -6.652 -2.035 -9.285 -4.676 l -1.289 -1.313 l -0.332 0.969 c -0.703 2.156 -0.254 4.438 1.211 5.969 c 0.777 0.844 0.605 0.969 -0.742 0.461 c -0.469 -0.16 -0.879 -0.281 -0.918 -0.219 c -0.133 0.141 0.332 1.977 0.703 2.703 c 0.508 1.01 1.543 1.996 2.672 2.582 l 0.957 0.461 l -1.129 0.02 c -1.098 0 -1.133 0.023 -1.016 0.445 c 0.391 1.313 1.93 2.703 3.645 3.309 l 1.211 0.426 l -1.051 0.641 c -1.563 0.93 -3.395 1.453 -5.223 1.492 c -0.879 0.02 -1.602 0.102 -1.602 0.164 c 0 0.199 2.379 1.328 3.766 1.773 c 4.152 1.313 9.09 0.746 12.797 -1.492 c 2.633 -1.594 5.27 -4.758 6.496 -7.824 c 0.664 -1.633 1.328 -4.617 1.328 -6.05 c 0 -0.926 0.055 -1.051 1.148 -2.156 c 0.645 -0.645 1.25 -1.352 1.367 -1.555 c 0.195 -0.383 0.176 -0.383 -0.82 -0.039 c -1.66 0.602 -1.891 0.523 -1.07 -0.383 c 0.605 -0.645 1.324 -1.816 1.324 -2.156 c 0 -0.063 -0.293 0.035 -0.625 0.219 c -0.352 0.199 -1.129 0.504 -1.715 0.684 l -1.055 0.344 l -0.957 -0.664 c -0.523 -0.363 -1.266 -0.766 -1.656 -0.887 c -0.996 -0.281 -2.516 -0.242 -3.414 0.078 m -0.004 0" style="fill:#00abec;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/goa-account-yahoo.svg b/img/icons/Numix/apps/goa-account-yahoo.svg
new file mode 100644
index 00000000..7a866c78
--- /dev/null
+++ b/img/icons/Numix/apps/goa-account-yahoo.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48">
+ <g>
+ <path d="m 35.25 18.06 c -0.563 0.055 -2.895 0.574 -3.676 0.742 c -0.84 0.227 -8.512 6.152 -9.02 7.605 c -0.113 0.504 -0.168 1.277 -0.168 2.01 l -0.055 1.176 c 0 0.84 0.23 2.191 0.344 2.918 c 0.504 0.113 4.152 0.016 4.824 0.129 l -0.082 1.504 c -0.656 -0.047 -5.289 -0.035 -7.938 -0.035 c -1.344 0 -5.664 0.148 -6.992 0.105 l 0.25 -1.43 c 0.73 -0.059 3.742 0.129 4.406 -0.57 c 0.328 -0.348 0.223 -0.719 0.223 -2.734 l 0 -0.949 c 0 -0.449 0 -1.289 -0.113 -2.074 c -0.277 -0.84 -7.04 -9.273 -8.77 -10.617 c -0.504 -0.168 -3.66 -0.484 -4.445 -0.652 l -0.039 -1.289 c 0.391 -0.195 3.902 0.047 7.309 -0.078 c 2.242 -0.082 7.352 0 7.98 0.074 l -0.16 1.137 c -0.672 0.168 -3.906 0.23 -4.746 0.453 c 2.184 3.246 5.633 7.43 6.754 9.05 c 0.617 -0.895 6.03 -4.617 6.195 -5.906 c -0.84 -0.168 -3.621 -0.566 -4.066 -0.566 l -0.266 -1.469 c 0.762 -0.117 4.77 0 6.762 0 c 1.719 0 5.395 0 6.438 0.086 l -0.953 1.383" style="fill:#871fa2;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 38.906 33.05 l -1.297 -0.109 l -0.016 -2.816 l 1.645 0.207 l 1.477 0.066 l -0.41 2.758 l -1.395 -0.105 m 1.672 -4.969 l -2.426 -0.234 c 0.254 -1.227 0.035 -10.637 0.016 -11.641 l -0.125 -1.977 c 0.676 0.133 0.574 0.063 3.422 0.359 c 1.734 0.184 1.961 0.262 2.531 0.285 l -0.746 2.344 c -0.633 1.875 -2.477 10.234 -2.672 10.863 m 0 0" style="fill:#871fa2;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/icq.svg b/img/icons/Numix/apps/icq.svg
new file mode 100644
index 00000000..30b571c3
--- /dev/null
+++ b/img/icons/Numix/apps/icq.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48">
+ <g>
+ <path d="m 19 6.66 c -1.137 -0.258 -2.066 -0.156 -3.051 0.363 c -1.086 0.672 -1.707 1.707 -1.965 3.152 c -0.258 1.5 0 2.949 0.777 4.398 l 0.359 0.516 l -1.238 -0.414 c -1.551 -0.363 -3 -0.156 -4.449 0.621 c -1.5 0.773 -2.43 1.859 -3.051 3.363 c -0.57 1.445 -0.516 2.844 0.207 4.137 c 0.309 0.566 0.773 1.031 1.188 1.344 c 0.621 0.621 1.398 0.98 2.328 1.137 l 0.363 0.105 l -0.777 0.672 c -0.723 0.621 -1.137 1.395 -1.395 2.172 c -0.262 0.93 -0.156 1.859 0.359 2.738 c 0.262 0.414 0.52 0.777 0.934 1.035 c 0.414 0.363 0.93 0.621 1.551 0.672 c 1.137 0.258 2.328 0.258 3.621 -0.156 l -0.934 1.555 l -0.258 0.672 c -0.516 1.652 -0.363 3.102 0.414 4.602 c 0.363 0.57 0.777 1.086 1.188 1.551 c 0.621 0.57 1.398 0.934 2.328 1.191 c 1.551 0.414 3.105 0.359 4.605 -0.414 c 1.445 -0.777 2.379 -2.02 2.844 -3.57 l 0.051 -0.309 c 0.984 1.086 1.914 1.809 2.949 2.066 c 1.031 0.313 2.066 0.262 3 -0.359 c 0.879 -0.52 1.5 -1.398 1.809 -2.484 c 0.258 -1.137 0.258 -2.273 0 -3.566 c 0.516 0.359 1.035 0.617 1.656 0.773 c 1.652 0.52 3.102 0.465 4.551 -0.309 c 1.395 -0.777 2.328 -2.02 2.793 -3.621 c 0.414 -1.551 0.309 -3.051 -0.465 -4.5 l -0.262 -0.414 c -0.414 -0.621 -0.824 -1.242 -1.445 -1.652 c -0.52 -0.363 -1.137 -0.621 -1.707 -0.883 c 1.602 -0.773 2.742 -1.859 3.258 -3.258 c 0.363 -1.137 0.258 -2.066 -0.258 -3 l 0 -0.102 c -0.621 -1.035 -1.449 -1.707 -2.742 -2.07 c -0.773 -0.152 -1.656 -0.152 -2.43 -0.102 l -1.707 0.363 l 0.57 -1.293 c 0.516 -1.656 0.359 -3.262 -0.52 -4.758 l -0.152 -0.262 c -0.777 -1.293 -1.914 -2.066 -3.465 -2.48 c -1.605 -0.414 -3.105 -0.258 -4.555 0.516 c -1.445 0.777 -2.48 1.965 -2.945 3.52 l 0 0.102 l -0.051 0.363 l -0.207 -0.363 l -0.52 -0.93 c -0.828 -1.293 -1.863 -2.066 -3.156 -2.43 m 13.191 3.102 c 0.258 0.52 0.414 1.137 0.414 1.813 l -0.156 1.137 c -0.207 0.57 -0.465 1.086 -0.777 1.551 l -4.652 5.691 c -0.469 -0.363 -0.984 -0.621 -1.5 -0.883 l -0.52 -5.844 l -0.051 -2.066 l 0.051 -0.516 c 0.262 -1.035 0.984 -1.813 1.914 -2.328 c 0.93 -0.52 1.965 -0.621 2.949 -0.258 c 1.086 0.258 1.859 0.824 2.328 1.703 m -16.04 1.035 c 0.051 -0.93 0.414 -1.551 1.035 -1.914 c 0.309 -0.258 0.777 -0.258 1.188 -0.051 c 0.934 0.258 1.707 0.93 2.328 2.223 c 0.258 0.52 0.52 1.035 0.621 1.656 l 1.035 6.102 l -0.777 0.262 l -4.602 -5.02 l -0.258 -0.516 c -0.414 -0.934 -0.672 -1.809 -0.57 -2.742 m -2.793 6.05 l 1.398 0.57 l 4.551 3.309 c -0.414 0.52 -0.672 1.035 -0.828 1.551 l -7.445 0.934 l -0.52 -0.105 c -0.93 -0.152 -1.551 -0.566 -1.965 -1.344 c -0.414 -0.777 -0.414 -1.551 -0.102 -2.328 c 0.359 -0.98 1.031 -1.758 2.02 -2.172 c 0.93 -0.516 1.859 -0.672 2.895 -0.414 m 4.914 8.43 l 0.363 1.035 l 0.152 0.363 c -0.773 0.672 -1.344 1.293 -1.965 1.859 l -1.551 1.293 l -0.414 0.262 c -0.98 0.465 -1.809 0.621 -2.688 0.516 c -0.777 -0.051 -1.398 -0.313 -1.656 -0.777 l -0.156 -0.566 l 0.105 -0.465 c 0.258 -0.777 0.93 -1.551 2.121 -2.121 c 0.617 -0.258 1.137 -0.52 1.551 -0.621 m 20.273 -9.156 c 0.93 -0.414 1.809 -0.516 2.742 -0.414 c 0.879 0.105 1.5 0.52 1.809 1.141 l 0.207 0.672 l -0.105 0.516 c -0.359 0.93 -1.137 1.656 -2.43 2.223 c -0.516 0.262 -1.086 0.363 -1.707 0.465 l -6.359 0.777 l -0.105 -0.363 l -0.102 -0.152 l 0.207 -0.258 l 5.223 -4.348 m -12.566 4.656 c 0.621 -0.566 1.445 -0.93 2.43 -0.93 c 0.93 0 1.809 0.363 2.379 0.93 c 0.723 0.727 1.035 1.5 1.035 2.43 c 0 0.934 -0.313 1.813 -1.035 2.434 c -0.672 0.672 -1.449 1.031 -2.379 1.031 c -0.984 0 -1.809 -0.359 -2.43 -1.031 c -0.672 -0.621 -1.035 -1.5 -1.035 -2.434 c 0 -0.93 0.363 -1.703 1.035 -2.43 m 1.188 7.5 c 0.105 1.758 0.258 3.621 0.52 5.637 l 0 2.07 l -0.055 0.516 c -0.359 0.93 -0.98 1.707 -1.91 2.121 c -0.934 0.516 -1.914 0.621 -2.848 0.363 c -1.031 -0.258 -1.809 -0.879 -2.223 -1.707 c -0.258 -0.516 -0.465 -1.137 -0.465 -1.758 l 0.258 -1.191 c 0.105 -0.516 0.363 -1.035 0.777 -1.445 l 4.344 -5.176 c 0.516 0.262 1.035 0.52 1.602 0.57 m 3.984 -0.672 l 2.172 2.223 l 1.344 1.656 l 0.258 0.516 c 0.465 0.879 0.727 1.707 0.621 2.691 c -0.102 0.93 -0.414 1.602 -1.035 1.859 c -0.359 0.262 -0.773 0.262 -1.188 0.207 c -0.984 -0.258 -1.758 -1.031 -2.328 -2.273 l -0.621 -1.707 l -0.773 -4.5 l 0.879 -0.309 m 3 -3.57 l 5.844 -0.516 l 2.066 -0.055 l 0.52 0.055 c 0.773 0.258 1.5 0.723 1.914 1.5 c 0.516 0.566 0.773 1.344 0.773 2.223 l -0.156 1.035 c -0.258 1.035 -0.879 1.809 -1.758 2.223 c -0.93 0.516 -1.859 0.621 -2.895 0.258 c -0.621 -0.156 -1.035 -0.414 -1.398 -0.828 l -5.43 -4.5 l 0.363 -0.773 m 0.156 -0.621" style="fill:#282828;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 32.2 9.762 c 0.258 0.52 0.414 1.137 0.414 1.813 l -0.156 1.137 c -0.207 0.57 -0.465 1.086 -0.777 1.551 l -4.652 5.691 c -0.469 -0.363 -0.984 -0.621 -1.5 -0.883 l -0.52 -5.844 l -0.051 -2.066 l 0.051 -0.516 c 0.262 -1.035 0.984 -1.813 1.914 -2.328 c 0.93 -0.52 1.965 -0.621 2.949 -0.258 c 1.086 0.258 1.859 0.824 2.328 1.703 m -16.04 1.035 c 0.051 -0.93 0.414 -1.551 1.035 -1.914 c 0.309 -0.258 0.777 -0.258 1.188 -0.051 c 0.934 0.258 1.707 0.93 2.328 2.223 c 0.258 0.52 0.52 1.035 0.621 1.656 l 1.035 6.102 l -0.777 0.262 l -4.602 -5.02 l -0.258 -0.516 c -0.414 -0.934 -0.672 -1.809 -0.57 -2.742 m -2.793 6.05 l 1.398 0.57 l 4.551 3.309 c -0.414 0.52 -0.672 1.035 -0.828 1.551 l -7.445 0.934 l -0.52 -0.105 c -0.93 -0.152 -1.551 -0.566 -1.965 -1.344 c -0.414 -0.777 -0.414 -1.551 -0.102 -2.328 c 0.359 -0.98 1.031 -1.758 2.02 -2.172 c 0.93 -0.516 1.859 -0.672 2.895 -0.414 m 21.05 0.051 c 0.93 -0.414 1.809 -0.516 2.742 -0.414 c 0.879 0.105 1.5 0.52 1.809 1.141 l 0.207 0.672 l -0.105 0.516 c -0.359 0.93 -1.137 1.656 -2.43 2.223 c -0.516 0.262 -1.086 0.363 -1.707 0.465 l -6.359 0.777 l -0.105 -0.363 l -0.102 -0.152 l 0.207 -0.258 l 5.223 -4.348 m -11.379 12.156 c 0.105 1.758 0.258 3.621 0.52 5.637 l 0 2.07 l -0.055 0.516 c -0.359 0.93 -0.98 1.707 -1.91 2.121 c -0.934 0.516 -1.914 0.621 -2.848 0.363 c -1.031 -0.258 -1.809 -0.879 -2.223 -1.707 c -0.258 -0.516 -0.465 -1.137 -0.465 -1.758 l 0.258 -1.191 c 0.105 -0.516 0.363 -1.035 0.777 -1.445 l 4.344 -5.176 c 0.516 0.262 1.035 0.52 1.602 0.57 m 3.984 -0.672 l 2.172 2.223 l 1.344 1.656 l 0.258 0.516 c 0.465 0.879 0.727 1.707 0.621 2.691 c -0.102 0.93 -0.414 1.602 -1.035 1.859 c -0.359 0.262 -0.773 0.262 -1.188 0.207 c -0.984 -0.258 -1.758 -1.031 -2.328 -2.273 l -0.621 -1.707 l -0.773 -4.5 l 0.879 -0.309 m 3 -3.57 l 5.844 -0.516 l 2.066 -0.055 l 0.52 0.055 c 0.773 0.258 1.5 0.723 1.914 1.5 c 0.516 0.566 0.773 1.344 0.773 2.223 l -0.156 1.035 c -0.258 1.035 -0.879 1.809 -1.758 2.223 c -0.93 0.516 -1.859 0.621 -2.895 0.258 c -0.621 -0.156 -1.035 -0.414 -1.398 -0.828 l -5.43 -4.5 l 0.363 -0.773 m 0.156 -0.621" style="fill:#72db46;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 18.281 25.277 l 0.363 1.035 l 0.152 0.363 c -0.773 0.672 -1.344 1.293 -1.965 1.859 l -1.551 1.293 l -0.414 0.262 c -0.98 0.465 -1.809 0.621 -2.688 0.516 c -0.777 -0.051 -1.398 -0.313 -1.656 -0.777 l -0.156 -0.566 l 0.105 -0.465 c 0.258 -0.777 0.93 -1.551 2.121 -2.121 c 0.617 -0.258 1.137 -0.52 1.551 -0.621 m 4.137 -0.777" style="fill:#ef3c4d;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 21.23 21.813 c 0.621 -0.566 1.445 -0.93 2.43 -0.93 c 0.93 0 1.809 0.363 2.379 0.93 c 0.723 0.727 1.035 1.5 1.035 2.43 c 0 0.934 -0.313 1.813 -1.035 2.434 c -0.672 0.672 -1.449 1.031 -2.379 1.031 c -0.984 0 -1.809 -0.359 -2.43 -1.031 c -0.672 -0.621 -1.035 -1.5 -1.035 -2.434 c 0 -0.93 0.363 -1.703 1.035 -2.43 m 0 0" style="fill:#fffc59;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/im-nov.svg b/img/icons/Numix/apps/im-nov.svg
new file mode 100644
index 00000000..e3ec3c2a
--- /dev/null
+++ b/img/icons/Numix/apps/im-nov.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48">
+ <g>
+ <path d="m 10 38 l 0 -28 l 24 19 l 0 -19 l 4 0 l 0 28 l -24 -19 l 0 19 m -4 0" style="fill:#dc3636;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/jabber.svg b/img/icons/Numix/apps/jabber.svg
new file mode 100644
index 00000000..4ebcf57b
--- /dev/null
+++ b/img/icons/Numix/apps/jabber.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48">
+ <g>
+ <path d="m 20.246 23.59 c 0 -0.547 -0.102 -1.145 -0.422 -1.602 c -0.637 -0.922 -1.996 -1.211 -2.949 -0.633 c -0.48 0.293 -0.75 0.805 -0.902 1.328 c -0.297 1.043 -0.16 2.234 0.051 3.281 c 0.066 0.336 0.133 0.672 0.227 1 c 0.035 0.117 0.051 0.289 0.129 0.387 c 0.133 0.176 0.465 0.223 0.664 0.191 c 0.605 -0.102 0.457 -1.098 0.434 -1.523 c -0.047 -0.988 -0.34 -1.953 -0.055 -2.938 c 0.117 -0.418 0.352 -0.887 0.773 -1.07 c 0.379 -0.164 0.762 0.039 0.914 0.41 c 0.242 0.602 0.184 1.297 0.336 1.922 c 0.051 0.211 0.105 0.422 0.203 0.621 c 0.023 0.059 0.063 0.176 0.145 0.172 c 0.195 -0.02 0.473 -0.348 0.621 -0.469 c 0.473 -0.391 0.961 -0.813 1.508 -1.102 c 0.258 -0.141 0.68 -0.355 0.941 -0.125 c 0.07 0.059 0.121 0.129 0.172 0.199 c 0.309 0.484 0 0.863 -0.199 1.32 c -0.262 0.594 -0.527 1.188 -0.902 1.715 c -0.324 0.457 -0.766 0.859 -1.023 1.359 c -0.168 0.32 -0.262 0.672 -0.191 1.035 c 0.059 0.293 0.281 0.473 0.582 0.402 c 0.223 -0.051 0.375 -0.242 0.504 -0.422 c 0.227 -0.313 0.438 -0.641 0.664 -0.961 c 0.438 -0.613 0.953 -1.188 1.324 -1.848 c 0.441 -0.793 0.656 -1.695 0.656 -2.602 c 0 -0.738 -0.273 -1.871 -1.133 -2.023 c -0.16 -0.031 -0.348 -0.016 -0.508 0.012 c -0.199 0.035 -0.402 0.102 -0.586 0.191 c -0.488 0.234 -0.914 0.59 -1.277 0.992 c -0.227 0.25 -0.43 0.566 -0.703 0.773" style="fill:#c00;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 19.438 5.273 c -0.68 0.09 -1.371 0.082 -2.055 0.188 c -1.309 0.203 -2.563 0.609 -3.785 1.098 c -0.445 0.18 -0.887 0.379 -1.32 0.59 c -0.16 0.078 -0.406 0.141 -0.535 0.266 c -0.066 0.063 -0.059 0.215 -0.07 0.305 c -0.02 0.246 -0.051 0.488 -0.074 0.734 c -0.094 0.945 -0.152 1.922 -0.02 2.863 c 0.047 0.309 0.141 0.859 0.516 0.918 c 0.574 0.094 1.023 -0.617 1.305 -1.012 c 0.66 -0.914 1.414 -1.766 2.5 -2.176 c 1.273 -0.484 2.734 -0.598 4.086 -0.691 c 3.789 -0.258 7.926 0.434 10.719 3.227 c 0.398 0.398 0.77 0.82 1.094 1.281 c 1.246 1.813 1.906 3.871 2.227 6.03 c 0.148 1.016 0.254 2.043 0.02 3.055 c -0.402 1.754 -1.453 3.281 -2.66 4.582 c -0.832 0.887 -1.762 1.691 -2.734 2.422 c -0.539 0.41 -1.145 0.754 -1.652 1.203 c -0.59 0.512 -1.078 1.156 -1.449 1.84 c -0.996 1.848 -1.266 4.066 -0.973 6.125 c 0.063 0.426 0.117 0.848 0.211 1.266 c 0.031 0.125 0.035 0.336 0.113 0.441 c 0.152 0.188 0.563 0.293 0.793 0.305 c 0.242 0.012 0.402 -0.172 0.461 -0.391 c 0.102 -0.367 0.039 -0.777 -0.02 -1.148 c -0.117 -0.762 -0.227 -1.527 -0.195 -2.301 c 0.063 -1.426 0.617 -2.754 1.602 -3.789 c 1 -1.051 2.363 -1.656 3.504 -2.535 c 2.301 -1.777 4.363 -4.172 5.156 -7.02 c 0.277 -1.02 0.371 -2.098 0.242 -3.148 c -0.16 -1.328 -0.645 -2.652 -1.102 -3.902 c -1.395 -3.809 -3.781 -7.43 -7.578 -9.172 c -1.5 -0.691 -3.078 -1.012 -4.707 -1.234 c -0.762 -0.105 -1.527 -0.172 -2.297 -0.207 c -0.43 -0.016 -0.895 -0.066 -1.32 -0.008" style="fill:#c00;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 13.504 29.93 c -0.742 0.109 -0.957 0.699 -0.82 1.371 c 0.176 0.855 0.852 1.508 1.516 2.023 c 1.707 1.316 3.914 2.027 6.06 1.934 c 0.84 -0.035 1.758 -0.176 2.527 -0.531 c 0.414 -0.191 0.848 -0.879 0.281 -1.176 c -0.074 -0.039 -0.176 -0.063 -0.262 -0.078 c -0.246 -0.039 -0.52 0.066 -0.754 0.133 c -0.41 0.117 -0.82 0.238 -1.246 0.305 c -1.262 0.203 -2.625 -0.086 -3.672 -0.832 c -0.844 -0.605 -1.531 -1.406 -2.176 -2.211 c -0.395 -0.496 -0.754 -1.039 -1.461 -0.938" style="fill:#c00;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 12.543 34.12 c -0.188 0.023 -0.406 0.016 -0.566 0.133 c -0.336 0.25 0.035 0.746 0.211 0.969 c 0.512 0.652 1.188 1.195 1.863 1.672 c 1.875 1.328 4 2.094 6.289 2.25 c 0.656 0.047 1.328 0 1.977 -0.109 c 0.238 -0.039 0.535 -0.055 0.758 -0.16 c 0.621 -0.289 0.441 -1.465 -0.113 -1.727 c -0.242 -0.113 -0.633 0.035 -0.887 0.07 c -0.602 0.086 -1.207 0.094 -1.813 0.078 c -1.582 -0.039 -3.27 -0.527 -4.652 -1.297 c -0.539 -0.305 -1.035 -0.672 -1.504 -1.082 c -0.281 -0.25 -0.574 -0.66 -0.941 -0.785 c -0.172 -0.059 -0.445 -0.035 -0.621 -0.012" style="fill:#c00;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 12.918 37.641 c -0.266 0.031 -0.469 0.172 -0.645 0.371 c -0.121 0.137 -0.238 0.258 -0.309 0.434 c -0.383 0.949 0.641 1.848 1.352 2.297 c 0.781 0.5 1.645 0.871 2.52 1.184 c 1.977 0.703 4.297 1.152 6.348 0.523 c 0.609 -0.188 1.215 -0.527 1.656 -0.988 c 0.25 -0.262 0.422 -0.656 -0.035 -0.824 c -0.273 -0.098 -0.602 0.152 -0.848 0.254 c -0.582 0.234 -1.188 0.41 -1.813 0.488 c -0.816 0.098 -1.559 -0.082 -2.352 -0.281 c -0.676 -0.168 -1.363 -0.336 -2.02 -0.582 c -0.559 -0.207 -1.109 -0.457 -1.602 -0.801 c -0.145 -0.105 -0.32 -0.195 -0.438 -0.332 c -0.395 -0.438 -0.688 -0.953 -1.105 -1.375 c -0.184 -0.18 -0.441 -0.398 -0.719 -0.367" style="fill:#c00;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/jockey.svg b/img/icons/Numix/apps/jockey.svg
new file mode 100644
index 00000000..b8eeb04a
--- /dev/null
+++ b/img/icons/Numix/apps/jockey.svg
@@ -0,0 +1,12 @@
+<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+ <path style="fill:#9a9a9a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero" d="m 50.31 8.834 c -3.234 -1.332 -6.952 -0.589 -9.426 1.884 -2.283 2.286 -3.104 5.651 -2.132 8.732 l -19.304 19.304 c -3.082 -0.972 -6.448 -0.15 -8.734 2.134 -2.47 2.474 -3.211 6.19 -1.88 9.423 l 6.123 -6.123 4.714 4.714 -6.126 6.126 c 3.234 1.332 6.952 0.589 9.426 -1.884 2.283 -2.286 3.104 -5.651 2.132 -8.732 l 19.304 -19.304 c 3.082 0.972 6.448 0.15 8.734 -2.134 2.47 -2.474 3.211 -6.19 1.88 -9.423 l -6.123 6.123 -4.714 -4.714 z"/>
+ <g transform="matrix(0.94281 -0.94281 0.94281 0.94281 -12.616 32.638)">
+ <path style="fill:#dcdcdc;fill-opacity:1;stroke:none;fill-rule:evenodd" d="m 22.5 25.292 0 -20 -1 -5 1 -2 3 0 1 2 -1 5 0 20 z"/>
+ <path style="fill:#bbb6b6;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero" d="m 22.5 -1.708 -1 2 5 0 -1 -2 z"/>
+ <rect y="5.292" x="24" style="fill:#bbb6b6;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero" width="1" height="20"/>
+ <rect rx="0.75" style="fill:#3aaf9c;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero" height="20" y="27.29" x="21" width="6"/>
+ <rect rx="0.75" style="fill:#2c937e;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero" height="3" y="25.292" x="19.5" width="9"/>
+ <rect y="29.29" x="22" style="fill:#2c937e;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero" width="1" height="16"/>
+ <rect y="29.29" x="25" style="fill:#2c937e;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero" width="1" height="16"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/live.svg b/img/icons/Numix/apps/live.svg
new file mode 100644
index 00000000..b7b55fd3
--- /dev/null
+++ b/img/icons/Numix/apps/live.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48">
+ <g>
+ <path d="m 27 17 l 0 4.781 l 1.68 1.219 l 0.18 0 l 7.141 -5 c 0 -0.563 -0.398 -1 -1 -1 m -8 0" style="fill:#0070c6;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 27.02 23.535 l 1.516 1.027 c 0.211 0.156 0.469 0 0.469 0 c -0.254 0.156 6.996 -4.563 6.996 -4.563 l 0 9 c 0 0.609 -0.305 1 -1 1 l -8 0 m 0.02 -6.465" style="fill:#0070c6;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 19.18 21.371 c -0.52 0 -0.93 0.238 -1.23 0.719 c -0.305 0.477 -0.457 1.109 -0.457 1.898 c 0 0.801 0.152 1.434 0.457 1.898 c 0.301 0.469 0.699 0.699 1.191 0.699 c 0.508 0 0.91 -0.227 1.207 -0.68 c 0.297 -0.453 0.449 -1.082 0.449 -1.883 c 0 -0.836 -0.145 -1.488 -0.434 -1.957 c -0.289 -0.465 -0.684 -0.695 -1.184 -0.695 m 0 0" style="fill:#0070c6;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 12 15 l 0 18 l 14 3 l 0 -24 m -4.547 14.992 c -0.598 0.777 -1.375 1.168 -2.336 1.168 c -0.938 0 -1.699 -0.379 -2.289 -1.133 c -0.586 -0.75 -0.883 -1.734 -0.883 -2.941 c 0 -1.277 0.301 -2.313 0.898 -3.102 c 0.598 -0.785 1.391 -1.184 2.379 -1.184 c 0.93 0 1.688 0.379 2.262 1.133 c 0.574 0.758 0.863 1.75 0.863 2.988 c 0 1.27 -0.297 2.293 -0.895 3.07 m 0 0" style="fill:#0070c6;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/ppa.svg b/img/icons/Numix/apps/ppa.svg
new file mode 100644
index 00000000..27828bf1
--- /dev/null
+++ b/img/icons/Numix/apps/ppa.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 56 20.5 -10 5.214 0 12.571 10 5.214" style="fill:#cf8c3b;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 32 44.702 -11 -6.351 0 -12.702 11 -6.351 11 6.351 0 12.702 z" style="fill:#f8c100;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 8 20.5 10 5.214 0 12.571 -10 5.214" style="fill:#363dbe;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 53.959 47.03 -9.516 -6.05 -10.887 6.286 0.484 11.267" style="fill:#9d2c34;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 29.959 5.465 0.484 11.267 -10.887 6.286 -9.516 -6.05" style="fill:#3695ba;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 29.959 58.53 0.484 -11.267 -10.887 -6.286 -9.516 6.05" style="fill:#b93780;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 53.959 16.965 -9.516 6.05 -10.887 -6.286 0.484 -11.267" style="fill:#8eb335;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+</svg>
diff --git a/img/icons/Numix/apps/salut.svg b/img/icons/Numix/apps/salut.svg
new file mode 100644
index 00000000..0900c82f
--- /dev/null
+++ b/img/icons/Numix/apps/salut.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 48 48">
+ <g>
+ <path d="m 23.02 18 l 1.961 0 c 2.938 0 3.02 3.059 3.02 3.059 l 0 2.629 c 0 1 -2 3.059 -2 3.059 l 0 1.316 l 4 2.188 l 0 1.75 l -12 0 l 0 -1.75 l 4 -2.188 l 0 -1.316 c 0 0 -2.01 -2.059 -2 -3.059 l 0 -2.629 c 0 0 0.082 -3.059 3.02 -3.059 m 0 0" style="fill:#4a8c9c;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 24 6 c -9.934 0 -18 8.07 -18 18 c 0 9.934 8.07 18 18 18 c 9.934 0 18 -8.07 18 -18 c 0 -9.934 -8.07 -18 -18 -18 m 0 1.5 c 9.125 0 16.5 7.379 16.5 16.5 c 0 9.121 -7.375 16.5 -16.5 16.5 c -9.125 0 -16.5 -7.379 -16.5 -16.5 c 0 -9.121 7.375 -16.5 16.5 -16.5 m 0 0" style="fill:#4a8c9c;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 24 11.5 c -6.895 0 -12.5 5.605 -12.5 12.5 c 0 6.895 5.605 12.5 12.5 12.5 c 6.895 0 12.5 -5.605 12.5 -12.5 c 0 -6.895 -5.605 -12.5 -12.5 -12.5 m 0 1.5 c 6.086 0 11 4.918 11 11 c 0 6.086 -4.914 11 -11 11 c -6.086 0 -11 -4.918 -11 -11 c 0 -6.086 4.914 -11 11 -11 m 0 0" style="fill:#4a8c9c;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 14.469 20.621 c 0 0.992 -0.805 1.801 -1.801 1.801 c -0.992 0 -1.801 -0.809 -1.801 -1.801 c 0 -0.996 0.809 -1.801 1.801 -1.801 c 0.996 0 1.801 0.805 1.801 1.801 m 0 0" style="fill:#4a8c9c;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 35.992 18.246 c 0 0.992 -0.805 1.801 -1.801 1.801 c -0.992 0 -1.801 -0.809 -1.801 -1.801 c 0 -0.996 0.809 -1.801 1.801 -1.801 c 0.996 0 1.801 0.805 1.801 1.801 m 0 0" style="fill:#4a8c9c;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 26.32 6.871 c 0 0.996 -0.805 1.801 -1.801 1.801 c -0.992 0 -1.797 -0.805 -1.797 -1.801 c 0 -0.996 0.805 -1.801 1.797 -1.801 c 0.996 0 1.801 0.805 1.801 1.801 m 0 0" style="fill:#4a8c9c;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 15.609 37.875 c 0 0.996 -0.809 1.801 -1.801 1.801 c -0.996 0 -1.801 -0.805 -1.801 -1.801 c 0 -0.992 0.805 -1.801 1.801 -1.801 c 0.992 0 1.801 0.809 1.801 1.801 m 0 0" style="fill:#4a8c9c;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 35.14 38.633 c 0 0.996 -0.809 1.801 -1.801 1.801 c -0.996 0 -1.801 -0.805 -1.801 -1.801 c 0 -0.992 0.805 -1.797 1.801 -1.797 c 0.992 0 1.801 0.805 1.801 1.797 m 0 0" style="fill:#4a8c9c;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/apps/window-manager.svg b/img/icons/Numix/apps/window-manager.svg
new file mode 100644
index 00000000..f407ecff
--- /dev/null
+++ b/img/icons/Numix/apps/window-manager.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 6.148 7 c -1.172 0.117 -2.156 1.216 -2.148 2.395 l 0 45.21 c 0 1.257 1.141 2.395 2.398 2.395 l 51.2 0 c 1.258 0 2.398 -1.138 2.398 -2.395 l 0 -45.21 c 0 -1.257 -1.141 -2.395 -2.398 -2.395 z m 47.852 4 c 1.105 0 2 0.895 2 2 0 1.105 -0.895 2 -2 2 -1.105 0 -2 -0.895 -2 -2 0 -1.105 0.895 -2 2 -2 z m -46 6 48 0 0 35.93 -48 0 z" style="fill:#85b9ab"/>
+</svg>
diff --git a/img/icons/Numix/categories/application-community.svg b/img/icons/Numix/categories/application-community.svg
new file mode 100644
index 00000000..16e4090f
--- /dev/null
+++ b/img/icons/Numix/categories/application-community.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 18.7 8.725 c -3.404 0 -6.807 1.299 -9.404 3.896 -5.194 5.194 -5.194 13.613 0 18.807 l 22.705 23.846 22.705 -23.846 c 5.193 -5.194 5.193 -13.613 0 -18.807 -5.194 -5.193 -13.614 -5.193 -18.808 0 -2.488 2.493 -3.891 5.883 -3.892 9.405 l -0.01 -0.003 c -0.003 -3.399 -1.297 -6.809 -3.891 -9.402 c -2.597 -2.597 -6 -3.896 -9.404 -3.896" style="fill:#de165e"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-3D.svg b/img/icons/Numix/categories/applications-3D.svg
new file mode 100644
index 00000000..df2f4a45
--- /dev/null
+++ b/img/icons/Numix/categories/applications-3D.svg
@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 51.2 51.2">
+ <path d="m 4.8 34.13 12.8 1.867 l 0 -6.933 -12.8 -0.8 0 -5.333 12.8 -0.8 0 -6.933 -12.8 1.867 0 -5.6 l 19.2 -5.067 l 0 38.4 l -19.2 -5.067" style="fill:#c18eb2;fill-rule:evenodd"/>
+ <path d="m 27.2 6.4 0 19.2 0 19.2 c 2.259 0 5.841 -0.809 9.05 -2.054 2.692 -1.044 5.339 -2.196 7.357 -4.44 c 2.794 -3.106 2.793 -10.573 2.793 -12.706 0 -2.133 0.001 -9.6 -2.793 -12.706 -2.02 -2.243 -4.665 -3.396 -7.357 -4.44 -3.21 -1.245 -6.792 -2.054 -9.05 -2.054 m 6.776 8.533 c 2.259 0.043 4.317 1.494 5.446 2.94 1.33 1.703 1.33 6.66 1.33 7.727 0 1.067 0 6.02 -1.33 7.727 -1.129 1.445 -3.188 2.896 -5.446 2.94 l 0 -10.667 z" style="fill:#c18eb2"/>
+ <flowRoot transform="translate(0,12.8)" line-height="125%" style="letter-spacing:0;word-spacing:0;font-size:30;font-family:Ubuntu;fill:#000;fill-opacity:1;font-weight:normal;stroke:none;font-style:normal;font-variant:normal;font-stretch:normal">
+ <flowRegion>
+ <rect width="17.6" height="37.6" x="-39.2" y="-7.2"/>
+ </flowRegion>
+ <flowPara>DD</flowPara>
+ </flowRoot>
+</svg>
diff --git a/img/icons/Numix/categories/applications-accessories.svg b/img/icons/Numix/categories/applications-accessories.svg
new file mode 100644
index 00000000..7d771187
--- /dev/null
+++ b/img/icons/Numix/categories/applications-accessories.svg
@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="matrix(1.1547006,0.66666671,-0.66666671,1.1547006,11.666631,-9.02259)">
+ <path d="m 18.05 5.787 c -0.315 0 -0.568 0.253 -0.568 0.568 l 0 0.968 c -1.116 0.224 -2.141 0.684 -3.056 1.294 l -0.704 -0.704 c -0.223 -0.223 -0.581 -0.223 -0.803 0 l -1.607 1.607 c -0.223 0.223 -0.223 0.581 0 0.803 l 0.704 0.704 c -0.609 0.916 -1.065 1.941 -1.29 3.056 l -0.97 0 c -0.315 0 -0.568 0.253 -0.568 0.568 l 0 2.273 c 0 0.315 0.253 0.568 0.568 0.568 l 0.985 0 c 0.227 1.113 0.651 2.155 1.261 3.07 l -0.69 0.69 c -0.223 0.223 -0.223 0.581 0 0.803 l 1.607 1.607 c 0.223 0.223 0.581 0.223 0.803 0 l 0.692 -0.692 c 0.917 0.611 1.951 1.058 3.067 1.283 l 0 0.965 c 0 0.315 0.253 0.568 0.568 0.568 l 2.273 0 c 0.315 0 0.568 -0.253 0.568 -0.568 l 0 -0.985 c 1.113 -0.227 2.155 -0.651 3.07 -1.261 l 0.69 0.69 c 0.223 0.223 0.581 0.223 0.803 0 l 1.607 -1.607 c 0.223 -0.223 0.223 -0.581 0 -0.803 l -0.692 -0.692 c 0.611 -0.917 1.058 -1.951 1.283 -3.067 l 0.968 0 c 0.315 0 0.568 -0.253 0.568 -0.568 l 0 -2.273 c 0 -0.315 -0.253 -0.568 -0.568 -0.568 l -0.988 0 c -0.227 -1.113 -0.651 -2.155 -1.261 -3.07 l 0.69 -0.69 c 0.223 -0.223 0.223 -0.581 0 -0.803 l -1.607 -1.607 c -0.223 -0.223 -0.581 -0.223 -0.803 0 l -0.692 0.692 c -0.917 -0.611 -1.951 -1.058 -3.067 -1.283 l 0 -0.968 c 0 -0.315 -0.253 -0.568 -0.568 -0.568 l -2.273 0 z m 1.136 2.728 c 4.02 0 7.273 3.248 7.273 7.273 0 4.02 -3.248 7.273 -7.273 7.273 -4.02 0 -7.273 -3.248 -7.273 -7.273 0 -4.02 3.248 -7.273 7.273 -7.273 z" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#6891b8;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:nonzero;color-rendering:auto;color-interpolation:sRGB"/>
+ <circle transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)" r="1.989" cy="23.267" cx="8.723" style="fill:#6891b8;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+ <g transform="matrix(1.5151231,0,0,1.5151231,25.040994,3.9674885)">
+ <path d="m 15.829 18.15 c -0.196 -0.196 -0.511 -0.196 -0.707 0 l -0.602 0.602 c -0.834 -0.555 -1.758 -0.907 -2.707 -1.097 l 0 -0.876 c 0 -0.277 -0.223 -0.5 -0.5 -0.5 l -2 0 c -0.277 0 -0.5 0.223 -0.5 0.5 l 0 0.876 c -0.949 0.191 -1.871 0.545 -2.704 1.099 l -0.604 -0.604 c -0.196 -0.196 -0.511 -0.196 -0.707 0 l -1.414 1.414 c -0.196 0.196 -0.196 0.511 0 0.707 l 0.613 0.613 c -0.551 0.834 -0.936 1.746 -1.126 2.694 l -0.859 0 c -0.277 0 -0.5 0.223 -0.5 0.5 l 0 2 c 0 0.277 0.223 0.5 0.5 0.5 l 0.862 0 c 0.19 0.95 0.555 1.872 1.11 2.707 l -0.601 0.601 c -0.196 0.196 -0.196 0.511 0 0.707 l 1.414 1.414 c 0.196 0.196 0.511 0.196 0.707 0 l 0.613 -0.613 c 0.834 0.551 1.746 0.936 2.694 1.126 l 0 0.859 c 0 0.277 0.223 0.5 0.5 0.5 l 2 0 c 0.277 0 0.5 -0.223 0.5 -0.5 l 0 -0.862 c 0.95 -0.19 1.872 -0.555 2.707 -1.11 l 0.602 0.602 c 0.196 0.196 0.511 0.196 0.707 0 l 1.414 -1.414 c 0.196 -0.196 0.196 -0.511 0 -0.707 l -0.615 -0.615 c 0.551 -0.834 0.936 -1.746 1.126 -2.694 l 0.859 0 c 0.277 0 0.5 -0.223 0.5 -0.5 l 0 -2 c 0 -0.277 -0.223 -0.5 -0.5 -0.5 l -0.862 0 c -0.19 -0.95 -0.555 -1.872 -1.11 -2.707 l 0.602 -0.602 c 0.196 -0.196 0.196 -0.511 0 -0.707 l -1.414 -1.414 z m -0.99 2.404 c 2.505 2.505 2.505 6.547 0 9.05 -2.505 2.505 -6.547 2.505 -9.05 0 -2.505 -2.505 -2.505 -6.547 0 -9.05 2.505 -2.505 6.547 -2.505 9.05 0 z" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#6891b8;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:nonzero;color-rendering:auto;color-interpolation:sRGB"/>
+ <circle transform="matrix(0.96592583,0.25881905,-0.25881905,0.96592583,0,0)" r="1.75" cy="21.555" cx="16.453" style="fill:#6891b8;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/applications-arcade.svg b/img/icons/Numix/categories/applications-arcade.svg
new file mode 100644
index 00000000..688bc83e
--- /dev/null
+++ b/img/icons/Numix/categories/applications-arcade.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 54.43 43.22 c -5.211 10.366 -16.895 15.79 -28.19 13.1 -11.314 -2.684 -19.272 -12.79 -19.24 -24.388 0.032 -11.606 8.06 -21.648 19.382 -24.277 11.322 -2.621 22.967 2.866 28.12 13.264 l -22.454 11.08" style="fill:#cfac29"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-astronomy.svg b/img/icons/Numix/categories/applications-astronomy.svg
new file mode 100644
index 00000000..ccde8826
--- /dev/null
+++ b/img/icons/Numix/categories/applications-astronomy.svg
@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="matrix(2.0008676,0,0,2.0009474,0.31928146,0.31702988)" style="fill:#a98bc7">
+ <path d="m 15.473 3.465 c -7.324 0 -12.676 5.648 -11.941 12.582 0.621 5.848 5.367 10.758 11.23 12.156 -1 -1.637 -1.648 -3.48 -1.855 -5.418 -0.734 -6.934 4.621 -12.531 11.945 -12.531 1.152 0 2.254 0.145 3.352 0.402 c -2.582 -4.234 -7.445 -7.191 -12.73 -7.191 m 0 2.594 c 2.293 0 4.504 0.711 6.402 1.883 -7.145 1.383 -12.281 7.695 -11.535 15.08 -2.277 -1.891 -3.945 -4.438 -4.242 -7.25 -0.578 -5.477 3.379 -9.711 9.375 -9.711 z"/>
+ <path d="m 9.387 8.152 c 1.293 0 2.34 1.254 2.34 2.809 l 0 9.949 c 0 1.555 -1.047 2.813 -2.34 2.813 -1.289 0 -2.34 -1.258 -2.34 -2.813 l 0 -9.949 c 0 -1.555 1.051 -2.809 2.34 -2.809 z"/>
+ <path d="m 7.848 9.879 c 1.258 0 2.277 1.262 2.277 2.813 l 0 5.336 c 0 1.555 -1.02 2.809 -2.277 2.809 -1.258 0 -2.273 -1.254 -2.273 -2.809 l 0 -5.336 c 0 -1.551 1.016 -2.813 2.273 -2.813 z"/>
+ <path d="m 10.797 6.867 c 1.293 0 2.34 1.262 2.34 2.809 l 0 3.867 c 0 1.551 -1.047 2.812 -2.34 2.812 -1.293 0 -2.34 -1.262 -2.34 -2.813 l 0 -3.867 c 0 -1.547 1.047 -2.809 2.34 -2.809 z"/>
+ <path d="m 11.906 4.625 3.355 0 c 1.547 0 2.809 1.262 2.809 2.813 l 0 2.066 c 0 1.555 -1.262 2.813 -2.809 2.813 l -3.355 0 c -1.547 0 -2.809 -1.258 -2.809 -2.813 l 0 -2.066 c 0 -1.551 1.262 -2.813 2.809 -2.813 z"/>
+ <path d="m 13.23 9.242 c 0.902 0 1.637 1.215 1.637 2.723 0 1.5 -0.734 2.723 -1.637 2.723 -0.902 0 -1.633 -1.223 -1.633 -2.723 0 -1.508 0.73 -2.723 1.633 -2.723 z"/>
+ <path d="m 18.637 5.844 0.531 0 c 1.551 0 2.813 0.891 2.813 1.988 0 1.098 -1.262 1.984 -2.813 1.984 l -0.531 0 c -1.555 0 -2.809 -0.887 -2.809 -1.984 0 -1.098 1.254 -1.988 2.809 -1.988 z"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/applications-biology.svg b/img/icons/Numix/categories/applications-biology.svg
new file mode 100644
index 00000000..c4f071fd
--- /dev/null
+++ b/img/icons/Numix/categories/applications-biology.svg
@@ -0,0 +1,20 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="matrix(2.0021533,0,0,2.0022938,0.295245,0.296887)" style="fill:#d68b85;stroke:#d68b85;stroke-width:0.499">
+ <path d="m 110.79 199.21 c 0.79 -1.084 0.527 -2.638 -0.556 -3.4 l -38.88 -27.932 c -1.112 -0.762 -2.633 -0.528 -3.423 0.557 -0.79 1.114 -0.527 2.638 0.556 3.4 l 38.909 27.932 c 1.112 0.791 2.604 0.528 3.394 -0.557 z" transform="matrix(0.13353,0,0,0.13328,-4.89054,-0.40072)" style="stroke-width:0.155"/>
+ <path d="m 104.94 182.35 c 0.965 -0.938 1.082 -2.433 0.205 -3.371 l -31.04 -32.973 c -0.878 -0.909 -2.37 -0.909 -3.364 0 -0.995 0.909 -1.082 2.433 -0.205 3.341 l 31.04 33 c 0.878 0.909 2.399 0.909 3.364 0 z" transform="matrix(0.13353,0,0,0.13328,-4.89054,-0.40072)" style="stroke-width:0.15"/>
+ <path d="m 195.8 99.64 c 0.936 -0.967 0.936 -2.491 0 -3.459 l -33.877 -33.853 c -0.936 -0.938 -2.487 -0.938 -3.423 0 -0.965 0.967 -0.965 2.491 0 3.459 l 33.848 33.853 c 0.965 0.938 2.487 0.938 3.452 0 z" transform="matrix(0.13353,0,0,0.13328,-4.89054,-0.40072)" style="stroke-width:0.155"/>
+ <path d="m 193.84 116.93 c 0.995 -0.938 1.082 -2.462 0.176 -3.4 l -31.566 -33.53 c -0.878 -0.967 -2.399 -0.967 -3.394 -0.059 -0.965 0.938 -1.053 2.433 -0.176 3.4 l 31.595 33.53 c 0.878 0.967 2.399 0.967 3.364 0.059 z" transform="matrix(0.13353,0,0,0.13328,-4.89054,-0.40072)" style="stroke-width:0.152"/>
+ <path d="m 176.9 119.4 c 1.112 -0.733 1.668 -1.905 1.199 -2.638 l -16.705 -25.998 c -0.468 -0.733 -1.785 -0.733 -2.896 0 -1.141 0.733 -1.697 1.905 -1.229 2.638 l 16.734 25.998 c 0.468 0.733 1.755 0.733 2.896 0 z" transform="matrix(0.13353,0,0,0.13328,-4.89054,-0.40072)" style="stroke-width:0.124"/>
+ <path d="m 166.17 140.85 c 0.965 -0.938 1.024 -2.403 0.176 -3.253 l -30.601 -30.599 c -0.848 -0.879 -2.34 -0.791 -3.277 0.147 -0.965 0.967 -1.024 2.433 -0.146 3.312 l 30.571 30.57 c 0.878 0.85 2.34 0.791 3.277 -0.176 z" transform="matrix(0.13353,0,0,0.13328,-4.89054,-0.40072)" style="stroke-width:0.147"/>
+ <path d="m 100.17 159.75 c 1.17 -0.733 1.785 -1.817 1.404 -2.462 l -13.896 -22.891 c -0.38 -0.616 -1.638 -0.586 -2.779 0.117 -1.17 0.703 -1.785 1.788 -1.404 2.433 l 13.896 22.891 c 0.41 0.645 1.638 0.586 2.779 -0.088 z" transform="matrix(0.13353,0,0,0.13328,-4.89054,-0.40072)" style="stroke-width:0.116"/>
+ <g style="stroke-width:0.155">
+ <path d="m 231.7 47.12 c -5.03 2.579 -45.46 -10.639 -45.46 -10.639 0 0 10.327 34.791 12.521 44.492 2.194 9.731 2.194 24.15 2.194 24.15 -0.293 6.565 -2.779 8.471 -7.811 14.1 -5.03 5.657 -11.614 4.719 -14.715 4.074 -3.16 -0.615 -37.651 -8.764 -47.978 -11.607 -10.385 -2.784 -21.649 -0.293 -25.744 2.521 -4.066 2.843 -6.261 10.669 -6.261 10.669 -5.324 22.891 17.231 68.966 17.231 68.966 -1.872 5.04 -8.133 10.05 -8.133 10.05 0 0 -23.492 -61.46 -13.808 -80.6 9.742 -19.11 25.744 -18.788 32.619 -18.788 6.904 0 50.46 12.838 57.691 12.545 7.226 -0.322 11.936 3.136 8.133 -17.557 -3.745 -20.693 -12.521 -48.3 -13.457 -54.897 -0.936 -6.565 2.808 -10.317 2.808 -10.317 0 0 4.71 -5.979 10.649 -5.04 5.997 0.967 31.683 10.05 40.781 13.805 1.755 0.733 0.439 3.224 -1.258 4.074 z" transform="matrix(0.13353,0,0,0.13328,-4.89054,-0.40072)" style="stroke-width:0.155"/>
+ <path d="m 247.7 62.48 c -20.391 12.251 -35.457 6.595 -43.59 5.979 -8.133 -0.645 -33.23 -11.929 -39.2 -12.867 -5.939 -0.938 -10.649 5.01 -10.649 5.01 0 0 -3.774 3.752 -2.808 10.346 0.936 6.595 9.713 34.18 13.457 54.868 3.774 20.693 -0.936 17.234 -8.133 17.557 -7.226 0.322 -50.786 -12.545 -57.691 -12.545 -6.904 0 -22.907 -0.293 -32.619 18.817 -9.713 19.14 2.516 54.55 2.516 54.55 0 0 16.939 14.45 15.359 9.09 0 0 -18.489 -39.16 -13.165 -62.05 0 0 2.194 -7.855 6.261 -10.669 4.096 -2.814 15.388 -5.334 25.715 -2.491 10.327 2.784 44.848 10.962 47.978 11.577 3.13 0.615 9.713 1.583 14.715 -4.074 5.03 -5.627 7.548 -7.503 7.87 -14.1 0 0 0 -14.42 -2.194 -24.15 -2.194 -9.702 -12.55 -44.521 -12.55 -44.521 0 0 38.03 12.398 42.01 12.545 7.84 0.293 22.555 4.396 34.491 -2.491 11.907 -6.917 12.229 -10.376 12.229 -10.376 z" transform="matrix(0.13353,0,0,0.13328,-4.89054,-0.40072)" style="stroke-width:0.155"/>
+ </g>
+ <path d="m 144.05 146.36 c 0.965 -0.967 0.995 -2.491 0.059 -3.429 l -32.999 -33 c -0.936 -0.909 -2.457 -0.879 -3.423 0.059 -0.936 0.967 -0.936 2.462 -0.029 3.4 l 33.03 33.03 c 0.907 0.909 2.428 0.879 3.364 -0.059 z" transform="matrix(0.13353,0,0,0.13328,-4.89054,-0.40072)" style="stroke-width:0.153"/>
+ <path d="m 158.5 147.59 c 0.936 -0.938 0.878 -2.55 -0.176 -3.605 l -36.978 -36.989 c -1.053 -1.026 -2.662 -1.114 -3.628 -0.147 -0.936 0.938 -0.878 2.55 0.176 3.605 l 36.978 36.989 c 1.024 1.026 2.662 1.114 3.628 0.147 z" transform="matrix(0.13353,0,0,0.13328,-4.89054,-0.40072)" style="stroke-width:0.162"/>
+ <path d="m 124.39 141.26 c 0.878 -1.055 1.024 -2.315 0.351 -2.902 l -23.638 -19.843 c -0.673 -0.557 -1.931 -0.176 -2.779 0.85 -0.878 1.055 -1.024 2.315 -0.351 2.872 l 23.638 19.872 c 0.673 0.557 1.931 0.176 2.779 -0.85 z" transform="matrix(0.13353,0,0,0.13328,-4.89054,-0.40072)" style="stroke-width:0.124"/>
+ <path d="m 232.81 72.35 c 0.936 -0.967 0.936 -2.491 0 -3.459 l -33.877 -33.853 c -0.936 -0.938 -2.516 -0.938 -3.452 0 -0.965 0.967 -0.965 2.491 0 3.459 l 33.848 33.853 c 0.965 0.938 2.516 0.938 3.481 0 z" transform="matrix(0.13353,0,0,0.13328,-4.89054,-0.40072)" style="stroke-width:0.155"/>
+ <path d="m 213.94 74.26 c 1.053 -0.821 1.287 -2.286 0.527 -3.253 l -26.856 -34.585 c -0.761 -0.938 -2.223 -1.084 -3.306 -0.234 -1.053 0.821 -1.316 2.257 -0.556 3.253 l 26.856 34.556 c 0.761 0.967 2.253 1.084 3.335 0.264 z" transform="matrix(0.13353,0,0,0.13328,-4.89054,-0.40072)" style="stroke-width:0.148"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/applications-boardgames.svg b/img/icons/Numix/categories/applications-boardgames.svg
new file mode 100644
index 00000000..6b8717a0
--- /dev/null
+++ b/img/icons/Numix/categories/applications-boardgames.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 14.853 9 34.29 0 c 3.24 0 5.853 2.631 5.853 5.876 l 0 34.24 c 0 3.244 -2.613 5.884 -5.853 5.884 l -34.29 0 c -3.232 0 -5.853 -2.64 -5.853 -5.884 l 0 -34.24 c 0 -3.244 2.621 -5.876 5.853 -5.876 z" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#ff4545;stroke-width:2"/>
+ <circle cx="20" cy="20" r="4" style="fill:#ff4545;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <circle cx="44" cy="20" r="4" style="fill:#ff4545;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <circle cx="32" cy="20" r="4" style="fill:#ff4545;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <circle cx="20" cy="44" r="4" style="fill:#ff4545;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <circle cx="32" cy="44" r="4" style="fill:#ff4545;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <circle cx="44" cy="44" r="4" style="fill:#ff4545;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-cardgames.svg b/img/icons/Numix/categories/applications-cardgames.svg
new file mode 100644
index 00000000..b17894ea
--- /dev/null
+++ b/img/icons/Numix/categories/applications-cardgames.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 9.801 10 c -0.986 0 -1.801 0.801 -1.801 1.762 l 0 36.476 c 0 0.961 0.814 1.762 1.801 1.762 l 22.398 0 c 0.986 0 1.801 -0.801 1.801 -1.762 l 0 -36.476 c 0 -0.961 -0.814 -1.762 -1.801 -1.762 l -22.398 0 z m 7.199 13 c 1.024 0 2.047 0.391 2.828 1.172 0.78 0.78 1.171 1.806 1.172 2.828 0 -1.059 0.424 -2.078 1.172 -2.828 1.562 -1.562 4.094 -1.562 5.656 0 1.562 1.562 1.562 4.094 0 5.656 l -6.828 7.172 -6.828 -7.172 c -1.562 -1.562 -1.562 -4.094 0 -5.656 0.781 -0.781 1.804 -1.172 2.828 -1.172 z" style="fill:#f9b081"/>
+ <path d="m 37.36 11.785 c -0.951 -0.262 -1.947 0.301 -2.195 1.229 l -9.386 35.22 c -0.248 0.928 0.331 1.918 1.283 2.172 l 21.596 5.815 c 0.943 0.254 1.931 -0.301 2.179 -1.237 l 9.395 -35.22 c 0.24 -0.928 -0.339 -1.91 -1.291 -2.172 z m 8.099 13.04 2.854 10.6 -7.771 7.753 -2.854 -10.6 z" style="fill:#f9b081"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-chat.svg b/img/icons/Numix/categories/applications-chat.svg
new file mode 100644
index 00000000..7623823c
--- /dev/null
+++ b/img/icons/Numix/categories/applications-chat.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="translate(0.3339845,0.33398437)" style="fill:#8ccd7c">
+ <path d="m 18.563 20.07 c -6.426 0 -11.637 5.238 -11.637 11.699 0 0.402 0.008 0.801 0.047 1.191 0.098 2.504 -0.047 6.125 2.863 14.902 2.477 7.465 4.363 7.309 4.363 7.309 l 2.902 -1.465 c 0 0 -1.449 -2.922 -1.449 -5.844 0 -1.406 0.332 -3.141 0.684 -4.57 0.715 0.137 1.469 0.18 2.227 0.18 6.418 0 11.625 -5.238 11.625 -11.703 0 -6.461 -5.207 -11.699 -11.625 -11.699 z"/>
+ <path d="m 44.773 43.27 c 6.426 0 11.633 -5.242 11.633 -11.699 0 -0.406 -0.008 -0.801 -0.047 -1.191 -0.098 -2.508 0.047 -6.129 -2.863 -14.902 -2.473 -7.469 -4.363 -7.313 -4.363 -7.313 l -2.902 1.465 c 0 0 1.453 2.922 1.453 5.848 0 1.406 -0.332 3.137 -0.684 4.57 -0.719 -0.137 -1.473 -0.184 -2.227 -0.184 -6.422 0 -11.629 5.242 -11.629 11.707 0 6.457 5.207 11.699 11.629 11.699 z"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/applications-debugging.svg b/img/icons/Numix/categories/applications-debugging.svg
new file mode 100644
index 00000000..c434b383
--- /dev/null
+++ b/img/icons/Numix/categories/applications-debugging.svg
@@ -0,0 +1,23 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="matrix(1.9999894,0,0,1.9999894,0.33351906,0.33173249)">
+ <path d="m 17.441 7.176 c -0.105 0 -0.219 0.027 -0.316 0.094 -0.098 0.063 -0.184 0.176 -0.18 0.32 0.016 0.051 0.008 0.098 0.004 0.156 0 0.156 0.133 0.289 0.293 0.289 0.16 0 0.289 -0.133 0.289 -0.289 0 -0.16 -0.125 -0.293 -0.285 -0.297 0.055 -0.035 0.137 -0.055 0.195 -0.055 0.23 0 0.398 0.129 0.523 0.324 0.125 0.195 0.188 0.457 0.184 0.668 -0.012 0.527 -0.27 0.973 -0.66 1.313 -0.383 0.34 -0.895 0.57 -1.379 0.664 l 0.039 0.211 c 0.523 -0.094 1.066 -0.34 1.488 -0.711 0.422 -0.371 0.719 -0.875 0.734 -1.477 0 -0.254 -0.066 -0.547 -0.219 -0.785 c -0.152 -0.242 -0.395 -0.426 -0.711 -0.426" style="fill:#ec7878"/>
+ <path d="m 14.227 7.176 c 0.102 0 0.215 0.027 0.316 0.094 0.094 0.063 0.18 0.176 0.176 0.32 -0.012 0.051 -0.004 0.098 -0.004 0.156 0 0.156 -0.129 0.289 -0.289 0.289 -0.16 0 -0.293 -0.133 -0.293 -0.289 0 -0.16 0.129 -0.293 0.289 -0.297 -0.059 -0.035 -0.137 -0.055 -0.195 -0.055 -0.23 0 -0.402 0.129 -0.527 0.324 -0.121 0.195 -0.184 0.457 -0.18 0.668 0.008 0.527 0.27 0.973 0.656 1.313 0.383 0.34 0.895 0.57 1.383 0.664 l -0.039 0.211 c -0.527 -0.094 -1.07 -0.34 -1.488 -0.711 -0.422 -0.371 -0.723 -0.875 -0.734 -1.477 -0.004 -0.254 0.066 -0.547 0.219 -0.785 0.148 -0.242 0.395 -0.426 0.711 -0.426 z" style="fill:#ec7878"/>
+ <path d="m 15.613 9.285 c -1.246 0.055 -2.453 0.664 -3.258 1.609 -0.414 0.453 -0.805 0.961 -0.984 1.559 0.004 0.098 0.039 0.188 0.063 0.277 -0.266 0.02 -0.598 -0.016 -0.781 0.219 -0.336 0.371 -0.414 0.887 -0.582 1.34 -0.75 2.602 -0.363 5.566 1.238 7.777 0.867 1.188 2.16 2.129 3.641 2.371 0.25 0.023 0.531 0.09 0.762 -0.039 0.082 -0.074 0.207 -0.051 0.277 0.023 0.313 0.16 0.66 0.004 0.977 -0.035 1.516 -0.336 2.813 -1.371 3.629 -2.668 1.504 -2.328 1.758 -5.379 0.824 -7.977 -0.125 -0.309 -0.25 -0.641 -0.492 -0.879 c -0.164 -0.113 -0.371 -0.152 -0.566 -0.164 0.125 -0.262 0.043 -0.574 -0.148 -0.781 -0.68 -1.113 -1.688 -2.074 -2.957 -2.453 -0.535 -0.148 -1.09 -0.184 -1.641 -0.18" style="fill:#ec7878"/>
+ <path d="m 15.777 9.59 c -0.008 0 -0.016 0 -0.023 0.004 -0.438 0.031 -0.883 0.074 -1.301 0.223 -1.191 0.414 -2.098 1.383 -2.723 2.461 -0.094 0.164 -0.027 0.395 0.164 0.41 1.336 0.004 2.668 0 4 0.004 0 0 0 0 0.004 0 1.336 -0.004 2.668 0 4 -0.004 0.191 -0.016 0.258 -0.246 0.16 -0.41 -0.625 -1.078 -1.531 -2.047 -2.723 -2.461 c -0.418 -0.148 -0.863 -0.191 -1.301 -0.223 c -0.109 -0.012 -0.09 0.027 -0.141 0.027 -0.055 -0.004 -0.031 -0.035 -0.125 -0.031 z" style="fill:#ec7878"/>
+ <path d="m 16.738 13.02 c -0.391 0 -0.707 0.32 -0.707 0.715 l 0 10.168 c 0 0.145 0 0.25 0.191 0.27 2.984 -0.164 5.43 -3.352 5.43 -7.25 0 -1.285 -0.258 -2.492 -0.711 -3.539 0 0 -0.004 0 -0.004 0 -0.008 -0.023 -0.016 -0.047 -0.027 -0.07 0 -0.004 0 -0.004 0 -0.008 -0.086 -0.172 -0.258 -0.285 -0.453 -0.285 z" style="fill:#ec7878"/>
+ <path d="m 14.93 13.02 c 0.391 0 0.707 0.32 0.707 0.715 l 0 10.168 c 0 0.145 0 0.25 -0.191 0.27 -2.984 -0.164 -5.434 -3.352 -5.434 -7.25 0 -1.285 0.258 -2.492 0.715 -3.539 0 0 0.004 0 0.004 0 0.004 -0.023 0.016 -0.047 0.023 -0.07 0 -0.004 0.004 -0.004 0.004 -0.008 0.086 -0.172 0.254 -0.285 0.453 -0.285 z" style="fill:#ec7878"/>
+ <g style="fill:#ec7878;fill-rule:evenodd">
+ <path d="m 11.676 13.32 -0.453 0.559 -0.715 -0.051 0.395 0.598 -0.273 0.668 0.691 -0.188 0.551 0.465 0.035 -0.719 0.613 -0.379 -0.672 -0.258 z m 2.246 0.68 l -0.379 1.918 -1.797 0.773 1.703 0.953 0.18 1.945 1.438 -1.324 1.906 0.43 -0.816 -1.773 0.996 -1.68 -1.941 0.23 z m 5.859 0.887 -0.449 0.559 -0.719 -0.051 0.395 0.602 -0.27 0.664 0.691 -0.188 0.547 0.465 0.035 -0.719 l 0.613 -0.379 -0.676 -0.254 m -8.828 2.734 -0.547 1.105 -0.508 0.074 c 0.18 0.613 0.422 1.207 0.734 1.766 l 0.32 -0.168 1.09 0.57 -0.207 -1.211 0.875 -0.859 -1.215 -0.172 z m 8.941 0.105 -1.082 1.227 -1.621 -0.191 0.836 1.402 -0.684 1.484 1.594 -0.359 0.75 0.691 c 0.199 -0.215 0.383 -0.441 0.551 -0.68 l 0.051 -0.531 0.43 -0.242 c 0.145 -0.262 0.273 -0.535 0.391 -0.813 l -0.898 -0.387 z m -5.371 3.313 -0.449 0.559 -0.719 -0.051 0.395 0.602 -0.273 0.668 0.695 -0.188 0.547 0.461 0.035 -0.715 0.613 -0.383 -0.676 -0.254 z"/>
+ <path d="m 20.91 18.762 c 0 1.125 -2.215 2.039 -4.953 2.039 -2.734 0 -4.953 -0.914 -4.953 -2.039 0 -1.125 2.219 -2.035 4.953 -2.035 2.738 0 4.953 0.91 4.953 2.035 z" style="fill-opacity:0.902"/>
+ </g>
+ <path d="m 12.293 22.418 c 0.789 0.813 1.82 1.398 2.953 1.523 0.07 0.023 0.211 0.016 0.176 -0.09 -0.004 -0.246 -0.008 -0.496 -0.008 -0.742 0.004 -0.152 0.004 -0.125 -0.113 -0.051 -1.168 0.707 -2.156 -0.152 -3.01 -0.641 z m 7.04 0.055 c -0.848 0.488 -1.84 1.348 -3.01 0.641 -0.113 -0.074 -0.113 -0.102 -0.109 0.051 0 0.246 -0.004 0.496 -0.012 0.742 -0.035 0.105 0.105 0.113 0.176 0.09 1.133 -0.121 2.164 -0.711 2.953 -1.523 z" style="fill:#ec7878;fill-opacity:0.459"/>
+ <g style="fill:#ec7878;fill-rule:evenodd">
+ <path d="m 18.988 12 c 0 1.383 -1.395 2.5 -3.113 2.5 -1.719 0 -3.113 -1.117 -3.113 -2.5 0 -1.379 1.395 -2.496 3.113 -2.496 1.719 0 3.113 1.117 3.113 2.496 z"/>
+ <path d="m 14.602 7.664 c 0 0.098 -0.078 0.176 -0.172 0.176 -0.094 0 -0.168 -0.078 -0.168 -0.176 0 -0.098 0.074 -0.18 0.168 -0.18 0.094 0 0.172 0.082 0.172 0.18 z"/>
+ <path d="m 17.406 7.664 c 0 0.098 -0.074 0.176 -0.168 0.176 -0.098 0 -0.176 -0.078 -0.176 -0.176 0 -0.098 0.078 -0.18 0.176 -0.18 0.094 0 0.168 0.082 0.168 0.18 z"/>
+ </g>
+ </g>
+ <path d="m 53 31.996 c 0 11.611 -9.401 21 -20.992 21 -11.606 0 -21.01 -9.393 -21.01 -21 0 -11.595 9.401 -20.996 21.01 -20.996 11.591 0 20.992 9.401 20.992 20.996 z" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#ec7878;stroke-linecap:round;stroke-linejoin:round;stroke-width:2"/>
+ <path d="m 32 6.03 0 51.943" style="stroke-dasharray:none;stroke-opacity:1;fill:none;stroke-miterlimit:4;stroke:#ec7878;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:miter;stroke-width:4"/>
+ <path d="m 57.972 32 -51.943 0" style="stroke-dasharray:none;stroke-opacity:1;fill:none;stroke-miterlimit:4;stroke:#ec7878;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:miter;stroke-width:4"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-development.svg b/img/icons/Numix/categories/applications-development.svg
new file mode 100644
index 00000000..b7a918a2
--- /dev/null
+++ b/img/icons/Numix/categories/applications-development.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="matrix(1.4558451,0,0,1.4556622,-2.1693614,-1.6089133)">
+ <path d="m 13.414 7.259 6.389 9.336 -2.828 2.828 -9.332 -6.385 a 10 10 0 0 0 2.261 10.627 10 10 0 0 0 14.14 0 10 10 0 0 0 0 -14.14 10 10 0 0 0 -10.631 -2.265 z" style="fill:#4793db;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)" y="32.737" x="-3.231" height="20" width="7" style="fill:#4793db;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/applications-drawing.svg b/img/icons/Numix/categories/applications-drawing.svg
new file mode 100644
index 00000000..44d137df
--- /dev/null
+++ b/img/icons/Numix/categories/applications-drawing.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g style="fill:#f2469c">
+ <path d="m 50.668 12.137 l -23.16 32.09 c -1.871 -0.027 -4.43 -1.504 -5.688 -2.902 l 25.695 -30.555 c 1.727 -0.32 2.777 0.141 3.156 1.371 Z"/>
+ <path d="m 22.18 49.12 c 2.688 -0.281 6.852 -2.957 4.906 -6.832 c -4.66 -1.043 -3.602 -1.57 -3.602 -1.57 c -6.406 1.199 -11.273 6.914 -9.934 10.547 c 0.852 2.301 0.711 2.066 0.711 2.066 c 1.773 -4.453 1.809 -3.637 7.918 -4.211 Z"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/applications-education.svg b/img/icons/Numix/categories/applications-education.svg
new file mode 100644
index 00000000..0343ecd3
--- /dev/null
+++ b/img/icons/Numix/categories/applications-education.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 5.333 22.667 26.667 -10.667 26.667 10.667 -26.667 10.667" style="fill:#89939b;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <ellipse cx="32" cy="46" rx="14" ry="6" style="fill:#89939b;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 18 30.965 0 15.04 28 0 0 -15.04 -14 5.598 -14 -5.598" style="fill:#89939b;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect width="2" height="10" x="52" y="24" style="fill:#89939b;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <circle cx="53" cy="35.5" r="2.5" style="fill:#89939b;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 52.33 37.4 -1.333 4.6 l 4 0 -1.333 -4.6 z" style="fill:#89939b;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-electronics.svg b/img/icons/Numix/categories/applications-electronics.svg
new file mode 100644
index 00000000..fe3bd731
--- /dev/null
+++ b/img/icons/Numix/categories/applications-electronics.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 9 6 0 16 -3 0 0 5 3 0 0 5 -3 0 0 5 3 0 0 18 -3 0 0 3 6 0 0 -9 46 0 0 -34 -46 0 0 -9 z m 3 12 43 0 0 28 -43 0 z m 23 3 0 6 17 0 0 -6 z m -20 0 0 6 17 0 0 -6 z m 0 9 0 3 37 0 0 -3 z m 0 6 0 3 37 0 0 -3 m -37 5 l 0 2 5 0 0 -2 z m 6 0 0 2 4 0 0 -2 z m 5 0 0 2 3 0 0 -2 z m 4 0 0 2 3 0 0 -2 z m 9 0 0 2 5 0 0 -2 z m 7 0 0 2 6 0 0 -2 z" style="fill:#92a990"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-engineering.svg b/img/icons/Numix/categories/applications-engineering.svg
new file mode 100644
index 00000000..7f9a56d4
--- /dev/null
+++ b/img/icons/Numix/categories/applications-engineering.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 38.527 6.666 -14.563 2.828 -0.076 0.044 c -0.543 0.313 -0.888 0.817 -1.047 1.393 -0.159 0.577 -0.174 2.401 -0.174 2.401 l 12 0 0 -1.333 1.333 0 0 6.667 -1.333 0 0 -1.333 -12 0 c 0 0 0.015 1.824 0.174 2.401 0.159 0.577 0.504 1.08 1.047 1.393 l 0.076 0.044 10.505 2.034 c 0.07 0.04 0.111 0.071 0.138 0.128 0.032 0.067 0.06 0.198 0.06 0.406 l 0 5.245 -0.273 0 c -0.826 0 -1.508 0.682 -1.508 1.508 0 0.826 0.682 1.508 1.508 1.508 l 1.607 0 0 21.334 2.667 0 0 3.521 c -0.001 0.263 0.194 0.479 0.435 0.479 l 0.464 0 c 0.241 -0.001 0.436 -0.216 0.435 -0.479 l 0 -3.521 2.667 0 0 -21.334 1.333 0 0 -6.667 1.333 0 0 0.583 c 0 0.415 0.297 0.75 0.667 0.75 l 1.333 0 c 0.369 0 0.667 -0.335 0.667 -0.75 l 0 -3.833 c 0 -0.415 -0.297 -0.75 -0.667 -0.75 l -1.333 0 c -0.369 0 -0.667 0.335 -0.667 0.75 l 0 0.583 -1.333 0 0 -4 -1.333 0 0 -1.333 6.667 0 c 0 -2 -4 -4 -6 -4 2 0 6 -2 6 -4 l -6.667 0 0 -2.667 -4.141 0 z" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#6fad64;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:nonzero;color-rendering:auto;color-interpolation:sRGB"/>
+ <path d="m 32 36.11 c -2.645 0 -5.29 0.678 -7.659 2.034 -3.95 2.261 -6.618 6.144 -7.406 10.524 l -2.935 0 c -0.369 0 -0.667 0.297 -0.667 0.667 l 0 4 c 0 0.369 0.297 0.667 0.667 0.667 0.667 0 24.474 0 36 0 0.369 0 0.667 -0.297 0.667 -0.667 l 0 -4 c 0 -0.369 -0.297 -0.667 -0.667 -0.667 l -2.935 0 c -0.788 -4.38 -3.456 -8.263 -7.406 -10.524 -2.369 -1.356 -5.01 -2.034 -7.659 -2.034 z m 0 5.333 c 1.729 0 3.458 0.444 5.01 1.331 2.296 1.314 3.919 3.444 4.612 5.893 l -19.24 0 c 0.693 -2.449 2.316 -4.579 4.612 -5.893 1.55 -0.887 3.279 -1.331 5.01 -1.331 z" style="fill:#6fad64;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-filesharing.svg b/img/icons/Numix/categories/applications-filesharing.svg
new file mode 100644
index 00000000..19399e5c
--- /dev/null
+++ b/img/icons/Numix/categories/applications-filesharing.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="M 31.996366,57 15,40 26,40 26,24 15,24 31.996366,7 49,24 l -11,0 0,16 11,0 z" style="fill:#62abb4"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-fonts.svg b/img/icons/Numix/categories/applications-fonts.svg
new file mode 100644
index 00000000..ded3cac4
--- /dev/null
+++ b/img/icons/Numix/categories/applications-fonts.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="matrix(0.25554213,0,0,0.24509133,0.36160648,51.098396)">
+ <g transform="scale(1.00462,0.9954)" style="fill:#6eb3c8">
+ <path d="m 107.66 -160.26 0 73.78 62.32 0 0 16.676 -62.32 0 0 58.54 c 0 4.306 0.583 8.408 1.749 11.01 1.256 2.602 2.871 4.62 4.845 6.06 2.064 1.346 4.486 2.243 7.267 2.692 2.781 0.449 5.697 0.673 8.747 0.673 l 8.553 0 0 10.926 -85.7 0 0 -10.926 0.763 0 c 3.05 0 5.921 -0.179 8.613 -0.538 2.781 -0.449 5.204 -1.301 7.267 -2.557 2.064 -1.256 3.678 -3.095 4.845 -5.518 1.256 -2.512 1.884 -6.434 1.884 -10.472 l 0 -136.46 c 0 -4.04 -0.628 -7.91 -1.884 -10.332 -1.166 -2.512 -2.781 -4.441 -4.845 -5.787 -2.064 -1.346 -4.486 -2.198 -7.267 -2.557 -2.692 -0.449 -5.429 -0.673 -8.613 -0.673 l -0.763 0 0 -10.931 140.23 0 0 49.19 -14.265 0 -1.346 -10.182 c -0.359 -3.14 -1.077 -6.06 -2.153 -8.748 -1.077 -2.781 -2.647 -5.159 -4.71 -7.133 -1.974 -2.064 -4.486 -3.678 -7.536 -4.845 -3.05 -1.256 -6.729 -1.884 -11.04 -1.884 z"/>
+ </g>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/applications-games.svg b/img/icons/Numix/categories/applications-games.svg
new file mode 100644
index 00000000..dde896f8
--- /dev/null
+++ b/img/icons/Numix/categories/applications-games.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 25.25 16 c -3.252 0 -4.583 0.292 -5.621 0.596 -1.617 0.474 -3.269 1.323 -4.305 2.652 -6.06 7.785 -10.01 26.22 -8.914 28.23 1.092 2.02 10.92 -2.01 16.07 -9.756 0.391 -0.579 1.109 -1.727 1.109 -1.727 l 16.82 0 c 0 0 0.718 1.148 1.109 1.727 5.151 7.751 14.978 11.777 16.07 9.756 c 1.092 -2.01 -2.849 -20.448 -8.914 -28.23 -1.036 -1.329 -2.688 -2.178 -4.305 -2.652 -1.038 -0.305 -2.369 -0.596 -5.621 -0.596 m 3.289 5.136 c 0.876 0.033 1.628 0.634 1.855 1.481 0.288 1.068 -0.345 2.167 -1.414 2.453 -1.068 0.285 -2.165 -0.35 -2.449 -1.418 -0.286 -1.067 0.347 -2.163 1.414 -2.449 0.193 -0.052 0.394 -0.074 0.594 -0.066 z m -22.04 0.863 2 0 0 4 4 0 0 2 -4 0 0 4 -2 0 0 -4 -4 0 0 -2 4 0 z m 26.941 1.965 c 0.877 0.034 1.63 0.636 1.855 1.484 0.286 1.067 -0.347 2.163 -1.414 2.449 -1.068 0.288 -2.167 -0.345 -2.453 -1.414 -0.288 -1.069 0.348 -2.169 1.418 -2.453 0.193 -0.052 0.394 -0.074 0.594 -0.066 z m -7.73 2.07 c 0.877 0.034 1.63 0.636 1.855 1.484 0.286 1.067 -0.347 2.163 -1.414 2.449 -1.067 0.286 -2.163 -0.347 -2.449 -1.414 -0.286 -1.067 0.347 -2.163 1.414 -2.449 0.193 -0.053 0.393 -0.077 0.594 -0.07 z m 4.699 2.832 c 0.951 -0.06 1.813 0.559 2.059 1.481 0.285 1.068 -0.35 2.165 -1.418 2.449 -1.067 0.286 -2.163 -0.347 -2.449 -1.414 -0.286 -1.067 0.347 -2.163 1.414 -2.449 0.129 -0.035 0.261 -0.058 0.395 -0.066 z" style="fill:#d64c62"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-geography.svg b/img/icons/Numix/categories/applications-geography.svg
new file mode 100644
index 00000000..218e9e76
--- /dev/null
+++ b/img/icons/Numix/categories/applications-geography.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 31.994 8 c -6.366 0 -12.38 2.502 -16.927 7.04 -4.551 4.545 -7.07 10.553 -7.07 16.921 0 13.252 10.762 24.04 23.994 24.04 13.236 0 24.01 -10.784 24.01 -24.04 0 -13.21 -10.769 -23.964 -24.01 -23.964 m 0 0.986 c 12.687 0 23.01 10.31 23.01 22.978 0 12.71 -10.326 23.05 -23.01 23.05 -12.683 0 -23 -10.341 -23 -23.05 0 -6.103 2.406 -11.861 6.772 -16.22 4.362 -4.352 10.129 -6.759 16.23 -6.759 z" style="fill:#78b2a3"/>
+ <g transform="matrix(0.97007973,0,0,0.97038616,1.2814402,1.2717363)">
+ <g>
+ <path d="m 24.04 11.11 c -0.117 0 -0.242 0.047 -0.363 0.117 0.293 -0.09 0.434 -0.117 0.363 -0.117 m 7.391 1.438 0.07 -1.078 -1.141 0.07 0.152 1.01 0.918 0 m -12.879 18.688 c -0.227 -0.215 -0.078 -1.152 -0.078 -1.152 0 0 -3.426 -1.805 -7.16 -2.891 -0.457 -0.133 -0.223 -1.082 0.227 -1.441 l -0.148 -1.01 c -0.078 -0.508 0.762 -2.961 1.602 -3.176 0.84 -0.215 -0.078 1.445 -0.078 1.445 l -0.836 0.5 c 0 0 0.992 1.16 1.219 1.16 0.227 0 0.613 -0.582 0.613 -0.582 l -1.07 -0.723 0.992 -0.43 0.063 -0.383 0.164 -0.051 1.641 -2.48 c 1.133 -0.469 2.527 -1.043 2.703 -1.129 0.305 -0.141 2.441 -1.367 2.816 -1.652 0.387 -0.293 1.219 -0.215 1.523 -0.215 0.309 0 0.762 -0.148 0.84 -0.945 0.074 -0.793 0.379 -0.938 0.605 -0.715 0.234 0.207 -0.227 0.574 0.309 0.715 0.531 0.145 0.988 0.508 1.371 0.145 0.281 -0.262 -0.098 -0.559 -0.344 -0.789 l 4.23 0 0.457 -1.301 -0.988 -0.145 -3.66 -0.363 0 -0.43 -0.293 0.051 c 0.398 -2.18 2.746 -1.816 0.977 -3.078 c -0.105 -0.078 -1.652 2.441 -2.051 2.391 -0.711 -0.094 -1.633 -0.098 -1.828 0.129 -0.262 0.313 0.578 -1.055 1.309 -1.465 -0.867 0.254 -2.422 -0.535 -5.223 1.445 -0.949 0.672 -3.328 3.387 -4.309 4.426 -4.137 4.883 -4.469 9.06 -4.469 9.238 0 0.367 0.879 0.566 0.953 1 0.078 0.43 -1.445 1.875 -1.445 2.59 0 0.332 -0.762 3.934 0.91 8.438 1.484 4.277 4.363 8.05 4.734 8.281 l 1.055 -0.559 c 0 0 -1.754 -3.098 -1.824 -3.391 -0.078 -0.289 1.98 -4.473 2.969 -4.324 0.988 0.137 0.762 0.43 1.375 0.07 0.605 -0.355 0.988 -3.32 1.672 -3.605 0.691 -0.293 1.445 -0.652 1.375 -1.375 c -0.078 -0.723 -2.672 -2.02 -2.898 -2.23 m 16.535 -21.21 -2.055 -0.723 l 0.375 1.152 1.68 -0.43 m -7.695 2.664 c 0.23 0 4.801 -3.03 4.344 -3.098 -0.457 -0.074 -0.535 0 -1.758 -0.145 -1.219 -0.145 -2.512 1.73 -2.82 2.02 -0.297 0.293 -0.199 1.223 0.234 1.223 m 20.973 21.75 0.59 -0.762 -0.59 -0.207 -0.438 0.555 -0.52 0.762 l 0.441 0.207 0.516 -0.555 m 2.582 2.508 -0.148 -1.113 -0.957 0 -0.07 0.832 -0.887 -0.137 -0.223 -0.902 -0.441 -0.281 -0.52 0.625 -0.516 -0.137 -0.148 0.48 0.59 0.145 0 4.52 2.09 0.5 c -0.051 0.086 -0.082 0.156 -0.098 0.188 -0.148 0.488 0.586 0.703 1.109 0.488 0.188 -0.07 1.391 -0.539 1.77 -1.445 0.535 -1.262 0.879 -3.086 0.969 -3.672 l -0.234 -0.508 -1.477 0.555 -0.813 -0.137 0.004 0 m -0.742 -18.504 c -3.371 -5.109 -11.477 -8.457 -11.477 -8.457 l -2.082 1.094 -0.301 -0.48 -0.734 -0.281 0 0.625 0.664 0.563 -0.445 0.207 -1.691 0.137 -3.836 2.082 0.367 1.676 -0.445 0.137 -0.215 0.344 1.25 1.875 0.074 0.633 -1.031 0.207 0 1.25 -0.59 0.137 0.078 0.977 -5.02 3.477 0.148 1.941 c 0.371 0.488 3.242 3.41 3.242 3.41 c 0 0 3.32 0.137 4.055 -0.281 0.742 -0.414 0.223 0.418 0.445 0.625 0.219 0.211 0.297 1.668 0.512 1.813 0.23 0.137 0 0.969 0.301 1.25 0.293 0.277 0.293 3.613 0.293 3.613 0 0 1.77 2.988 1.77 3.754 0 0.762 -0.078 0.691 1.328 0.625 1.402 -0.07 1.695 -0.625 1.992 -0.832 0.293 -0.207 0.293 -0.695 0.586 -1.113 0.301 -0.418 0.816 -2.01 1.48 -2.57 0.664 -0.563 2.434 -0.977 2.578 -1.949 0.148 -0.977 0.813 -1.738 0.813 -1.738 l 3.184 -3.371 l -0.086 0.457 -0.078 1.738 0.965 -0.352 -0.078 -1.875 -0.34 -0.367 0.047 -0.051 c 0 0 -0.223 -0.418 -0.516 -0.418 -0.293 0 -2.063 0.418 -2.363 0.348 -0.293 -0.074 -1.543 -3.406 -1.762 -3.543 -0.23 -0.145 -1.629 -2.434 -1.629 -2.434 0 0 3.25 3.891 3.762 5.422 0.301 0.887 1.426 0.059 2.344 -0.871 l 0.242 0.59 0.586 -0.137 -0.07 -0.695 0.664 0 0 1.043 -0.223 0.559 -0.078 0.898 0.594 0.559 0.293 -0.488 0.957 -0.902 1.105 -0.555 0.293 0.555 0.148 0.766 -0.293 0.836 -0.59 0.488 -0.293 1.25 0 0.625 -0.664 -0.418 -0.074 -1.32 -0.961 0.07 -0.438 1.18 0.664 0.977 1.543 0.207 1.258 -1.184 0.141 -2.285 0.563 -0.742 c 0.363 0.938 0.625 1.914 0.625 2.824 0 0.996 0.785 -0.508 0.402 -3.547 0 -0.008 -0.613 -7.234 -3.953 -10.582 z m -14.746 2.996 -3.977 -0.137 1.691 -1.395 0.887 0 1.398 0.977 0 0.555 m 4.871 -0.48 0 0.625 -1.691 0 0.141 0.414 -1.027 0.137 -0.078 0.348 -0.734 -0.137 -1.328 -0.273 0.219 -0.352 0.223 -0.418 0.742 -0.77 0.293 0.563 1.105 -0.074 0.586 -0.625 2.293 0.418 -0.742 0.145 m 0.145 -0.906 -0.879 0.137 -0.152 -0.625 1.109 -0.137 0.148 -0.633 0.809 0.84 -1.035 0.418 m 4.281 21.613 -0.52 0.426 0.07 1.039 0.664 0 0 -0.902 0.594 -0.77 0 -1.594 -0.371 -0.074 -0.438 1.875 m -4.941 -2.082 c 0 0 -0.52 0.137 0.074 0.352 0.586 0.207 2.949 -3.406 2.949 -3.406 l -1.992 1.25 -1.031 1.805 m -4.02 13.328 -0.441 -0.426 -0.879 -0.137 -0.152 0.426 -1.176 -0.145 -0.078 -0.559 -0.887 0 -0.957 0.559 -1.691 0 -0.152 -0.418 -2.719 -0.285 -0.445 0.422 -1.105 -0.277 -0.148 -0.977 -0.516 -0.078 -0.594 1.055 -1.984 -0.074 c 0.359 0.172 3.328 1.941 7.883 2.313 6.04 0.488 8.922 -0.977 8.922 -0.977 l -0.223 -0.215" style="fill:#78b2a3"/>
+ </g>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/applications-geology.svg b/img/icons/Numix/categories/applications-geology.svg
new file mode 100644
index 00000000..d71d0262
--- /dev/null
+++ b/img/icons/Numix/categories/applications-geology.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="matrix(2.0993263,0,0,2.1014591,-1.2653365,-1.2744804)" style="fill:#a47854;stroke:#a47854;fill-rule:evenodd;stroke-linejoin:round;stroke-width:1">
+ <path transform="scale(0.1237,0.1237)" d="m 30.726 148.2 c 38.27 -0.537 53.778 -5.242 65.53 -8.874 11.779 -3.663 29.21 -11.495 29.21 -11.495 l 44.02 89.84 -138.76 0 z" style="stroke-width:5.421"/>
+ <path transform="scale(0.1237,0.1237)" d="m 157.29 182.08 c 0 0 -19.768 10.958 -25.452 13.737 -7.863 3.821 -21.41 14.12 -45.16 21.473 l -55.641 0 0 -43.894 c 32.15 -1.01 55.29 -1.989 69.69 -8.02 14.368 -6.03 41.462 -20.08 41.462 -20.08 z" style="stroke-width:6.126"/>
+ <path transform="scale(0.1237,0.1237)" d="m 132.53 142.2 c 20.842 -20.905 14.779 -27.16 35.936 -28.989 21.16 -1.8 56.81 14.08 56.81 14.08 l 0 90.31 -55.799 0 z" style="stroke-width:5.421"/>
+ <path transform="scale(0.1237,0.1237)" d="m 224.62 184.1 c 0 0 -4.989 -2.621 -11.463 -5.368 -6.379 -2.653 -11.495 -3.979 -23.08 -0.663 -7.831 2.242 -14.368 7.231 -27.726 17.273 l -17.12 -43.04 c 13.295 -11.968 23.779 -20.4 37.14 -21.41 13.389 -1.01 24.41 1.358 31.14 4.674 6.695 3.347 10.452 5.684 10.452 5.684 z" style="stroke-width:6.126"/>
+ </g>
+ <path d="m 7.617 7 48.766 0 c 0.337 0 0.617 0.28 0.617 0.617 l 0 48.766 c 0 0.337 -0.28 0.617 -0.617 0.617 l -48.766 0 c -0.337 0 -0.617 -0.28 -0.617 -0.617 l 0 -48.766 c 0 -0.337 0.28 -0.617 0.617 -0.617" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#a47854;stroke-linecap:round;stroke-width:2"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-graphics.svg b/img/icons/Numix/categories/applications-graphics.svg
new file mode 100644
index 00000000..e1bad822
--- /dev/null
+++ b/img/icons/Numix/categories/applications-graphics.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g style="fill:#4ea34d">
+ <path d="m 31.488 21.758 c -10.152 0.449 -20.03 5.398 -15.832 15.422 c 6.117 -2.301 14.633 1.129 11.09 2.828 c 6.969 5.738 24.18 -3.527 22.465 -11.41 c -1.777 -4.801 -9.832 -7.188 -17.727 -6.84 m -0.27 2.832 c 2.117 0 3.832 0.566 3.832 1.262 c 0 0.699 -1.715 1.266 -3.832 1.266 c -2.121 0 -3.836 -0.566 -3.836 -1.266 c 0 -0.695 1.715 -1.262 3.836 -1.262 m 9.469 2.09 c 2.117 0 3.836 0.566 3.836 1.266 c 0 0.695 -1.719 1.262 -3.836 1.262 c -2.117 0 -3.832 -0.566 -3.832 -1.262 c 0 -0.699 1.715 -1.266 3.832 -1.266 m -17.41 1.918 c 2.117 0 3.836 0.566 3.836 1.262 c 0 0.699 -1.719 1.266 -3.836 1.266 c -2.117 0 -3.832 -0.566 -3.832 -1.266 c 0 -0.695 1.715 -1.262 3.832 -1.262 m 17.32 3.309 c 2.117 0 3.836 0.566 3.836 1.266 c 0 0.695 -1.719 1.262 -3.836 1.262 c -2.117 0 -3.832 -0.566 -3.832 -1.262 c 0 -0.699 1.715 -1.266 3.832 -1.266 m -6.676 4.793 c 2.117 0 3.836 0.566 3.836 1.262 c 0 0.699 -1.719 1.266 -3.836 1.266 c -2.117 0 -3.832 -0.566 -3.832 -1.266 c 0 -0.695 1.715 -1.262 3.832 -1.262 Z"/>
+ <path d="m 45.949 12.145 l -18.816 31.477 c -1.469 -0.031 -2.832 -0.727 -3.82 -2.133 l 20.16 -30.723 c 1.355 -0.32 2.18 0.141 2.477 1.379 Z"/>
+ <path d="m 23.2 49.1 c 2.109 -0.285 5.379 -2.977 3.852 -6.875 c -3.656 -1.047 -2.828 -1.574 -2.828 -1.574 c -5.02 1.203 -8.84 6.949 -7.789 10.602 c 0.664 2.316 0.555 2.078 0.555 2.078 c 1.395 -4.477 1.418 -3.656 6.211 -4.23 Z"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/applications-haskell.svg b/img/icons/Numix/categories/applications-haskell.svg
new file mode 100644
index 00000000..0fb2d132
--- /dev/null
+++ b/img/icons/Numix/categories/applications-haskell.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 6.498 50 12 -18 -12 -18 8.996 0 12 18 -12 18" style="fill:#4eb09d"/>
+ <path d="m 18.498 50 12 -18 -12 -18 8.996 0 24.01 36 -9 0 -7.498 -11.243 -7.506 11.243" style="fill:#4eb09d"/>
+ <path d="m 47.49 39.5 -3.996 -6 14.503 0 0 6 z" style="fill:#4eb09d"/>
+ <path d="m 41.499 30.5 -3.996 -6 20.497 0 0 6 z" style="fill:#4eb09d"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-ide.svg b/img/icons/Numix/categories/applications-ide.svg
new file mode 100644
index 00000000..453ebfeb
--- /dev/null
+++ b/img/icons/Numix/categories/applications-ide.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 52.52 6.934 c -0.754 0.066 -1.512 0.441 -2.121 1.035 l -13.629 11.848 c -0.586 0.566 -0.91 1.367 -0.91 2.176 c 0 0.391 0.086 0.742 0.227 1.086 c 0.008 0.02 -0.004 0.047 0 0.059 c -0.508 1.082 -0.344 2.586 -0.344 5.84 c 0 1.199 -3.117 2.461 -3.895 2.461 c -0.039 0 -0.078 0 -0.117 0 c -2.473 0 -10.512 0.371 -12.992 3.785 c -2.48 3.41 -11.797 18.91 -11.797 21.18 c 3.715 0 30.734 -13.504 32.12 -14.773 c 1.672 -1.535 0.852 -4.633 -0.227 -6.699 c 0.004 -0.004 -0.008 -0.043 0 -0.059 c 0.023 -0.07 0.039 -0.18 -0.059 -0.344 c -0.582 -0.969 -0.918 -1.953 -0.918 -3.32 c 0 -3.035 0.316 -4.707 0.977 -5.664 c 1.457 0.246 3.578 -0.461 4.523 -1.375 l 11.965 -11.398 c 1.219 -1.172 1.504 -2.941 0.289 -4.121 l -0.977 -0.969 c -0.605 -0.594 -1.367 -0.809 -2.117 -0.742 Z" style="fill:#cc7d6f"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-interfacedesign.svg b/img/icons/Numix/categories/applications-interfacedesign.svg
new file mode 100644
index 00000000..185a308b
--- /dev/null
+++ b/img/icons/Numix/categories/applications-interfacedesign.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 7.617 7 48.766 0 c 0.345 0 0.617 0.276 0.617 0.617 l 0 48.766 c 0 0.345 -0.271 0.617 -0.617 0.617 l -48.766 0 c -0.341 0 -0.617 -0.271 -0.617 -0.617 l 0 -48.766 c 0 -0.341 0.276 -0.617 0.617 -0.617" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#88b485;stroke-linecap:round;stroke-width:2"/>
+ <path d="m 16 28 8 0 l 0 8 -8 0" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#88b485;stroke-linecap:round;stroke-linejoin:round;stroke-width:2"/>
+ <path d="m 48 32 c 0 2.206 -1.792 3.998 -4.01 3.998 -2.206 0 -3.994 -1.792 -3.994 -3.998 c 0 -2.214 1.788 -4 3.994 -4 2.214 0 4.01 1.788 4.01 4 z" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#88b485;stroke-linecap:round;stroke-linejoin:round;stroke-width:2"/>
+ <path d="m 17.749 14 28.51 0 c 0.967 0 1.741 0.879 1.741 1.985 l 0 4.03 c 0 1.101 -0.774 1.981 -1.741 1.981 l -28.51 0 c -0.967 0 -1.749 -0.879 -1.749 -1.981 l 0 -4.03 c 0 -1.105 0.782 -1.985 1.749 -1.985 z" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#88b485;stroke-linecap:round;stroke-linejoin:round;stroke-width:2"/>
+ <path d="m 45.75 32 c 0 0.961 -0.783 1.75 -1.754 1.75 c -0.963 0 -1.746 -0.789 -1.746 -1.75 c 0 -0.961 0.783 -1.75 1.746 -1.75 0.97 0 1.754 0.789 1.754 1.75 z" style="stroke-dasharray:none;fill:#88b485;stroke-miterlimit:4;fill-rule:evenodd;stroke-width:2"/>
+ <path d="m 37 14 0 8 8.587 0 c 1.344 0 2.413 -1.097 2.413 -2.468 l 0 -3.044 c 0 -1.371 -1.069 -2.488 -2.413 -2.488 z" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#88b485;stroke-linecap:round;stroke-linejoin:round;stroke-width:2"/>
+ <path d="m 16 42 8 0 l 0 8 -8 0" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#88b485;stroke-linecap:round;stroke-linejoin:round;stroke-width:2"/>
+ <path d="m 48 45.998 c 0 2.214 -1.792 4 -4.01 4 -2.206 0 -3.994 -1.788 -3.994 -4 c 0 -2.206 1.788 -3.998 3.994 -3.998 2.214 0 4.01 1.792 4.01 3.998 z" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#88b485;stroke-linecap:round;stroke-linejoin:round;stroke-width:2"/>
+ <path d="m 18 30 2 0 0 2 -2 0 z" style="stroke-dasharray:none;fill:#88b485;stroke-miterlimit:4;stroke-width:2"/>
+ <path d="m 20 32 2 0 0 2 -2 0 z" style="stroke-dasharray:none;fill:#88b485;stroke-miterlimit:4;stroke-width:2"/>
+ <path d="m 41 17 1 0 0 1 -1 0 z" style="stroke-dasharray:none;fill:#88b485;stroke-miterlimit:4;stroke-width:2"/>
+ <path d="m 43 17 1 0 0 1 -1 0 z" style="stroke-dasharray:none;fill:#88b485;stroke-miterlimit:4;stroke-width:2"/>
+ <path d="m 42 18 1 0 0 1 -1 0 z" style="stroke-dasharray:none;fill:#88b485;stroke-miterlimit:4;stroke-width:2"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-internet.svg b/img/icons/Numix/categories/applications-internet.svg
new file mode 100644
index 00000000..bc260785
--- /dev/null
+++ b/img/icons/Numix/categories/applications-internet.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 11 20 0 3 42 0 0 -3 z" style="fill:#52c8ff"/>
+ <path d="m 9 30.5 0 3 46 0 0 -3 z" style="fill:#52c8ff"/>
+ <path d="m 30.5 9 0 46 l 3 0 0 -46 z" style="fill:#52c8ff"/>
+ <g transform="matrix(2.0262714,0,0,2.0262714,-0.07998559,-0.07999571)" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#52c8ff;stroke-width:1.481">
+ <g style="stroke-width:1.481">
+ <path d="m 89.78 7.747 c -22.894 -52.51 -21.16 -118.39 0 -175.8" transform="matrix(0.1237,0,0,0.1237,0,25.72917)" style="stroke-width:11.969"/>
+ <path d="m 166.23 7.747 c 22.863 -52.51 21.13 -118.39 0 -175.8" transform="matrix(0.1237,0,0,0.1237,0,25.72917)" style="stroke-width:11.969"/>
+ </g>
+ <path d="m 33.06 27.316 c 0 5.03 -4.076 9.105 -9.105 9.105 -5.03 0 -9.105 -4.076 -9.105 -9.105 0 -5.03 4.076 -9.105 9.105 -9.105 5.03 0 9.105 4.076 9.105 9.105 z" transform="matrix(1.2738,0,0,1.2738,-14.67832,-18.96324)" style="stroke-linecap:round;stroke-width:1.162"/>
+ </g>
+ <path d="m 11 41 0 3 42 0 0 -3 z" style="fill:#52c8ff"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-java.svg b/img/icons/Numix/categories/applications-java.svg
new file mode 100644
index 00000000..63687edd
--- /dev/null
+++ b/img/icons/Numix/categories/applications-java.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="matrix(1.0412685,0,0,1.0412685,-0.97394084,-0.97302054)" style="fill:#e660c1;fill-rule:evenodd">
+ <path d="m 25.18 45.19 c 0 0 -1.895 1.102 1.34 1.48 3.926 0.441 5.926 0.375 10.25 -0.438 0 0 1.137 0.711 2.719 1.328 -9.688 4.152 -21.918 -0.242 -14.309 -2.371"/>
+ <path d="m 23.992 39.773 c 0 0 -2.125 1.574 1.117 1.906 4.188 0.43 7.496 0.469 13.219 -0.633 0 0 0.793 0.801 2.035 1.238 -11.711 3.426 -24.758 0.273 -16.371 -2.512"/>
+ <path d="m 33.965 30.586 c 2.391 2.746 -0.625 5.223 -0.625 5.223 0 0 6.06 -3.133 3.273 -7.05 -2.598 -3.656 -4.59 -5.469 6.207 -11.73 0 0 -16.941 4.23 -8.855 13.555"/>
+ <path d="m 46.777 49.2 c 0 0 1.398 1.152 -1.543 2.043 -5.586 1.695 -23.27 2.207 -28.18 0.066 -1.766 -0.77 1.543 -1.828 2.582 -2.059 1.09 -0.234 1.707 -0.188 1.707 -0.188 -1.961 -1.387 -12.688 2.715 -5.449 3.887 19.754 3.203 36 -1.438 30.879 -3.75"/>
+ <path d="m 26.08 34.16 c 0 0 -8.992 2.137 -3.184 2.918 2.453 0.324 7.344 0.254 11.895 -0.133 3.723 -0.313 7.461 -0.98 7.461 -0.98 0 0 -1.316 0.566 -2.266 1.211 -9.129 2.402 -26.773 1.281 -21.695 -1.172 4.297 -2.078 7.789 -1.844 7.789 -1.844"/>
+ <path d="m 42.21 43.18 c 9.281 -4.824 4.992 -9.457 1.996 -8.832 -0.734 0.156 -1.059 0.285 -1.059 0.285 0 0 0.266 -0.43 0.785 -0.613 5.934 -2.082 10.488 6.148 -1.906 9.41 0 0 0.145 -0.133 0.184 -0.25"/>
+ <path d="m 36.613 6.926 c 0 0 5.145 5.145 -4.875 13.05 -8.03 6.34 -1.828 9.961 0 14.09 -4.688 -4.227 -8.133 -7.949 -5.82 -11.422 3.387 -5.082 12.773 -7.551 10.695 -15.723"/>
+ <path d="m 26.992 56.25 c 8.914 0.574 22.598 -0.32 22.922 -4.531 0 0 -0.625 1.594 -7.367 2.863 c -7.605 1.434 -16.988 1.27 -22.547 0.352 c 0 0 1.141 0.938 6.992 1.316"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/applications-libraries.svg b/img/icons/Numix/categories/applications-libraries.svg
new file mode 100644
index 00000000..93a592be
--- /dev/null
+++ b/img/icons/Numix/categories/applications-libraries.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 9.563 6 c -0.866 0 -1.563 0.736 -1.563 1.66 l 0 48.68 c 0 0.924 0.696 1.66 1.563 1.66 l 8.867 0 c 0.874 0 1.57 -0.736 1.57 -1.66 l 0 -48.68 c 0 -0.924 -0.697 -1.66 -1.57 -1.66 m -8.43 4 8 0 0 20 -8 0 z m 4 35 c 1.657 0 3 1.343 3 3 0 1.657 -1.343 3 -3 3 -1.657 0 -3 -1.343 -3 -3 0 -1.657 1.343 -3 3 -3 z" style="fill:#b2a445"/>
+ <path d="m 25.387 6 c -0.765 0 -1.387 0.736 -1.387 1.66 l 0 48.68 c 0 0.924 0.621 1.66 1.387 1.66 l 5.219 0 c 0.778 0 1.395 -0.736 1.395 -1.66 l 0 -48.68 c 0 -0.924 -0.616 -1.66 -1.395 -1.66 m -4.606 4 4 0 0 20 -4 0 z m 2 36 c 1.105 0 2 0.895 2 2 0 1.105 -0.895 2 -2 2 -1.105 0 -2 -0.895 -2 -2 0 -1.105 0.895 -2 2 -2 z" style="fill:#b2a445"/>
+ <path d="m 34.931 7.751 c -0.924 0.247 -1.485 1.159 -1.246 2.051 l 12.599 46.982 c 0.239 0.892 1.181 1.401 2.105 1.154 l 6.301 -1.687 c 0.94 -0.252 1.492 -1.161 1.253 -2.053 l -12.599 -46.982 c -0.239 -0.892 -1.173 -1.403 -2.113 -1.152 m -5.01 5.479 5.796 -1.552 5.176 19.303 -5.796 1.552 z m 11.957 33 c 1.6 -0.428 3.245 0.52 3.674 2.12 0.429 1.599 -0.521 3.243 -2.121 3.671 -1.6 0.428 -3.245 -0.52 -3.674 -2.12 -0.429 -1.599 0.521 -3.243 2.121 -3.671 z" style="fill:#b2a445"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-lisp.svg b/img/icons/Numix/categories/applications-lisp.svg
new file mode 100644
index 00000000..85dc3816
--- /dev/null
+++ b/img/icons/Numix/categories/applications-lisp.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 10 24 c -1.105 0 -2 0.895 -2 2 0 5.333 0 10.667 0 16 0 3.29 2.71 6 6 6 6.667 0 13.333 0 20 0 2.572 0 4.983 -1.282 6.32 -3.453 1.337 -2.172 1.337 -4.922 0 -7.094 c -1.337 -2.172 -3.748 -3.453 -6.32 -3.453 l -3 0 c -1.075 0 -2.064 -0.569 -2.602 -1.5 -0.538 -0.931 -0.538 -2.069 0 -3 c 0.538 -0.931 1.527 -1.5 2.602 -1.5 l 7 0 c 1.105 0 2 -0.895 2 -2 0 -1.105 -0.895 -2 -2 -2 l -7 0 c -2.498 0 -4.814 1.337 -6.06 3.5 -1.249 2.163 -1.249 4.837 0 7 c 1.249 2.163 3.565 3.5 6.06 3.5 l 3 0 c 1.238 0 2.346 0.624 2.914 1.547 0.568 0.922 0.568 1.984 0 2.906 c -0.568 0.922 -1.676 1.547 -2.914 1.547 c -6.667 0 -13.333 0 -20 0 -1.128 0 -2 -0.872 -2 -2 0 -5.333 0 -10.667 0 -16 0 -1.105 -0.895 -2 -2 -2 z" style="fill:#d07d86;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 23 16 c -3.842 0 -7 3.158 -7 7 0 5 0 10 0 15 0 1.105 0.895 2 2 2 1.105 0 2 -0.895 2 -2 0 -5 0 -10 0 -15 0 -1.681 1.319 -3 3 -3 l 27 0 c 1.128 0 2 0.872 2 2 0 1.128 -0.872 2 -2 2 -3.29 0 -6 2.71 -6 6 l 0 8 c 0 1.105 0.895 2 2 2 1.105 0 2 -0.895 2 -2 l 0 -8 c 0 -1.128 0.872 -2 2 -2 3.29 0 6 -2.71 6 -6 0 -3.29 -2.71 -6 -6 -6 z" style="fill:#d07d86;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-mail.svg b/img/icons/Numix/categories/applications-mail.svg
new file mode 100644
index 00000000..6d421a26
--- /dev/null
+++ b/img/icons/Numix/categories/applications-mail.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <rect width="44" height="32" x="10" y="16" rx="1" style="stroke-dasharray:none;stroke-opacity:1;fill:none;opacity:1;stroke-miterlimit:4;fill-opacity:1;stroke:#8eabcf;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:4;stroke-dashoffset:0"/>
+ <path d="M 12,18 32,32 52,18" style="stroke-dasharray:none;stroke-opacity:1;fill:none;stroke-miterlimit:4;fill-opacity:1;stroke:#8eabcf;fill-rule:evenodd;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:3"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-mathematics.svg b/img/icons/Numix/categories/applications-mathematics.svg
new file mode 100644
index 00000000..aeda1d19
--- /dev/null
+++ b/img/icons/Numix/categories/applications-mathematics.svg
@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 51.2 51.2">
+ <path d="m 5.313 4.8 40.573 0 c 0.285 0 0.513 0.228 0.513 0.513 l 0 40.573 c 0 0.285 -0.228 0.513 -0.513 0.513 l -40.573 0 c -0.285 0 -0.513 -0.228 -0.513 -0.513 l 0 -40.573 c 0 -0.285 0.228 -0.513 0.513 -0.513 z" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#85b3b5;stroke-linecap:round;stroke-width:3.2"/>
+ <path d="m 25.593 4.416 0.014 0 c 0.203 0 0.377 0.07 0.377 0.153 l 0 42.06 c 0 0.088 -0.174 0.153 -0.377 0.153 l -0.014 0 c -0.203 0 -0.377 -0.065 -0.377 -0.153 l 0 -42.06 c 0 -0.082 0.174 -0.153 0.377 -0.153 z" style="fill:none;stroke:#85b3b5;stroke-linecap:round;stroke-width:2.431"/>
+ <path d="m 20.395 33.2 0 2.39 -10.39 0 0 -2.39 z" style="fill:#85b3b5;stroke:#85b3b5;fill-rule:evenodd;stroke-linejoin:round;stroke-width:0.81"/>
+ <path d="m 16.395 29.6 c 0 0.661 -0.534 1.195 -1.195 1.195 -0.661 0 -1.195 -0.534 -1.195 -1.195 0 -0.661 0.534 -1.195 1.195 -1.195 0.661 0 1.195 0.534 1.195 1.195 z" style="fill:#85b3b5;stroke-miterlimit:10;stroke:#85b3b5;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.81"/>
+ <path d="m 16.395 39.2 c 0 0.657 -0.534 1.191 -1.195 1.191 -0.661 0 -1.195 -0.534 -1.195 -1.191 0 -0.661 0.534 -1.199 1.195 -1.199 0.661 0 1.195 0.538 1.195 1.199 z" style="fill:#85b3b5;stroke-miterlimit:10;stroke:#85b3b5;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.81"/>
+ <rect width="11.2" height="3.2" x="9.6" y="14.4" rx="0.467" ry="0.4" style="fill:#85b3b5;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect width="11.2" height="3.2" x="10.4" y="-16.8" rx="0.467" ry="0.4" transform="matrix(0,1,-1,0,0,0)" style="fill:#85b3b5;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 38.828 11.481 1.69 1.69 -7.347 7.347 -1.69 -1.69" style="fill:#85b3b5;stroke:#85b3b5;fill-rule:evenodd;stroke-linejoin:round;stroke-width:0.81"/>
+ <path d="m 33.451 11.761 c 0.467 0.467 0.467 1.223 0 1.69 -0.467 0.467 -1.223 0.467 -1.69 0 -0.467 -0.467 -0.467 -1.223 0 -1.69 0.467 -0.467 1.223 -0.467 1.69 0 z" style="fill:#85b3b5;stroke-miterlimit:10;stroke:#85b3b5;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.81"/>
+ <path d="m 40.24 18.552 c 0.465 0.465 0.465 1.22 -0.003 1.688 -0.467 0.467 -1.223 0.467 -1.688 0.003 -0.467 -0.467 -0.47 -1.226 -0.003 -1.693 0.467 -0.467 1.226 -0.465 1.693 0.003 z" style="fill:#85b3b5;stroke-miterlimit:10;stroke:#85b3b5;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.81"/>
+ <rect width="11.2" height="3.2" x="-5.03" y="48.746" rx="0.467" ry="0.4" transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)" style="fill:#85b3b5;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect width="11.2" height="3.2" x="44.746" y="-2.166" rx="0.467" ry="0.4" transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)" style="fill:#85b3b5;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-monodevelopment.svg b/img/icons/Numix/categories/applications-monodevelopment.svg
new file mode 100644
index 00000000..f622217e
--- /dev/null
+++ b/img/icons/Numix/categories/applications-monodevelopment.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 49.24 11.785 c -3.109 1.273 -13.06 5.43 -13.304 5.531 c -2.789 -2.273 -6.406 -4.04 -10.164 -4.242 -9.101 -0.57 -17.468 7.516 -17.492 16.476 -0.406 8.08 3.281 15.539 6.601 22.679 2.789 -1.164 12.914 -5.383 13.172 -5.5 c 2.727 2.289 6.234 3.977 9.883 4.234 8.953 0.758 17.281 -6.984 17.734 -15.734 0.656 -8.187 -3.125 -15.765 -6.297 -23.09 -0.047 -0.117 -0.086 -0.234 -0.133 -0.352 z" style="fill:none;stroke:#6996af;stroke-width:1.979"/>
+ <g transform="matrix(1.9999711,0,0,1.9999711,0.32968657,0.33968558)" style="fill:#6996af">
+ <path d="m 8.313 23.332 c -0.98 -2.383 -2.285 -4.477 -2.313 -8.359 -0.031 -4.02 3.414 -6.613 6.133 -6.613 c 3.293 0 6.195 2.785 6.348 5.086 0.137 2.078 -0.602 5.102 -4.426 5.082 -1.82 -0.012 -3.715 -1.598 -3.727 -3.957 -0.008 -2.551 3.18 -2.797 3.984 -2.148 0.313 0.25 0.305 0.754 0.027 0.66 -1.719 -0.559 -2.781 0.543 -2.699 1.641 0.105 1.488 0.988 2.375 2.57 2.449 2.285 0.105 2.926 -2.113 2.867 -3.02 -0.074 -1.094 -1.031 -3.348 -4 -3.758 -1.406 -0.195 -2.566 0.223 -3.418 1.047 -0.848 0.824 -1.324 1.676 -1.395 3.074 -0.074 1.445 0.242 2.293 1.105 4.188 0.309 0.68 1.172 2.047 1.84 3.414 z"/>
+ <path d="m 23.352 8.359 c 0.984 2.379 2.285 4.477 2.316 8.359 0.027 4.01 -3.414 6.613 -6.133 6.613 -3.297 0 -6.195 -2.781 -6.348 -5.086 -0.137 -2.082 0.602 -5.105 4.422 -5.082 1.824 0.012 3.719 1.594 3.73 3.957 0.008 2.547 -3.184 2.793 -3.984 2.148 -0.313 -0.254 -0.305 -0.75 -0.027 -0.664 1.719 0.563 2.777 -0.543 2.699 -1.637 -0.105 -1.488 -0.992 -2.375 -2.574 -2.449 -2.281 -0.109 -2.922 2.109 -2.863 3.01 0.07 1.094 1.027 3.352 3.996 3.762 1.406 0.195 2.57 -0.227 3.418 -1.047 0.852 -0.824 1.328 -1.68 1.398 -3.074 0.07 -1.445 -0.246 -2.293 -1.109 -4.191 -0.309 -0.676 -1.172 -2.039 -1.836 -3.41 z"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/applications-multimedia.svg b/img/icons/Numix/categories/applications-multimedia.svg
new file mode 100644
index 00000000..f379378b
--- /dev/null
+++ b/img/icons/Numix/categories/applications-multimedia.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="matrix(1.3333508,0,0,1.3333508,-0.61015632,-1341.8338)">
+ <path d="m 20 6 0 20.736 a 4.136 6.204 75 0 0 -5.158 -0.285 4.136 6.204 75 0 0 -4.922 5.602 4.136 6.204 75 0 0 7.06 2.389 4.136 6.204 75 0 0 5.01 -4.807 l 0.004 0 0 -15.254 13 1.734 0 15.869 a 4.136 6.204 75 0 0 -5.158 -0.285 4.136 6.204 75 0 0 -4.922 5.602 4.136 6.204 75 0 0 7.06 2.389 4.136 6.204 75 0 0 5.01 -4.809 l 0.004 0.002 0 -26.605 -17 -2.277 m 2 4.621 13 1.734 0 1.76 -13 -1.734 0 -1.76 z" transform="translate(0.45762712,1006.3622)" style="fill:#4c7686"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/applications-ocaml.svg b/img/icons/Numix/categories/applications-ocaml.svg
new file mode 100644
index 00000000..b9e5ea36
--- /dev/null
+++ b/img/icons/Numix/categories/applications-ocaml.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 24.561 52.626 c 1.586 -0.172 -0.281 -1.508 -0.813 -1.773 -1.016 -0.508 -1.836 -1.086 -2.477 -2.047 -1.01 -1.539 -1.508 -3.57 -1.938 -5.336 -0.289 -1.203 -0.516 -1.898 0.242 -2.914 0.758 -1.01 -0.531 -1.836 0.266 -2.906 1.344 -1.789 1.914 -4.164 3.242 -5.93 0.375 -0.5 0.242 -0.969 0.781 -1.023 0.258 -0.023 0.93 0.492 1.156 0.641 0.656 0.445 1.461 0.656 2.102 1.086 0.328 0.211 0.945 0.055 1.211 0.266 0.773 0.602 0.594 2.484 0.516 3.453 -0.117 1.367 -1.219 1.797 -1.219 3.125 0 1.594 0.336 2.68 -0.164 4.313 -0.281 0.938 -1.01 2.01 -1.125 2.961 -0.094 0.758 0.047 0.734 0.266 1.453 0.266 0.852 0.328 1.617 1.133 2 0.461 0.211 2.328 0.305 2.586 -0.219 0.516 -1.023 -1.445 -1.367 -1.773 -1.992 -0.719 -1.344 0.969 -4.82 1.609 -5.984 0.359 -0.633 1.047 -1.141 1.297 -1.781 0.344 -0.859 -0.352 -1.445 -0.242 -2.102 0.219 -1.281 0.758 -2.641 1.164 -3.883 0.945 -2.867 2.25 1.492 2.797 2.594 0.219 0.43 0.375 0.906 0.594 1.344 0.258 0.523 -0.313 0.977 -0.156 1.617 0.141 0.609 0.844 0.945 1.234 1.398 0.594 0.703 1.01 1.578 1.32 2.43 0.664 1.781 0.898 4.875 2.133 6.305 0.172 0.203 0.672 0.094 0.859 0.273 0.43 0.414 -0.109 0.875 0.727 1.156 0.648 0.219 2.273 0.453 2.883 0.078 1.172 -0.711 -0.289 -1.578 -1.023 -2.32 -1.023 -1.016 -2.219 -1.953 -3.02 -3.172 -1.055 -1.602 -1.281 -3.406 -1.484 -5.258 -0.102 -0.891 0.867 -1.336 0.031 -2.398 -0.266 -0.344 -1.078 -0.297 -1.078 -0.648 0 -1.109 -0.031 -2.227 0 -3.336 0.039 -1.352 0.031 -3.57 1.32 -4.422 1.711 -1.148 3.883 -1.445 5.524 -2.672 1.625 -1.219 3.117 -2.328 4.094 -4.281 0.516 -1.023 0.781 -2.023 1.188 -3.07 0.297 -0.773 0.219 -0.516 0.695 -0.977 0.289 -0.266 0.711 -0.453 1.031 -0.75 0.828 -0.797 0.977 -1.578 2.367 -1.242 0.555 0.133 1.469 1.172 1.781 0.539 0.203 -0.406 0.078 -0.773 -0.031 -1.188 -0.156 -0.609 0.594 -0.813 0.57 -1.398 -0.031 -1.01 -1.664 -2.07 -2.508 -2.242 -1.063 -0.211 -2.234 0.25 -3.375 0.031 -0.906 -0.18 -1.703 -0.672 -2.578 -0.891 -0.922 -0.234 -1.75 -0.313 -2.531 0.242 -0.359 0.258 -0.5 0.711 -0.813 0.969 -0.266 0.219 -0.5 0.156 -0.805 0.383 -0.93 0.664 -1 1.641 0.594 1.344 -0.672 2.766 -3.922 10.211 -7.547 6.359 -1.695 -1.797 -3.25 -3.789 -4.852 -5.656 -1.414 -1.648 -2.234 -3.5 -4.633 -3.18 -2.375 0.313 -3.992 1.938 -5.828 3.289 -1.5 1.102 -3.266 1.344 -4.852 2.266 -1.688 0.969 -3.188 2.602 -3.766 4.469 -0.844 2.703 -0.359 5.305 -1.844 7.875 -0.891 1.555 -2.156 2.641 -3.281 3.93 -0.609 0.695 -1.016 1.648 -0.813 2.586 0.141 0.641 0.594 0.758 0.594 1.508 0 1.305 -0.063 2.602 -0.008 3.914 0.055 1.164 0.148 2.305 0.305 3.453 0.148 1 0.516 1.281 0.836 2.02 0.484 1.086 0.406 1.563 1.563 1.992 0.656 0.242 1.781 0.727 2.484 0.703 1.01 -0.047 1.148 -0.883 0.375 -1.781 -0.5 -0.586 -1.43 -0.773 -1.992 -1.406 -1.633 -1.828 -2.336 -7.328 -0.969 -9.266 0.563 -0.813 1.289 -0.82 1.344 -2.047 0.047 -1.102 -0.398 -1.484 0.594 -2.477 3.164 -1.617 3.5 -2.773 4.524 -2.219 1.25 0.68 0.273 4.484 0 5.555 -0.477 1.914 -2.375 2.813 -1.133 4.742 0.891 1.383 1.313 2.813 1.914 4.422 0.547 1.453 0.508 3.531 1.375 4.742 0.172 0.234 0.438 0.367 0.594 0.594 0.117 0.164 0.289 0.656 0.375 0.758 0.367 0.422 0.445 0.531 1.031 0.75 1.039 0.398 2.32 0.266 3.445 0.266" style="fill:#d56f7f;fill-rule:evenodd"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-office.svg b/img/icons/Numix/categories/applications-office.svg
new file mode 100644
index 00000000..62317d91
--- /dev/null
+++ b/img/icons/Numix/categories/applications-office.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 20.693 12 c 0 0 -2.693 0 -2.693 2.664 l 0 34.672 c 0 2.664 2.543 2.664 2.543 2.664 l 22.913 0 c 2.543 0 2.543 -2.664 2.543 -2.664 l 0 -32 l -5.087 -5.336 -20.37 0 m 1.457 4 l 13 0 0 7 7 0 0 25 -20 0 z" style="fill:#d19217;fill-opacity:1"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-other.svg b/img/icons/Numix/categories/applications-other.svg
new file mode 100644
index 00000000..255ce84b
--- /dev/null
+++ b/img/icons/Numix/categories/applications-other.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 18 32 -7.203 5.406 1.18 1.57 6.02 -4.52 0 17.543 28 0 0 -17.543 6.02 4.52 l 1.18 -1.57 -7.203 -5.406" style="fill:#cf9545"/>
+ <rect transform="matrix(0.95334222,0.30189172,-0.30189172,0.95334222,0,0)" height="4.688" y="15.12" x="26.544" width="4.688" style="fill:#cf9545"/>
+ <rect transform="matrix(0.9598803,-0.28041009,0.28041009,0.9598803,0,0)" height="7.707" y="20.304" x="19" width="7.707" style="fill:#cf9545"/>
+ <path d="m 38.38 26.07 -2.207 2.811 -3.538 -0.505 -1.331 -3.316 2.207 -2.811 3.538 0.505 z" style="fill:#cf9545"/>
+ <path d="m 44.82 19.12 -2.255 0.739 -0.67 2.277 -1.399 -1.917 -2.372 0.066 1.39 -1.923 -0.796 -2.236 2.259 0.728 1.88 -1.448 0.006 2.373 z" style="fill:#cf9545"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-painting.svg b/img/icons/Numix/categories/applications-painting.svg
new file mode 100644
index 00000000..2a4d988d
--- /dev/null
+++ b/img/icons/Numix/categories/applications-painting.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 30.6 7.26 c -1.438 0 -2.852 0.164 -4.297 0.504 c -11.543 2.734 -25.27 21.406 -7.66 29.719 8.285 3.914 7.695 21.707 19.238 18.973 11.543 -2.734 18.293 -15.848 15.1 -29.29 -2.793 -11.762 -12.313 -19.887 -22.379 -19.902 m -3.559 3.711 c 2.051 0 3.715 1.66 3.715 3.711 0 2.047 -1.664 3.711 -3.715 3.711 -2.051 0 -3.719 -1.664 -3.719 -3.711 0 -2.051 1.668 -3.711 3.719 -3.711 z m 11.152 1.238 c 2.051 0 3.715 1.66 3.715 3.711 0 2.043 -1.664 3.703 -3.715 3.703 -2.059 0 -3.719 -1.66 -3.719 -3.703 0 -2.051 1.66 -3.711 3.719 -3.711 z m -19.824 6.184 c 2.051 0 3.715 1.66 3.715 3.707 0 2.051 -1.664 3.711 -3.715 3.711 -2.051 0 -3.719 -1.66 -3.719 -3.711 0 -2.047 1.668 -3.707 3.719 -3.707 z m 27.25 2.469 c 2.059 0 3.719 1.668 3.719 3.711 0 2.051 -1.66 3.711 -3.719 3.711 -2.051 0 -3.711 -1.66 -3.711 -3.711 0 -2.043 1.66 -3.711 3.711 -3.711 z m -20.316 9.777 c 1.75 -0.031 3.547 1.531 4.219 3.828 0.762 2.625 -0.203 5.223 -2.168 5.797 -1.973 0.57 -4.195 -1.09 -4.957 -3.711 -0.766 -2.617 0.195 -5.223 2.168 -5.797 0.242 -0.07 0.484 -0.109 0.738 -0.117 z m 21.563 1.355 c 2.051 0 3.715 1.66 3.715 3.711 0 2.051 -1.664 3.711 -3.715 3.711 -2.059 0 -3.719 -1.66 -3.719 -3.711 0 -2.051 1.66 -3.711 3.719 -3.711 z m -4.957 9.895 c 2.051 0 3.711 1.66 3.711 3.707 0 2.051 -1.66 3.711 -3.711 3.711 -2.055 0 -3.715 -1.66 -3.715 -3.711 0 -2.047 1.66 -3.707 3.715 -3.707 z" style="fill:#e684a3"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-perl.svg b/img/icons/Numix/categories/applications-perl.svg
new file mode 100644
index 00000000..dca02856
--- /dev/null
+++ b/img/icons/Numix/categories/applications-perl.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 39.443 52.626 c -1.59 -0.176 0.277 -1.512 0.805 -1.777 1.016 -0.508 1.844 -1.09 2.48 -2.047 1.012 -1.535 1.512 -3.574 1.941 -5.336 0.285 -1.199 0.516 -1.895 -0.246 -2.91 -0.758 -1.012 0.531 -1.844 -0.27 -2.91 -1.34 -1.793 -1.906 -4.16 -3.234 -5.934 -0.379 -0.5 -0.242 -0.969 -0.781 -1.02 -0.262 -0.027 -0.93 0.492 -1.16 0.645 -0.656 0.441 -1.457 0.648 -2.102 1.078 -0.324 0.215 -0.945 0.059 -1.211 0.27 -0.773 0.605 -0.594 2.484 -0.516 3.449 0.117 1.375 1.219 1.805 1.219 3.125 0 1.594 -0.34 2.684 0.164 4.316 0.285 0.938 1.01 2 1.125 2.961 0.098 0.758 -0.047 0.738 -0.266 1.453 -0.262 0.852 -0.328 1.613 -1.133 2 -0.465 0.215 -2.324 0.305 -2.586 -0.215 -0.516 -1.023 1.445 -1.375 1.777 -2 0.715 -1.34 -0.969 -4.816 -1.613 -5.984 -0.359 -0.629 -1.043 -1.137 -1.297 -1.777 -0.344 -0.859 0.352 -1.445 0.242 -2.102 -0.215 -1.281 -0.758 -2.645 -1.16 -3.879 -0.945 -2.871 -2.254 1.488 -2.801 2.59 -0.219 0.43 -0.375 0.906 -0.59 1.348 -0.262 0.52 0.313 0.969 0.156 1.613 -0.145 0.605 -0.848 0.945 -1.238 1.402 -0.594 0.695 -1 1.574 -1.32 2.426 -0.664 1.777 -0.898 4.879 -2.129 6.305 -0.176 0.207 -0.672 0.09 -0.859 0.273 -0.43 0.414 0.109 0.879 -0.73 1.156 -0.645 0.215 -2.273 0.449 -2.883 0.078 -1.172 -0.707 0.293 -1.582 1.02 -2.316 1.031 -1.023 2.223 -1.961 3.02 -3.176 1.055 -1.602 1.273 -3.406 1.484 -5.254 0.098 -0.895 -0.867 -1.336 -0.035 -2.402 0.27 -0.34 1.082 -0.293 1.082 -0.645 0 -1.113 0.031 -2.234 0 -3.34 -0.039 -1.348 -0.031 -3.57 -1.32 -4.422 -1.715 -1.145 -3.887 -1.445 -5.523 -2.668 -1.625 -1.227 -3.117 -2.332 -4.102 -4.285 -0.508 -1.023 -0.773 -2.023 -1.184 -3.074 -0.301 -0.773 -0.215 -0.512 -0.695 -0.969 -0.289 -0.266 -0.711 -0.457 -1.031 -0.754 -0.824 -0.797 -0.977 -1.578 -2.367 -1.246 -0.555 0.137 -1.465 1.172 -1.777 0.543 -0.203 -0.406 -0.078 -0.777 0.023 -1.188 0.156 -0.609 -0.586 -0.813 -0.566 -1.398 0.035 -1.01 1.66 -2.07 2.508 -2.238 1.066 -0.215 2.238 0.246 3.371 0.023 0.914 -0.176 1.707 -0.668 2.586 -0.883 0.918 -0.234 1.746 -0.313 2.531 0.238 0.359 0.254 0.496 0.711 0.809 0.973 0.266 0.215 0.5 0.156 0.809 0.375 0.922 0.664 0.996 1.648 -0.594 1.348 0.672 2.77 3.918 10.211 7.547 6.363 1.691 -1.797 3.246 -3.789 4.848 -5.66 1.414 -1.645 2.234 -3.5 4.637 -3.184 2.371 0.313 3.992 1.941 5.828 3.289 1.496 1.105 3.262 1.348 4.848 2.266 1.688 0.969 3.191 2.605 3.77 4.473 0.84 2.703 0.359 5.305 1.836 7.871 0.895 1.555 2.164 2.645 3.289 3.934 0.605 0.695 1.01 1.652 0.809 2.582 -0.137 0.645 -0.594 0.762 -0.594 1.512 0 1.309 0.066 2.605 0.008 3.914 -0.055 1.164 -0.145 2.305 -0.309 3.457 -0.141 0.996 -0.508 1.273 -0.832 2.01 -0.48 1.086 -0.402 1.563 -1.563 1.992 -0.656 0.238 -1.777 0.727 -2.48 0.703 -1.01 -0.047 -1.152 -0.879 -0.379 -1.777 0.504 -0.586 1.434 -0.777 1.992 -1.406 1.637 -1.832 2.34 -7.332 0.973 -9.273 -0.566 -0.805 -1.289 -0.813 -1.344 -2.043 -0.051 -1.102 0.398 -1.484 -0.598 -2.48 -3.164 -1.613 -3.496 -2.766 -4.523 -2.215 -1.25 0.68 -0.27 4.488 0 5.555 0.48 1.914 2.375 2.813 1.133 4.746 -0.895 1.379 -1.309 2.805 -1.914 4.422 -0.547 1.449 -0.504 3.527 -1.375 4.738 -0.168 0.234 -0.438 0.363 -0.594 0.594 -0.117 0.168 -0.293 0.656 -0.375 0.754 -0.367 0.422 -0.445 0.535 -1.031 0.754 -1.039 0.398 -2.316 0.27 -3.441 0.27" style="fill:#6fbed5;fill-rule:evenodd"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-photography.svg b/img/icons/Numix/categories/applications-photography.svg
new file mode 100644
index 00000000..8c6a5116
--- /dev/null
+++ b/img/icons/Numix/categories/applications-photography.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 51.2 51.2">
+ <path d="m 9.719 15.2 31.761 0 c 0.949 0 1.719 0.735 1.719 1.645 l 0 19.11 c 0 0.905 -0.771 1.64 -1.719 1.64 l -31.761 0 c -0.949 0 -1.719 -0.735 -1.719 -1.64 l 0 -19.11 c 0 -0.91 0.771 -1.645 1.719 -1.645" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#e08dc9;stroke-linecap:round;stroke-linejoin:round;stroke-width:3.2"/>
+ <path d="m 12.269 12 4.262 0 c 0.593 0 1.069 0.714 1.069 1.603 0 0.883 -0.476 1.597 -1.069 1.597 l -4.262 0 c -0.593 0 -1.069 -0.714 -1.069 -1.597 0 -0.889 0.476 -1.603 1.069 -1.603" style="fill:#e08dc9"/>
+ <path d="m 37.87 18.4 1.065 0 c 0.589 0 1.065 0.48 1.065 1.068 l 0 1.068 c 0 0.588 -0.476 1.064 -1.065 1.064 l -1.065 0 c -0.593 0 -1.07 -0.476 -1.07 -1.064 l 0 -1.068 c 0 -0.588 0.476 -1.068 1.07 -1.068" style="fill:#e08dc9"/>
+ <path d="m 32 26.4 c 0 3.536 -2.864 6.4 -6.4 6.4 -3.536 0 -6.4 -2.864 -6.4 -6.4 0 -3.536 2.864 -6.4 6.4 -6.4 c 3.536 0 6.4 2.864 6.4 6.4 z" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#e08dc9;stroke-width:3.2"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-physics.svg b/img/icons/Numix/categories/applications-physics.svg
new file mode 100644
index 00000000..72f0e8e2
--- /dev/null
+++ b/img/icons/Numix/categories/applications-physics.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 51.2 51.2">
+ <ellipse cx="25.6" cy="25.6" rx="6.996" ry="21.6" style="stroke-dasharray:none;stroke-opacity:1;fill:none;opacity:1;stroke-miterlimit:4;fill-opacity:1;stroke:#c9a879;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1.6;stroke-dashoffset:0"/>
+ <ellipse cx="34.976" cy="-9.391" rx="7" ry="21.578" transform="matrix(0.49949077,0.86631921,-0.8657311,0.50050941,0,0)" style="stroke-dasharray:none;stroke-opacity:1;fill:none;opacity:1;stroke-miterlimit:4;fill-opacity:1;stroke:#c9a879;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1.6;stroke-dashoffset:0"/>
+ <ellipse cx="-9.35" cy="34.965" rx="7" ry="21.578" transform="matrix(0.49949077,-0.86631921,0.8657311,0.50050941,0,0)" style="stroke-dasharray:none;stroke-opacity:1;fill:none;opacity:1;stroke-miterlimit:4;fill-opacity:1;stroke:#c9a879;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1.6;stroke-dashoffset:0"/>
+ <circle cx="25.6" cy="25.6" r="3.2" style="fill:#c9a879;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <circle cx="13.165" cy="13.374" r="2.4" style="fill:#c9a879;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <circle cx="21.254" cy="42.587" r="2.4" style="fill:#c9a879;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-profiling.svg b/img/icons/Numix/categories/applications-profiling.svg
new file mode 100644
index 00000000..07944345
--- /dev/null
+++ b/img/icons/Numix/categories/applications-profiling.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 51.2 51.2">
+ <path d="m 24.526 10.618 2.149 0 c 0.293 0 0.526 0.271 0.526 0.599 l 0 1.932 c 0 0.333 -0.233 0.599 -0.526 0.599 l -2.149 0 c -0.293 0 -0.526 -0.266 -0.526 -0.599 l 0 -1.932 c 0 -0.328 0.233 -0.599 0.526 -0.599 z" style="fill:#b477d0"/>
+ <path d="m 24.23 8.529 2.5 0 c 0.839 0 1.516 0.677 1.516 1.516 0 0.833 -0.677 1.516 -1.516 1.516 l -2.5 0 c -0.839 0 -1.516 -0.682 -1.516 -1.516 0 -0.839 0.677 -1.516 1.516 -1.516 z" style="fill:#b477d0"/>
+ <path d="m 24.803 5.938 1.599 0 c 1.58 0 2.86 0.875 2.86 1.962 l 0 0.206 c 0 1.081 -1.28 1.957 -2.86 1.957 l -1.599 0 c -1.58 0 -2.865 -0.875 -2.865 -1.957 l 0 -0.206 c 0 -1.087 1.285 -1.962 2.865 -1.962 z" style="fill:#b477d0;stroke:#b477d0;stroke-linejoin:round;stroke-width:1.209"/>
+ <path d="m 25.351 17.07 0.498 0 c 0.448 0 0.818 0.273 0.818 0.615 l 0 1.969 c 0 0.337 -0.37 0.615 -0.818 0.615 l -0.498 0 c -0.448 0 -0.818 -0.278 -0.818 -0.615 l 0 -1.969 c 0 -0.342 0.37 -0.615 0.818 -0.615 z" style="fill:#b477d0"/>
+ <path d="m 25.351 37.44 0.498 0 c 0.448 0 0.818 0.278 0.818 0.614 l 0 1.971 c 0 0.337 -0.37 0.614 -0.818 0.614 l -0.498 0 c -0.448 0 -0.818 -0.278 -0.818 -0.614 l 0 -1.971 c 0 -0.337 0.37 -0.614 0.818 -0.614 z" style="fill:#b477d0"/>
+ <path d="m 13.867 29.05 0 -0.492 c 0 -0.449 0.278 -0.821 0.62 -0.821 l 1.966 0 c 0.337 0 0.614 0.371 0.614 0.821 l 0 0.492 c 0 0.457 -0.278 0.821 -0.614 0.821 l -1.966 0 c -0.342 0 -0.62 -0.364 -0.62 -0.821 z" style="fill:#b477d0"/>
+ <path d="m 34.13 29.05 0 -0.492 c 0 -0.449 0.278 -0.821 0.615 -0.821 l 1.969 0 c 0.342 0 0.615 0.371 0.615 0.821 l 0 0.492 c 0 0.457 -0.273 0.821 -0.615 0.821 l -1.969 0 c -0.337 0 -0.615 -0.364 -0.615 -0.821 z" style="fill:#b477d0"/>
+ <path d="m 25.38 19.857 c -0.328 0 -0.661 0.016 -0.995 0.052 -0.104 0.005 -0.198 0.068 -0.24 0.161 -0.047 0.094 -0.036 0.203 0.026 0.286 0.068 0.078 0.172 0.12 0.271 0.104 2.536 -0.276 4.792 0.49 6.635 2.255 0.068 0.083 0.177 0.115 0.276 0.089 0.104 -0.026 0.182 -0.109 0.203 -0.214 0.021 -0.099 -0.016 -0.208 -0.099 -0.271 -1.708 -1.635 -3.786 -2.474 -6.078 -2.464 z" style="fill:#b477d0"/>
+ <path d="m 26.19 21.488 c -0.141 0.021 -0.24 0.135 -0.24 0.276 0.005 0.141 0.109 0.255 0.25 0.271 1.411 0.182 2.542 0.698 3.604 1.646 0.115 0.099 0.292 0.089 0.391 -0.026 0.104 -0.115 0.094 -0.292 -0.021 -0.391 -1.141 -1.01 -2.396 -1.583 -3.901 -1.776 -0.031 -0.005 -0.057 -0.005 -0.083 0 z" style="fill:#b477d0"/>
+ <path d="m 25.16 18.357 c -0.917 0.026 -1.849 0.177 -2.781 0.453 -0.099 0.021 -0.177 0.099 -0.203 0.198 -0.026 0.104 0.01 0.208 0.083 0.276 0.078 0.068 0.188 0.089 0.281 0.052 3.536 -1.052 7.06 -0.172 9.677 2.422 0.109 0.109 0.286 0.109 0.396 0 0.109 -0.109 0.104 -0.286 0 -0.391 -2.068 -2.047 -4.698 -3.089 -7.453 -3.01 z" style="fill:#b477d0"/>
+ <path d="m 34.62 14.3 -0.542 2.135 2.099 1.615 2.02 -1.182 c 0 -1.047 -2.682 -2.87 -3.578 -2.568 z" style="fill:#b477d0;fill-rule:evenodd"/>
+ <path d="m 34.599 21.15 c -0.188 -0.214 -11.49 8.958 -11.49 8.958 l 0.427 0.542 c 0 0 11.245 -9.286 11.06 -9.5 z" style="fill:#b477d0;fill-rule:evenodd"/>
+ <circle cx="25.6" cy="28.8" r="14.4" style="stroke-dasharray:none;stroke-opacity:1;fill:none;opacity:1;stroke-miterlimit:4;fill-opacity:1;stroke:#b477d0;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:3.2;stroke-dashoffset:0"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-publishing.svg b/img/icons/Numix/categories/applications-publishing.svg
new file mode 100644
index 00000000..4b164a1f
--- /dev/null
+++ b/img/icons/Numix/categories/applications-publishing.svg
@@ -0,0 +1,40 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 51.2 51.2">
+ <path d="m 4.903 4.379 41.39 0 c 0.291 0 0.524 0.233 0.524 0.524 l 0 41.39 c 0 0.291 -0.233 0.524 -0.524 0.524 l -41.39 0 c -0.291 0 -0.524 -0.233 -0.524 -0.524 l 0 -41.39 c 0 -0.291 0.233 -0.524 0.524 -0.524 z" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#92c8dd;stroke-linecap:round;stroke-width:2.358"/>
+ <g transform="matrix(1.4692743,0,0,1.4692742,-1.1011444,-3.8495323)" style="fill:#92c8dd">
+ <path d="m 23.57 13.598 c -0.676 0.027 -1.461 -0.02 -1.992 0.434 -0.547 0.586 -0.277 1.699 0.594 1.859 0.848 0.223 1.84 -0.152 2.195 -0.926 0.199 -0.398 0.328 -0.984 0.223 -1.367 z m 2.109 -0.406 0 3.426 -1.059 0 0 -0.91 c -0.438 0.734 -1.348 1.102 -2.223 1.066 -0.934 0.051 -1.926 -0.5 -2.102 -1.395 -0.223 -0.863 0.133 -1.922 1.078 -2.266 1.023 -0.414 2.16 -0.258 3.246 -0.289 0.074 -0.641 -0.379 -1.277 -1.059 -1.43 -0.957 -0.223 -1.992 -0.031 -2.852 0.402 l 0 -0.914 c 1.191 -0.418 2.598 -0.645 3.777 -0.098 0.938 0.453 1.203 1.5 1.191 2.406 z"/>
+ </g>
+ <path d="m 11.2 24 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 16 24 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 20.8 24 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 25.6 24 1.6 0 0 1.6 -1.6 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 28.8 24 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 33.6 24 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 11.2 33.6 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 16 33.6 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 20.8 33.6 3.352 0 0 1.6 -3.352 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 25.6 33.6 1.6 0 0 1.6 -1.6 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 28.8 33.6 8 0 0 1.6 -8 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 11.2 27.2 6.4 0 0 1.6 -6.4 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 19.2 27.2 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 24 27.2 1.6 0 0 1.6 -1.6 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 27.2 27.2 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 32 27.2 1.6 0 0 1.6 -1.6 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 35.2 27.2 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 11.2 30.4 6.4 0 0 1.6 -6.4 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 19.2 30.4 8 0 0 1.6 -8 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 28.8 30.4 3.2 0 l 0 1.6 -3.2 0" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 32 30.4 6.4 0 l 0 1.6 -6.4 0" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 11.2 36.8 4.8 0 0 1.6 -4.8 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 17.6 36.8 8 0 0 1.6 -8 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 27.2 36.8 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 36.8 36.8 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 32 36.8 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 11.2 40 6.4 0 0 1.6 -6.4 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 19.2 40 1.6 0 0 1.6 -1.6 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 22.4 40 4.8 0 0 1.6 -4.8 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 28.8 40 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <path d="m 33.6 40 3.2 0 0 1.6 -3.2 0 z" style="fill:#92c8dd;fill-opacity:0.6"/>
+ <g transform="matrix(1.4985365,0,0,1.4985365,-2.7801444,-4.1014617)" style="fill:#92c8dd">
+ <path d="m 15.512 9.676 c -0.527 1.328 -1.051 2.656 -1.578 3.988 l 3.156 0 z m -0.656 -1.066 1.316 0 c 1.09 2.668 2.18 5.34 3.27 8.01 l -1.207 0 c -0.258 -0.684 -0.52 -1.371 -0.781 -2.055 l -3.867 0 c -0.262 0.684 -0.523 1.371 -0.781 2.055 l -1.227 0 c 1.094 -2.668 2.184 -5.34 3.277 -8.01 z"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/applications-puzzles.svg b/img/icons/Numix/categories/applications-puzzles.svg
new file mode 100644
index 00000000..adce67ab
--- /dev/null
+++ b/img/icons/Numix/categories/applications-puzzles.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 51.2 51.2">
+ <path d="m 22.656 5.465 c -1.7 0.064 -3.622 0.588 -4.758 1.95 -0.036 0.042 -0.066 0.088 -0.09 0.138 -0.379 0.804 -0.511 1.455 -0.284 2.027 0.227 0.572 0.742 0.828 1.147 0.988 0.404 0.16 0.78 0.269 1.024 0.412 0.243 0.143 0.354 0.245 0.417 0.568 0.075 0.385 0.018 0.589 -0.069 0.745 -0.087 0.156 -0.225 0.306 -0.427 0.384 -0.314 0.122 -0.86 0.122 -0.86 0.122 l -10.11 0 c -0.357 0 -0.647 0.29 -0.647 0.647 l 0 10.16 c 0 0.725 0.147 1.143 0.349 1.454 0.23 0.319 0.507 0.688 0.941 0.931 0.434 0.243 1 0.331 1.628 0.21 0.558 -0.109 0.999 -0.423 1.272 -0.781 0.273 -0.359 0.411 -0.74 0.525 -1.06 0.114 -0.319 0.214 -0.581 0.294 -0.704 0.079 -0.121 0.062 -0.113 0.187 -0.123 0.118 -0.007 0.424 0.065 0.821 0.235 0.873 0.768 1.395 2.33 1.448 3.752 0.018 0.529 -0.03 1.026 -0.118 1.454 l 0.008 -0.026 c -0.03 0.119 -0.026 0.135 -0.018 0.095 -0.003 0.014 -0.006 0.029 -0.008 0.044 -0.157 1.222 -0.661 2.409 -1.4 3.053 -0.512 0.211 -0.834 0.244 -0.888 0.223 -0.061 -0.024 -0.14 -0.109 -0.261 -0.415 c -0.121 -0.306 -0.235 -0.751 -0.499 -1.2 -0.264 -0.449 -0.752 -0.901 -1.438 -1.034 l 0 0.003 c -0.911 -0.178 -1.689 0.131 -2.134 0.606 c -0.445 0.476 -0.61 1.036 -0.694 1.428 -0.01 0.044 -0.015 0.088 -0.015 0.133 l 0 10.667 c 0 0.359 0.293 0.65 0.653 0.647 l 10.175 0 c 0.703 -0.001 1.147 -0.154 1.467 -0.363 0.234 -0.154 0.67 -0.567 0.913 -1 0.244 -0.434 0.334 -1 0.212 -1.628 -0.133 -0.687 -0.585 -1.174 -1.034 -1.438 -0.449 -0.264 -0.896 -0.378 -1.203 -0.499 -0.306 -0.121 -0.393 -0.2 -0.417 -0.261 -0.022 -0.055 0.007 -0.374 0.225 -0.898 0.77 -0.867 2.329 -1.389 3.752 -1.438 l 0.005 0 c 0.523 -0.022 1.017 0.026 1.443 0.115 0.026 0.005 0.053 0.008 0.079 0.01 0.012 0.003 0.024 0.006 0.036 0.008 1.228 0.157 2.42 0.663 3.063 1.397 0.211 0.51 0.246 0.83 0.225 0.883 -0.024 0.06 -0.113 0.14 -0.42 0.261 -0.307 0.121 -0.753 0.237 -1.203 0.502 -0.45 0.264 -0.901 0.751 -1.034 1.438 -0.121 0.625 -0.031 1.194 0.212 1.628 0.244 0.434 0.575 0.79 0.922 0.971 0.438 0.268 0.795 0.314 1.463 0.309 l 10.216 0.005 c 0.357 0 0.647 -0.295 0.647 -0.653 l 0 -10.472 c 0 -0.406 0.053 -0.589 0.231 -0.778 0.185 -0.197 0.372 -0.325 0.932 -0.215 l 0.003 0.003 c 0.325 0.062 0.428 0.173 0.571 0.415 0.143 0.242 0.252 0.615 0.412 1.019 0.16 0.404 0.416 0.919 0.988 1.147 0.572 0.227 1.222 0.096 2.027 -0.282 0.051 -0.024 0.098 -0.054 0.141 -0.09 1.147 -0.956 1.693 -2.482 1.886 -3.949 0.004 -0.028 0.005 -0.056 0.005 -0.084 0 0.088 0.005 0.047 0.005 -0.064 l -0.015 0.138 c 0.117 -0.536 0.17 -1.132 0.148 -1.763 l 0 -0.003 c -0.064 -1.701 -0.594 -3.623 -1.95 -4.758 -0.043 -0.036 -0.09 -0.066 -0.141 -0.09 -0.805 -0.377 -1.455 -0.509 -2.027 -0.282 -0.572 0.227 -0.828 0.742 -0.988 1.147 -0.16 0.404 -0.269 0.778 -0.412 1.021 -0.143 0.243 -0.245 0.354 -0.571 0.417 -0.387 0.074 -0.591 0.016 -0.747 -0.072 -0.156 -0.088 -0.275 -0.241 -0.384 -0.427 -0.114 -0.194 -0.114 -0.855 -0.114 -0.855 l 0.001 -10.224 c -0.001 -0.357 -0.29 -0.647 -0.648 -0.647 l -10.612 0 c -0.271 0 -0.577 -0.074 -0.758 -0.25 -0.188 -0.184 -0.311 -0.373 -0.205 -0.921 0.063 -0.325 0.174 -0.428 0.417 -0.571 0.243 -0.143 0.617 -0.253 1.021 -0.412 0.404 -0.159 0.919 -0.414 1.147 -0.985 0.228 -0.572 0.096 -1.22 -0.282 -2.024 -0.024 -0.051 -0.054 -0.098 -0.09 -0.141 -0.952 -1.135 -2.463 -1.679 -3.921 -1.871 -0.025 -0.007 -0.069 -0.011 -0.113 -0.015 -0.519 -0.108 -1.088 -0.164 -1.699 -0.143 l -0.003 0 z" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#61c66c;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:evenodd;color-rendering:auto;color-interpolation:sRGB"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-python.svg b/img/icons/Numix/categories/applications-python.svg
new file mode 100644
index 00000000..29001878
--- /dev/null
+++ b/img/icons/Numix/categories/applications-python.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80">
+ <path d="m 40.33 16.334 c -6.259 0 -11.333 2.388 -11.333 5.333 l 0 5.333 12 0 0 1.999 -19.332 0 c -2.945 0 -5.333 5.074 -5.333 11.333 0 6.259 2.388 10.667 5.333 10.667 l 5.333 0 0 -5.333 c 0 -3.674 2.993 -6.667 6.667 -6.667 l 12 0 c 2.953 0 5.333 -2.38 5.333 -5.333 l 0 -12 c 0 -2.945 -4.409 -5.333 -10.668 -5.333 z m -5.333 3.333 c 1.105 0 2 0.895 2 2 0 1.105 -0.895 2 -2 2 -1.105 0 -2 -0.895 -2 -2 0 -1.105 0.895 -2 2 -2 z" style="fill:#658db6;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 39.668 63.67 c 6.259 0 11.333 -2.388 11.333 -5.333 l 0 -5.333 -12 0 0 -1.999 19.332 0 c 2.945 0 5.333 -5.074 5.333 -11.333 0 -6.259 -2.388 -10.667 -5.333 -10.667 l -5.333 0 0 5.333 c 0 3.674 -2.993 6.667 -6.667 6.667 l -12 0 c -2.953 0 -5.333 2.38 -5.333 5.333 l 0 12 c 0 2.945 4.409 5.333 10.668 5.333 z m 5.333 -3.333 c -1.105 0 -2 -0.895 -2 -2 0 -1.105 0.895 -2 2 -2 1.105 0 2 0.895 2 2 0 1.105 -0.895 2 -2 2 z" style="fill:#658db6;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-roleplaying.svg b/img/icons/Numix/categories/applications-roleplaying.svg
new file mode 100644
index 00000000..4e9a4dec
--- /dev/null
+++ b/img/icons/Numix/categories/applications-roleplaying.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="translate(0.33203133,0.33398443)" style="fill:#549ca4;stroke:#549ca4;stroke-width:4.545">
+ <path d="m 69.16 106.23 c 1.626 7.563 2.558 13.247 1.216 20.794 -10.295 8.368 -36.615 12.13 -36.552 20.794 l -3.553 25.973 c 0 8.605 24.552 15.584 54.804 15.584 30.27 0 54.789 -6.979 54.789 -15.584 l -3.521 -25.973 c -0.047 -7.421 -26.526 -12.142 -36.678 -20.794 -0.868 -6.995 -0.189 -13.784 1.311 -20.794 z" transform="scale(0.2474,0.2474)"/>
+ <path d="m 84.82 57.55 c -12.552 0 -22.736 9.789 -22.736 21.836 0.095 4.484 0.474 9.789 3.047 21.868 1.5 4.689 15.03 18.11 15.13 19.658 2.953 1.563 7.579 1.563 10.61 0 0 -1.547 12.13 -14.968 13.658 -19.658 2.874 -12.552 2.874 -17.15 3.03 -21.868 0 -12.05 -10.184 -21.836 -22.736 -21.836 z" transform="scale(0.2474,0.2474)"/>
+ <g style="stroke-linejoin:round">
+ <path d="m 132.74 71.18 c -7.658 -4.547 -20.12 -36.24 -18.19 -22.736 l 4.547 31.815 z" transform="scale(0.2474,0.2474)"/>
+ <path d="m 178.01 71.18 c 7.674 -4.547 20.1 -36.24 18.17 -22.736 l -4.547 31.815 z" transform="scale(0.2474,0.2474)"/>
+ </g>
+ <path d="m 134.81 107.56 c 2.116 9.884 3.268 17.368 1.563 27.25 -13.216 10.973 -47.05 15.931 -47 27.27 l -4.547 34.1 c 0 11.289 31.547 20.447 70.44 20.447 38.936 0 70.48 -9.158 70.48 -20.447 l -4.547 -34.1 c -0.063 -9.71 -34.1 -15.9 -47.16 -27.27 -1.137 -9.174 -0.237 -18.08 1.705 -27.25 z" transform="scale(0.2474,0.2474)"/>
+ <path d="m 155.26 39.36 c -18.805 0 -34.07 14.242 -34.07 31.815 0.158 6.505 0.711 14.242 4.547 31.815 2.274 6.821 22.531 25.01 22.721 27.27 4.421 2.289 11.368 2.289 15.916 0 0 -2.258 18.19 -20.447 20.447 -27.27 4.326 -18.284 4.326 -24.994 4.563 -31.815 0 -17.573 -15.268 -31.815 -34.12 -31.815 z" transform="scale(0.2474,0.2474)"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/applications-ruby.svg b/img/icons/Numix/categories/applications-ruby.svg
new file mode 100644
index 00000000..b09064b8
--- /dev/null
+++ b/img/icons/Numix/categories/applications-ruby.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 26.28 13.608 5.186 13.162 5.827 -14.97" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#de4646;stroke-linecap:round;stroke-linejoin:round;stroke-width:1"/>
+ <path d="m 26.28 13.608 -10.07 14.05 1.947 -12.539" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#de4646;stroke-linecap:round;stroke-linejoin:round;stroke-width:1"/>
+ <path d="m 37.29 11.812 11.544 11.6 -2.411 -11.906" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#de4646;stroke-linecap:round;stroke-linejoin:round;stroke-width:1"/>
+ <path d="m 7.5 27.789 27.935 24.711 -12.183 -24.901" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#de4646;stroke-linecap:round;stroke-linejoin:round;stroke-width:1"/>
+ <path d="m 7.501 27.789 10.619 -12.672 8.16 -1.509 -3.03 13.991" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#de4646;stroke-linecap:round;stroke-linejoin:round;stroke-width:1"/>
+ <path d="m 37.29 11.8 9.133 -0.293 10.07 9.725 -16.08 4.575" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#de4646;stroke-linecap:round;stroke-linejoin:round;stroke-width:1"/>
+ <path d="m 26.28 13.608 11.01 -1.808 3.123 14.01 -17.16 1.792" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#de4646;stroke-linecap:round;stroke-linejoin:round;stroke-width:1"/>
+ <path d="m 35.435 52.5 21.07 -31.27 -16.08 4.574" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#de4646;stroke-linecap:round;stroke-linejoin:round;stroke-width:1"/>
+ <path d="m 48.837 23.413 -13.402 29.09" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#de4646;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5"/>
+ <path d="m 31.466 26.77 3.969 25.73" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#de4646;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5"/>
+ <path d="m 16.214 27.656 19.221 24.845" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#de4646;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-science.svg b/img/icons/Numix/categories/applications-science.svg
new file mode 100644
index 00000000..4123c591
--- /dev/null
+++ b/img/icons/Numix/categories/applications-science.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 51.2 51.2">
+ <g transform="matrix(1.3333725,0,0,1.3333725,-2.5080658e-4,0.00210808)">
+ <path d="m 16.25 5.416 c -1.072 0.013 -1.766 0.084 -1.766 0.084 l -0.172 0.02 -0.145 0.096 c -0.294 0.196 -0.448 0.635 -0.416 0.908 0.032 0.273 0.132 0.443 0.223 0.588 0.088 0.14 0.115 0.153 0.189 0.238 l 0.154 4.262 -4.199 16.486 c -0.78 2.582 -0.965 4.199 -0.936 5.219 0.015 0.512 0.085 0.876 0.166 1.133 0.081 0.257 0.23 0.475 0.23 0.475 l 0.053 0.068 0.068 0.055 c 2.619 2.028 5.675 2.305 8.371 2.1 -0.015 -0.416 0.002 -0.874 0.105 -1.43 -2.497 0.204 -5.217 -0.017 -7.496 -1.721 -0.035 -0.117 -0.085 -0.33 -0.096 -0.719 -0.023 -0.809 0.128 -2.298 0.887 -4.803 l 0.004 -0.016 4.25 -16.697 -0.172 -4.836 c 0.546 -0.041 1.825 -0.035 3.594 0.113 l -0.453 4.617 3.045 14.08 0.902 -2.471 -2.531 -11.693 0.434 -4.398 c 0.099 -0.157 0.318 -0.274 0.338 -0.408 0.046 -0.32 -0.031 -0.576 -0.031 -0.576 l -0.119 -0.439 -0.449 -0.07 c -1.511 -0.233 -2.961 -0.279 -4.03 -0.266" transform="scale(0.8,0.8)" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#5b93d7;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:evenodd;color-rendering:auto;color-interpolation:sRGB"/>
+ <path d="m 11.986 28.5 -0.004 0.023 c -0.005 0.02 -0.01 0.034 -0.01 0.049 -0.752 2.48 -0.895 3.937 -0.875 4.693 0.01 0.278 0.034 0.439 0.059 0.547 2.16 1.539 4.72 1.704 7.113 1.484 0.189 -0.808 0.514 -1.755 1.037 -2.883 l 1.418 -3.891 c -3.855 1.74 -6.771 1.088 -8.738 -0.023 z" transform="scale(0.8,0.8)" style="fill:#adc3e2;fill-rule:evenodd"/>
+ </g>
+ <path d="m 28.459 8.114 -0.372 0.081 -0.628 1.435 0.469 0.26 c 0.004 0.032 0.008 0.073 0.008 0.073 l 0 0.023 0.148 4.159 0.026 0.086 c 0.043 0.15 0.06 0.148 0.078 0.167 -0.001 -0.024 -0.148 0.302 -0.297 0.557 -0.159 0.271 -0.307 0.508 -0.307 0.508 l -0.044 0.068 -6.946 19.05 0.026 -0.06 c -1.285 2.749 -1.496 4.534 -1.31 5.716 0.093 0.591 0.288 1.025 0.484 1.315 0.185 0.273 0.402 0.43 0.43 0.451 5.789 4.845 13.12 3.293 16.5 2.75 3.87 -0.621 4.656 -4.307 4.656 -4.307 l 0.026 -0.133 -0.023 -0.135 c -1.338 -7.638 -6.203 -25.636 -6.274 -25.897 l 0.464 -3.755 -0.003 -0.065 c -0.017 -0.344 0.122 -0.456 0.122 -0.456 l 0.258 -0.266 -0.055 -0.367 c -0.083 -0.561 -0.553 -0.951 -0.888 -1.068 -0.333 -0.116 -0.623 -0.089 -0.625 -0.089 l -0.003 0 c -3.98 -0.448 -5.922 -0.099 -5.922 -0.099 z m 0.932 1.474 c 0.308 -0.056 1.355 -0.314 4.948 0.115 l 0.023 0.003 c -0.149 0.278 -0.31 0.333 -0.286 0.826 l 0.005 -0.128 -0.492 3.979 0.039 0.141 c 0 0 4.902 18.19 6.242 25.74 -0.031 0.176 -0.475 2.544 -3.383 3.01 l -0.003 0 c -3.486 0.56 -10.141 1.941 -15.336 -2.438 l -0.031 -0.026 -0.034 -0.023 c 0 0 0.025 0.035 -0.049 -0.076 -0.075 -0.11 -0.187 -0.322 -0.247 -0.708 -0.121 -0.773 -0.018 -2.272 1.188 -4.852 l 0.016 -0.029 6.904 -18.935 c 0.038 -0.06 0.139 -0.217 0.289 -0.474 0.176 -0.3 0.355 -0.55 0.466 -0.961 0.085 -0.316 0.044 -0.633 -0.039 -0.844 -0.014 -0.035 -0.025 -0.049 -0.039 -0.078 l -0.141 -3.873 0 0.049 c 0 0 0 -0.199 -0.039 -0.419 z" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#5b93d7;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:evenodd;color-rendering:auto;color-interpolation:sRGB"/>
+ <path d="m 23.588 32.886 -0.87 2.38 c -0.01 0.036 -0.026 0.073 -0.042 0.109 -1.177 2.516 -1.245 3.917 -1.146 4.547 0.047 0.307 0.13 0.438 0.156 0.474 4.906 4.141 11.11 2.828 14.662 2.26 2.151 -0.344 2.662 -1.917 2.771 -2.385 -0.307 -1.719 -0.802 -3.99 -1.375 -6.469 -6.375 1.578 -11.03 0.578 -14.157 -0.917 z" style="fill:#adc3e2;fill-rule:evenodd"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-sports.svg b/img/icons/Numix/categories/applications-sports.svg
new file mode 100644
index 00000000..5155903f
--- /dev/null
+++ b/img/icons/Numix/categories/applications-sports.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 30.03 56.647 c -10.422 -0.707 -19.574 -8.926 -22.16 -18.871 -2.383 -10.308 2.352 -21.921 11.59 -27.304 5.937 -3.543 13.39 -3.992 19.964 -2.141 8.121 2.492 14.304 9.719 16.472 17.769 c 1.953 7.43 0.547 15.859 -4.637 21.714 -4.691 5.84 -12.191 9.203 -19.699 8.906 -0.508 -0.008 -1.023 -0.035 -1.531 -0.074 z m 6.211 -1.164 c 1.875 -0.164 1.543 -0.734 -0.156 -0.887 -3.039 -0.586 -6.32 -0.598 -9.258 0.43 2.586 1.246 6.02 0.918 8.906 0.547 z m -9.203 -1.648 c 1.332 -1.359 -0.059 -4.609 -1.227 -5.898 -2.609 -1.332 -4.629 -3.5 -7.02 -5.141 -1.797 -0.66 -3.551 0.586 -5.281 1.01 -0.008 1.711 -0.125 3.652 1.387 4.844 2.488 2.449 5.488 4.601 8.875 5.578 1.086 0.047 2.227 -0.02 3.262 -0.391 z m 14.289 0.074 c 4.328 -1.863 8.387 -4.859 10.828 -8.933 0.879 -1.172 1.523 -3.23 -0.77 -2.547 -2.883 1.812 -5.488 4.051 -8.437 5.762 -1.789 1.422 -3.078 3.367 -4.355 5.23 0.441 1.027 1.887 0.781 2.734 0.488 z m 2.937 -7.488 c 2.172 -1.785 5.316 -2.93 6.465 -5.633 0.512 -2.129 0.551 -4.328 0.766 -6.496 -2.168 -1.922 -4.824 -3.223 -7.426 -4.453 -2.574 0.203 -4.648 2.488 -6.687 3.965 -1.082 0.594 -0.801 1.941 -1.102 2.969 -0.391 2.41 -0.844 4.805 -1.113 7.234 2.027 1.488 4.285 2.863 6.746 3.441 0.891 0.008 1.629 -0.59 2.352 -1.027 z m -15.515 0.371 c 1.973 -0.75 4.578 -1.316 5.5 -3.398 0.691 -2.918 1.07 -5.906 1.434 -8.879 -1.961 -1.863 -4.051 -3.824 -6.613 -4.785 -2.215 -0.039 -4.09 1.523 -6.05 2.375 -2.652 0.723 -3.574 3.125 -3.687 5.613 -0.781 2.461 0.113 4.984 2.344 6.34 1.953 1.434 4.461 3.723 7.078 2.734 z m -16.484 -3.445 c -1.594 -2.949 -2.695 -6.176 -3.137 -9.504 -1.582 0.32 -0.145 4.191 0.293 5.769 0.742 2.133 1.879 4.101 3.066 6.02 0.215 -0.789 0.344 -1.57 -0.223 -2.281 z m -0.684 -13.13 c 0.695 -0.996 1.805 -1.777 2.227 -2.918 0.734 -3.437 1.941 -6.758 3.664 -9.836 -0.07 -1.988 -2.297 -3.199 -3.402 -1 -3.152 4.051 -5.625 8.992 -5.738 14.207 -0.414 1.789 1.148 3.086 2.047 0.969 0.395 -0.469 0.801 -0.945 1.203 -1.418 z m 40.616 2.465 c 1.336 -1.75 3.184 -3.828 2.711 -6.203 -0.84 -4.5 -3.152 -8.769 -6.707 -11.699 -1.062 -0.449 -2.988 -2.09 -3.723 -0.539 -1.09 2.09 -3.797 4.062 -2.82 6.66 0.832 2.562 1.445 5.238 2.664 7.656 2.246 1.742 4.836 3.105 7.445 4.25 z m -29.824 -1.164 c 2.07 -1.047 4.082 -2.199 6.101 -3.332 0.676 -2.379 1.535 -4.695 2.332 -7.03 0.109 -2.523 -2.148 -4.336 -3.652 -6.105 -1.484 -2.371 -3.992 -0.555 -5.82 0.312 -4.02 2.148 -4.949 6.867 -6.324 10.812 0.195 1.48 1.551 2.711 2.539 3.809 1.363 1.375 2.898 3.199 4.824 1.531 z m 14.843 -12.754 c 1.074 -0.148 2.273 -0.039 3.262 -0.344 1.492 -1.598 2.801 -3.465 3.418 -5.566 -0.746 -2.117 -3.223 -3.082 -5.215 -3.805 -2.531 -0.746 -5.246 -1.117 -7.875 -0.816 -1.894 0.961 -5.301 3.766 -3.379 5.949 1.406 1.672 2.902 3.262 4.434 4.828 1.789 0.02 3.574 -0.121 5.355 -0.246 z" style="fill:#9c9c37;stroke:#9c9c37;stroke-width:0.247"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-system.svg b/img/icons/Numix/categories/applications-system.svg
new file mode 100644
index 00000000..accd14c3
--- /dev/null
+++ b/img/icons/Numix/categories/applications-system.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 32 8 c -13.226 0 -24 10.774 -24 24 0 13.226 10.774 24 24 24 13.226 0 24 -10.774 24 -24 0 -13.226 -10.774 -24 -24 -24 m 0 9 c 1.657 0 3 1.343 3 3 0 1.657 -1.343 3 -3 3 -1.657 0 -3 -1.343 -3 -3 0 -1.657 1.343 -3 3 -3 z m -6 8 9 0 0 18.995 4 0 l 0 3.01 l -14 0 0 -3.01 4 0.003 0 -15.997 -3 0 0 -3 z" style="fill:#ee6454"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-utilities.svg b/img/icons/Numix/categories/applications-utilities.svg
new file mode 100644
index 00000000..3ccb8e15
--- /dev/null
+++ b/img/icons/Numix/categories/applications-utilities.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 51.5 32 c 0.004 10.77 -8.728 19.5 -19.5 19.5 -10.772 0 -19.504 -8.73 -19.5 -19.5 -0.004 -10.77 8.728 -19.5 19.5 -19.5 c 10.772 0 19.504 8.73 19.5 19.5 z" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#2f8b96;stroke-width:3"/>
+ <path d="m 24.5 32 c 0 1.796 -1.457 3.25 -3.252 3.25 c -1.791 0 -3.248 -1.454 -3.248 -3.25 0 -1.792 1.457 -3.25 3.248 -3.25 1.795 0 3.252 1.458 3.252 3.25" style="fill:#2f8b96"/>
+ <path d="m 35.25 32 c 0 1.796 -1.454 3.25 -3.25 3.25 -1.796 0 -3.25 -1.454 -3.25 -3.25 0 -1.792 1.454 -3.25 3.25 -3.25 1.796 0 3.25 1.458 3.25 3.25 z" style="fill:#2f8b96"/>
+ <path d="m 46 32 c 0 1.796 -1.458 3.25 -3.25 3.25 -1.796 0 -3.25 -1.454 -3.25 -3.25 0 -1.792 1.454 -3.25 3.25 -3.25 1.792 0 3.25 1.458 3.25 3.25 z" style="fill:#2f8b96"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-versioncontrol.svg b/img/icons/Numix/categories/applications-versioncontrol.svg
new file mode 100644
index 00000000..52c4382b
--- /dev/null
+++ b/img/icons/Numix/categories/applications-versioncontrol.svg
@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 51.2 51.2">
+ <path d="m 6.874 6.4 37.453 0 c 0.263 0 0.474 0.211 0.474 0.474 l 0 37.452 c 0 0.263 -0.211 0.474 -0.474 0.474 l -37.453 0 c -0.263 0 -0.474 -0.211 -0.474 -0.474 l 0 -37.452 c 0 -0.263 0.211 -0.474 0.474 -0.474 z" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#ca9a69;stroke-linecap:round;stroke-width:1.6"/>
+ <path d="m 8.8 6.667 0 37.867 0.8 0 0 -5.333 4 0 0 -0.8 -4 0 0 -5.6 4 0 0 -0.8 -4 0 0 -5.6 5.6 0 0 -0.8 -5.6 0 0 -5.6 5.6 0 0 -0.8 -5.6 0 0 -5.6 4 0 0 -0.8 -4 0 0 -6.133 z" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#ca9a69;opacity:1;image-rendering:auto;fill-opacity:0.6;stroke:none;display:inline;color:#000;fill-rule:nonzero;color-rendering:auto;color-interpolation:sRGB"/>
+ <rect width="3.2" height="3.2" x="15.2" y="11.2" rx="0.533" style="fill:#ca9a69;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect width="3.2" height="3.2" x="15.2" y="36.8" rx="0.533" style="fill:#ca9a69;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect width="19.2" height="3.2" x="20.8" y="11.2" rx="0.533" style="fill:#ca9a69;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect width="3.2" height="3.2" x="16.8" y="17.6" rx="0.533" style="fill:#ca9a69;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect width="3.2" height="3.2" x="16.8" y="24" rx="0.533" style="fill:#ca9a69;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect width="3.2" height="3.2" x="15.2" y="30.4" rx="0.533" style="fill:#ca9a69;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect width="19.2" height="3.2" x="22.4" y="17.6" rx="0.533" style="fill:#ca9a69;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect width="19.2" height="3.2" x="22.4" y="24" rx="0.533" style="fill:#ca9a69;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect width="19.2" height="3.2" x="20.8" y="30.4" rx="0.533" style="fill:#ca9a69;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect width="19.2" height="3.2" x="20.8" y="36.8" rx="0.533" style="fill:#ca9a69;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+</svg>
diff --git a/img/icons/Numix/categories/applications-viewers.svg b/img/icons/Numix/categories/applications-viewers.svg
new file mode 100644
index 00000000..4bf0ea9d
--- /dev/null
+++ b/img/icons/Numix/categories/applications-viewers.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 31.983 17 c -0.516 0 -1.01 0.048 -1.507 0.064 -6.075 0.24 -10.779 1.822 -14.03 3.484 -3.529 1.798 -5.583 3.812 -5.583 3.812 -1.152 1.199 -1.144 3.356 0.016 4.539 1.168 1.191 3.279 1.199 4.447 0.024 0 0 0.878 -0.879 2.82 -2.01 -0.572 1.598 -0.854 3.3 -0.854 5.091 0 8.239 6.622 14.992 14.695 14.992 8.08 0 14.695 -6.753 14.695 -14.992 0 -1.79 -0.274 -3.492 -0.846 -5.091 1.942 1.127 2.82 2.01 2.82 2.01 1.16 1.207 3.303 1.215 4.471 0.024 1.176 -1.199 1.168 -3.38 -0.016 -4.563 0 0 -2.046 -2.02 -5.575 -3.82 -3.255 -1.662 -7.96 -3.245 -14.03 -3.484 -0.491 -0.048 -1.01 -0.064 -1.515 -0.064 z m 0 4.715 c 4.681 0 11.15 2.182 11.15 10.277 0 7.096 -4.407 11.3 -11.15 11.3 -6.638 0 -11.05 -4.307 -11.05 -11.3 0 -7.184 6.373 -10.277 11.05 -10.277 z" style="fill:#4cb29c"/>
+ <path d="m 35.5 31.993 c 0 1.942 -1.572 3.507 -3.507 3.507 -1.921 0 -3.493 -1.564 -3.493 -3.507 0 -1.929 1.572 -3.493 3.493 -3.493 1.935 0 3.507 1.564 3.507 3.493 z" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#4cb29c;stroke-linecap:round;stroke-linejoin:round;stroke-width:4"/>
+</svg>
diff --git a/img/icons/Numix/categories/gnome-applications.svg b/img/icons/Numix/categories/gnome-applications.svg
new file mode 100644
index 00000000..5edf235f
--- /dev/null
+++ b/img/icons/Numix/categories/gnome-applications.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="translate(0.33454306,0.3339845)" style="fill:#6f8bc0">
+ <path d="m 47.676 6.926 c -10.379 0 -12.324 14.664 -6.484 14.664 5.832 0 16.855 -14.664 6.484 -14.664 z"/>
+ <path d="m 30.449 19.773 c 3.105 0.188 6.516 -11.766 0.676 -11.02 -5.84 0.754 -3.789 10.824 -0.676 11.02"/>
+ <path d="m 16.203 27.2 c 2.215 -0.961 0.289 -10.41 -3.469 -7.832 -3.758 2.574 1.262 8.797 3.469 7.832 z"/>
+ <path d="m 22.434 22.258 c 2.633 -0.531 2.773 -11.242 -1.914 -9.32 -4.691 1.926 -0.715 9.855 1.914 9.32 z"/>
+ <path d="m 36.17 46.22 c 0.469 3.539 -2.617 5.285 -5.633 3.01 -9.609 -7.262 15.914 -10.879 14.227 -20.801 -1.395 -8.23 -26.848 -5.699 -29.746 7.188 -1.965 8.711 8.07 20.793 18.547 20.793 5.156 0 11.1 -4.617 12.207 -10.461 0.855 -4.461 -9.992 -2.676 -9.602 0.273 z"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/gnome-settings.svg b/img/icons/Numix/categories/gnome-settings.svg
new file mode 100644
index 00000000..33a128a8
--- /dev/null
+++ b/img/icons/Numix/categories/gnome-settings.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="matrix(2,0,0,2,0,-64)">
+ <path d="m 5 36 0 16 1 0 0 -16" style="fill:#ec86ab"/>
+ <path d="m 7.5 53 c 0 1.102 -0.898 2 -2 2 c -1.102 0 -1.996 -0.898 -1.996 -2 0 -1.106 0.894 -2 1.996 -2 1.106 0 2 0.894 2 2" style="fill:#ec86ab"/>
+ <path d="m 13 60 0 -20 -1 0 0 20 z" style="fill:#ec86ab"/>
+ <path d="m 10.5 39 c 0 -1.106 0.898 -2 1.996 -2 1.106 0 2 0.898 2 2 0 1.098 -0.898 1.996 -2 1.996 -1.098 0 -1.996 -0.898 -1.996 -1.996" style="fill:#ec86ab"/>
+ <path d="m 19 36 0 15 1 0 0 -15 z" style="fill:#ec86ab"/>
+ <path d="m 21.5 52 c 0 1.102 -0.898 2 -2 2 -1.102 0 -2 -0.898 -2 -2 0 -1.102 0.898 -2 2 -2 1.102 0 2 0.898 2 2 z" style="fill:#ec86ab"/>
+ <path d="m 27 60 0 -11 -1 0 0 11 z" style="fill:#ec86ab"/>
+ <path d="m 24.5 47.998 c 0 -1.107 0.898 -1.998 2 -1.998 1.098 0 1.996 0.891 1.996 1.998 0 1.107 -0.898 2 -1.996 2 -1.106 0 -2 -0.895 -2 -2" style="fill:#ec86ab"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/gnome-system.svg b/img/icons/Numix/categories/gnome-system.svg
new file mode 100644
index 00000000..e6e7198c
--- /dev/null
+++ b/img/icons/Numix/categories/gnome-system.svg
@@ -0,0 +1,20 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 36.5 32 c 0 2.482 -2.022 4.496 -4.504 4.496 -2.482 0 -4.496 -2.01 -4.496 -4.496 0 -2.482 2.01 -4.504 4.496 -4.504 2.482 0 4.504 2.02 4.504 4.504" style="fill:#b98595"/>
+ <circle cx="32" cy="32" r="20" style="stroke-dasharray:none;stroke-opacity:1;fill:none;opacity:1;stroke-miterlimit:4;fill-opacity:1;stroke:#b98595;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:4;stroke-dashoffset:0"/>
+ <g transform="matrix(2,0,0,1.9230769,7e-7,1.2307696)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#b98595;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#b98595;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+ <g transform="matrix(0,2,-1.9230769,0,62.76923,-4e-7)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#b98595;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#b98595;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+ <g transform="matrix(1.4142136,1.4142136,-1.3598207,1.3598207,31.129714,-12.384548)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#b98595;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#b98595;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+ <g transform="matrix(1.4142136,-1.4142136,1.3598207,1.3598207,-12.384548,32.870286)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#b98595;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#b98595;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/package_system.svg b/img/icons/Numix/categories/package_system.svg
new file mode 100644
index 00000000..f8d38501
--- /dev/null
+++ b/img/icons/Numix/categories/package_system.svg
@@ -0,0 +1,20 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 36.5 32 c 0 2.482 -2.022 4.496 -4.504 4.496 -2.482 0 -4.496 -2.01 -4.496 -4.496 0 -2.482 2.01 -4.504 4.496 -4.504 2.482 0 4.504 2.02 4.504 4.504" style="fill:#c65a4a"/>
+ <circle cx="32" cy="32" r="20" style="stroke-dasharray:none;stroke-opacity:1;fill:none;opacity:1;stroke-miterlimit:4;fill-opacity:1;stroke:#c65a4a;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:4;stroke-dashoffset:0"/>
+ <g transform="matrix(2,0,0,1.9230769,7e-7,1.2307696)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#c65a4a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#c65a4a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+ <g transform="matrix(0,2,-1.9230769,0,62.76923,-4e-7)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#c65a4a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#c65a4a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+ <g transform="matrix(1.4142136,1.4142136,-1.3598207,1.3598207,31.129714,-12.384548)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#c65a4a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#c65a4a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+ <g transform="matrix(1.4142136,-1.4142136,1.3598207,1.3598207,-12.384548,32.870286)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#c65a4a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#c65a4a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-autocompletion.svg b/img/icons/Numix/categories/preferences-autocompletion.svg
new file mode 100644
index 00000000..a1668085
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-autocompletion.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 27.07 8 -18.911 48 l 7.165 0 6.83 -17.33 19.701 0 l 6.83 17.33 l 7.157 0 -7.874 -20 6.703 0 -1.339 8 l 8 -12 -8 -12 l 1.339 8 -9.857 0 -7.875 -20 z m 4.935 5.652 7.225 18.348 -14.451 0 z" mix-blend-mode="normal" isolation="auto" white-space="normal" solid-opacity="1" solid-color="#000000" style="visibility:visible;shape-rendering:auto;color-interpolation-filters:linearRGB;fill:#7c9bb1;opacity:1;image-rendering:auto;fill-opacity:1;stroke:none;display:inline;color:#000;fill-rule:evenodd;color-rendering:auto;color-interpolation:sRGB"/>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-bluetooth.svg b/img/icons/Numix/categories/preferences-bluetooth.svg
new file mode 100644
index 00000000..2119d285
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-bluetooth.svg
@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="matrix(1.25,0,0,1.25,67.416875,2)">
+ <g>
+ <!-- color: #659eb9 -->
+ <g>
+ <path d="m -30.733 4 0 16 -8 -8 -2.667 2.667 10 9.333 -10 9.333 2.667 2.667 8 -8 0 16 16 -12 -10.255 -8 10.255 -8 z m 4 8 5.333 4 -5.333 4 z m 0 16 5.333 4 -5.333 4 z" style="fill:#659eb9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-calendar-and-tasks.svg b/img/icons/Numix/categories/preferences-calendar-and-tasks.svg
new file mode 100644
index 00000000..71cb4ff0
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-calendar-and-tasks.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" viewBox="0 0 18.062223 18.062223" height="64">
+ <path d="m 2.614 6.589 0 9.78 12.834 0 0 -9.78" style="stroke-dasharray:none;stroke-opacity:1;fill:none;stroke-miterlimit:4;stroke:#7fc063;fill-rule:evenodd;stroke-linecap:butt;stroke-linejoin:round;stroke-width:0.564"/>
+ <path d="m 14.306 2.562 2.345 0 0 2.876 -15.24 0 0 -2.876 2.345 0" style="stroke-dasharray:none;stroke-opacity:1;fill:none;stroke-miterlimit:4;stroke:#7fc063;fill-rule:evenodd;stroke-linecap:butt;stroke-linejoin:round;stroke-width:0.564"/>
+ <path d="m 6.1 2.562 5.862 0" style="stroke-dasharray:none;stroke-opacity:1;fill:none;stroke-miterlimit:4;stroke:#7fc063;fill-rule:evenodd;stroke-linecap:butt;stroke-linejoin:round;stroke-width:0.564"/>
+ <path d="m 4.928 1.411 0 2.301" style="stroke-dasharray:none;stroke-opacity:1;fill:none;stroke-miterlimit:4;stroke:#7fc063;fill-rule:evenodd;stroke-linecap:butt;stroke-linejoin:round;stroke-width:0.564"/>
+ <path d="m 13.13 1.411 0 2.301" style="stroke-dasharray:none;stroke-opacity:1;fill:none;stroke-miterlimit:4;stroke:#7fc063;fill-rule:evenodd;stroke-linecap:butt;stroke-linejoin:round;stroke-width:0.564"/>
+ <path d="m 4.342 9.465 9.378 0" style="stroke-dasharray:none;stroke-opacity:1;fill:none;stroke-miterlimit:4;stroke:#7fc063;fill-rule:evenodd;stroke-linecap:butt;stroke-linejoin:round;stroke-width:0.564"/>
+ <path d="m 4.342 12.342 9.378 0" style="stroke-dasharray:none;stroke-opacity:1;fill:none;stroke-miterlimit:4;stroke:#7fc063;fill-rule:evenodd;stroke-linecap:butt;stroke-linejoin:round;stroke-width:0.564"/>
+ <path d="m 11.962 7.164 0 7.479" style="stroke-dasharray:none;stroke-opacity:1;fill:none;stroke-miterlimit:4;stroke:#7fc063;fill-rule:evenodd;stroke-linecap:butt;stroke-linejoin:round;stroke-width:0.564"/>
+ <path d="m 6.1 7.164 0 7.479" style="stroke-dasharray:none;stroke-opacity:1;fill:none;stroke-miterlimit:4;stroke:#7fc063;fill-rule:evenodd;stroke-linecap:butt;stroke-linejoin:round;stroke-width:0.564"/>
+ <path d="m 9.03 7.164 0 7.479" style="stroke-dasharray:none;stroke-opacity:1;fill:none;stroke-miterlimit:4;stroke:#7fc063;fill-rule:evenodd;stroke-linecap:butt;stroke-linejoin:round;stroke-width:0.564"/>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-certificates.svg b/img/icons/Numix/categories/preferences-certificates.svg
new file mode 100644
index 00000000..e993200e
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-certificates.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 31.984 5 c -2.036 0 -3.743 1.164 -4.526 2.807 -1.551 -1.053 -3.712 -1.26 -5.466 -0.287 -1.754 0.957 -2.678 2.791 -2.506 4.578 -1.879 -0.016 -3.837 0.718 -4.839 2.361 -1.018 1.659 -0.814 3.7 0.313 5.168 c -1.738 0.734 -2.96 2.361 -2.96 4.275 c 0 1.914 1.222 3.541 2.96 4.275 -1.112 1.467 -1.331 3.493 -0.313 5.168 1 1.643 2.96 2.52 4.839 2.361 -0.172 1.786 0.752 3.621 2.506 4.578 0.783 0.431 1.146 0.59 2.01 0.59 l 0 20.13 8 -7.082 8 7.082 0 -20.13 c 0.846 0 1.225 -0.016 2.01 -0.59 1.754 -0.957 2.678 -2.791 2.506 -4.578 1.879 0.016 3.837 -0.718 4.839 -2.361 1.018 -1.659 0.814 -3.7 -0.313 -5.168 c 1.738 -0.734 2.96 -2.361 2.96 -4.275 0 -1.914 -1.222 -3.541 -2.96 -4.275 1.112 -1.467 1.331 -3.493 0.313 -5.168 -1 -1.643 -2.96 -2.52 -4.839 -2.361 0.172 -1.786 -0.752 -3.621 -2.506 -4.578 -1.754 -0.957 -3.915 -0.766 -5.466 0.287 -0.783 -1.643 -2.49 -2.807 -4.526 -2.807 m -0.031 7 c 6.891 0 12.498 5.279 12.498 11.803 0 6.523 -5.591 11.803 -12.498 11.803 -6.891 0 -12.498 -5.279 -12.498 -11.803 0 -6.523 5.591 -11.803 12.498 -11.803 z m 0 2.361 c -5.513 0 -9.992 4.227 -9.992 9.442 0 5.216 4.479 9.442 9.992 9.442 5.513 0 9.992 -4.227 9.992 -9.442 0 -5.216 -4.479 -9.442 -9.992 -9.442 z" style="fill:#d64c62;fill-opacity:1"/>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-composer.svg b/img/icons/Numix/categories/preferences-composer.svg
new file mode 100644
index 00000000..69f88590
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-composer.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 20.693 12 c 0 0 -2.693 0 -2.693 2.664 l 0 34.672 c 0 2.664 2.543 2.664 2.543 2.664 l 22.913 0 c 2.543 0 2.543 -2.664 2.543 -2.664 l 0 -32 l -5.087 -5.336 -20.37 0 m 1.457 4 l 13 0 0 7 7 0 0 25 -20 0 z" style="fill:#9ddee4;fill-opacity:1"/>
+ <path d="m 55.25 16 4.746 4.746 -20.881 20.881 -7.119 2.373 2.373 -7.119" style="fill:#9ddee4;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-desktop-accessibility.svg b/img/icons/Numix/categories/preferences-desktop-accessibility.svg
new file mode 100644
index 00000000..517b7557
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-desktop-accessibility.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 32 6 c -14.346 0 -26 11.654 -26 26 0 14.346 11.654 26 26 26 14.346 0 26 -11.654 26 -26 0 -14.346 -11.654 -26 -26 -26 m 0.18 9.1 c 2.089 0 3.783 1.733 3.783 3.87 0 2.136 -1.695 3.872 -3.783 3.872 -2.089 0 -3.786 -1.736 -3.786 -3.872 0 -2.136 1.697 -3.87 3.786 -3.87 z m -13.635 7.917 c 0.195 0.007 0.395 0.046 0.599 0.081 l 12.855 2.255 12.909 -2.161 c 0.175 -0.029 0.323 -0.078 0.498 -0.107 0.501 -0.057 0.992 0.218 1.171 0.688 0.179 0.47 0.001 1.014 -0.411 1.303 l -10.08 3.486 0.005 7.396 3.489 11.286 c 0.304 0.531 0.119 1.205 -0.414 1.508 -0.533 0.303 -1.211 0.119 -1.516 -0.411 l -5.627 -12.11 -5.738 12.13 c -0.342 0.512 -1.071 0.615 -1.584 0.274 -0.514 -0.341 -0.617 -0.999 -0.274 -1.511 l 3.555 -11.238 0.069 -7.505 -10.07 -3.268 c -0.367 -0.192 -0.627 -0.547 -0.622 -0.96 0.005 -0.413 0.251 -0.848 0.622 -1.031 0.186 -0.092 0.376 -0.116 0.571 -0.109 z" style="fill:#698ecc;fill-opacity:1;stroke:none"/>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-desktop-display.svg b/img/icons/Numix/categories/preferences-desktop-display.svg
new file mode 100644
index 00000000..002583ee
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-desktop-display.svg
@@ -0,0 +1,6 @@
+<!-- color: #71e9d2 -->
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <g transform="matrix(1.3333148,0,0,1.3333148,1.114713e-4,2.000417)" style="fill:#c088c3;fill-opacity:1">
+ <path d="m 8 6 c -1 0 -2 1 -2 2 l 0 23.5 15 0 c 0 0 0 4.5 -3 6 l -3 0 0 1.5 18 0 0 -1.5 -3 0 c -3 -1.5 -3 -6 -3 -6 l 15 0 l 0 -23.5 c 0 -1 -1 -2 -2 -2 z m 1 3 30 0 0 18 -30 0 z m 12 19.5 l 6 0 0 1.5 -6 0 z" style="stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-desktop-peripherals-directory.svg b/img/icons/Numix/categories/preferences-desktop-peripherals-directory.svg
new file mode 100644
index 00000000..1356ec8a
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-desktop-peripherals-directory.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 24.1 12.881 c 0 -0.767 -0.448 -1.381 -1 -1.381 -0.552 0 -1 0.615 -1 1.381 l 0 5.119 2 0 z" style="fill:#555"/>
+ <path d="m 22.1 51.11 c 0 0.767 0.448 1.389 1 1.389 0.552 0 1 -0.623 1 -1.389 l 0 -5.111 -2 0 z" style="fill:#555"/>
+ <path d="m 33 12.881 c 0 -0.767 -0.45 -1.381 -1 -1.381 -0.553 0 -0.997 0.615 -0.997 1.381 l 0 5.119 l 2 0 z" style="fill:#555"/>
+ <path d="m 31 51.11 c 0 0.767 0.444 1.389 0.997 1.389 0.553 0 1 -0.623 1 -1.389 l 0 -5.111 -2 0" style="fill:#555"/>
+ <path d="m 42 12.881 c 0 -0.767 -0.444 -1.381 -1 -1.381 -0.553 0 -0.997 0.615 -0.997 1.381 l 0 5.119 l 2 0 z" style="fill:#555"/>
+ <path d="m 40 51.11 c 0 0.767 0.444 1.389 1 1.389 0.553 0 0.997 -0.623 0.997 -1.389 l 0 -5.111 -2 0" style="fill:#555"/>
+ <path d="m 12.883 40 c -0.768 0 -1.383 0.444 -1.383 0.997 0 0.553 0.616 1 1.383 1 l 5.117 0 0 -2" style="fill:#555"/>
+ <path d="m 51.11 42 c 0.768 0 1.391 -0.45 1.391 -1 0 -0.553 -0.624 -0.997 -1.391 -0.997 l -5.109 0 l 0 2 z" style="fill:#555"/>
+ <path d="m 12.883 31 c -0.768 0 -1.383 0.448 -1.383 1 c 0 0.546 0.616 1 1.383 1 l 5.117 0 0 -2" style="fill:#555"/>
+ <path d="m 51.11 33 c 0.768 0 1.391 -0.454 1.391 -1 c 0 -0.552 -0.624 -1 -1.391 -1 l -5.109 0 l 0 2 z" style="fill:#555"/>
+ <path d="m 12.883 22 c -0.768 0 -1.383 0.448 -1.383 1 c 0 0.546 0.616 1 1.383 1 l 5.117 0 0 -2" style="fill:#555"/>
+ <path d="m 51.11 24 c 0.768 0 1.391 -0.454 1.391 -1 c 0 -0.552 -0.624 -1 -1.391 -1 l -5.109 0 l 0 2 z" style="fill:#555"/>
+ <path d="m 39.29 42 c 1.49 0 2.713 -1.21 2.713 -2.709 l 0 -14.583 c 0 -1.499 -1.223 -2.709 -2.713 -2.709 l -14.581 0 c -1.49 0 -2.706 1.21 -2.706 2.709 l 0 14.583 c 0 1.499 1.216 2.709 2.706 2.709" style="fill:#555"/>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-desktop-personal-directory.svg b/img/icons/Numix/categories/preferences-desktop-personal-directory.svg
new file mode 100644
index 00000000..a9af0811
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-desktop-personal-directory.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 28.837 10 6.325 0 c 9.484 0 8.837 9.622 8.837 9.622 l 0 8.255 c 0 3.142 -6 9.622 -6 9.622 l 0 4.127 14 6.871 l 0 5.503 l -40 0 0 -5.503 14 -6.871 0 -4.127 c 0 0 -6.02 -6.48 -6 -9.622 l 0 -8.255 c 0 0 -0.646 -9.622 8.837 -9.622" style="fill:#555"/>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-mail-accounts.svg b/img/icons/Numix/categories/preferences-mail-accounts.svg
new file mode 100644
index 00000000..9539484d
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-mail-accounts.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 51.2 51.2">
+ <path d="m 31.771 19.2 3.657 0 c 5.486 0 5.368 5.601 5.368 5.601 l 0 4.8 c 0 1.827 -3.198 5.601 -3.198 5.601 l 0 2.4 7.201 3.998 0 3.201 -22.4 0 0 -3.201 7.201 -3.998 0 -2.4 c 0 0 -3.21 -3.773 -3.198 -5.601 l 0 -4.8 c 0 0 -0.118 -5.601 5.368 -5.601 z" style="fill:#555"/>
+ <path d="m 15.772 6.4 c -5.486 0 -5.369 5.6 -5.369 5.6 l 0 4.8 c -0.012 1.827 3.197 5.6 3.197 5.6 l 0 2.4 -7.2 4 0 3.2 19.09 0 c -0.008 -0.017 -0.02 -0.033 -0.028 -0.05 -0.352 -0.718 -0.662 -1.431 -0.656 -2.359 l 0 -3.01 l -3.206 -1.781 l 0 -2.4 c 0 0 3.197 -3.773 3.197 -5.6 l 0 -4.8 c 0 0 0.117 -5.6 -5.369 -5.6 l -3.656 0 z m 12.231 21.956 0 1.247 a 1.6 1.6 0 0 1 0 0.006 c 0 -0.015 0.088 0.431 0.334 0.934 0.116 0.237 0.306 0.51 0.462 0.772 l 0 -2.516 -0.797 -0.444" style="fill:#555"/>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-system-directory.svg b/img/icons/Numix/categories/preferences-system-directory.svg
new file mode 100644
index 00000000..51ae76c4
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-system-directory.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 56 27.15 0 9.692 c 0 0.639 -0.683 1.154 -1.509 1.154 l -8.982 0 c -0.834 0 -1.509 -0.515 -1.509 -1.154 l 0 -9.692 c 0 -0.63 0.675 -1.154 1.509 -1.154 l 8.982 0 c 0.825 0 1.509 0.524 1.509 1.154" style="fill:#555"/>
+ <path d="m 38 27.15 0 9.692 c 0 0.639 -0.675 1.154 -1.509 1.154 l -8.982 0 c -0.834 0 -1.509 -0.515 -1.509 -1.154 l 0 -9.692 c 0 -0.63 0.675 -1.154 1.509 -1.154 l 8.982 0 c 0.834 0 1.509 0.524 1.509 1.154" style="fill:#555"/>
+ <path d="m 20 27.15 0 9.692 c 0 0.639 -0.683 1.154 -1.509 1.154 l -8.982 0 c -0.834 0 -1.509 -0.515 -1.509 -1.154 l 0 -9.692 c 0 -0.63 0.675 -1.154 1.509 -1.154 l 8.982 0 c 0.825 0 1.509 0.524 1.509 1.154" style="fill:#555"/>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-system-network-proxy.svg b/img/icons/Numix/categories/preferences-system-network-proxy.svg
new file mode 100644
index 00000000..f2946438
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-system-network-proxy.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 32 7 c -3.879 0 -7.555 0.887 -10.834 2.469 l -0.15 -0.055 c -0.02 0.053 -0.035 0.109 -0.055 0.162 c -8.265 4.083 -13.961 12.594 -13.961 22.424 c 0 9.838 5.706 18.357 13.982 22.436 c 0.023 0.053 0.041 0.107 0.064 0.16 l 0.135 -0.059 c 3.275 1.577 6.945 2.463 10.818 2.463 c 3.875 0 7.546 -0.886 10.822 -2.465 l 0.139 0.061 c 0.024 -0.054 0.043 -0.11 0.066 -0.164 c 8.271 -4.08 13.973 -12.597 13.973 -22.432 c 0 -9.826 -5.692 -18.336 -13.951 -22.42 c -0.02 -0.055 -0.036 -0.111 -0.057 -0.166 l -0.154 0.057 c -3.28 -1.583 -6.957 -2.471 -10.838 -2.471 z m -1.5 3.057 l 0 7.943 l -6.826 0 c -0.872 0 -1.674 0.74 -1.674 1.668 l 0 0.332 l -0.871 0 c 0.572 -2.791 1.324 -5.546 2.25 -8.236 c 2.211 -0.941 4.605 -1.538 7.121 -1.707 z m 3 0 c 2.514 0.169 4.913 0.753 7.123 1.693 c 0.927 2.693 1.671 5.457 2.242 8.25 l -0.865 0 l 0 -0.332 c 0 -0.928 -0.801 -1.668 -1.674 -1.668 l -6.826 0 l 0 -7.943 z m 10.939 3.787 c 2.384 1.635 4.421 3.732 6 6.156 l -4.502 0 c -0.407 -2.072 -0.904 -4.129 -1.498 -6.156 z m -24.873 0.004 c -0.595 2.027 -1.102 4.08 -1.51 6.152 l -4.502 0 c 1.58 -2.426 3.626 -4.517 6.01 -6.152 z m 5.434 7.152 l 14 0 l 0 22 l -14 0 l 0 -22 z m -13.08 2 l 5.615 0 c -0.377 2.494 -0.612 5 -0.705 7.5 l -6.773 0 c 0.178 -2.659 0.827 -5.185 1.863 -7.5 z m 8.664 0 l 1.416 0 l 0 7.5 l -2.152 0 c 0.096 -2.497 0.344 -5 0.736 -7.5 z m 21.416 0 l 1.404 0 c 0.392 2.496 0.641 5 0.736 7.5 l -2.141 0 l 0 -7.5 z m 4.465 0 l 5.613 0 c 1.037 2.315 1.691 4.84 1.869 7.5 l -6.783 0 c -0.093 -2.499 -0.323 -5.01 -0.699 -7.5 z m -11.465 7 a 2 2 0 0 0 -2 2 a 2 2 0 0 0 2 2 a 2 2 0 0 0 2 -2 a 2 2 0 0 0 -2 -2 z m -24.943 3.5 l 6.734 0 c 0.025 2.526 0.186 5.03 0.521 7.5 l -5.393 0 c -1.037 -2.315 -1.685 -4.841 -1.863 -7.5 z m 9.752 0 l 2.191 0 l 0 7.5 l -1.637 0 c -0.351 -2.457 -0.528 -4.967 -0.555 -7.5 z m 22.19 0 l 2.178 0 c -0.027 2.534 -0.211 5.04 -0.563 7.5 l -1.615 0 l 0 -7.5 z m 5.203 0 l 6.744 0 c -0.179 2.659 -0.828 5.186 -1.865 7.5 l -5.41 0 c 0.335 -2.467 0.506 -4.974 0.531 -7.5 z m -33.648 10.5 l 4.25 0 c 0.391 2.036 0.906 4.03 1.527 5.982 c -2.283 -1.61 -4.25 -3.637 -5.777 -5.982 z m 7.33 0 l 1.115 0 l 0 0.332 c 0 0.928 0.801 1.668 1.674 1.668 l 6.826 0 l 0 7.943 c -2.537 -0.17 -4.95 -0.774 -7.176 -1.729 c -1.051 -2.62 -1.864 -5.371 -2.439 -8.215 z m 21.12 0 l 1.096 0 c -0.575 2.844 -1.369 5.605 -2.42 8.227 c -2.225 0.953 -4.642 1.546 -7.176 1.717 l 0 -7.943 l 6.826 0 c 0.872 0 1.674 -0.74 1.674 -1.668 l 0 -0.332 z m 4.18 0 l 4.258 0 c -1.528 2.343 -3.482 4.381 -5.766 5.99 c 0.62 -1.951 1.117 -3.954 1.508 -5.99 z" style="fill:#e78684;fill-opacity:1"/>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-system-network.svg b/img/icons/Numix/categories/preferences-system-network.svg
new file mode 100644
index 00000000..176817a9
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-system-network.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 22.48 11 c -0.807 0.083 -1.484 0.822 -1.48 1.613 l 0 12.775 c 0 0.846 0.787 1.613 1.654 1.613 l 18.692 0 c 0.867 0 1.654 -0.767 1.654 -1.613 l 0 -12.775 c 0 -0.846 -0.787 -1.613 -1.654 -1.613" style="fill:#c0956e"/>
+ <path d="m 9.48 37 c -0.807 0.083 -1.484 0.818 -1.48 1.609 l 0 12.782 c 0 0.842 0.787 1.609 1.654 1.609 l 18.692 0 c 0.867 0 1.654 -0.767 1.654 -1.609 l 0 -12.782 c 0 -0.842 -0.787 -1.609 -1.654 -1.609" style="fill:#c0956e"/>
+ <path d="m 36.48 37 c -0.807 0.083 -1.484 0.818 -1.48 1.609 l 0 12.782 c 0 0.842 0.787 1.609 1.65 1.609 l 18.696 0 c 0.863 0 1.654 -0.767 1.654 -1.609 l 0 -12.782 c 0 -0.842 -0.791 -1.609 -1.654 -1.609" style="fill:#c0956e"/>
+ <path d="m 31 28 0 3 -14 0 0 5 2 0 0 -3 26 0 0 3 2 0 0 -5 -14 0 0 -3 z" style="fill:#c0956e"/>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-system-power.svg b/img/icons/Numix/categories/preferences-system-power.svg
new file mode 100644
index 00000000..8c9863a2
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-system-power.svg
@@ -0,0 +1,4 @@
+<!-- color: #46baa7 -->
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="M 26.5,7 C 25.6735,7 25,7.6735 25,8.5 24.999269,9.4728445 25,12 25,12 l -3.7805,0 C 18.875,12 17,13.974 17,16.3125 l 0,36.375 C 17,55.026 18.881,57 21.2195,57 L 42.782,57 C 45.1205,57 47,55.026 47,52.6875 l 0,-36.375 C 47,13.974 45.1265,12 42.782,12 L 39,12 39,8.5 C 39,7.6735 38.3265,7 37.5,7 Z m 16.282,8 C 43.427,15 44,15.522 44,16.3125 l 0,36.375 C 44,53.478 43.433,54 42.782,54 L 21.2195,54 C 20.5685,54 20,53.478 20,52.6875 l 0,-36.375 C 20,15.522 20.5745,15 21.2195,15 Z M 42,27 22,42 l 0,10 20,0 z" style="fill:#ecb040;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-system-privacy.svg b/img/icons/Numix/categories/preferences-system-privacy.svg
new file mode 100644
index 00000000..6f25a03e
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-system-privacy.svg
@@ -0,0 +1,4 @@
+<!-- color: #8d65ba -->
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 32 14 c -11.214 0.007 -20.22 7.745 -25.466 13.792 -0.652 0.752 -1.352 1.638 -1.936 2.458 -0.398 0.547 -0.596 1.148 -0.596 1.75 c 0 0.602 0.197 1.203 0.596 1.75 0.584 0.82 1.284 1.707 1.936 2.458 c 5.25 6.05 14.26 13.786 25.466 13.792 11.214 -0.006 20.22 -7.745 25.466 -13.792 c 0.652 -0.752 1.352 -1.638 1.936 -2.458 0.398 -0.547 0.596 -1.148 0.596 -1.75 0 -0.602 -0.197 -1.203 -0.596 -1.75 c -0.584 -0.82 -1.284 -1.707 -1.936 -2.458 -5.25 -6.05 -14.26 -13.786 -25.466 -13.792 m 0 4 c 2.985 0.005 5.89 0.964 8.291 2.737 l -5.058 5.058 c -0.998 -0.521 -2.107 -0.794 -3.233 -0.795 c -3.866 0 -7 3.134 -7 7 0.001 1.126 0.274 2.235 0.795 3.233 l -5.058 5.058 c -1.773 -2.401 -2.732 -5.306 -2.737 -8.291 0 -7.732 6.268 -14 14 -14 m 11.256 5.709 c 1.773 2.401 2.732 5.306 2.737 8.291 0 7.732 -6.268 14 -14 14 -2.985 -0.005 -5.89 -0.964 -8.291 -2.737 l 5.058 -5.058 c 0.998 0.521 2.107 0.794 3.233 0.795 3.866 0 7 -3.134 7 -7 -0.001 -1.126 -0.274 -2.235 -0.795 -3.233 z m -9.163 2.691 c 0.164 0.001 0.328 0.014 0.49 0.038 l -3.951 3.951 c -0.024 -0.162 -0.037 -0.326 -0.038 -0.49 0 -1.933 1.567 -3.5 3.5 -3.5 m 3.462 3.01 c 0.024 0.162 0.037 0.326 0.038 0.49 0 1.933 -1.567 3.5 -3.5 3.5 -0.164 -0.001 -0.328 -0.014 -0.49 -0.038 l 3.951 -3.951" style="fill:#eb93b5;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-system-time.svg b/img/icons/Numix/categories/preferences-system-time.svg
new file mode 100644
index 00000000..f36ade63
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-system-time.svg
@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 51.2 51.2">
+ <path d="m 25.413 11.2 0.373 0 c 0.336 0 0.613 0.273 0.613 0.615 l 0 1.969 c 0 0.337 -0.277 0.615 -0.613 0.615 l -0.373 0 c -0.336 0 -0.613 -0.278 -0.613 -0.615 l 0 -1.969 c 0 -0.342 0.277 -0.615 0.613 -0.615 z" style="fill:#fd4651;fill-opacity:1"/>
+ <path d="m 25.413 36.8 0.373 0 c 0.336 0 0.613 0.278 0.613 0.614 l 0 1.971 c 0 0.337 -0.277 0.614 -0.613 0.614 l -0.373 0 c -0.336 0 -0.613 -0.278 -0.613 -0.614 l 0 -1.971 c 0 -0.337 0.277 -0.614 0.613 -0.614 z" style="fill:#fd4651;fill-opacity:1"/>
+ <path d="m 11.2 25.785 0 -0.369 c 0 -0.337 0.278 -0.615 0.62 -0.615 l 1.966 0 c 0.337 0 0.614 0.278 0.614 0.615 l 0 0.369 c 0 0.342 -0.278 0.615 -0.614 0.615 l -1.966 0 c -0.342 0 -0.62 -0.273 -0.62 -0.615 z" style="fill:#fd4651;fill-opacity:1"/>
+ <path d="m 36.8 25.785 0 -0.369 c 0 -0.337 0.278 -0.615 0.615 -0.615 l 1.969 0 c 0.342 0 0.615 0.278 0.615 0.615 l 0 0.369 c 0 0.342 -0.273 0.615 -0.615 0.615 l -1.969 0 c -0.337 0 -0.615 -0.273 -0.615 -0.615" style="fill:#fd4651;fill-opacity:1"/>
+ <circle cx="25.6" cy="25.6" r="20" style="stroke-dasharray:none;stroke-opacity:1;fill:none;opacity:1;stroke-miterlimit:4;fill-opacity:1;stroke:#fd4651;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:4.8;stroke-dashoffset:0"/>
+ <path d="m 18.13 17 c -0.242 0 -0.485 0.094 -0.669 0.277 l -0.04 0.046 c -0.371 0.367 -0.371 0.966 0 1.333 l 5.558 5.558 c 0.003 0.003 0.006 0.004 0.008 0.006 a 2.933 2.933 0 0 1 1.4 -1.344 c -0.012 -0.013 -0.017 -0.029 -0.029 -0.042 l -5.558 -5.558 c -0.186 -0.183 -0.429 -0.277 -0.671 -0.277 z" style="fill:#fd4651;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 37.538 17.507 c -0.122 0.015 -0.243 0.055 -0.356 0.121 l -9.752 5.629 a 2.933 2.933 0 0 1 1.069 1.85 l 9.75 -5.629 c 0.454 -0.262 0.608 -0.843 0.348 -1.294 l -0.121 -0.21 c -0.197 -0.341 -0.572 -0.513 -0.938 -0.467 z" style="fill:#fd4651;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 23.704 27.786 -5.446 10.04 c -0.125 0.229 -0.046 0.525 0.179 0.663 l 0.063 0.042 c 0.225 0.133 0.504 0.059 0.629 -0.171 l 5.46 -10.06 a 2.933 2.933 0 0 1 -0.885 -0.51 z" style="fill:#fd4651;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <path d="m 25.6 22.347 c -1.769 0 -3.2 1.431 -3.2 3.2 0 1.769 1.431 3.2 3.2 3.2 1.769 0 3.2 -1.431 3.2 -3.2 0 -1.769 -1.431 -3.2 -3.2 -3.2 z m 0 1.653 a 1.6 1.6 0 0 1 1.6 1.6 1.6 1.6 0 0 1 -1.6 1.6 1.6 1.6 0 0 1 -1.6 -1.6 1.6 1.6 0 0 1 1.6 -1.6 z" style="fill:#fd4651;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+</svg>
diff --git a/img/icons/Numix/categories/preferences-system.svg b/img/icons/Numix/categories/preferences-system.svg
new file mode 100644
index 00000000..d020dd1d
--- /dev/null
+++ b/img/icons/Numix/categories/preferences-system.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 13.606 22.5 36.788 0 c 1.165 0 2.106 0.935 2.106 2.088 l 0 14.825 c 0 1.153 -0.941 2.088 -2.106 2.088 l -36.788 0 c -1.165 0 -2.106 -0.935 -2.106 -2.088 l 0 -14.825 c 0 -1.153 0.941 -2.088 2.106 -2.088 z" style="stroke-dasharray:none;fill:none;stroke-miterlimit:4;stroke:#6aaf53;stroke-linecap:round;stroke-linejoin:round;stroke-width:3"/>
+ <path d="m 14.687 25 c -0.38 0 -0.687 0.312 -0.687 0.701 l 0 12.598 c 0 0.39 0.307 0.701 0.687 0.701 l 16.626 0 c 0.38 0 0.687 -0.312 0.687 -0.701 l 0 -12.598 c 0 -0.39 -0.307 -0.701 -0.687 -0.701 m -12.313 10 l 0 -6 1.5 0 0 6 z m 3 0 0 -6 1.5 0 0 6 z m 3 0 0 -6 1.5 0 0 6 z" style="fill:#6aaf53"/>
+</svg>
diff --git a/img/icons/Numix/categories/redhat-system_tools.svg b/img/icons/Numix/categories/redhat-system_tools.svg
new file mode 100644
index 00000000..9af36c1d
--- /dev/null
+++ b/img/icons/Numix/categories/redhat-system_tools.svg
@@ -0,0 +1,20 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 36.5 32 c 0 2.482 -2.022 4.496 -4.504 4.496 -2.482 0 -4.496 -2.01 -4.496 -4.496 0 -2.482 2.01 -4.504 4.496 -4.504 2.482 0 4.504 2.02 4.504 4.504" style="fill:#b2c64a"/>
+ <circle cx="32" cy="32" r="20" style="stroke-dasharray:none;stroke-opacity:1;fill:none;opacity:1;stroke-miterlimit:4;fill-opacity:1;stroke:#b2c64a;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:4;stroke-dashoffset:0"/>
+ <g transform="matrix(2,0,0,1.9230769,7e-7,1.2307696)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#b2c64a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#b2c64a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+ <g transform="matrix(0,2,-1.9230769,0,62.76923,-4e-7)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#b2c64a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#b2c64a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+ <g transform="matrix(1.4142136,1.4142136,-1.3598207,1.3598207,31.129714,-12.384548)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#b2c64a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#b2c64a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+ <g transform="matrix(1.4142136,-1.4142136,1.3598207,1.3598207,-12.384548,32.870286)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#b2c64a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#b2c64a;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/Numix/categories/system-help.svg b/img/icons/Numix/categories/system-help.svg
new file mode 100644
index 00000000..6fc39b30
--- /dev/null
+++ b/img/icons/Numix/categories/system-help.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 33.761 41.931 c -0.122 -4.536 0.896 -8.937 5.218 -12.06 4.559 -3.529 8.949 -7.942 8.487 -13.14 c -0.107 -5.02 -5.992 -8.953 -12.336 -9.517 -7.137 -0.983 -15.778 1.445 -18.17 6.979 c -1.212 2.692 -0.087 7.52 3.987 7.52 2.38 0 3.474 -1.528 3.651 -2.921 0.138 -1.058 -0.304 -2 -0.561 -2.874 -0.296 -0.995 0.959 -2.921 2.329 -3.711 1.145 -0.651 2.341 -0.876 2.514 -0.916 4.105 -0.979 8.195 1.184 9.9 3.817 1.709 2.629 -0.17 6.616 -2.87 10.504 -2.704 3.884 -5.597 8.29 -5.59 12.975 0 1.784 -0.158 2.388 -0.047 3.107 0.091 0.576 2.01 0.505 3.486 0.237 z m -1.875 6.103 c -3.92 -0.209 -6.636 4.204 -4.283 7.02 2.108 3.103 8.01 2.333 9.02 -1.18 1.054 -2.736 -1.472 -5.886 -4.737 -5.842 z" style="fill:#9cc7cf"/>
+</svg>
diff --git a/img/icons/Numix/categories/system_section.svg b/img/icons/Numix/categories/system_section.svg
new file mode 100644
index 00000000..d9b33474
--- /dev/null
+++ b/img/icons/Numix/categories/system_section.svg
@@ -0,0 +1,20 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
+ <path d="m 36.5 32 c 0 2.482 -2.022 4.496 -4.504 4.496 -2.482 0 -4.496 -2.01 -4.496 -4.496 0 -2.482 2.01 -4.504 4.496 -4.504 2.482 0 4.504 2.02 4.504 4.504" style="fill:#4aa5c6"/>
+ <circle cx="32" cy="32" r="20" style="stroke-dasharray:none;stroke-opacity:1;fill:none;opacity:1;stroke-miterlimit:4;fill-opacity:1;stroke:#4aa5c6;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:4;stroke-dashoffset:0"/>
+ <g transform="matrix(2,0,0,1.9230769,7e-7,1.2307696)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#4aa5c6;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#4aa5c6;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+ <g transform="matrix(0,2,-1.9230769,0,62.76923,-4e-7)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#4aa5c6;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#4aa5c6;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+ <g transform="matrix(1.4142136,1.4142136,-1.3598207,1.3598207,31.129714,-12.384548)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#4aa5c6;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#4aa5c6;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+ <g transform="matrix(1.4142136,-1.4142136,1.3598207,1.3598207,-12.384548,32.870286)">
+ <rect rx="0.5" y="3" x="14" height="3" width="4" style="fill:#4aa5c6;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ <rect rx="0.5" y="26" x="14" height="3" width="4" style="fill:#4aa5c6;opacity:1;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
+ </g>
+</svg>
diff --git a/img/icons/essential-collection/svg/add-1.svg b/img/icons/essential-collection/svg/add-1.svg
new file mode 100644
index 00000000..3ad07b88
--- /dev/null
+++ b/img/icons/essential-collection/svg/add-1.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 42 42" style="enable-background:new 0 0 42 42;" xml:space="preserve">
+<path style="fill:#23A24D;" d="M37.059,16H26V4.941C26,2.224,23.718,0,21,0s-5,2.224-5,4.941V16H4.941C2.224,16,0,18.282,0,21
+ s2.224,5,4.941,5H16v11.059C16,39.776,18.282,42,21,42s5-2.224,5-4.941V26h11.059C39.776,26,42,23.718,42,21S39.776,16,37.059,16z"
+ />
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/add-2.svg b/img/icons/essential-collection/svg/add-2.svg
new file mode 100644
index 00000000..fe8a9f10
--- /dev/null
+++ b/img/icons/essential-collection/svg/add-2.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect style="fill:#E7ECED;" width="58" height="58"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" x1="29" y1="8" x2="29" y2="50"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" x1="50" y1="29" x2="8" y2="29"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/add-3.svg b/img/icons/essential-collection/svg/add-3.svg
new file mode 100644
index 00000000..4f712cfc
--- /dev/null
+++ b/img/icons/essential-collection/svg/add-3.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53 53" style="enable-background:new 0 0 53 53;" xml:space="preserve">
+<polygon style="fill:#14A085;" points="7,8.5 47,8.5 47,0.5 0,0.5 0,45.5 7,45.5 "/>
+<rect x="7" y="8.5" style="fill:#38454F;" width="46" height="44"/>
+<line style="fill:none;stroke:#A4E869;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="30" y1="19.5" x2="30" y2="41.5"/>
+<line style="fill:none;stroke:#A4E869;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="41" y1="30.5" x2="19" y2="30.5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/add.svg b/img/icons/essential-collection/svg/add.svg
new file mode 100644
index 00000000..e9481035
--- /dev/null
+++ b/img/icons/essential-collection/svg/add.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 42 42" style="enable-background:new 0 0 42 42;" xml:space="preserve">
+<line style="fill:none;stroke:#23A24D;stroke-width:2;stroke-miterlimit:10;" x1="21" y1="0" x2="21" y2="42"/>
+<line style="fill:none;stroke:#23A24D;stroke-width:2;stroke-miterlimit:10;" x1="42" y1="21" x2="0" y2="21"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/agenda.svg b/img/icons/essential-collection/svg/agenda.svg
new file mode 100644
index 00000000..2c0213c0
--- /dev/null
+++ b/img/icons/essential-collection/svg/agenda.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#EAD8BB;" d="M12,0C9.694,0,7.781,1.758,7.53,4L7.5,5c0,2.2,1.8,4,4,4h1h3h2l2-4h12l-1.961,3.921
+ C29.521,8.958,29.548,9,29.588,9h0.211H50.5V0H12z"/>
+<path style="fill:#6B4842;" d="M29.5,9v26.201c0,0.505-0.665,0.69-0.925,0.256L23.5,27l-5.075,8.458
+ c-0.26,0.433-0.925,0.249-0.925-0.256V9h-6c-2.2,0-4-1.8-4-4v48.958C7.5,56.19,9.31,58,11.542,58H50.5V9H29.5z"/>
+<path style="fill:#513531;" d="M12.5,9h-1c-2.2,0-4-1.8-4-4v48.958C7.5,56.19,9.31,58,11.542,58H12.5V9z"/>
+<path style="fill:#D3BEA1;" d="M50.5,2h-9c-0.553,0-1,0.447-1,1s0.447,1,1,1h9V2z"/>
+<path style="fill:#D3BEA1;" d="M50.5,5h-8c-0.553,0-1,0.447-1,1s0.447,1,1,1h8V5z"/>
+<path style="fill:#DD352E;" d="M19.5,5l-2,4v26.201c0,0.505,0.666,0.69,0.925,0.256L23.5,27l5.075,8.458
+ c0.26,0.433,0.925,0.249,0.925-0.256V9l2-4H19.5z"/>
+<polygon style="fill:#B02721;" points="19.5,5 17.5,9 29.5,9 31.5,5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/alarm-1.svg b/img/icons/essential-collection/svg/alarm-1.svg
new file mode 100644
index 00000000..bb2c9e7b
--- /dev/null
+++ b/img/icons/essential-collection/svg/alarm-1.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:none;stroke:#DC9628;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="M34,12
+ V8c0-2.209-1.791-4-4-4s-4,1.791-4,4v4.072"/>
+<path style="fill:#EEAF4B;" d="M16.491,50.638c10.701,1.847,16.658,1.847,27.36,0L53.341,49l0,0c-4.685-4.657-7.317-10.415-7.317-17
+ v-9c0.038-6.047-3.957-10.478-7.946-12.301c-4.999-2.285-10.815-2.294-15.806,0.008C18.319,12.53,14.038,16.958,14,23v9
+ c0,6.585-2.315,12.343-7,17l0,0L16.491,50.638z"/>
+<path style="fill:#FBD490;" d="M19,25.991c-0.002,0-0.004,0-0.006,0c-0.552-0.004-0.997-0.454-0.994-1.006
+ c0.03-4.682,3.752-7.643,5.948-8.654c3.849-1.775,8.594-1.772,12.469-0.002c0.502,0.229,0.723,0.822,0.494,1.325
+ c-0.229,0.502-0.822,0.724-1.326,0.493c-3.354-1.533-7.469-1.537-10.799,0c-1.767,0.814-4.762,3.173-4.785,6.85
+ C19.997,25.547,19.549,25.991,19,25.991z"/>
+<path style="fill:#DC9628;" d="M21.906,51.46C23.35,54.728,26.508,57,30.183,57c3.676,0,6.834-2.273,8.278-5.543
+ C32.533,52.209,27.83,52.21,21.906,51.46z"/>
+<path style="fill:#F2ECBF;" d="M4.095,39.967c-0.256,0-0.512-0.098-0.707-0.293C1.203,37.489,0,34.58,0,31.483
+ c0-3.098,1.203-6.006,3.388-8.19c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414C2.995,26.514,2,28.92,2,31.483
+ c0,2.563,0.995,4.969,2.802,6.776c0.391,0.391,0.391,1.023,0,1.414C4.606,39.869,4.351,39.967,4.095,39.967z"/>
+<path style="fill:#F2ECBF;" d="M8.305,37.69c-0.256,0-0.512-0.098-0.707-0.293c-3.337-3.337-3.337-8.768,0-12.104
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414c-2.558,2.558-2.558,6.719,0,9.276c0.391,0.391,0.391,1.023,0,1.414
+ C8.817,37.593,8.561,37.69,8.305,37.69z"/>
+<path style="fill:#F2ECBF;" d="M55.905,39.967c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414
+ C57.005,36.452,58,34.046,58,31.483c0-2.563-0.995-4.97-2.802-6.776c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0
+ C58.797,25.478,60,28.386,60,31.483c0,3.097-1.203,6.006-3.388,8.19C56.417,39.869,56.161,39.967,55.905,39.967z"/>
+<path style="fill:#F2ECBF;" d="M51.695,37.69c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414
+ c2.558-2.558,2.558-6.719,0-9.276c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0c3.337,3.337,3.337,8.768,0,12.104
+ C52.207,37.593,51.951,37.69,51.695,37.69z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/alarm-clock-1.svg b/img/icons/essential-collection/svg/alarm-clock-1.svg
new file mode 100644
index 00000000..cc4a2e74
--- /dev/null
+++ b/img/icons/essential-collection/svg/alarm-clock-1.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57.157 57.157" style="enable-background:new 0 0 57.157 57.157;" xml:space="preserve">
+<g>
+ <path style="fill:#7383BF;" d="M15.804,51.517l-3.933,3.933c-0.391,0.391-0.391,1.023,0,1.414c0.195,0.195,0.451,0.293,0.707,0.293
+ s0.512-0.098,0.707-0.293l3.933-3.933c0.391-0.391,0.391-1.023,0-1.414S16.195,51.126,15.804,51.517z"/>
+ <path style="fill:#7383BF;" d="M45.285,55.45l-3.963-3.963c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l3.963,3.963
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293C45.676,56.473,45.676,55.84,45.285,55.45z"/>
+</g>
+<path style="fill:#424A60;" d="M47.303,11.129c0.024-0.02,0.053-0.028,0.076-0.05l3-3c0.391-0.391,0.391-1.023,0-1.414
+ s-1.023-0.391-1.414,0l-3,3c-0.031,0.031-0.043,0.071-0.069,0.104c-4.598-4.11-10.664-6.612-17.317-6.612S15.86,5.659,11.261,9.768
+ c-0.026-0.033-0.038-0.073-0.069-0.104l-3-3c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l3,3
+ c0.022,0.022,0.052,0.03,0.076,0.05c-4.502,4.675-7.275,11.026-7.275,18.028c0,14.359,11.641,26,26,26s26-11.641,26-26
+ C54.578,22.154,51.805,15.803,47.303,11.129z"/>
+<circle style="fill:#E7ECED;" cx="28.578" cy="29.157" r="22"/>
+<circle style="fill:#FFFFFF;" cx="28.578" cy="29.157" r="15"/>
+<g>
+ <path style="fill:#FFFFFF;" d="M28.578,6.157c-0.552,0-1,0.447-1,1v2c0,0.553,0.448,1,1,1s1-0.447,1-1v-2
+ C29.578,6.604,29.131,6.157,28.578,6.157z"/>
+ <path style="fill:#FFFFFF;" d="M28.578,48.157c-0.552,0-1,0.447-1,1v2c0,0.553,0.448,1,1,1s1-0.447,1-1v-2
+ C29.578,48.604,29.131,48.157,28.578,48.157z"/>
+ <path style="fill:#FFFFFF;" d="M50.578,28.157h-2c-0.552,0-1,0.447-1,1s0.448,1,1,1h2c0.552,0,1-0.447,1-1
+ S51.131,28.157,50.578,28.157z"/>
+ <path style="fill:#FFFFFF;" d="M9.578,29.157c0-0.553-0.448-1-1-1h-2c-0.552,0-1,0.447-1,1s0.448,1,1,1h2
+ C9.131,30.157,9.578,29.709,9.578,29.157z"/>
+ <path style="fill:#FFFFFF;" d="M18.445,9.604c-0.277-0.478-0.888-0.644-1.366-0.366c-0.478,0.276-0.642,0.888-0.366,1.366l1,1.732
+ c0.186,0.32,0.521,0.5,0.867,0.5c0.169,0,0.341-0.043,0.499-0.134c0.478-0.276,0.642-0.888,0.366-1.366L18.445,9.604z"/>
+ <path style="fill:#FFFFFF;" d="M39.445,45.977c-0.277-0.478-0.888-0.643-1.366-0.366c-0.478,0.276-0.642,0.888-0.366,1.366l1,1.732
+ c0.186,0.32,0.521,0.5,0.867,0.5c0.169,0,0.341-0.043,0.499-0.134c0.478-0.276,0.642-0.888,0.366-1.366L39.445,45.977z"/>
+ <path style="fill:#FFFFFF;" d="M11.758,18.29l-1.732-1c-0.479-0.276-1.09-0.111-1.366,0.366c-0.276,0.479-0.112,1.09,0.366,1.366
+ l1.732,1c0.158,0.091,0.33,0.134,0.499,0.134c0.346,0,0.682-0.18,0.867-0.5C12.4,19.178,12.236,18.567,11.758,18.29z"/>
+ <path style="fill:#FFFFFF;" d="M48.131,39.29l-1.732-1c-0.48-0.278-1.09-0.111-1.366,0.366c-0.276,0.479-0.112,1.09,0.366,1.366
+ l1.732,1c0.158,0.091,0.33,0.134,0.499,0.134c0.346,0,0.682-0.18,0.867-0.5C48.773,40.178,48.609,39.567,48.131,39.29z"/>
+ <path style="fill:#FFFFFF;" d="M10.758,38.29l-1.732,1c-0.478,0.276-0.642,0.888-0.366,1.366c0.186,0.32,0.521,0.5,0.867,0.5
+ c0.169,0,0.341-0.043,0.499-0.134l1.732-1c0.478-0.276,0.642-0.888,0.366-1.366C11.847,38.179,11.237,38.012,10.758,38.29z"/>
+ <path style="fill:#FFFFFF;" d="M45.9,20.157c0.169,0,0.341-0.043,0.499-0.134l1.732-1c0.478-0.276,0.642-0.888,0.366-1.366
+ c-0.277-0.478-0.888-0.643-1.366-0.366l-1.732,1c-0.478,0.276-0.642,0.888-0.366,1.366C45.218,19.977,45.554,20.157,45.9,20.157z"
+ />
+ <path style="fill:#FFFFFF;" d="M19.078,45.611c-0.481-0.276-1.09-0.111-1.366,0.366l-1,1.732c-0.276,0.479-0.112,1.09,0.366,1.366
+ c0.158,0.091,0.33,0.134,0.499,0.134c0.346,0,0.682-0.18,0.867-0.5l1-1.732C19.72,46.498,19.556,45.887,19.078,45.611z"/>
+ <path style="fill:#FFFFFF;" d="M40.078,9.238c-0.48-0.277-1.09-0.111-1.366,0.366l-1,1.732c-0.276,0.479-0.112,1.09,0.366,1.366
+ c0.158,0.091,0.33,0.134,0.499,0.134c0.346,0,0.682-0.18,0.867-0.5l1-1.732C40.72,10.125,40.556,9.514,40.078,9.238z"/>
+</g>
+<path style="fill:#424A60;" d="M39.578,28.157h-7.142c-0.364-1.399-1.459-2.494-2.858-2.858V15.157c0-0.553-0.448-1-1-1
+ s-1,0.447-1,1v10.142c-1.72,0.447-3,1.999-3,3.858c0,2.206,1.794,4,4,4c1.858,0,3.411-1.28,3.858-3h7.142c0.552,0,1-0.447,1-1
+ S40.131,28.157,39.578,28.157z M28.578,31.157c-1.103,0-2-0.897-2-2s0.897-2,2-2s2,0.897,2,2S29.681,31.157,28.578,31.157z"/>
+<path style="fill:#7383BF;" d="M54.493,2.086c2.781,2.781,2.781,7.29,0,10.071L44.421,2.086C47.203-0.695,51.711-0.695,54.493,2.086
+ z"/>
+<path style="fill:#7383BF;" d="M2.664,2.086c-2.781,2.781-2.781,7.29,0,10.071L12.735,2.086C9.954-0.695,5.445-0.695,2.664,2.086z"
+ />
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/alarm-clock.svg b/img/icons/essential-collection/svg/alarm-clock.svg
new file mode 100644
index 00000000..ca1d0e95
--- /dev/null
+++ b/img/icons/essential-collection/svg/alarm-clock.svg
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57.157 57.157" style="enable-background:new 0 0 57.157 57.157;" xml:space="preserve">
+<circle style="fill:#E0E1E2;" cx="28.578" cy="29.157" r="26"/>
+<circle style="fill:#FFFFFF;" cx="28.578" cy="29.157" r="15"/>
+<path style="fill:#424A60;" d="M12.578,57.157c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414l3.933-3.933
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414l-3.933,3.933C13.09,57.059,12.834,57.157,12.578,57.157z"/>
+<path style="fill:#424A60;" d="M44.578,57.157c-0.256,0-0.512-0.098-0.707-0.293l-3.963-3.963c-0.391-0.391-0.391-1.023,0-1.414
+ s1.023-0.391,1.414,0l3.963,3.963c0.391,0.391,0.391,1.023,0,1.414C45.09,57.059,44.834,57.157,44.578,57.157z"/>
+<path style="fill:#C7CAC7;" d="M46.672,11.371c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414l3-3
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414l-3,3C47.183,11.274,46.927,11.371,46.672,11.371z"/>
+<path style="fill:#C7CAC7;" d="M10.485,11.371c-0.256,0-0.512-0.098-0.707-0.293l-3-3c-0.391-0.391-0.391-1.023,0-1.414
+ s1.023-0.391,1.414,0l3,3c0.391,0.391,0.391,1.023,0,1.414C10.997,11.274,10.741,11.371,10.485,11.371z"/>
+<path style="fill:#26B99A;" d="M28.578,57.157c-15.439,0-28-12.561-28-28s12.561-28,28-28s28,12.561,28,28
+ S44.018,57.157,28.578,57.157z M28.578,5.157c-13.234,0-24,10.767-24,24s10.766,24,24,24s24-10.767,24-24S41.812,5.157,28.578,5.157
+ z"/>
+<g>
+ <path style="fill:#26B99A;" d="M28.578,6.036c-0.552,0-1,0.447-1,1v1c0,0.553,0.448,1,1,1s1-0.447,1-1v-1
+ C29.578,6.483,29.131,6.036,28.578,6.036z"/>
+ <path style="fill:#26B99A;" d="M28.578,49.036c-0.552,0-1,0.447-1,1v1c0,0.553,0.448,1,1,1s1-0.447,1-1v-1
+ C29.578,49.483,29.131,49.036,28.578,49.036z"/>
+ <path style="fill:#26B99A;" d="M50.578,28.036h-1c-0.552,0-1,0.447-1,1s0.448,1,1,1h1c0.552,0,1-0.447,1-1
+ S51.131,28.036,50.578,28.036z"/>
+ <path style="fill:#26B99A;" d="M7.578,28.036h-1c-0.552,0-1,0.447-1,1s0.448,1,1,1h1c0.552,0,1-0.447,1-1
+ S8.131,28.036,7.578,28.036z"/>
+ <path style="fill:#26B99A;" d="M43.427,12.772l-0.707,0.707c-0.391,0.391-0.391,1.023,0,1.414c0.195,0.195,0.451,0.293,0.707,0.293
+ s0.512-0.098,0.707-0.293l0.707-0.707c0.391-0.391,0.391-1.023,0-1.414S43.818,12.381,43.427,12.772z"/>
+ <path style="fill:#26B99A;" d="M13.022,43.178l-0.707,0.707c-0.391,0.391-0.391,1.023,0,1.414c0.195,0.195,0.451,0.293,0.707,0.293
+ s0.512-0.098,0.707-0.293l0.707-0.707c0.391-0.391,0.391-1.023,0-1.414S13.413,42.788,13.022,43.178z"/>
+ <path style="fill:#26B99A;" d="M44.134,43.178c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l0.707,0.707
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L44.134,43.178z"/>
+ <path style="fill:#26B99A;" d="M13.729,12.772c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l0.707,0.707
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L13.729,12.772z"/>
+</g>
+<path style="fill:#424A60;" d="M39.578,30.157h-8c-0.552,0-1-0.447-1-1s0.448-1,1-1h8c0.552,0,1,0.447,1,1
+ S40.131,30.157,39.578,30.157z"/>
+<path style="fill:#424A60;" d="M28.578,27.157c-0.552,0-1-0.447-1-1v-11c0-0.553,0.448-1,1-1s1,0.447,1,1v11
+ C29.578,26.709,29.131,27.157,28.578,27.157z"/>
+<path style="fill:#424A60;" d="M28.578,33.157c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S30.784,33.157,28.578,33.157z
+ M28.578,27.157c-1.103,0-2,0.897-2,2s0.897,2,2,2s2-0.897,2-2S29.681,27.157,28.578,27.157z"/>
+<path style="fill:#E7ECED;" d="M54.493,2.086c2.781,2.781,2.781,7.29,0,10.071L44.421,2.086C47.203-0.695,51.711-0.695,54.493,2.086
+ z"/>
+<path style="fill:#E7ECED;" d="M2.664,2.086c-2.781,2.781-2.781,7.29,0,10.071L12.735,2.086C9.954-0.695,5.445-0.695,2.664,2.086z"
+ />
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/alarm.svg b/img/icons/essential-collection/svg/alarm.svg
new file mode 100644
index 00000000..07ea8145
--- /dev/null
+++ b/img/icons/essential-collection/svg/alarm.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53 53" style="enable-background:new 0 0 53 53;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M12.821,46.638c10.701,1.847,16.659,1.847,27.36,0L49.671,45l0,0c-4.685-4.657-7.317-10.415-7.317-17
+ v-9c0.038-6.047-3.957-10.478-7.946-12.301c-4.999-2.285-10.815-2.294-15.806,0.008C14.648,8.53,10.367,12.958,10.329,19v9
+ c0,6.585-2.315,12.343-7,17l0,0L12.821,46.638z"/>
+<path style="fill:#FFFFFF;" d="M15.329,20c-0.002,0-0.004,0-0.006,0c-0.552-0.004-0.997-0.454-0.994-1.006
+ c0.03-4.682,3.752-7.643,5.948-8.654c3.849-1.775,8.594-1.772,12.469-0.002c0.502,0.229,0.723,0.822,0.494,1.325
+ c-0.23,0.502-0.823,0.724-1.326,0.493c-3.353-1.533-7.469-1.537-10.799,0c-1.767,0.814-4.762,3.173-4.785,6.85
+ C16.326,19.557,15.879,20,15.329,20z"/>
+<path style="fill:#C7CAC7;" d="M30.329,5.381V4c0-2.209-1.791-4-4-4s-4,1.791-4,4v1.453C24.958,4.862,27.69,4.841,30.329,5.381z"/>
+<path style="fill:#C7CAC7;" d="M18.235,47.46c1.445,3.268,4.602,5.54,8.277,5.54c3.676,0,6.834-2.273,8.278-5.543
+ C28.862,48.209,24.159,48.21,18.235,47.46z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/albums.svg b/img/icons/essential-collection/svg/albums.svg
new file mode 100644
index 00000000..77bed552
--- /dev/null
+++ b/img/icons/essential-collection/svg/albums.svg
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<rect x="8" y="5" style="fill:#366DB6;" width="40" height="46"/>
+<g>
+ <rect x="48" y="9" style="fill:#A485BE;" width="4" height="38"/>
+ <rect x="4" y="9" style="fill:#A485BE;" width="4" height="38"/>
+</g>
+<g>
+ <rect x="52" y="13" style="fill:#A4E869;" width="4" height="30"/>
+ <rect y="13" style="fill:#A4E869;" width="4" height="30"/>
+</g>
+<circle style="fill:#183351;" cx="16" cy="13" r="1"/>
+<circle style="fill:#183351;" cx="13" cy="10" r="1"/>
+<circle style="fill:#183351;" cx="19" cy="10" r="1"/>
+<circle style="fill:#183351;" cx="13" cy="16" r="1"/>
+<circle style="fill:#183351;" cx="19" cy="16" r="1"/>
+<circle style="fill:#183351;" cx="22" cy="13" r="1"/>
+<circle style="fill:#183351;" cx="28" cy="13" r="1"/>
+<circle style="fill:#183351;" cx="25" cy="10" r="1"/>
+<circle style="fill:#183351;" cx="31" cy="10" r="1"/>
+<circle style="fill:#183351;" cx="25" cy="16" r="1"/>
+<circle style="fill:#183351;" cx="31" cy="16" r="1"/>
+<circle style="fill:#183351;" cx="34" cy="13" r="1"/>
+<circle style="fill:#183351;" cx="40" cy="13" r="1"/>
+<circle style="fill:#183351;" cx="37" cy="10" r="1"/>
+<circle style="fill:#183351;" cx="43" cy="10" r="1"/>
+<circle style="fill:#183351;" cx="37" cy="16" r="1"/>
+<circle style="fill:#183351;" cx="43" cy="16" r="1"/>
+<circle style="fill:#183351;" cx="16" cy="19" r="1"/>
+<circle style="fill:#183351;" cx="16" cy="25" r="1"/>
+<circle style="fill:#183351;" cx="13" cy="22" r="1"/>
+<circle style="fill:#183351;" cx="19" cy="22" r="1"/>
+<circle style="fill:#183351;" cx="13" cy="28" r="1"/>
+<circle style="fill:#183351;" cx="19" cy="28" r="1"/>
+<circle style="fill:#183351;" cx="22" cy="19" r="1"/>
+<circle style="fill:#183351;" cx="28" cy="19" r="1"/>
+<circle style="fill:#183351;" cx="22" cy="25" r="1"/>
+<circle style="fill:#183351;" cx="28" cy="25" r="1"/>
+<circle style="fill:#183351;" cx="25" cy="22" r="1"/>
+<circle style="fill:#183351;" cx="31" cy="22" r="1"/>
+<circle style="fill:#183351;" cx="25" cy="28" r="1"/>
+<circle style="fill:#183351;" cx="31" cy="28" r="1"/>
+<circle style="fill:#183351;" cx="34" cy="19" r="1"/>
+<circle style="fill:#183351;" cx="40" cy="19" r="1"/>
+<circle style="fill:#183351;" cx="34" cy="25" r="1"/>
+<circle style="fill:#183351;" cx="40" cy="25" r="1"/>
+<circle style="fill:#183351;" cx="37" cy="22" r="1"/>
+<circle style="fill:#183351;" cx="43" cy="22" r="1"/>
+<circle style="fill:#183351;" cx="37" cy="28" r="1"/>
+<circle style="fill:#183351;" cx="43" cy="28" r="1"/>
+<circle style="fill:#183351;" cx="16" cy="31" r="1"/>
+<circle style="fill:#183351;" cx="16" cy="37" r="1"/>
+<circle style="fill:#183351;" cx="13" cy="34" r="1"/>
+<circle style="fill:#183351;" cx="19" cy="34" r="1"/>
+<circle style="fill:#183351;" cx="13" cy="40" r="1"/>
+<circle style="fill:#183351;" cx="19" cy="40" r="1"/>
+<circle style="fill:#183351;" cx="22" cy="31" r="1"/>
+<circle style="fill:#183351;" cx="28" cy="31" r="1"/>
+<circle style="fill:#183351;" cx="22" cy="37" r="1"/>
+<circle style="fill:#183351;" cx="28" cy="37" r="1"/>
+<circle style="fill:#183351;" cx="25" cy="34" r="1"/>
+<circle style="fill:#183351;" cx="31" cy="34" r="1"/>
+<circle style="fill:#183351;" cx="25" cy="40" r="1"/>
+<circle style="fill:#183351;" cx="31" cy="40" r="1"/>
+<circle style="fill:#183351;" cx="34" cy="31" r="1"/>
+<circle style="fill:#183351;" cx="40" cy="31" r="1"/>
+<circle style="fill:#183351;" cx="34" cy="37" r="1"/>
+<circle style="fill:#183351;" cx="40" cy="37" r="1"/>
+<circle style="fill:#183351;" cx="37" cy="34" r="1"/>
+<circle style="fill:#183351;" cx="43" cy="34" r="1"/>
+<circle style="fill:#183351;" cx="37" cy="40" r="1"/>
+<circle style="fill:#183351;" cx="43" cy="40" r="1"/>
+<circle style="fill:#183351;" cx="16" cy="43" r="1"/>
+<circle style="fill:#183351;" cx="13" cy="46" r="1"/>
+<circle style="fill:#183351;" cx="19" cy="46" r="1"/>
+<circle style="fill:#183351;" cx="22" cy="43" r="1"/>
+<circle style="fill:#183351;" cx="28" cy="43" r="1"/>
+<circle style="fill:#183351;" cx="25" cy="46" r="1"/>
+<circle style="fill:#183351;" cx="31" cy="46" r="1"/>
+<circle style="fill:#183351;" cx="34" cy="43" r="1"/>
+<circle style="fill:#183351;" cx="40" cy="43" r="1"/>
+<circle style="fill:#183351;" cx="37" cy="46" r="1"/>
+<circle style="fill:#183351;" cx="43" cy="46" r="1"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/app.svg b/img/icons/essential-collection/svg/app.svg
new file mode 100644
index 00000000..33ae5e9e
--- /dev/null
+++ b/img/icons/essential-collection/svg/app.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 55 55" style="enable-background:new 0 0 55 55;" xml:space="preserve">
+<path style="fill:#EFCE4A;" d="M21.66,24H2.34C1.048,24,0,22.952,0,21.66V2.34C0,1.048,1.048,0,2.34,0h19.32
+ C22.952,0,24,1.048,24,2.34v19.32C24,22.952,22.952,24,21.66,24z"/>
+<path style="fill:#7FABDA;" d="M51.66,24H32.34C31.048,24,30,22.952,30,21.66V2.34C30,1.048,31.048,0,32.34,0h19.32
+ C52.952,0,54,1.048,54,2.34v19.32C54,22.952,52.952,24,51.66,24z"/>
+<path style="fill:#D75A4A;" d="M21.66,54H2.34C1.048,54,0,52.952,0,51.66V32.34C0,31.048,1.048,30,2.34,30h19.32
+ c1.292,0,2.34,1.048,2.34,2.34v19.32C24,52.952,22.952,54,21.66,54z"/>
+<line style="fill:none;stroke:#23A24D;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="42" y1="30" x2="42" y2="54"/>
+<line style="fill:none;stroke:#23A24D;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="30" y1="42" x2="54" y2="42"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/archive-1.svg b/img/icons/essential-collection/svg/archive-1.svg
new file mode 100644
index 00000000..fbe9e917
--- /dev/null
+++ b/img/icons/essential-collection/svg/archive-1.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#424A60;" d="M53.168,58H4.832C3.82,58,3,57.18,3,56.168V1.832C3,0.82,3.82,0,4.832,0h48.335
+ C54.18,0,55,0.82,55,1.832v54.335C55,57.18,54.18,58,53.168,58z"/>
+<path style="fill:#E7ECED;" d="M34.495,17h-10.99C21.572,17,20,15.428,20,13.495V12c0-0.553,0.447-1,1-1s1,0.447,1,1v1.495
+ C22,14.325,22.675,15,23.505,15h10.99C35.325,15,36,14.325,36,13.495V12c0-0.553,0.447-1,1-1s1,0.447,1,1v1.495
+ C38,15.428,36.428,17,34.495,17z"/>
+<path style="fill:#E7ECED;" d="M34.495,46h-10.99C21.572,46,20,44.428,20,42.495V41c0-0.553,0.447-1,1-1s1,0.447,1,1v1.495
+ C22,43.325,22.675,44,23.505,44h10.99C35.325,44,36,43.325,36,42.495V41c0-0.553,0.447-1,1-1s1,0.447,1,1v1.495
+ C38,44.428,36.428,46,34.495,46z"/>
+<rect x="3" y="28" style="fill:#2B313F;" width="52" height="2"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/archive-2.svg b/img/icons/essential-collection/svg/archive-2.svg
new file mode 100644
index 00000000..a0264a75
--- /dev/null
+++ b/img/icons/essential-collection/svg/archive-2.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#B1B7BC;" d="M58,17.01H0V3.046C0,1.916,0.916,1,2.046,1h53.908C57.084,1,58,1.916,58,3.046V17.01z"/>
+<rect x="3" y="17.01" style="fill:#E7ECED;" width="52" height="39.99"/>
+<path style="fill:#424A60;" d="M38,13.01H20c-2.209,0-4-1.791-4-4v0c0-2.209,1.791-4,4-4h18c2.209,0,4,1.791,4,4v0
+ C42,11.219,40.209,13.01,38,13.01z"/>
+<rect x="3" y="52" style="fill:#57ABC1;" width="52" height="5"/>
+<rect x="15" y="25" style="fill:#FFFFFF;" width="28" height="14"/>
+<g>
+ <path style="fill:#C7CAC7;" d="M19,31h6c0.553,0,1-0.447,1-1s-0.447-1-1-1h-6c-0.553,0-1,0.447-1,1S18.447,31,19,31z"/>
+ <path style="fill:#C7CAC7;" d="M29,31c0.26,0,0.52-0.11,0.71-0.29C29.89,30.52,30,30.26,30,30c0-0.261-0.11-0.521-0.29-0.71
+ c-0.38-0.37-1.05-0.37-1.42,0C28.109,29.479,28,29.739,28,30c0,0.27,0.109,0.52,0.29,0.71C28.479,30.89,28.729,31,29,31z"/>
+ <path style="fill:#C7CAC7;" d="M39,33H23c-0.553,0-1,0.447-1,1s0.447,1,1,1h16c0.553,0,1-0.447,1-1S39.553,33,39,33z"/>
+ <path style="fill:#C7CAC7;" d="M18.29,33.29C18.109,33.479,18,33.739,18,34c0,0.26,0.109,0.52,0.29,0.71
+ C18.479,34.89,18.729,35,19,35c0.27,0,0.52-0.11,0.71-0.29C19.89,34.52,20,34.26,20,34c0-0.261-0.11-0.521-0.29-0.71
+ C19.34,32.92,18.67,32.92,18.29,33.29z"/>
+</g>
+<rect x="3" y="17" style="fill:#D7D7E2;" width="52" height="5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/archive-3.svg b/img/icons/essential-collection/svg/archive-3.svg
new file mode 100644
index 00000000..cd60c8bb
--- /dev/null
+++ b/img/icons/essential-collection/svg/archive-3.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#4B5F99;" d="M58,14H0V3.412C0,2.632,0.632,2,1.412,2h55.176C57.368,2,58,2.632,58,3.412V14z"/>
+<path style="fill:#6379B7;" d="M3,14v38.59C3,54.473,4.527,56,6.41,56h45.18c1.883,0,3.41-1.527,3.41-3.41V14H3z"/>
+<path style="fill:#4B5F99;" d="M13,56H6.41C4.527,56,3,54.473,3,52.59V46h0C8.523,46,13,50.477,13,56L13,56z"/>
+<path style="fill:#4B5F99;" d="M51.59,56H45v0c0-5.523,4.477-10,10-10h0v6.59C55,54.473,53.473,56,51.59,56z"/>
+<path style="fill:#E7ECED;" d="M34.495,30h-10.99C21.572,30,20,28.428,20,26.495V25c0-0.553,0.447-1,1-1s1,0.447,1,1v1.495
+ C22,27.325,22.675,28,23.505,28h10.99C35.325,28,36,27.325,36,26.495V25c0-0.553,0.447-1,1-1s1,0.447,1,1v1.495
+ C38,28.428,36.428,30,34.495,30z"/>
+<rect x="3" y="14" style="fill:#5F77AA;" width="52" height="6"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/archive.svg b/img/icons/essential-collection/svg/archive.svg
new file mode 100644
index 00000000..9d739387
--- /dev/null
+++ b/img/icons/essential-collection/svg/archive.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#996B52;" d="M58,17H0V7.311C0,7.139,0.139,7,0.311,7h57.378C57.861,7,58,7.139,58,7.311V17z"/>
+<path style="fill:#6C4127;" d="M57.778,7H0.222C0.135,7,0.088,6.898,0.145,6.831L6,0h46l5.855,6.831C57.912,6.898,57.865,7,57.778,7
+ z"/>
+<rect x="3" y="17" style="fill:#935F42;" width="52" height="41"/>
+<rect x="18" y="23" style="fill:#6C4127;" width="22" height="8"/>
+<rect x="15" y="38" style="fill:#EDEADA;" width="28" height="12"/>
+<g>
+ <path style="fill:#CEC9AE;" d="M26,45h-5c-0.552,0-1,0.447-1,1s0.448,1,1,1h5c0.552,0,1-0.447,1-1S26.552,45,26,45z"/>
+ <path style="fill:#CEC9AE;" d="M26,43h11c0.552,0,1-0.447,1-1s-0.448-1-1-1H26c-0.552,0-1,0.447-1,1S25.448,43,26,43z"/>
+ <path style="fill:#CEC9AE;" d="M21,43c0.26,0,0.52-0.11,0.71-0.29C21.89,42.52,22,42.26,22,42c0-0.261-0.11-0.521-0.29-0.71
+ c-0.38-0.37-1.04-0.37-1.42,0C20.11,41.479,20,41.739,20,42c0,0.27,0.11,0.52,0.29,0.71C20.48,42.89,20.73,43,21,43z"/>
+ <path style="fill:#CEC9AE;" d="M30.29,45.29C30.11,45.479,30,45.739,30,46c0,0.26,0.11,0.52,0.29,0.71C30.48,46.89,30.74,47,31,47
+ c0.26,0,0.52-0.11,0.71-0.29C31.89,46.52,32,46.26,32,46c0-0.261-0.11-0.521-0.29-0.71C31.34,44.92,30.66,44.92,30.29,45.29z"/>
+ <path style="fill:#CEC9AE;" d="M37,45h-1c-0.552,0-1,0.447-1,1s0.448,1,1,1h1c0.552,0,1-0.447,1-1S37.552,45,37,45z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/attachment.svg b/img/icons/essential-collection/svg/attachment.svg
new file mode 100644
index 00000000..65bf6245
--- /dev/null
+++ b/img/icons/essential-collection/svg/attachment.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53.61 53.61" style="enable-background:new 0 0 53.61 53.61;" xml:space="preserve">
+<path style="fill:none;stroke:#14A085;stroke-width:4;stroke-linecap:round;stroke-miterlimit:10;" d="M31.406,18.422L14.037,35.792
+ c-1.82,1.82-1.82,4.797,0,6.617l0,0c1.82,1.82,4.797,1.82,6.617,0l25.64-25.64c3.412-3.412,2.998-8.581-0.414-11.993l0,0
+ c-3.412-3.412-8.581-3.825-11.993-0.414L6.593,31.656c-4.549,4.549-4.549,11.993,0,16.542l0,0c4.549,4.549,11.993,4.549,16.542,0
+ l27.295-27.295"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/back.svg b/img/icons/essential-collection/svg/back.svg
new file mode 100644
index 00000000..69bc75c5
--- /dev/null
+++ b/img/icons/essential-collection/svg/back.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 51.426 51.426" style="enable-background:new 0 0 51.426 51.426;" xml:space="preserve">
+<polygon style="fill:#25AE88;stroke:#424A60;stroke-width:6;stroke-miterlimit:10;" points="13.213,25.713 42.213,45.713
+ 42.213,26.077 42.213,5.713 "/>
+<line style="fill:none;stroke:#424A60;stroke-width:6;stroke-miterlimit:10;" x1="9.213" y1="5.713" x2="9.213" y2="45.713"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/battery-1.svg b/img/icons/essential-collection/svg/battery-1.svg
new file mode 100644
index 00000000..47a604dd
--- /dev/null
+++ b/img/icons/essential-collection/svg/battery-1.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#43B05C;" d="M41.536,58H16.464C15.103,58,14,56.897,14,55.536V6.464C14,5.103,15.103,4,16.464,4h25.072
+ C42.897,4,44,5.103,44,6.464v49.072C44,56.897,42.897,58,41.536,58z"/>
+<rect x="24" style="fill:#C7CAC7;" width="10" height="4"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/battery-2.svg b/img/icons/essential-collection/svg/battery-2.svg
new file mode 100644
index 00000000..f4588dab
--- /dev/null
+++ b/img/icons/essential-collection/svg/battery-2.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="24" style="fill:#C7CAC7;" width="10" height="4"/>
+<path style="fill:#E7ECED;" d="M41.536,58H16.464C15.103,58,14,56.897,14,55.536V6.464C14,5.103,15.103,4,16.464,4h25.072
+ C42.897,4,44,5.103,44,6.464v49.072C44,56.897,42.897,58,41.536,58z"/>
+<path style="fill:#43B05C;" d="M14,19v36.536C14,56.897,15.103,58,16.464,58h25.072C42.897,58,44,56.897,44,55.536V19H14z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/battery-3.svg b/img/icons/essential-collection/svg/battery-3.svg
new file mode 100644
index 00000000..8dbde2f1
--- /dev/null
+++ b/img/icons/essential-collection/svg/battery-3.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="24" style="fill:#C7CAC7;" width="10" height="4"/>
+<path style="fill:#E7ECED;" d="M41.536,58H16.464C15.103,58,14,56.897,14,55.536V6.464C14,5.103,15.103,4,16.464,4h25.072
+ C42.897,4,44,5.103,44,6.464v49.072C44,56.897,42.897,58,41.536,58z"/>
+<path style="fill:#43B05C;" d="M14,32v23.536C14,56.897,15.103,58,16.464,58h25.072C42.897,58,44,56.897,44,55.536V32H14z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/battery-4.svg b/img/icons/essential-collection/svg/battery-4.svg
new file mode 100644
index 00000000..57ab47af
--- /dev/null
+++ b/img/icons/essential-collection/svg/battery-4.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="24" style="fill:#C7CAC7;" width="10" height="4"/>
+<path style="fill:#E7ECED;" d="M41.536,58H16.464C15.103,58,14,56.897,14,55.536V6.464C14,5.103,15.103,4,16.464,4h25.072
+ C42.897,4,44,5.103,44,6.464v49.072C44,56.897,42.897,58,41.536,58z"/>
+<path style="fill:#43B05C;" d="M14,45v10.536C14,56.897,15.103,58,16.464,58h25.072C42.897,58,44,56.897,44,55.536V45H14z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/battery-5.svg b/img/icons/essential-collection/svg/battery-5.svg
new file mode 100644
index 00000000..8d9d07df
--- /dev/null
+++ b/img/icons/essential-collection/svg/battery-5.svg
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#43B05C;" d="M41.536,58H16.464C15.103,58,14,56.897,14,55.536V6.464C14,5.103,15.103,4,16.464,4h25.072
+ C42.897,4,44,5.103,44,6.464v49.072C44,56.897,42.897,58,41.536,58z"/>
+<rect x="24" style="fill:#D8A852;" width="10" height="4"/>
+<path style="fill:#292F3A;" d="M41.536,6C41.792,6,42,6.208,42,6.464v49.072C42,55.792,41.792,56,41.536,56H16.464
+ C16.208,56,16,55.792,16,55.536V6.464C16,6.208,16.208,6,16.464,6H41.536 M41.536,4H16.464C15.103,4,14,5.103,14,6.464v49.072
+ C14,56.897,15.103,58,16.464,58h25.072C42.897,58,44,56.897,44,55.536V6.464C44,5.103,42.897,4,41.536,4L41.536,4z"/>
+<g>
+ <circle style="fill:#A4E869;" cx="17" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="17" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="17" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="43" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="43" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="43" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="43" r="1"/>
+ <circle style="fill:#A4E869;" cx="17" cy="34" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="37" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="34" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="34" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="37" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="37" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="34" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="34" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="37" r="1"/>
+ <circle style="fill:#A4E869;" cx="17" cy="28" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="31" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="28" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="28" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="31" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="31" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="28" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="28" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="31" r="1"/>
+ <circle style="fill:#A4E869;" cx="17" cy="22" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="25" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="22" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="22" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="25" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="25" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="22" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="22" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="25" r="1"/>
+ <circle style="fill:#A4E869;" cx="17" cy="16" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="19" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="16" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="16" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="19" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="19" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="16" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="16" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="19" r="1"/>
+ <circle style="fill:#A4E869;" cx="17" cy="10" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="13" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="10" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="10" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="13" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="13" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="10" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="10" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="13" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="7" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="7" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="7" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="7" r="1"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/battery-6.svg b/img/icons/essential-collection/svg/battery-6.svg
new file mode 100644
index 00000000..1644353e
--- /dev/null
+++ b/img/icons/essential-collection/svg/battery-6.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#424A60;" d="M41.536,58H16.464C15.103,58,14,56.897,14,55.536V6.464C14,5.103,15.103,4,16.464,4h25.072
+ C42.897,4,44,5.103,44,6.464v49.072C44,56.897,42.897,58,41.536,58z"/>
+<rect x="24" style="fill:#D8A852;" width="10" height="4"/>
+<path style="fill:#43B05C;" d="M41.536,58H16.464C15.103,58,14,56.897,14,55.536V25.464C14,24.103,15.103,23,16.464,23h25.072
+ C42.897,23,44,24.103,44,25.464v30.072C44,56.897,42.897,58,41.536,58z"/>
+<g>
+ <circle style="fill:#A4E869;" cx="17" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="17" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="17" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="43" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="43" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="43" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="43" r="1"/>
+ <circle style="fill:#A4E869;" cx="17" cy="34" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="37" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="34" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="34" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="37" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="37" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="34" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="34" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="37" r="1"/>
+ <circle style="fill:#A4E869;" cx="17" cy="28" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="31" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="28" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="28" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="31" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="31" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="28" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="28" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="31" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="25" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="25" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="25" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="25" r="1"/>
+</g>
+<path style="fill:#292F3A;" d="M41.536,6C41.792,6,42,6.208,42,6.464v49.072C42,55.792,41.792,56,41.536,56H16.464
+ C16.208,56,16,55.792,16,55.536V6.464C16,6.208,16.208,6,16.464,6H41.536 M41.536,4H16.464C15.103,4,14,5.103,14,6.464v49.072
+ C14,56.897,15.103,58,16.464,58h25.072C42.897,58,44,56.897,44,55.536V6.464C44,5.103,42.897,4,41.536,4L41.536,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/battery-7.svg b/img/icons/essential-collection/svg/battery-7.svg
new file mode 100644
index 00000000..fb9d6af5
--- /dev/null
+++ b/img/icons/essential-collection/svg/battery-7.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#424A60;" d="M41.536,58H16.464C15.103,58,14,56.897,14,55.536V6.464C14,5.103,15.103,4,16.464,4h25.072
+ C42.897,4,44,5.103,44,6.464v49.072C44,56.897,42.897,58,41.536,58z"/>
+<rect x="24" style="fill:#D8A852;" width="10" height="4"/>
+<path style="fill:#43B05C;" d="M41.536,58H16.464C15.103,58,14,56.897,14,55.536V41.464C14,40.103,15.103,39,16.464,39h25.072
+ C42.897,39,44,40.103,44,41.464v14.072C44,56.897,42.897,58,41.536,58z"/>
+<g>
+ <circle style="fill:#A4E869;" cx="17" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="17" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="46" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="17" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="43" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="43" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="43" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="40" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="43" r="1"/>
+</g>
+<path style="fill:#292F3A;" d="M41.536,6C41.792,6,42,6.208,42,6.464v49.072C42,55.792,41.792,56,41.536,56H16.464
+ C16.208,56,16,55.792,16,55.536V6.464C16,6.208,16.208,6,16.464,6H41.536 M41.536,4H16.464C15.103,4,14,5.103,14,6.464v49.072
+ C14,56.897,15.103,58,16.464,58h25.072C42.897,58,44,56.897,44,55.536V6.464C44,5.103,42.897,4,41.536,4L41.536,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/battery-8.svg b/img/icons/essential-collection/svg/battery-8.svg
new file mode 100644
index 00000000..d4682646
--- /dev/null
+++ b/img/icons/essential-collection/svg/battery-8.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#424A60;" d="M41.536,58H16.464C15.103,58,14,56.897,14,55.536V6.464C14,5.103,15.103,4,16.464,4h25.072
+ C42.897,4,44,5.103,44,6.464v49.072C44,56.897,42.897,58,41.536,58z"/>
+<rect x="24" style="fill:#D8A852;" width="10" height="4"/>
+<path style="fill:#43B05C;" d="M41.536,58H16.464C15.103,58,14,56.897,14,55.536v-5.072C14,49.103,15.103,48,16.464,48h25.072
+ C42.897,48,44,49.103,44,50.464v5.072C44,56.897,42.897,58,41.536,58z"/>
+<g>
+ <circle style="fill:#A4E869;" cx="17" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="23" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="29" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="35" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="41" cy="52" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="55" r="1"/>
+ <circle style="fill:#A4E869;" cx="20" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="26" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="32" cy="49" r="1"/>
+ <circle style="fill:#A4E869;" cx="38" cy="49" r="1"/>
+</g>
+<path style="fill:#292F3A;" d="M41.536,6C41.792,6,42,6.208,42,6.464v49.072C42,55.792,41.792,56,41.536,56H16.464
+ C16.208,56,16,55.792,16,55.536V6.464C16,6.208,16.208,6,16.464,6H41.536 M41.536,4H16.464C15.103,4,14,5.103,14,6.464v49.072
+ C14,56.897,15.103,58,16.464,58h25.072C42.897,58,44,56.897,44,55.536V6.464C44,5.103,42.897,4,41.536,4L41.536,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/battery-9.svg b/img/icons/essential-collection/svg/battery-9.svg
new file mode 100644
index 00000000..e0c08980
--- /dev/null
+++ b/img/icons/essential-collection/svg/battery-9.svg
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="16.5" style="fill:#D8A852;" width="10" height="4"/>
+<path style="fill:#424A60;" d="M34.5,34l2-3.464V6.464C36.5,5.103,35.397,4,34.036,4H8.964C7.603,4,6.5,5.103,6.5,6.464v49.072
+ C6.5,56.897,7.603,58,8.964,58h25.072c1.361,0,2.464-1.103,2.464-2.464V37.464L34.5,34z"/>
+<path style="fill:#43B05C;" d="M21.5,28c-4.625-15.375-15-11-15-11v38.536C6.5,56.897,7.603,58,8.964,58h25.072
+ c1.361,0,2.464-1.103,2.464-2.464V37.464L35.5,36C35.5,36,26.125,43.375,21.5,28z"/>
+<path style="fill:#292F3A;" d="M34.5,33h-2.586L29.5,30.586V28c0-0.553-0.447-1-1-1s-1,0.447-1,1v2h-2c-0.553,0-1,0.447-1,1
+ s0.447,1,1,1h2.586l2.155,2.155L27.934,38H26.5c-0.553,0-1,0.447-1,1s0.447,1,1,1h1v1c0,0.553,0.447,1,1,1s1-0.447,1-1v-1.723
+ L32.066,35H34.5c0.553,0,1-0.447,1-1S35.053,33,34.5,33z"/>
+<circle style="fill:#A4E869;" cx="10.5" cy="22" r="1"/>
+<circle style="fill:#A4E869;" cx="7.5" cy="19" r="1"/>
+<circle style="fill:#A4E869;" cx="13.5" cy="19" r="1"/>
+<circle style="fill:#A4E869;" cx="7.5" cy="25" r="1"/>
+<circle style="fill:#A4E869;" cx="13.5" cy="25" r="1"/>
+<circle style="fill:#A4E869;" cx="16.5" cy="22" r="1"/>
+<circle style="fill:#A4E869;" cx="19.5" cy="25" r="1"/>
+<circle style="fill:#A4E869;" cx="10.5" cy="28" r="1"/>
+<circle style="fill:#A4E869;" cx="10.5" cy="34" r="1"/>
+<circle style="fill:#A4E869;" cx="7.5" cy="31" r="1"/>
+<circle style="fill:#A4E869;" cx="13.5" cy="31" r="1"/>
+<circle style="fill:#A4E869;" cx="7.5" cy="37" r="1"/>
+<circle style="fill:#A4E869;" cx="13.5" cy="37" r="1"/>
+<circle style="fill:#A4E869;" cx="16.5" cy="28" r="1"/>
+<circle style="fill:#A4E869;" cx="16.5" cy="34" r="1"/>
+<circle style="fill:#A4E869;" cx="22.5" cy="34" r="1"/>
+<circle style="fill:#A4E869;" cx="19.5" cy="31" r="1"/>
+<circle style="fill:#43B05C;" cx="40.5" cy="36" r="1"/>
+<circle style="fill:#43B05C;" cx="42.5" cy="43" r="1"/>
+<circle style="fill:#43B05C;" cx="42.5" cy="39" r="1"/>
+<circle style="fill:#43B05C;" cx="44.5" cy="46" r="1"/>
+<circle style="fill:#43B05C;" cx="45.5" cy="49" r="1"/>
+<circle style="fill:#43B05C;" cx="48.5" cy="53" r="1"/>
+<circle style="fill:#43B05C;" cx="46.5" cy="43" r="1"/>
+<circle style="fill:#43B05C;" cx="46.5" cy="39" r="1"/>
+<circle style="fill:#43B05C;" cx="48.5" cy="47" r="1"/>
+<circle style="fill:#43B05C;" cx="45.5" cy="53" r="1"/>
+<circle style="fill:#43B05C;" cx="50.5" cy="50" r="1"/>
+<circle style="fill:#43B05C;" cx="49.5" cy="57" r="1"/>
+<circle style="fill:#A4E869;" cx="19.5" cy="37" r="1"/>
+<circle style="fill:#A4E869;" cx="10.5" cy="40" r="1"/>
+<circle style="fill:#A4E869;" cx="10.5" cy="46" r="1"/>
+<circle style="fill:#A4E869;" cx="7.5" cy="43" r="1"/>
+<circle style="fill:#A4E869;" cx="13.5" cy="43" r="1"/>
+<circle style="fill:#A4E869;" cx="7.5" cy="49" r="1"/>
+<circle style="fill:#A4E869;" cx="13.5" cy="49" r="1"/>
+<circle style="fill:#A4E869;" cx="16.5" cy="40" r="1"/>
+<circle style="fill:#A4E869;" cx="22.5" cy="40" r="1"/>
+<circle style="fill:#A4E869;" cx="16.5" cy="46" r="1"/>
+<circle style="fill:#A4E869;" cx="22.5" cy="46" r="1"/>
+<circle style="fill:#A4E869;" cx="19.5" cy="43" r="1"/>
+<circle style="fill:#A4E869;" cx="25.5" cy="43" r="1"/>
+<circle style="fill:#A4E869;" cx="19.5" cy="49" r="1"/>
+<circle style="fill:#A4E869;" cx="25.5" cy="49" r="1"/>
+<circle style="fill:#A4E869;" cx="34.5" cy="40" r="1"/>
+<circle style="fill:#A4E869;" cx="28.5" cy="46" r="1"/>
+<circle style="fill:#A4E869;" cx="34.5" cy="46" r="1"/>
+<circle style="fill:#A4E869;" cx="31.5" cy="43" r="1"/>
+<circle style="fill:#A4E869;" cx="31.5" cy="49" r="1"/>
+<circle style="fill:#A4E869;" cx="10.5" cy="52" r="1"/>
+<circle style="fill:#A4E869;" cx="7.5" cy="55" r="1"/>
+<circle style="fill:#A4E869;" cx="13.5" cy="55" r="1"/>
+<circle style="fill:#A4E869;" cx="16.5" cy="52" r="1"/>
+<circle style="fill:#A4E869;" cx="22.5" cy="52" r="1"/>
+<circle style="fill:#A4E869;" cx="19.5" cy="55" r="1"/>
+<circle style="fill:#A4E869;" cx="25.5" cy="55" r="1"/>
+<circle style="fill:#A4E869;" cx="28.5" cy="52" r="1"/>
+<circle style="fill:#A4E869;" cx="34.5" cy="52" r="1"/>
+<circle style="fill:#A4E869;" cx="31.5" cy="55" r="1"/>
+<path style="fill:#292F3A;" d="M34.036,6C34.292,6,34.5,6.208,34.5,6.464v49.072c0,0.256-0.208,0.464-0.464,0.464H8.964
+ C8.708,56,8.5,55.792,8.5,55.536V6.464C8.5,6.208,8.708,6,8.964,6H34.036 M34.036,4H8.964C7.603,4,6.5,5.103,6.5,6.464v49.072
+ C6.5,56.897,7.603,58,8.964,58h25.072c1.361,0,2.464-1.103,2.464-2.464V6.464C36.5,5.103,35.397,4,34.036,4L34.036,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/battery.svg b/img/icons/essential-collection/svg/battery.svg
new file mode 100644
index 00000000..a50de7c4
--- /dev/null
+++ b/img/icons/essential-collection/svg/battery.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#424A60;" d="M41.536,58H16.464C15.103,58,14,56.897,14,55.536V6.464C14,5.103,15.103,4,16.464,4h25.072
+ C42.897,4,44,5.103,44,6.464v49.072C44,56.897,42.897,58,41.536,58z"/>
+<rect x="24" style="fill:#D8A852;" width="10" height="4"/>
+<path style="fill:#EFCE4A;" d="M36,29h-4V16.068c0.012-0.058-0.064-0.092-0.1-0.046L22,32h5l0.002,13.929
+ c-0.016,0.059,0.06,0.097,0.098,0.05L36,29z"/>
+<path style="fill:#EA6248;" d="M41.536,4H16.464C15.103,4,14,5.103,14,6.464V13h30V6.464C44,5.103,42.897,4,41.536,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/binoculars.svg b/img/icons/essential-collection/svg/binoculars.svg
new file mode 100644
index 00000000..9fc0c9aa
--- /dev/null
+++ b/img/icons/essential-collection/svg/binoculars.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve">
+<circle style="fill:#7383BF;" cx="11" cy="38.32" r="11"/>
+<g>
+ <path style="fill:#424A60;" d="M14.264,2.688c-3.343,0.151-6.116,2.664-6.909,5.915l-5.93,24.313
+ C3.314,29.577,6.891,27.32,11,27.32c6.075,0,11,4.925,11,11V10.073C22,5.877,18.503,2.497,14.264,2.688z"/>
+</g>
+<rect x="22" y="15.32" style="fill:#363E4B;" width="8" height="13"/>
+<circle style="fill:#7383BF;" cx="41" cy="38.32" r="11"/>
+<g>
+ <path style="fill:#424A60;" d="M30,38.76v-0.44c0,0.149,0.016,0.293,0.022,0.44H30z"/>
+ <path style="fill:#424A60;" d="M37.736,2.688c3.343,0.151,6.116,2.664,6.909,5.915l5.93,24.313
+ C48.686,29.577,45.109,27.32,41,27.32c-6.075,0-11,4.925-11,11V10.073C30,5.877,33.497,2.497,37.736,2.688z"/>
+</g>
+<circle style="fill:#7FABDA;" cx="11" cy="38.32" r="8"/>
+<circle style="fill:#7FABDA;" cx="41" cy="38.32" r="8"/>
+<path style="fill:#A1C8EC;" d="M35.299,43.929l11.309-11.309c-0.989-0.973-2.231-1.684-3.617-2.039l-9.731,9.731
+ C33.616,41.697,34.326,42.94,35.299,43.929z"/>
+<path style="fill:#A1C8EC;" d="M13.754,30.817L3.497,41.074c0.479,1.305,1.283,2.45,2.322,3.335l11.27-11.271
+ C16.205,32.1,15.059,31.296,13.754,30.817z"/>
+<rect x="24" y="15.32" style="fill:#424A60;" width="4.023" height="13"/>
+<path style="fill:#556080;" d="M34,29.835c1.902-1.571,4.341-2.515,7-2.515c0.282,0,0.554,0.036,0.831,0.057L37.996,2.723
+ c-0.088-0.007-0.172-0.031-0.26-0.035C36.385,2.627,35.111,2.931,34,3.507V29.835z"/>
+<path style="fill:#556080;" d="M11,27.32c2.659,0,5.098,0.944,7,2.515V3.507c-1.111-0.575-2.385-0.88-3.736-0.819
+ c-0.089,0.004-0.172,0.028-0.26,0.035l-3.835,24.654C10.446,27.356,10.718,27.32,11,27.32z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/blueprint.svg b/img/icons/essential-collection/svg/blueprint.svg
new file mode 100644
index 00000000..f623a0a4
--- /dev/null
+++ b/img/icons/essential-collection/svg/blueprint.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57 57" style="enable-background:new 0 0 57 57;" xml:space="preserve">
+<path style="fill:#226BAC;" d="M6,0C2.686,0,0,2.686,0,6v45c0-3.314,2.686-6,6-6s6,2.686,6,6V6C12,2.686,9.314,0,6,0z"/>
+<path style="fill:#3083C9;" d="M12,7v44c0-3.314-2.686-6-6-6s-6,2.686-6,6v0.06C0,54.34,2.66,57,5.94,57H57V7H12z"/>
+<path style="fill:#7FABDA;" d="M52,41h-3c-0.553,0-1-0.447-1-1s0.447-1,1-1h1v-0.617c0-0.553,0.447-1,1-1s1,0.447,1,1V41z M45,41h-2
+ c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S45.553,41,45,41z M39,41h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2
+ c0.553,0,1,0.447,1,1S39.553,41,39,41z M33,41h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S33.553,41,33,41z M27,41
+ h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S27.553,41,27,41z M21,41h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2
+ c0.553,0,1,0.447,1,1S21.553,41,21,41z M17,39c-0.553,0-1-0.447-1-1v-2c0-0.553,0.447-1,1-1s1,0.447,1,1v2
+ C18,38.553,17.553,39,17,39z M51,35.383c-0.553,0-1-0.447-1-1v-2c0-0.553,0.447-1,1-1s1,0.447,1,1v2
+ C52,34.936,51.553,35.383,51,35.383z M17,33c-0.553,0-1-0.447-1-1v-2c0-0.553,0.447-1,1-1s1,0.447,1,1v2C18,32.553,17.553,33,17,33z
+ M51,29.383c-0.553,0-1-0.447-1-1v-2c0-0.553,0.447-1,1-1s1,0.447,1,1v2C52,28.936,51.553,29.383,51,29.383z M17,27
+ c-0.553,0-1-0.447-1-1v-2c0-0.553,0.447-1,1-1s1,0.447,1,1v2C18,26.553,17.553,27,17,27z M50.495,23.644
+ c-0.199,0-0.4-0.06-0.575-0.183l-1.635-1.153c-0.451-0.318-0.56-0.942-0.241-1.394c0.319-0.451,0.942-0.559,1.394-0.241l1.635,1.153
+ c0.451,0.318,0.56,0.942,0.241,1.394C51.118,23.496,50.81,23.644,50.495,23.644z M19.452,22.27c-0.314,0-0.623-0.147-0.818-0.423
+ c-0.318-0.451-0.211-1.075,0.24-1.395l1.634-1.153c0.453-0.317,1.076-0.21,1.395,0.24c0.318,0.451,0.211,1.075-0.24,1.395
+ l-1.634,1.153C19.853,22.21,19.651,22.27,19.452,22.27z M45.593,20.184c-0.199,0-0.4-0.06-0.576-0.183l-1.634-1.153
+ c-0.451-0.319-0.559-0.943-0.24-1.395c0.319-0.45,0.941-0.558,1.395-0.24l1.634,1.153c0.451,0.319,0.559,0.943,0.24,1.395
+ C46.216,20.036,45.907,20.184,45.593,20.184z M24.354,18.81c-0.314,0-0.623-0.147-0.818-0.423c-0.318-0.451-0.211-1.075,0.24-1.395
+ l1.634-1.153c0.453-0.316,1.075-0.209,1.395,0.24c0.318,0.451,0.211,1.075-0.24,1.395l-1.634,1.153
+ C24.754,18.75,24.553,18.81,24.354,18.81z M40.691,16.724c-0.199,0-0.4-0.06-0.576-0.183l-1.634-1.153
+ c-0.451-0.319-0.559-0.943-0.24-1.395c0.319-0.45,0.941-0.558,1.395-0.24l1.634,1.153c0.451,0.319,0.559,0.943,0.24,1.395
+ C41.314,16.576,41.006,16.724,40.691,16.724z M29.256,15.35c-0.314,0-0.623-0.147-0.818-0.423c-0.318-0.451-0.211-1.075,0.24-1.395
+ l1.634-1.153c0.454-0.318,1.075-0.209,1.395,0.24c0.318,0.451,0.211,1.075-0.24,1.395l-1.634,1.153
+ C29.656,15.29,29.455,15.35,29.256,15.35z M35.789,13.264c-0.199,0-0.4-0.06-0.576-0.183l-1.634-1.153
+ c-0.451-0.319-0.559-0.943-0.24-1.395c0.319-0.449,0.941-0.557,1.395-0.24l1.634,1.153c0.451,0.319,0.559,0.943,0.24,1.395
+ C36.412,13.116,36.104,13.264,35.789,13.264z"/>
+<rect x="41" y="46" style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" width="11" height="6"/>
+<path style="fill:#7FABDA;" d="M30,36h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h1v-1c0-0.553,0.447-1,1-1s1,0.447,1,1v2
+ C31,35.553,30.553,36,30,36z M24,36h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S24.553,36,24,36z M22,32
+ c-0.553,0-1-0.447-1-1v-2c0-0.553,0.447-1,1-1s1,0.447,1,1v2C23,31.553,22.553,32,22,32z M30,30c-0.553,0-1-0.447-1-1v-2
+ c0-0.553,0.447-1,1-1s1,0.447,1,1v2C31,29.553,30.553,30,30,30z M26,28h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1
+ S26.553,28,26,28z"/>
+<path style="fill:#7FABDA;" d="M46,36h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h1v-1c0-0.553,0.447-1,1-1s1,0.447,1,1v2
+ C47,35.553,46.553,36,46,36z M40,36h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S40.553,36,40,36z M38,32
+ c-0.553,0-1-0.447-1-1v-2c0-0.553,0.447-1,1-1s1,0.447,1,1v2C39,31.553,38.553,32,38,32z M46,30c-0.553,0-1-0.447-1-1v-2
+ c0-0.553,0.447-1,1-1s1,0.447,1,1v2C47,29.553,46.553,30,46,30z M42,28h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1
+ S42.553,28,42,28z"/>
+<line style="fill:none;stroke:#C6E2F7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="37" y1="46" x2="32" y2="46"/>
+<line style="fill:none;stroke:#C6E2F7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="37" y1="49" x2="30" y2="49"/>
+<line style="fill:none;stroke:#C6E2F7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="37" y1="52" x2="27" y2="52"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/bluetooth-1.svg b/img/icons/essential-collection/svg/bluetooth-1.svg
new file mode 100644
index 00000000..03572475
--- /dev/null
+++ b/img/icons/essential-collection/svg/bluetooth-1.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53.972 53.972" style="enable-background:new 0 0 53.972 53.972;" xml:space="preserve">
+<polygon style="fill:#FFFFFF;stroke:#0A3C91;stroke-width:2;stroke-miterlimit:10;" points="27.146,51.414 27.146,38.414
+ 27.146,26.414 39.146,38.414 "/>
+<polygon style="fill:#FFFFFF;stroke:#0A3C91;stroke-width:2;stroke-miterlimit:10;" points="27.146,27.414 27.146,14.414
+ 27.146,2.414 39.146,14.414 "/>
+<line style="fill:none;stroke:#0A3C91;stroke-width:2;stroke-miterlimit:10;" x1="14.146" y1="13.414" x2="28.146" y2="27.414"/>
+<line style="fill:none;stroke:#0A3C91;stroke-width:2;stroke-miterlimit:10;" x1="28.146" y1="26.414" x2="14.146" y2="40.414"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/bluetooth.svg b/img/icons/essential-collection/svg/bluetooth.svg
new file mode 100644
index 00000000..15425fe8
--- /dev/null
+++ b/img/icons/essential-collection/svg/bluetooth.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 55 55" style="enable-background:new 0 0 55 55;" xml:space="preserve">
+<path style="fill:#0A3C91;" d="M27.5,55L27.5,55c-9.389,0-17-7.611-17-17V17c0-9.389,7.611-17,17-17h0c9.389,0,17,7.611,17,17v21
+ C44.5,47.389,36.889,55,27.5,55z"/>
+<polygon style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-miterlimit:10;" points="27.535,27 27.5,18 27.5,10 35.5,18 "/>
+<polygon style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-miterlimit:10;" points="27.5,45 27.5,36 27.535,27.606 35.5,36 "/>
+<line style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-miterlimit:10;" x1="17.573" y1="18.013" x2="27.535" y2="27.013"/>
+<line style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-miterlimit:10;" x1="27.573" y1="27.013" x2="17.5" y2="36.013"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/bookmark-1.svg b/img/icons/essential-collection/svg/bookmark-1.svg
new file mode 100644
index 00000000..ea411938
--- /dev/null
+++ b/img/icons/essential-collection/svg/bookmark-1.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#EDEADA;" points="27.5,4 27.5,28 19.5,22 11.5,28 11.5,4 4.5,4 4.5,58 53.5,58 53.5,4 "/>
+<g>
+ <path style="fill:#CEC9AE;" d="M46.5,35h-35c-0.553,0-1,0.447-1,1s0.447,1,1,1h35c0.553,0,1-0.447,1-1S47.053,35,46.5,35z"/>
+ <path style="fill:#CEC9AE;" d="M46.5,28h-13c-0.553,0-1,0.447-1,1s0.447,1,1,1h13c0.553,0,1-0.447,1-1S47.053,28,46.5,28z"/>
+ <path style="fill:#CEC9AE;" d="M46.5,21h-13c-0.553,0-1,0.447-1,1s0.447,1,1,1h13c0.553,0,1-0.447,1-1S47.053,21,46.5,21z"/>
+ <path style="fill:#CEC9AE;" d="M33.5,16h13c0.553,0,1-0.447,1-1s-0.447-1-1-1h-13c-0.553,0-1,0.447-1,1S32.947,16,33.5,16z"/>
+ <path style="fill:#CEC9AE;" d="M46.5,47h-35c-0.553,0-1,0.447-1,1s0.447,1,1,1h35c0.553,0,1-0.447,1-1S47.053,47,46.5,47z"/>
+ <path style="fill:#CEC9AE;" d="M11.5,43h14c0.553,0,1-0.447,1-1s-0.447-1-1-1h-14c-0.553,0-1,0.447-1,1S10.947,43,11.5,43z"/>
+ <path style="fill:#CEC9AE;" d="M46.5,41h-13c-0.553,0-1,0.447-1,1s0.447,1,1,1h13c0.553,0,1-0.447,1-1S47.053,41,46.5,41z"/>
+ <path style="fill:#CEC9AE;" d="M30.21,42.71c0.18-0.19,0.29-0.45,0.29-0.71c0-0.261-0.11-0.521-0.29-0.7
+ c-0.37-0.38-1.061-0.38-1.42-0.01c-0.181,0.189-0.29,0.449-0.29,0.71c0,0.26,0.109,0.52,0.29,0.71C28.979,42.89,29.229,43,29.5,43
+ C29.76,43,30.02,42.89,30.21,42.71z"/>
+</g>
+<polygon style="fill:#D75A4A;" points="27.5,28 19.5,22 11.5,28 11.5,0 27.5,0 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/bookmark.svg b/img/icons/essential-collection/svg/bookmark.svg
new file mode 100644
index 00000000..35ff141d
--- /dev/null
+++ b/img/icons/essential-collection/svg/bookmark.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<path style="fill:#DD352E;" d="M8.589,0C5.779,0,3.5,2.279,3.5,5.089V54l18-12l18,12V6c0-3.3,2.7-6,6-6H8.589z"/>
+<path style="fill:#B02721;" d="M45.41,0.005C42.151,0.054,39.5,2.73,39.5,6v17h11V5.135C50.5,2.315,48.225,0.03,45.41,0.005z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/briefcase.svg b/img/icons/essential-collection/svg/briefcase.svg
new file mode 100644
index 00000000..3db7b639
--- /dev/null
+++ b/img/icons/essential-collection/svg/briefcase.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M19,17V7.206
+ C19,5.988,19.988,5,21.206,5h15.587C38.012,5,39,5.988,39,7.206V17"/>
+<path style="fill:#A97C50;" d="M55.99,54H2.01C0.9,54,0,53.1,0,51.99V16.01C0,14.9,0.9,14,2.01,14H55.99C57.1,14,58,14.9,58,16.01
+ V51.99C58,53.1,57.1,54,55.99,54z"/>
+<path style="fill:#997046;" d="M8,14H2.01C0.9,14,0,14.9,0,16.01V51.99C0,53.1,0.9,54,2.01,54H8V14z"/>
+<path style="fill:#997046;" d="M55.99,14H50v40h5.99C57.1,54,58,53.1,58,51.99V16.01C58,14.9,57.1,14,55.99,14z"/>
+<rect x="7" y="14" style="fill:#D1A074;" width="2" height="40"/>
+<rect x="49" y="14" style="fill:#D1A074;" width="2" height="40"/>
+<rect x="5" y="11" style="fill:#C7CAC7;" width="8" height="3"/>
+<rect x="45" y="11" style="fill:#C7CAC7;" width="8" height="3"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/broken-link.svg b/img/icons/essential-collection/svg/broken-link.svg
new file mode 100644
index 00000000..2c075ce3
--- /dev/null
+++ b/img/icons/essential-collection/svg/broken-link.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52.965 52.965" style="enable-background:new 0 0 52.965 52.965;" xml:space="preserve">
+<path style="fill:none;stroke:#D5354E;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M24.008,13.401L33.2,4.208
+ c4.278-4.278,11.278-4.278,15.556,0l0,0c4.278,4.278,4.278,11.278,0,15.556L36.735,31.786c-4.278,4.278-11.278,4.278-15.556,0l0,0"
+ />
+<path style="fill:none;stroke:#D5354E;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M27.543,40.978l-7.778,7.778
+ c-4.278,4.278-11.278,4.278-15.556,0l0,0c-4.278-4.278-4.278-11.278,0-15.556l11.314-11.314c4.278-4.278,11.278-4.278,15.556,0l0,0"
+ />
+<line style="fill:none;stroke:#D5354E;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="33.965" y1="45" x2="33.965" y2="51"/>
+<line style="fill:none;stroke:#D5354E;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="37.722" y1="43" x2="41.965" y2="47.243"/>
+<line style="fill:none;stroke:#D5354E;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="38.965" y1="39" x2="44.965" y2="39"/>
+<line style="fill:none;stroke:#D5354E;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="15.965" y1="10" x2="15.965" y2="4"/>
+<line style="fill:none;stroke:#D5354E;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="12.207" y1="12" x2="7.965" y2="7.757"/>
+<line style="fill:none;stroke:#D5354E;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="10.965" y1="16" x2="4.965" y2="16"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/calculator-1.svg b/img/icons/essential-collection/svg/calculator-1.svg
new file mode 100644
index 00000000..15684d91
--- /dev/null
+++ b/img/icons/essential-collection/svg/calculator-1.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#DDCCB6;" d="M49.586,58H8.414C7.357,58,6.5,57.143,6.5,56.086V1.914C6.5,0.857,7.357,0,8.414,0h41.171
+ C50.643,0,51.5,0.857,51.5,1.914v54.171C51.5,57.143,50.643,58,49.586,58z"/>
+<rect x="11.5" y="44" style="fill:#F2ECBF;" width="9" height="9"/>
+<rect x="24.5" y="44" style="fill:#F2ECBF;" width="9" height="9"/>
+<rect x="37.5" y="31" style="fill:#DC691D;" width="9" height="22"/>
+<rect x="11.5" y="31" style="fill:#F2ECBF;" width="9" height="9"/>
+<rect x="24.5" y="31" style="fill:#F2ECBF;" width="9" height="9"/>
+<rect x="11.5" y="18" style="fill:#F2ECBF;" width="9" height="9"/>
+<rect x="24.5" y="18" style="fill:#F2ECBF;" width="9" height="9"/>
+<rect x="37.5" y="18" style="fill:#424A60;" width="9" height="9"/>
+<rect x="11.5" y="5" style="fill:#74972F;" width="35" height="8"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/calculator.svg b/img/icons/essential-collection/svg/calculator.svg
new file mode 100644
index 00000000..64a285bd
--- /dev/null
+++ b/img/icons/essential-collection/svg/calculator.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<rect style="fill:#EBBA16;" width="28" height="28"/>
+<rect x="28" style="fill:#ED8A19;" width="28" height="28"/>
+<rect y="28" style="fill:#ED8A19;" width="28" height="28"/>
+<rect x="28" y="28" style="fill:#556080;" width="28" height="28"/>
+<path style="fill:#FFFFFF;" d="M48,46H36c-0.552,0-1-0.447-1-1s0.448-1,1-1h12c0.552,0,1,0.447,1,1S48.552,46,48,46z"/>
+<path style="fill:#FFFFFF;" d="M48,40H36c-0.552,0-1-0.447-1-1s0.448-1,1-1h12c0.552,0,1,0.447,1,1S48.552,40,48,40z"/>
+<path style="fill:#FFFFFF;" d="M14,43c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414l5-5
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414l-5,5C14.512,42.902,14.256,43,14,43z"/>
+<path style="fill:#FFFFFF;" d="M9,48c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414l5-5
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414l-5,5C9.512,47.902,9.256,48,9,48z"/>
+<path style="fill:#FFFFFF;" d="M19,48c-0.256,0-0.512-0.098-0.707-0.293l-5-5c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0
+ l5,5c0.391,0.391,0.391,1.023,0,1.414C19.512,47.902,19.256,48,19,48z"/>
+<path style="fill:#FFFFFF;" d="M14,43c-0.256,0-0.512-0.098-0.707-0.293l-5-5c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0
+ l5,5c0.391,0.391,0.391,1.023,0,1.414C14.512,42.902,14.256,43,14,43z"/>
+<path style="fill:#FFFFFF;" d="M20,15H8c-0.552,0-1-0.447-1-1s0.448-1,1-1h12c0.552,0,1,0.447,1,1S20.552,15,20,15z"/>
+<path style="fill:#FFFFFF;" d="M14,21c-0.552,0-1-0.447-1-1V8c0-0.553,0.448-1,1-1s1,0.447,1,1v12C15,20.553,14.552,21,14,21z"/>
+<path style="fill:#FFFFFF;" d="M48,15H36c-0.552,0-1-0.447-1-1s0.448-1,1-1h12c0.552,0,1,0.447,1,1S48.552,15,48,15z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/calendar-1.svg b/img/icons/essential-collection/svg/calendar-1.svg
new file mode 100644
index 00000000..91554ae5
--- /dev/null
+++ b/img/icons/essential-collection/svg/calendar-1.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<rect x="1.5" y="16" style="fill:#A7AFC6;" width="56" height="42"/>
+<polygon style="fill:#424A60;" points="42.5,5 16.5,5 0.5,5 0.5,15 58.5,15 58.5,5 "/>
+<circle style="fill:#262B38;" cx="20.5" cy="9" r="2"/>
+<circle style="fill:#262B38;" cx="26.5" cy="9" r="2"/>
+<circle style="fill:#262B38;" cx="32.5" cy="9" r="2"/>
+<circle style="fill:#262B38;" cx="38.5" cy="9" r="2"/>
+<path style="fill:#AFB6BB;" d="M38.5,0c-1.13,0-2.162,0.391-3,1.025c0.534,0.405,0.979,0.912,1.315,1.495
+ C37.296,2.192,37.876,2,38.5,2c1.654,0,3,1.346,3,3s-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5
+ S41.257,0,38.5,0z"/>
+<path style="fill:#839594;" d="M34.185,2.52C33.761,3.254,33.5,4.093,33.5,5h2C35.5,3.97,34.978,3.061,34.185,2.52z"/>
+<path style="fill:#839594;" d="M28.185,2.52C27.761,3.254,27.5,4.093,27.5,5h2C29.5,3.97,28.978,3.061,28.185,2.52z"/>
+<path style="fill:#AFB6BB;" d="M36.815,2.52c-0.337-0.583-0.781-1.09-1.315-1.495C34.662,0.391,33.63,0,32.5,0s-2.162,0.391-3,1.025
+ c0.534,0.405,0.979,0.912,1.315,1.495C31.296,2.192,31.876,2,32.5,2s1.204,0.192,1.685,0.52C34.978,3.061,35.5,3.97,35.5,5
+ c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5C37.5,4.093,37.239,3.254,36.815,2.52z"/>
+<path style="fill:#839594;" d="M22.185,2.52C21.761,3.254,21.5,4.093,21.5,5h2C23.5,3.97,22.978,3.061,22.185,2.52z"/>
+<path style="fill:#AFB6BB;" d="M30.815,2.52c-0.337-0.583-0.781-1.09-1.315-1.495C28.662,0.391,27.63,0,26.5,0s-2.162,0.391-3,1.025
+ c0.534,0.405,0.979,0.912,1.315,1.495C25.296,2.192,25.876,2,26.5,2s1.204,0.192,1.685,0.52C28.978,3.061,29.5,3.97,29.5,5
+ c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5C31.5,4.093,31.239,3.254,30.815,2.52z"/>
+<path style="fill:#AFB6BB;" d="M24.815,2.52c-0.337-0.583-0.781-1.09-1.315-1.495C22.662,0.391,21.63,0,20.5,0c-2.757,0-5,2.243-5,5
+ h2c0-1.654,1.346-3,3-3c0.624,0,1.204,0.192,1.685,0.52C22.978,3.061,23.5,3.97,23.5,5c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1
+ s0.447,1,1,1c2.757,0,5-2.243,5-5C25.5,4.093,25.239,3.254,24.815,2.52z"/>
+<rect x="29.5" y="30" style="fill:none;stroke:#1081E0;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" width="14" height="14"/>
+<path style="fill:#556080;" d="M44.5,15h-2h-12h-2h-12h-2h-14v14v2v12v2v14h14h2h12h2h12h2h14V45v-2V31v-2V15H44.5z M30.5,17h12v12
+ h-12V17z M42.5,43h-12V31h12V43z M16.5,31h12v12h-12V31z M16.5,17h12v12h-12V17z M2.5,17h12v12h-12V17z M2.5,31h12v12h-12V31z
+ M14.5,57h-12V45h12V57z M28.5,57h-12V45h12V57z M42.5,57h-12V45h12V57z M56.5,57h-12V45h12V57z M56.5,43h-12V31h12V43z M44.5,29V17
+ h12v12H44.5z"/>
+<rect x="30.5" y="31" style="fill:#EBBA16;" width="12" height="12"/>
+<path style="fill:#EFCE4A;" d="M37.914,37l3.293-3.293c0.391-0.391,0.391-1.023,0-1.414s-1.023-0.391-1.414,0L36.5,35.586
+ l-3.293-3.293c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414L35.086,37l-3.293,3.293c-0.391,0.391-0.391,1.023,0,1.414
+ C31.988,41.902,32.244,42,32.5,42s0.512-0.098,0.707-0.293l3.293-3.293l3.293,3.293C39.988,41.902,40.244,42,40.5,42
+ s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L37.914,37z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/calendar-2.svg b/img/icons/essential-collection/svg/calendar-2.svg
new file mode 100644
index 00000000..505496a6
--- /dev/null
+++ b/img/icons/essential-collection/svg/calendar-2.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<polygon style="fill:#424A60;" points="41,5.5 15,5.5 0,5.5 0,15.5 56,15.5 56,5.5 "/>
+<circle style="fill:#262B38;" cx="19" cy="9.5" r="2"/>
+<circle style="fill:#262B38;" cx="25" cy="9.5" r="2"/>
+<circle style="fill:#262B38;" cx="31" cy="9.5" r="2"/>
+<circle style="fill:#262B38;" cx="37" cy="9.5" r="2"/>
+<path style="fill:#AFB6BB;" d="M37,0.5c-1.13,0-2.162,0.391-3,1.025c0.534,0.405,0.979,0.912,1.315,1.495
+ C35.796,2.692,36.376,2.5,37,2.5c1.654,0,3,1.346,3,3s-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5
+ S39.757,0.5,37,0.5z"/>
+<path style="fill:#839594;" d="M32.685,3.02C32.261,3.754,32,4.593,32,5.5h2C34,4.47,33.478,3.561,32.685,3.02z"/>
+<path style="fill:#839594;" d="M26.685,3.02C26.261,3.754,26,4.593,26,5.5h2C28,4.47,27.478,3.561,26.685,3.02z"/>
+<path style="fill:#AFB6BB;" d="M35.315,3.02C34.979,2.437,34.534,1.93,34,1.525C33.162,0.891,32.13,0.5,31,0.5s-2.162,0.391-3,1.025
+ c0.534,0.405,0.979,0.912,1.315,1.495C29.796,2.692,30.376,2.5,31,2.5s1.204,0.192,1.685,0.52C33.478,3.561,34,4.47,34,5.5
+ c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5C36,4.593,35.739,3.754,35.315,3.02z"/>
+<path style="fill:#839594;" d="M20.685,3.02C20.261,3.754,20,4.593,20,5.5h2C22,4.47,21.478,3.561,20.685,3.02z"/>
+<path style="fill:#AFB6BB;" d="M29.315,3.02C28.979,2.437,28.534,1.93,28,1.525C27.162,0.891,26.13,0.5,25,0.5s-2.162,0.391-3,1.025
+ c0.534,0.405,0.979,0.912,1.315,1.495C23.796,2.692,24.376,2.5,25,2.5s1.204,0.192,1.685,0.52C27.478,3.561,28,4.47,28,5.5
+ c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5C30,4.593,29.739,3.754,29.315,3.02z"/>
+<path style="fill:#AFB6BB;" d="M23.315,3.02C22.979,2.437,22.534,1.93,22,1.525C21.162,0.891,20.13,0.5,19,0.5c-2.757,0-5,2.243-5,5
+ h2c0-1.654,1.346-3,3-3c0.624,0,1.204,0.192,1.685,0.52C21.478,3.561,22,4.47,22,5.5c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1
+ s0.447,1,1,1c2.757,0,5-2.243,5-5C24,4.593,23.739,3.754,23.315,3.02z"/>
+<rect y="15.5" style="fill:#EDEADA;" width="56" height="40"/>
+<g>
+ <path style="fill:#CEC9AE;" d="M8,24.5h22c0.552,0,1-0.447,1-1s-0.448-1-1-1H8c-0.552,0-1,0.447-1,1S7.448,24.5,8,24.5z"/>
+ <path style="fill:#CEC9AE;" d="M48,38.5H33c-0.552,0-1,0.447-1,1s0.448,1,1,1h15c0.552,0,1-0.447,1-1S48.552,38.5,48,38.5z"/>
+ <path style="fill:#CEC9AE;" d="M8,32.5h10c0.552,0,1-0.447,1-1s-0.448-1-1-1H8c-0.552,0-1,0.447-1,1S7.448,32.5,8,32.5z"/>
+ <path style="fill:#CEC9AE;" d="M48,46.5H38c-0.552,0-1,0.447-1,1s0.448,1,1,1h10c0.552,0,1-0.447,1-1S48.552,46.5,48,46.5z"/>
+ <path style="fill:#CEC9AE;" d="M27,31.5c0,0.553,0.448,1,1,1h15c0.552,0,1-0.447,1-1s-0.448-1-1-1H28
+ C27.448,30.5,27,30.947,27,31.5z"/>
+ <path style="fill:#CEC9AE;" d="M23.71,32.21C23.89,32.02,24,31.76,24,31.5c0-0.261-0.11-0.521-0.29-0.71
+ c-0.37-0.37-1.05-0.37-1.42,0C22.11,30.979,22,31.239,22,31.5c0,0.26,0.11,0.52,0.29,0.71c0.19,0.189,0.45,0.29,0.71,0.29
+ C23.26,32.5,23.52,32.399,23.71,32.21z"/>
+ <path style="fill:#CEC9AE;" d="M12,39.5c0,0.553,0.448,1,1,1h15c0.552,0,1-0.447,1-1s-0.448-1-1-1H13
+ C12.448,38.5,12,38.947,12,39.5z"/>
+ <path style="fill:#CEC9AE;" d="M8,40.5c0.26,0,0.52-0.11,0.71-0.29C8.89,40.02,9,39.76,9,39.5c0-0.261-0.11-0.521-0.29-0.7
+ c-0.37-0.38-1.05-0.38-1.42-0.01C7.11,38.979,7,39.239,7,39.5c0,0.26,0.11,0.52,0.29,0.71C7.48,40.39,7.73,40.5,8,40.5z"/>
+ <path style="fill:#CEC9AE;" d="M48,32.5c0.26,0,0.52-0.101,0.71-0.29C48.9,32.02,49,31.76,49,31.5c0-0.261-0.1-0.521-0.29-0.71
+ c-0.38-0.37-1.05-0.37-1.42,0C47.11,30.979,47,31.239,47,31.5c0,0.26,0.11,0.52,0.29,0.71C47.48,32.399,47.74,32.5,48,32.5z"/>
+ <path style="fill:#CEC9AE;" d="M33,46.5H8c-0.552,0-1,0.447-1,1s0.448,1,1,1h25c0.552,0,1-0.447,1-1S33.552,46.5,33,46.5z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/calendar-3.svg b/img/icons/essential-collection/svg/calendar-3.svg
new file mode 100644
index 00000000..df39db57
--- /dev/null
+++ b/img/icons/essential-collection/svg/calendar-3.svg
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57 57" style="enable-background:new 0 0 57 57;" xml:space="preserve">
+<rect x="0.5" y="18" style="fill:#E7ECED;" width="56" height="39"/>
+<polygon style="fill:#23A24D;" points="41.5,5 15.5,5 0.5,5 0.5,18 56.5,18 56.5,5 "/>
+<circle style="fill:#38454F;" cx="19.5" cy="9" r="2"/>
+<circle style="fill:#38454F;" cx="25.5" cy="9" r="2"/>
+<circle style="fill:#38454F;" cx="31.5" cy="9" r="2"/>
+<circle style="fill:#38454F;" cx="37.5" cy="9" r="2"/>
+<path style="fill:#AFB6BB;" d="M37.5,0c-1.13,0-2.162,0.391-3,1.025c0.534,0.405,0.979,0.912,1.315,1.495
+ C36.296,2.192,36.876,2,37.5,2c1.654,0,3,1.346,3,3s-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5
+ S40.257,0,37.5,0z"/>
+<path style="fill:#839594;" d="M33.185,2.52C32.761,3.254,32.5,4.093,32.5,5h2C34.5,3.97,33.978,3.061,33.185,2.52z"/>
+<path style="fill:#839594;" d="M27.185,2.52C26.761,3.254,26.5,4.093,26.5,5h2C28.5,3.97,27.978,3.061,27.185,2.52z"/>
+<path style="fill:#AFB6BB;" d="M35.815,2.52c-0.337-0.583-0.781-1.09-1.315-1.495C33.662,0.391,32.63,0,31.5,0s-2.162,0.391-3,1.025
+ c0.534,0.405,0.979,0.912,1.315,1.495C30.296,2.192,30.876,2,31.5,2s1.204,0.192,1.685,0.52C33.978,3.061,34.5,3.97,34.5,5
+ c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5C36.5,4.093,36.239,3.254,35.815,2.52z"/>
+<path style="fill:#839594;" d="M21.185,2.52C20.761,3.254,20.5,4.093,20.5,5h2C22.5,3.97,21.978,3.061,21.185,2.52z"/>
+<path style="fill:#AFB6BB;" d="M29.815,2.52c-0.337-0.583-0.781-1.09-1.315-1.495C27.662,0.391,26.63,0,25.5,0s-2.162,0.391-3,1.025
+ c0.534,0.405,0.979,0.912,1.315,1.495C24.296,2.192,24.876,2,25.5,2s1.204,0.192,1.685,0.52C27.978,3.061,28.5,3.97,28.5,5
+ c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5C30.5,4.093,30.239,3.254,29.815,2.52z"/>
+<path style="fill:#AFB6BB;" d="M23.815,2.52c-0.337-0.583-0.781-1.09-1.315-1.495C21.662,0.391,20.63,0,19.5,0c-2.757,0-5,2.243-5,5
+ h2c0-1.654,1.346-3,3-3c0.624,0,1.204,0.192,1.685,0.52C21.978,3.061,22.5,3.97,22.5,5c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1
+ s0.447,1,1,1c2.757,0,5-2.243,5-5C24.5,4.093,24.239,3.254,23.815,2.52z"/>
+<path style="fill:#556080;" d="M18.5,51c-0.552,0-1-0.447-1-1V24c0-0.553,0.448-1,1-1s1,0.447,1,1v26C19.5,50.553,19.052,51,18.5,51
+ z"/>
+<path style="fill:#556080;" d="M22.5,51h-8c-0.552,0-1-0.447-1-1s0.448-1,1-1h8c0.552,0,1,0.447,1,1S23.052,51,22.5,51z"/>
+<path style="fill:#556080;" d="M12.5,31c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414l6-6
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414l-6,6C13.012,30.902,12.756,31,12.5,31z"/>
+<path style="fill:#556080;" d="M37.5,37c-3.86,0-7-3.141-7-7s3.14-7,7-7s7,3.141,7,7S41.36,37,37.5,37z M37.5,25
+ c-2.757,0-5,2.243-5,5s2.243,5,5,5s5-2.243,5-5S40.257,25,37.5,25z"/>
+<path style="fill:#556080;" d="M37.5,51c-3.86,0-7-3.141-7-7c0-0.553,0.448-1,1-1s1,0.447,1,1c0,2.757,2.243,5,5,5s5-2.243,5-5V30
+ c0-0.553,0.448-1,1-1s1,0.447,1,1v14C44.5,47.859,41.36,51,37.5,51z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/calendar-4.svg b/img/icons/essential-collection/svg/calendar-4.svg
new file mode 100644
index 00000000..588d6d5d
--- /dev/null
+++ b/img/icons/essential-collection/svg/calendar-4.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57 57" style="enable-background:new 0 0 57 57;" xml:space="preserve">
+<rect x="0.5" y="18" style="fill:#E7ECED;" width="56" height="39"/>
+<g>
+ <path style="fill:#424A60;" d="M22.5,50h-3V25c0-0.13-0.026-0.26-0.077-0.382c-0.101-0.245-0.296-0.44-0.541-0.541
+ c-0.244-0.101-0.519-0.101-0.764,0c-0.123,0.051-0.234,0.125-0.326,0.217l-5.999,5.999c-0.391,0.391-0.391,1.023,0,1.414
+ C11.988,31.902,12.244,32,12.5,32s0.512-0.098,0.707-0.293l4.293-4.293V50h-3c-0.553,0-1,0.447-1,1s0.447,1,1,1h8
+ c0.553,0,1-0.447,1-1S23.053,50,22.5,50z"/>
+ <path style="fill:#424A60;" d="M41.216,36.921C43.185,35.681,44.5,33.494,44.5,31c0-3.859-3.141-7-7-7s-7,3.141-7,7
+ c0,2.494,1.315,4.681,3.284,5.921C31.24,38.262,29.5,40.93,29.5,44c0,4.411,3.589,8,8,8s8-3.589,8-8
+ C45.5,40.93,43.76,38.262,41.216,36.921z M32.5,31c0-2.757,2.243-5,5-5s5,2.243,5,5s-2.243,5-5,5S32.5,33.757,32.5,31z M37.5,50
+ c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S40.809,50,37.5,50z"/>
+</g>
+<polygon style="fill:#424A60;" points="41.5,5 15.5,5 0.5,5 0.5,18 56.5,18 56.5,5 "/>
+<circle style="fill:#38454F;" cx="19.5" cy="9" r="2"/>
+<circle style="fill:#38454F;" cx="25.5" cy="9" r="2"/>
+<circle style="fill:#38454F;" cx="31.5" cy="9" r="2"/>
+<circle style="fill:#38454F;" cx="37.5" cy="9" r="2"/>
+<path style="fill:#AFB6BB;" d="M37.5,0c-1.13,0-2.162,0.391-3,1.025c0.534,0.405,0.979,0.912,1.315,1.495
+ C36.296,2.192,36.876,2,37.5,2c1.654,0,3,1.346,3,3s-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5
+ S40.257,0,37.5,0z"/>
+<path style="fill:#839594;" d="M33.185,2.52C32.761,3.254,32.5,4.093,32.5,5h2C34.5,3.97,33.978,3.061,33.185,2.52z"/>
+<path style="fill:#839594;" d="M27.185,2.52C26.761,3.254,26.5,4.093,26.5,5h2C28.5,3.97,27.978,3.061,27.185,2.52z"/>
+<path style="fill:#AFB6BB;" d="M35.815,2.52c-0.337-0.583-0.781-1.09-1.315-1.495C33.662,0.391,32.63,0,31.5,0s-2.162,0.391-3,1.025
+ c0.534,0.405,0.979,0.912,1.315,1.495C30.296,2.192,30.876,2,31.5,2s1.204,0.192,1.685,0.52C33.978,3.061,34.5,3.97,34.5,5
+ c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5C36.5,4.093,36.239,3.254,35.815,2.52z"/>
+<path style="fill:#839594;" d="M21.185,2.52C20.761,3.254,20.5,4.093,20.5,5h2C22.5,3.97,21.978,3.061,21.185,2.52z"/>
+<path style="fill:#AFB6BB;" d="M29.815,2.52c-0.337-0.583-0.781-1.09-1.315-1.495C27.662,0.391,26.63,0,25.5,0s-2.162,0.391-3,1.025
+ c0.534,0.405,0.979,0.912,1.315,1.495C24.296,2.192,24.876,2,25.5,2s1.204,0.192,1.685,0.52C27.978,3.061,28.5,3.97,28.5,5
+ c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5C30.5,4.093,30.239,3.254,29.815,2.52z"/>
+<path style="fill:#AFB6BB;" d="M23.815,2.52c-0.337-0.583-0.781-1.09-1.315-1.495C21.662,0.391,20.63,0,19.5,0c-2.757,0-5,2.243-5,5
+ h2c0-1.654,1.346-3,3-3c0.624,0,1.204,0.192,1.685,0.52C21.978,3.061,22.5,3.97,22.5,5c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1
+ s0.447,1,1,1c2.757,0,5-2.243,5-5C24.5,4.093,24.239,3.254,23.815,2.52z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/calendar-5.svg b/img/icons/essential-collection/svg/calendar-5.svg
new file mode 100644
index 00000000..688e3928
--- /dev/null
+++ b/img/icons/essential-collection/svg/calendar-5.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#FC3952;" points="48,4 48,8 41,8 41,4 17,4 17,8 10,8 10,4 2,4 2,15 56,15 56,4 "/>
+<polygon style="fill:#EDEADA;" points="10,15 2,15 2,58 56,58 56,15 48,15 41,15 17,15 "/>
+<path style="fill:#CEC9AE;" d="M39,22h-2h-7h-2h-7h-2h-9v9v2v7v2v9h9h2h7h2h7h2h9v-9v-2v-7v-2v-9H39z M30,24h7v7h-7V24z M37,40h-7
+ v-7h7V40z M21,33h7v7h-7V33z M21,24h7v7h-7V24z M12,24h7v7h-7V24z M12,33h7v7h-7V33z M19,49h-7v-7h7V49z M28,49h-7v-7h7V49z M37,49
+ h-7v-7h7V49z M46,49h-7v-7h7V49z M46,40h-7v-7h7V40z M39,31v-7h7v7H39z"/>
+<rect x="10" style="fill:#28384C;" width="7" height="8"/>
+<rect x="41" style="fill:#28384C;" width="7" height="8"/>
+<rect x="30" y="33" style="fill:#26B99A;" width="7" height="7"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/calendar-6.svg b/img/icons/essential-collection/svg/calendar-6.svg
new file mode 100644
index 00000000..1643761d
--- /dev/null
+++ b/img/icons/essential-collection/svg/calendar-6.svg
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<polygon style="fill:#61B872;" points="41,5 15,5 0,5 0,16 56,16 56,5 "/>
+<circle style="fill:#50965C;" cx="19" cy="9" r="2"/>
+<circle style="fill:#50965C;" cx="25" cy="9" r="2"/>
+<circle style="fill:#50965C;" cx="31" cy="9" r="2"/>
+<circle style="fill:#50965C;" cx="37" cy="9" r="2"/>
+<rect y="16" style="fill:#EDEADA;" width="56" height="40"/>
+<g>
+ <circle style="fill:#424A60;" cx="21" cy="24" r="1"/>
+ <circle style="fill:#424A60;" cx="28" cy="24" r="1"/>
+ <circle style="fill:#424A60;" cx="35" cy="24" r="1"/>
+ <circle style="fill:#424A60;" cx="42" cy="24" r="1"/>
+ <circle style="fill:#424A60;" cx="49" cy="24" r="1"/>
+ <circle style="fill:#424A60;" cx="7" cy="32" r="1"/>
+ <circle style="fill:#424A60;" cx="14" cy="32" r="1"/>
+ <circle style="fill:#424A60;" cx="21" cy="32" r="1"/>
+ <circle style="fill:#424A60;" cx="28" cy="32" r="1"/>
+ <circle style="fill:#424A60;" cx="35" cy="32" r="1"/>
+ <circle style="fill:#424A60;" cx="42" cy="32" r="1"/>
+ <circle style="fill:#424A60;" cx="49" cy="32" r="1"/>
+ <circle style="fill:#424A60;" cx="7" cy="39" r="1"/>
+ <circle style="fill:#424A60;" cx="14" cy="39" r="1"/>
+ <circle style="fill:#424A60;" cx="21" cy="39" r="1"/>
+ <circle style="fill:#424A60;" cx="28" cy="39" r="1"/>
+ <circle style="fill:#424A60;" cx="35" cy="39" r="1"/>
+ <circle style="fill:#424A60;" cx="42" cy="39" r="1"/>
+ <circle style="fill:#424A60;" cx="49" cy="39" r="1"/>
+ <circle style="fill:#424A60;" cx="7" cy="47" r="1"/>
+ <circle style="fill:#424A60;" cx="14" cy="47" r="1"/>
+ <circle style="fill:#424A60;" cx="21" cy="47" r="1"/>
+ <circle style="fill:#424A60;" cx="28" cy="47" r="1"/>
+ <circle style="fill:#424A60;" cx="35" cy="47" r="1"/>
+</g>
+<path style="fill:#D8A852;" d="M37,0c-1.13,0-2.162,0.391-3,1.025c0.534,0.405,0.979,0.912,1.315,1.495C35.796,2.192,36.376,2,37,2
+ c1.654,0,3,1.346,3,3s-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5S39.757,0,37,0z"/>
+<path style="fill:#A37F46;" d="M32.685,2.52C32.261,3.254,32,4.093,32,5h2C34,3.97,33.478,3.061,32.685,2.52z"/>
+<path style="fill:#A37F46;" d="M26.685,2.52C26.261,3.254,26,4.093,26,5h2C28,3.97,27.478,3.061,26.685,2.52z"/>
+<path style="fill:#D8A852;" d="M35.315,2.52C34.979,1.937,34.534,1.43,34,1.025C33.162,0.391,32.13,0,31,0s-2.162,0.391-3,1.025
+ c0.534,0.405,0.979,0.912,1.315,1.495C29.796,2.192,30.376,2,31,2s1.204,0.192,1.685,0.52C33.478,3.061,34,3.97,34,5
+ c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5C36,4.093,35.739,3.254,35.315,2.52z"/>
+<path style="fill:#A37F46;" d="M20.685,2.52C20.261,3.254,20,4.093,20,5h2C22,3.97,21.478,3.061,20.685,2.52z"/>
+<path style="fill:#D8A852;" d="M29.315,2.52C28.979,1.937,28.534,1.43,28,1.025C27.162,0.391,26.13,0,25,0s-2.162,0.391-3,1.025
+ c0.534,0.405,0.979,0.912,1.315,1.495C23.796,2.192,24.376,2,25,2s1.204,0.192,1.685,0.52C27.478,3.061,28,3.97,28,5
+ c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5C30,4.093,29.739,3.254,29.315,2.52z"/>
+<path style="fill:#D8A852;" d="M23.315,2.52C22.979,1.937,22.534,1.43,22,1.025C21.162,0.391,20.13,0,19,0c-2.757,0-5,2.243-5,5h2
+ c0-1.654,1.346-3,3-3c0.624,0,1.204,0.192,1.685,0.52C21.478,3.061,22,3.97,22,5c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1
+ s0.447,1,1,1c2.757,0,5-2.243,5-5C24,4.093,23.739,3.254,23.315,2.52z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/calendar-7.svg b/img/icons/essential-collection/svg/calendar-7.svg
new file mode 100644
index 00000000..64d399e3
--- /dev/null
+++ b/img/icons/essential-collection/svg/calendar-7.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<rect x="0.5" y="12" style="fill:#E7ECED;" width="58" height="47"/>
+<g>
+ <path style="fill:#7383BF;" d="M33.013,1.508l-1.066,1.693c5.821,3.664,16.971,9.621,17.083,9.681l0.941-1.764
+ C49.859,11.059,38.772,5.135,33.013,1.508z"/>
+ <path style="fill:#7383BF;" d="M9.029,11.118l0.941,1.764c0.112-0.06,11.262-6.017,17.083-9.681l-1.066-1.693
+ C20.228,5.134,9.141,11.059,9.029,11.118z"/>
+</g>
+<g>
+ <circle style="fill:#424A60;" cx="22.5" cy="28" r="1"/>
+ <circle style="fill:#424A60;" cx="29.5" cy="28" r="1"/>
+ <circle style="fill:#424A60;" cx="36.5" cy="28" r="1"/>
+ <circle style="fill:#424A60;" cx="43.5" cy="28" r="1"/>
+ <circle style="fill:#424A60;" cx="50.5" cy="28" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="8.5" cy="36" r="1"/>
+ <circle style="fill:#ED7161;" cx="15.5" cy="36" r="1"/>
+ <circle style="fill:#949493;" cx="8.5" cy="28" r="1"/>
+ <circle style="fill:#949493;" cx="15.5" cy="28" r="1"/>
+ <circle style="fill:#424A60;" cx="22.5" cy="36" r="1"/>
+ <circle style="fill:#424A60;" cx="29.5" cy="36" r="1"/>
+ <circle style="fill:#424A60;" cx="36.5" cy="36" r="1"/>
+ <circle style="fill:#424A60;" cx="43.5" cy="36" r="1"/>
+ <circle style="fill:#424A60;" cx="50.5" cy="36" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="8.5" cy="43" r="1"/>
+ <circle style="fill:#ED7161;" cx="15.5" cy="43" r="1"/>
+ <circle style="fill:#424A60;" cx="22.5" cy="43" r="1"/>
+ <circle style="fill:#424A60;" cx="29.5" cy="43" r="1"/>
+ <circle style="fill:#424A60;" cx="36.5" cy="43" r="1"/>
+ <circle style="fill:#424A60;" cx="43.5" cy="43" r="1"/>
+ <circle style="fill:#424A60;" cx="50.5" cy="43" r="1"/>
+ <circle style="fill:#949493;" cx="43.5" cy="51" r="1"/>
+ <circle style="fill:#949493;" cx="50.5" cy="51" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="8.5" cy="51" r="1"/>
+ <circle style="fill:#ED7161;" cx="15.5" cy="51" r="1"/>
+ <circle style="fill:#424A60;" cx="22.5" cy="51" r="1"/>
+ <circle style="fill:#424A60;" cx="29.5" cy="51" r="1"/>
+ <circle style="fill:#424A60;" cx="36.5" cy="51" r="1"/>
+</g>
+<circle style="fill:#F7E6A1;stroke:#D8A852;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:10;" cx="29.5" cy="5" r="4"/>
+<rect x="0.5" y="12" style="fill:#424A60;" width="58" height="7"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/calendar.svg b/img/icons/essential-collection/svg/calendar.svg
new file mode 100644
index 00000000..32cf0224
--- /dev/null
+++ b/img/icons/essential-collection/svg/calendar.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#26B99A;" points="42,5 16,5 1,5 1,18 57,18 57,5 "/>
+<circle style="fill:#38454F;" cx="20" cy="9" r="2"/>
+<circle style="fill:#38454F;" cx="26" cy="9" r="2"/>
+<circle style="fill:#38454F;" cx="32" cy="9" r="2"/>
+<circle style="fill:#38454F;" cx="38" cy="9" r="2"/>
+<path style="fill:#AFB6BB;" d="M38,0c-1.13,0-2.162,0.391-3,1.025c0.534,0.405,0.979,0.912,1.315,1.495C36.796,2.192,37.376,2,38,2
+ c1.654,0,3,1.346,3,3s-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5S40.757,0,38,0z"/>
+<path style="fill:#839594;" d="M33.685,2.52C33.261,3.254,33,4.093,33,5h2C35,3.97,34.478,3.061,33.685,2.52z"/>
+<path style="fill:#839594;" d="M27.685,2.52C27.261,3.254,27,4.093,27,5h2C29,3.97,28.478,3.061,27.685,2.52z"/>
+<path style="fill:#AFB6BB;" d="M36.315,2.52C35.979,1.937,35.534,1.43,35,1.025C34.162,0.391,33.13,0,32,0s-2.162,0.391-3,1.025
+ c0.534,0.405,0.979,0.912,1.315,1.495C30.796,2.192,31.376,2,32,2s1.204,0.192,1.685,0.52C34.478,3.061,35,3.97,35,5
+ c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5C37,4.093,36.739,3.254,36.315,2.52z"/>
+<path style="fill:#839594;" d="M21.685,2.52C21.261,3.254,21,4.093,21,5h2C23,3.97,22.478,3.061,21.685,2.52z"/>
+<path style="fill:#AFB6BB;" d="M30.315,2.52C29.979,1.937,29.534,1.43,29,1.025C28.162,0.391,27.13,0,26,0s-2.162,0.391-3,1.025
+ c0.534,0.405,0.979,0.912,1.315,1.495C24.796,2.192,25.376,2,26,2s1.204,0.192,1.685,0.52C28.478,3.061,29,3.97,29,5
+ c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5C31,4.093,30.739,3.254,30.315,2.52z"/>
+<path style="fill:#AFB6BB;" d="M24.315,2.52C23.979,1.937,23.534,1.43,23,1.025C22.162,0.391,21.13,0,20,0c-2.757,0-5,2.243-5,5h2
+ c0-1.654,1.346-3,3-3c0.624,0,1.204,0.192,1.685,0.52C22.478,3.061,23,3.97,23,5c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1
+ s0.447,1,1,1c2.757,0,5-2.243,5-5C25,4.093,24.739,3.254,24.315,2.52z"/>
+<rect x="1" y="18" style="fill:#EDEADA;" width="56" height="40"/>
+<circle style="fill:#CEC9AE;" cx="13" cy="29" r="5"/>
+<circle style="fill:#CEC9AE;" cx="29" cy="29" r="5"/>
+<circle style="fill:#CEC9AE;" cx="45" cy="29" r="5"/>
+<circle style="fill:#CEC9AE;" cx="13" cy="45" r="5"/>
+<circle style="fill:#CEC9AE;" cx="29" cy="45" r="5"/>
+<circle style="fill:#26B99A;" cx="45" cy="45" r="5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/checked-1.svg b/img/icons/essential-collection/svg/checked-1.svg
new file mode 100644
index 00000000..abadd77e
--- /dev/null
+++ b/img/icons/essential-collection/svg/checked-1.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#14A085;" points="0,3.5 0,54.5 51,54.5 51,21.5 51,5.5 51,3.5 "/>
+<path style="fill:#EFCE4A;" d="M26,39.5c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414l31-31
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414l-31,31C26.512,39.402,26.256,39.5,26,39.5z"/>
+<path style="fill:#EFCE4A;" d="M26,39.5c-0.256,0-0.512-0.098-0.707-0.293L11.516,25.43c-0.391-0.391-0.391-1.023,0-1.414
+ s1.023-0.391,1.414,0l13.777,13.777c0.391,0.391,0.391,1.023,0,1.414C26.512,39.402,26.256,39.5,26,39.5z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/checked.svg b/img/icons/essential-collection/svg/checked.svg
new file mode 100644
index 00000000..5add5531
--- /dev/null
+++ b/img/icons/essential-collection/svg/checked.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect style="fill:#E7ECED;" width="58" height="58"/>
+<polyline style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" points="
+ 42,20 26,38 16,30 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/clock-1.svg b/img/icons/essential-collection/svg/clock-1.svg
new file mode 100644
index 00000000..9957729c
--- /dev/null
+++ b/img/icons/essential-collection/svg/clock-1.svg
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#E7ECED;" cx="29" cy="29" r="29"/>
+<path style="fill:#424A60;" d="M29,4c13.785,0,25,11.215,25,25S42.785,54,29,54S4,42.785,4,29S15.215,4,29,4 M29,0
+ C12.984,0,0,12.984,0,29s12.984,29,29,29s29-12.984,29-29S45.016,0,29,0L29,0z"/>
+<g>
+ <path style="fill:#7383BF;" d="M29,5.879c-0.552,0-1,0.447-1,1v1c0,0.553,0.448,1,1,1s1-0.447,1-1v-1
+ C30,6.326,29.552,5.879,29,5.879z"/>
+ <path style="fill:#7383BF;" d="M29,48.879c-0.552,0-1,0.447-1,1v1c0,0.553,0.448,1,1,1s1-0.447,1-1v-1
+ C30,49.326,29.552,48.879,29,48.879z"/>
+ <path style="fill:#7383BF;" d="M51,27.879h-1c-0.552,0-1,0.447-1,1s0.448,1,1,1h1c0.552,0,1-0.447,1-1S51.552,27.879,51,27.879z"/>
+ <path style="fill:#7383BF;" d="M8,27.879H7c-0.552,0-1,0.447-1,1s0.448,1,1,1h1c0.552,0,1-0.447,1-1S8.552,27.879,8,27.879z"/>
+ <path style="fill:#7383BF;" d="M43.849,12.615l-0.707,0.707c-0.391,0.391-0.391,1.023,0,1.414c0.195,0.195,0.451,0.293,0.707,0.293
+ s0.512-0.098,0.707-0.293l0.707-0.707c0.391-0.391,0.391-1.023,0-1.414S44.24,12.224,43.849,12.615z"/>
+ <path style="fill:#7383BF;" d="M13.444,43.021l-0.707,0.707c-0.391,0.391-0.391,1.023,0,1.414c0.195,0.195,0.451,0.293,0.707,0.293
+ s0.512-0.098,0.707-0.293l0.707-0.707c0.391-0.391,0.391-1.023,0-1.414S13.834,42.631,13.444,43.021z"/>
+ <path style="fill:#7383BF;" d="M44.556,43.021c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l0.707,0.707
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L44.556,43.021z"/>
+ <path style="fill:#7383BF;" d="M14.151,12.615c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l0.707,0.707
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L14.151,12.615z"/>
+</g>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="26" y1="28.879" x2="18" y2="28.879"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="29" y1="25.879" x2="29" y2="14.879"/>
+<circle style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" cx="29" cy="28.879" r="3"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/clock.svg b/img/icons/essential-collection/svg/clock.svg
new file mode 100644
index 00000000..27bb972e
--- /dev/null
+++ b/img/icons/essential-collection/svg/clock.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<rect style="fill:#E7ECED;" width="60" height="60"/>
+<path style="fill:#556080;" d="M56,4v52H4V4H56 M60,0H0v60h60V0L60,0z"/>
+<g>
+ <path style="fill:#7383BF;" d="M30,7c-0.552,0-1,0.447-1,1v1c0,0.553,0.448,1,1,1s1-0.447,1-1V8C31,7.447,30.552,7,30,7z"/>
+ <path style="fill:#7383BF;" d="M30,50c-0.552,0-1,0.447-1,1v1c0,0.553,0.448,1,1,1s1-0.447,1-1v-1C31,50.447,30.552,50,30,50z"/>
+ <path style="fill:#7383BF;" d="M52,29h-1c-0.552,0-1,0.447-1,1s0.448,1,1,1h1c0.552,0,1-0.447,1-1S52.552,29,52,29z"/>
+ <path style="fill:#7383BF;" d="M10,30c0-0.553-0.448-1-1-1H8c-0.552,0-1,0.447-1,1s0.448,1,1,1h1C9.552,31,10,30.553,10,30z"/>
+ <path style="fill:#7383BF;" d="M50.293,10.707c0.256,0,0.512-0.098,0.707-0.293l0.707-0.707c0.391-0.391,0.391-1.023,0-1.414
+ s-1.023-0.391-1.414,0L49.586,9c-0.391,0.391-0.391,1.023,0,1.414C49.781,10.609,50.037,10.707,50.293,10.707z"/>
+ <path style="fill:#7383BF;" d="M9.146,49.439l-0.707,0.707c-0.391,0.391-0.391,1.023,0,1.414c0.195,0.195,0.451,0.293,0.707,0.293
+ s0.512-0.098,0.707-0.293l0.707-0.707c0.391-0.391,0.391-1.023,0-1.414S9.537,49.049,9.146,49.439z"/>
+ <path style="fill:#7383BF;" d="M50.854,49.439c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l0.707,0.707
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L50.854,49.439z"/>
+ <path style="fill:#7383BF;" d="M8.793,10.207C8.988,10.402,9.244,10.5,9.5,10.5s0.512-0.098,0.707-0.293
+ c0.391-0.391,0.391-1.023,0-1.414L9.5,8.086c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414L8.793,10.207z"/>
+</g>
+<line style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="27" y1="30" x2="19" y2="30"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="30" y1="27" x2="30" y2="16"/>
+<circle style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" cx="30" cy="30" r="3"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/close.svg b/img/icons/essential-collection/svg/close.svg
new file mode 100644
index 00000000..61df9bb0
--- /dev/null
+++ b/img/icons/essential-collection/svg/close.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53 53" style="enable-background:new 0 0 53 53;" xml:space="preserve">
+<polygon style="fill:#D75A4A;" points="7,8.5 47,8.5 47,0.5 0,0.5 0,45.5 7,45.5 "/>
+<rect x="7" y="8.5" style="fill:#38454F;" width="46" height="44"/>
+<line style="fill:none;stroke:#D75A4A;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="37.778" y1="22.722" x2="22.222" y2="38.278"/>
+<line style="fill:none;stroke:#D75A4A;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="37.778" y1="38.278" x2="22.222" y2="22.722"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/cloud-computing-1.svg b/img/icons/essential-collection/svg/cloud-computing-1.svg
new file mode 100644
index 00000000..4f008121
--- /dev/null
+++ b/img/icons/essential-collection/svg/cloud-computing-1.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M50.003,20.5
+ c-0.115-8.699-7.193-16-15.919-16c-5.559,0-10.779,3.005-13.661,7.336C19.157,10.993,17.636,10.5,16,10.5c-4.418,0-8,3.582-8,8
+ c0,0.153,0.014,0.302,0.023,0.454C8.013,19.136,8,19.32,8,19.5c-3.988,1.912-7,6.457-7,11.155C1,37.17,6.33,42.5,12.845,42.5h24.507
+ c0.138,0,0.272-0.016,0.408-0.021c0.137,0.005,0.271,0.021,0.408,0.021h9.803C54.037,42.5,59,37.537,59,31.472
+ C59,26.101,55.106,21.461,50.003,20.5z"/>
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M50.003,20.5
+ c0,0-2.535-0.375-5.003,0"/>
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M8,18.5
+ c0-4.418,3.582-8,8-8s8,3.582,8,8"/>
+<line style="fill:#7FABDA;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="31" y1="25.5" x2="31" y2="55.5"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="31" y1="55.5" x2="23" y2="47.5"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="39" y1="47.5" x2="31" y2="55.5"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="31" y1="25.5" x2="39" y2="33.5"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="23" y1="33.5" x2="31" y2="25.5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/cloud-computing-2.svg b/img/icons/essential-collection/svg/cloud-computing-2.svg
new file mode 100644
index 00000000..86631826
--- /dev/null
+++ b/img/icons/essential-collection/svg/cloud-computing-2.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M50.003,21.5
+ c-0.115-8.699-7.193-16-15.919-16c-5.559,0-10.779,3.005-13.661,7.336C19.157,11.993,17.636,11.5,16,11.5c-4.418,0-8,3.582-8,8
+ c0,0.153,0.014,0.302,0.023,0.454C8.013,20.136,8,20.32,8,20.5c-3.988,1.912-7,6.457-7,11.155C1,38.17,6.33,43.5,12.845,43.5h24.507
+ c0.138,0,0.272-0.016,0.408-0.021c0.137,0.005,0.271,0.021,0.408,0.021h9.803C54.037,43.5,59,38.537,59,32.472
+ C59,27.101,55.106,22.461,50.003,21.5z"/>
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M50.003,21.5
+ c0,0-2.535-0.375-5.003,0"/>
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M8,19.5
+ c0-4.418,3.582-8,8-8s8,3.582,8,8"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="31.028" y1="54.5" x2="31.028" y2="31.5"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="31.028" y1="31.5" x2="39.028" y2="39.5"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="23.028" y1="39.5" x2="31.028" y2="31.5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/cloud-computing-3.svg b/img/icons/essential-collection/svg/cloud-computing-3.svg
new file mode 100644
index 00000000..30700c1c
--- /dev/null
+++ b/img/icons/essential-collection/svg/cloud-computing-3.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M50.003,20
+ c-0.115-8.699-7.193-16-15.919-16c-5.559,0-10.779,3.005-13.661,7.336C19.157,10.493,17.636,10,16,10c-4.418,0-8,3.582-8,8
+ c0,0.153,0.014,0.302,0.023,0.454C8.013,18.636,8,18.82,8,19c-3.988,1.912-7,6.457-7,11.155C1,36.67,6.33,42,12.845,42h24.507
+ c0.138,0,0.272-0.016,0.408-0.021C37.897,41.984,38.031,42,38.169,42h9.803C54.037,42,59,37.037,59,30.972
+ C59,25.601,55.106,20.961,50.003,20z"/>
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M50.003,20
+ c0,0-2.535-0.375-5.003,0"/>
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M8,18c0-4.418,3.582-8,8-8
+ s8,3.582,8,8"/>
+<circle style="fill:#556080;" cx="31" cy="41" r="16"/>
+<path style="fill:#FFFFFF;" d="M41,41c-0.552,0-1,0.447-1,1c0,4.963-4.038,9-9,9s-9-4.037-9-9s4.038-9,9-9c3,0,5.677,1.506,7.311,4
+ H32c-0.552,0-1,0.447-1,1s0.448,1,1,1h8c0.002,0,0.003-0.001,0.005-0.001c0.07,0,0.14-0.027,0.21-0.042
+ c0.06-0.014,0.125-0.015,0.181-0.039c0.002-0.001,0.004,0,0.005-0.001c0.034-0.015,0.056-0.043,0.087-0.061
+ c0.081-0.046,0.162-0.093,0.227-0.159c0.044-0.046,0.07-0.103,0.104-0.155c0.036-0.055,0.08-0.104,0.105-0.166
+ c0.034-0.084,0.043-0.175,0.054-0.265C40.982,38.072,41,38.039,41,38v-0.011v-0.002V30c0-0.553-0.448-1-1-1s-1,0.447-1,1v4.6
+ c-2.014-2.272-4.864-3.6-8-3.6c-6.065,0-11,4.935-11,11s4.935,11,11,11s11-4.935,11-11C42,41.447,41.552,41,41,41z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/cloud-computing-4.svg b/img/icons/essential-collection/svg/cloud-computing-4.svg
new file mode 100644
index 00000000..d883b724
--- /dev/null
+++ b/img/icons/essential-collection/svg/cloud-computing-4.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M50.003,20
+ c-0.115-8.699-7.193-16-15.919-16c-5.559,0-10.779,3.005-13.661,7.336C19.157,10.493,17.636,10,16,10c-4.418,0-8,3.582-8,8
+ c0,0.153,0.014,0.302,0.023,0.454C8.013,18.636,8,18.82,8,19c-3.988,1.912-7,6.457-7,11.155C1,36.67,6.33,42,12.845,42h24.507
+ c0.138,0,0.272-0.016,0.408-0.021C37.897,41.984,38.031,42,38.169,42h9.803C54.037,42,59,37.037,59,30.972
+ C59,25.601,55.106,20.961,50.003,20z"/>
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M50.003,20
+ c0,0-2.535-0.375-5.003,0"/>
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M8,18c0-4.418,3.582-8,8-8
+ s8,3.582,8,8"/>
+<circle style="fill:#E7ECED;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="31" cy="39" r="10"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="38.071" y1="46.071" x2="48" y2="56"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/cloud-computing-5.svg b/img/icons/essential-collection/svg/cloud-computing-5.svg
new file mode 100644
index 00000000..ca108c08
--- /dev/null
+++ b/img/icons/essential-collection/svg/cloud-computing-5.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M50.003,22
+ c-0.115-8.699-7.193-16-15.919-16c-5.559,0-10.779,3.005-13.661,7.336C19.157,12.493,17.636,12,16,12c-4.418,0-8,3.582-8,8
+ c0,0.153,0.014,0.302,0.023,0.454C8.013,20.636,8,20.82,8,21c-3.988,1.912-7,6.457-7,11.155C1,38.67,6.33,44,12.845,44h24.507
+ c0.138,0,0.272-0.016,0.408-0.021C37.897,43.984,38.031,44,38.169,44h9.803C54.037,44,59,39.037,59,32.972
+ C59,27.601,55.106,22.961,50.003,22z"/>
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M50.003,22
+ c0,0-2.535-0.375-5.003,0"/>
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M8,20c0-4.418,3.582-8,8-8
+ s8,3.582,8,8"/>
+<polygon style="fill:#EBBA16;" points="15.586,55 30,30.357 44.414,55 "/>
+<line style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="30" y1="38" x2="30" y2="46"/>
+<line style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="30" y1="50" x2="30" y2="51"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/cloud-computing.svg b/img/icons/essential-collection/svg/cloud-computing.svg
new file mode 100644
index 00000000..66c52d09
--- /dev/null
+++ b/img/icons/essential-collection/svg/cloud-computing.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M50.003,21.5
+ c-0.115-8.699-7.193-16-15.919-16c-5.559,0-10.779,3.005-13.661,7.336C19.157,11.993,17.636,11.5,16,11.5c-4.418,0-8,3.582-8,8
+ c0,0.153,0.014,0.302,0.023,0.454C8.013,20.136,8,20.32,8,20.5c-3.988,1.912-7,6.457-7,11.155C1,38.17,6.33,43.5,12.845,43.5h24.507
+ c0.138,0,0.272-0.016,0.408-0.021c0.137,0.005,0.271,0.021,0.408,0.021h9.803C54.037,43.5,59,38.537,59,32.472
+ C59,27.101,55.106,22.461,50.003,21.5z"/>
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M50.003,21.5
+ c0,0-2.535-0.375-5.003,0"/>
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M8,19.5
+ c0-4.418,3.582-8,8-8s8,3.582,8,8"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="31" y1="31.5" x2="31" y2="54.5"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="31" y1="54.5" x2="23" y2="46.5"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="39" y1="46.5" x2="31" y2="54.5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/cloud.svg b/img/icons/essential-collection/svg/cloud.svg
new file mode 100644
index 00000000..979c3d80
--- /dev/null
+++ b/img/icons/essential-collection/svg/cloud.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M50.003,27
+ c-0.115-8.699-7.193-16-15.919-16c-5.559,0-10.779,3.005-13.661,7.336C19.157,17.493,17.636,17,16,17c-4.418,0-8,3.582-8,8
+ c0,0.153,0.014,0.302,0.023,0.454C8.013,25.636,8,25.82,8,26c-3.988,1.912-7,6.457-7,11.155C1,43.67,6.33,49,12.845,49h24.507
+ c0.138,0,0.272-0.016,0.408-0.021C37.897,48.984,38.031,49,38.169,49h9.803C54.037,49,59,44.037,59,37.972
+ C59,32.601,55.106,27.961,50.003,27z"/>
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M50.003,27
+ c0,0-2.535-0.375-5.003,0"/>
+<path style="fill:#7FABDA;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M8,25c0-4.418,3.582-8,8-8
+ s8,3.582,8,8"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/command.svg b/img/icons/essential-collection/svg/command.svg
new file mode 100644
index 00000000..a49570b8
--- /dev/null
+++ b/img/icons/essential-collection/svg/command.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M51.2,60H8.8C3.94,60,0,56.06,0,51.2V8.8C0,3.94,3.94,0,8.8,0H51.2C56.06,0,60,3.94,60,8.8V51.2
+ C60,56.06,56.06,60,51.2,60z"/>
+<path style="fill:none;stroke:#AFB6BB;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M25,25h-4.5
+ c-2.485,0-4.5-2.015-4.5-4.5v0c0-2.485,2.015-4.5,4.5-4.5h0c2.485,0,4.5,2.015,4.5,4.5V25z"/>
+<rect x="25" y="25" style="fill:none;stroke:#AFB6BB;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" width="11" height="11"/>
+<path style="fill:none;stroke:#AFB6BB;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M20.5,45L20.5,45
+ c-2.485,0-4.5-2.015-4.5-4.5v0c0-2.485,2.015-4.5,4.5-4.5H25v4.5C25,42.985,22.985,45,20.5,45z"/>
+<path style="fill:none;stroke:#AFB6BB;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M40.5,25H36v-4.5
+ c0-2.485,2.015-4.5,4.5-4.5h0c2.485,0,4.5,2.015,4.5,4.5v0C45,22.985,42.985,25,40.5,25z"/>
+<path style="fill:none;stroke:#AFB6BB;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M40.5,45L40.5,45
+ c-2.485,0-4.5-2.015-4.5-4.5V36h4.5c2.485,0,4.5,2.015,4.5,4.5v0C45,42.985,42.985,45,40.5,45z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/compact-disc-1.svg b/img/icons/essential-collection/svg/compact-disc-1.svg
new file mode 100644
index 00000000..e7a45804
--- /dev/null
+++ b/img/icons/essential-collection/svg/compact-disc-1.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#EBBA16;" d="M29,0C12.984,0,0,12.984,0,29c0,16.016,12.984,29,29,29s29-12.984,29-29C58,12.984,45.016,0,29,0z
+ M29,36.08c-3.91,0-7.08-3.17-7.08-7.08c0-3.91,3.17-7.08,7.08-7.08s7.08,3.17,7.08,7.08C36.08,32.91,32.91,36.08,29,36.08z"/>
+<path style="fill:#EFCE4A;" d="M6.487,22.932c-0.077,0-0.156-0.009-0.234-0.027c-0.537-0.13-0.868-0.67-0.739-1.206
+ c0.946-3.935,2.955-7.522,5.809-10.376s6.441-4.862,10.376-5.809c0.536-0.127,1.077,0.202,1.206,0.739
+ c0.129,0.536-0.202,1.076-0.739,1.206c-3.575,0.859-6.836,2.685-9.429,5.277s-4.418,5.854-5.277,9.429
+ C7.349,22.624,6.938,22.932,6.487,22.932z"/>
+<path style="fill:#EFCE4A;" d="M36.066,52.514c-0.451,0-0.861-0.308-0.972-0.767c-0.129-0.536,0.202-1.076,0.739-1.206
+ c3.576-0.859,6.837-2.685,9.43-5.277s4.418-5.854,5.277-9.429c0.129-0.538,0.668-0.868,1.206-0.739
+ c0.537,0.13,0.868,0.67,0.739,1.206c-0.946,3.935-2.955,7.522-5.809,10.376s-6.441,4.862-10.377,5.809
+ C36.223,52.505,36.144,52.514,36.066,52.514z"/>
+<path style="fill:#EFCE4A;" d="M11.313,24.226c-0.075,0-0.151-0.008-0.228-0.026c-0.538-0.125-0.873-0.663-0.747-1.2
+ c0.72-3.09,2.282-5.904,4.52-8.141c2.236-2.237,5.051-3.8,8.141-4.52c0.535-0.131,1.075,0.209,1.2,0.747
+ c0.126,0.537-0.209,1.075-0.747,1.2c-2.725,0.635-5.207,2.014-7.18,3.986s-3.352,4.455-3.986,7.18
+ C12.179,23.914,11.768,24.226,11.313,24.226z"/>
+<path style="fill:#EFCE4A;" d="M34.773,47.688c-0.454,0-0.865-0.312-0.973-0.773c-0.126-0.537,0.209-1.075,0.747-1.2
+ c2.725-0.635,5.207-2.014,7.18-3.986s3.352-4.455,3.986-7.18c0.125-0.538,0.662-0.88,1.2-0.747c0.538,0.125,0.873,0.663,0.747,1.2
+ c-0.72,3.09-2.282,5.904-4.52,8.141c-2.236,2.237-5.051,3.8-8.141,4.52C34.925,47.68,34.849,47.688,34.773,47.688z"/>
+<path style="fill:#EFCE4A;" d="M16.14,25.519c-0.071,0-0.143-0.008-0.215-0.023c-0.539-0.118-0.881-0.651-0.763-1.19
+ c0.997-4.557,4.586-8.146,9.143-9.143c0.537-0.116,1.071,0.222,1.19,0.763c0.118,0.539-0.224,1.072-0.763,1.19
+ c-3.796,0.831-6.786,3.821-7.617,7.617C17.013,25.2,16.6,25.519,16.14,25.519z"/>
+<path style="fill:#EFCE4A;" d="M33.48,42.861c-0.46,0-0.873-0.318-0.976-0.786c-0.118-0.539,0.224-1.072,0.763-1.19
+ c3.796-0.831,6.786-3.821,7.617-7.617c0.118-0.541,0.65-0.881,1.19-0.763c0.539,0.118,0.881,0.651,0.763,1.19
+ c-0.997,4.557-4.586,8.146-9.143,9.143C33.623,42.854,33.552,42.861,33.48,42.861z"/>
+<path style="fill:#E7ECED;" d="M29,38.08c-5.007,0-9.08-4.073-9.08-9.08s4.073-9.08,9.08-9.08s9.08,4.073,9.08,9.08
+ S34.007,38.08,29,38.08z M29,23.92c-2.801,0-5.08,2.279-5.08,5.08s2.279,5.08,5.08,5.08s5.08-2.279,5.08-5.08S31.801,23.92,29,23.92
+ z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/compact-disc-2.svg b/img/icons/essential-collection/svg/compact-disc-2.svg
new file mode 100644
index 00000000..3d397beb
--- /dev/null
+++ b/img/icons/essential-collection/svg/compact-disc-2.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M30,1C13.984,1,1,13.984,1,30c0,16.016,12.984,29,29,29s29-12.984,29-29C59,13.984,46.016,1,30,1z
+ M30,39c-4.971,0-9-4.029-9-9s4.029-9,9-9s9,4.029,9,9S34.971,39,30,39z"/>
+<path style="fill:#BDCAEF;" d="M4.373,16.425l14.808,8.095c0.534-0.977,1.208-1.898,2.035-2.725c0.827-0.827,1.749-1.5,2.725-2.035
+ L15.738,4.753C10.926,7.477,6.97,11.533,4.373,16.425z"/>
+<path style="fill:#BDCAEF;" d="M55.259,44.242L40.182,36c-0.534,0.977-1.208,1.898-2.035,2.726c-0.827,0.827-1.749,1.5-2.726,2.035
+ l8.133,14.877C48.462,53.037,52.531,49.07,55.259,44.242z"/>
+<path style="fill:#FFFFFF;" d="M30,15c-8.284,0-15,6.716-15,15s6.716,15,15,15s15-6.716,15-15S38.284,15,30,15z M30,37.5
+ c-4.142,0-7.5-3.358-7.5-7.5s3.358-7.5,7.5-7.5s7.5,3.358,7.5,7.5S34.142,37.5,30,37.5z"/>
+<path style="fill:#E7ECED;" d="M30,19.167c-5.983,0-10.833,4.85-10.833,10.833S24.017,40.833,30,40.833S40.833,35.983,40.833,30
+ S35.983,19.167,30,19.167z M30,35.833c-3.222,0-5.833-2.612-5.833-5.833s2.612-5.833,5.833-5.833s5.833,2.612,5.833,5.833
+ S33.222,35.833,30,35.833z"/>
+<path style="fill:#7383BF;" d="M30,0C13.458,0,0,13.458,0,30s13.458,30,30,30s30-13.458,30-30S46.542,0,30,0z M30,58
+ C14.561,58,2,45.439,2,30S14.561,2,30,2s28,12.561,28,28S45.439,58,30,58z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/compact-disc.svg b/img/icons/essential-collection/svg/compact-disc.svg
new file mode 100644
index 00000000..cd36387d
--- /dev/null
+++ b/img/icons/essential-collection/svg/compact-disc.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<path style="fill:#424A60;" d="M47.799,8.201c-10.935-10.935-28.663-10.935-39.598,0c-10.935,10.935-10.935,28.663,0,39.598
+ c10.935,10.935,28.663,10.935,39.598,0C58.734,36.864,58.734,19.136,47.799,8.201z M32.95,32.95c-2.734,2.734-7.166,2.734-9.899,0
+ c-2.734-2.734-2.734-7.166,0-9.899s7.166-2.734,9.899,0S35.683,30.216,32.95,32.95z"/>
+<path style="fill:#E7ECED;" d="M35.778,20.222c-4.296-4.296-11.261-4.296-15.556,0c-4.296,4.296-4.296,11.261,0,15.556
+ c4.296,4.296,11.261,4.296,15.556,0C40.074,31.482,40.074,24.518,35.778,20.222z M30.121,30.121c-1.172,1.172-3.071,1.172-4.243,0
+ s-1.172-3.071,0-4.243s3.071-1.172,4.243,0S31.293,28.95,30.121,30.121z"/>
+<g>
+ <path style="fill:#7383BF;" d="M35.778,35.778c-0.76,0.76-1.607,1.378-2.504,1.87l8.157,14.92c2.284-1.25,4.434-2.835,6.368-4.769
+ c1.934-1.934,3.519-4.084,4.769-6.368l-14.92-8.157C37.157,34.172,36.538,35.018,35.778,35.778z"/>
+ <path style="fill:#7383BF;" d="M20.222,20.222c0.76-0.76,1.607-1.378,2.504-1.87l-8.157-14.92c-2.284,1.25-4.434,2.835-6.368,4.769
+ s-3.519,4.084-4.769,6.368l14.92,8.157C18.843,21.828,19.462,20.982,20.222,20.222z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/compass.svg b/img/icons/essential-collection/svg/compass.svg
new file mode 100644
index 00000000..2caf2c42
--- /dev/null
+++ b/img/icons/essential-collection/svg/compass.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#1081E0;" cx="29" cy="34" r="24"/>
+<circle style="fill:#FFFFFF;stroke:#1081E0;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="29" cy="4" r="3"/>
+<line style="fill:none;stroke:#1081E0;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="29" y1="7" x2="29" y2="10"/>
+<polygon style="fill:#FFFFFF;" points="16.272,46.728 24.757,29.757 33.243,38.243 "/>
+<polygon style="fill:#D75A4A;" points="41.728,21.272 24.757,29.757 33.243,38.243 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/compose.svg b/img/icons/essential-collection/svg/compose.svg
new file mode 100644
index 00000000..e586c8a3
--- /dev/null
+++ b/img/icons/essential-collection/svg/compose.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#23A24D;" cx="29" cy="29" r="29"/>
+<path style="fill:#EBD6BD;" d="M29,0C21.243,0,14.204,3.051,9,8.011V26l19.951,24.993C28.971,51.009,29,50.995,29,50.97
+ c0,0.025,0.029,0.04,0.049,0.023L49,26V8.011C43.796,3.051,36.757,0,29,0z"/>
+<path style="fill:#4C4C4C;" d="M29,35c-3.748,0-7.093,1.72-9.294,4.412l9.245,11.581C28.971,51.009,29,50.995,29,50.97
+ c0,0.025,0.029,0.04,0.049,0.023l9.245-11.581C36.093,36.72,32.748,35,29,35z"/>
+<path style="fill:#EBBA16;" d="M29,0c-3.516,0-6.883,0.633-10,1.78V18l9.951,7.961C28.971,25.977,29,25.962,29,25.937
+ c0,0.025,0.029,0.04,0.049,0.024L39,18V1.78C35.883,0.633,32.516,0,29,0z"/>
+<path style="fill:#ED8A19;" d="M9.432,25.654L19,18V1.78C15.241,3.164,11.845,5.3,9,8.011v17.435
+ C9,25.669,9.258,25.793,9.432,25.654z"/>
+<path style="fill:#ED8A19;" d="M39,18l9.568,7.654C48.742,25.793,49,25.669,49,25.446V8.011C46.155,5.3,42.759,3.164,39,1.78V18z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/controls-1.svg b/img/icons/essential-collection/svg/controls-1.svg
new file mode 100644
index 00000000..772e0a32
--- /dev/null
+++ b/img/icons/essential-collection/svg/controls-1.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect style="fill:#556080;" width="58" height="58"/>
+<g>
+ <path style="fill:#7383BF;" d="M11,6c-0.552,0-1,0.447-1,1v32c0,0.553,0.448,1,1,1s1-0.447,1-1V7C12,6.447,11.552,6,11,6z"/>
+ <path style="fill:#7383BF;" d="M47,18c-0.552,0-1,0.447-1,1v32c0,0.553,0.448,1,1,1s1-0.447,1-1V19C48,18.447,47.552,18,47,18z"/>
+ <path style="fill:#7383BF;" d="M29,6c-0.552,0-1,0.447-1,1v15c0,0.553,0.448,1,1,1s1-0.447,1-1V7C30,6.447,29.552,6,29,6z"/>
+ <path style="fill:#7383BF;" d="M29,33c-0.552,0-1,0.447-1,1v17c0,0.553,0.448,1,1,1s1-0.447,1-1V34C30,33.447,29.552,33,29,33z"/>
+</g>
+<circle style="fill:#AFB6BB;" cx="11" cy="47" r="6"/>
+<circle style="fill:#AFB6BB;" cx="47" cy="15" r="6"/>
+<circle style="fill:#AFB6BB;" cx="29" cy="30" r="6"/>
+<circle style="fill:#E7ECED;" cx="11" cy="45" r="6"/>
+<circle style="fill:#E7ECED;" cx="47" cy="13" r="6"/>
+<circle style="fill:#E7ECED;" cx="29" cy="28" r="6"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/controls-2.svg b/img/icons/essential-collection/svg/controls-2.svg
new file mode 100644
index 00000000..c428023b
--- /dev/null
+++ b/img/icons/essential-collection/svg/controls-2.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<g>
+ <path style="fill:#25AE88;" d="M8,0C7.448,0,7,0.447,7,1v36c0,0.553,0.448,1,1,1s1-0.447,1-1V1C9,0.447,8.552,0,8,0z"/>
+ <path style="fill:#25AE88;" d="M8,48c-0.552,0-1,0.447-1,1v4c0,0.553,0.448,1,1,1s1-0.447,1-1v-4C9,48.447,8.552,48,8,48z"/>
+ <path style="fill:#25AE88;" d="M27,0c-0.552,0-1,0.447-1,1v20c0,0.553,0.448,1,1,1s1-0.447,1-1V1C28,0.447,27.552,0,27,0z"/>
+ <path style="fill:#25AE88;" d="M27,32c-0.552,0-1,0.447-1,1v20c0,0.553,0.448,1,1,1s1-0.447,1-1V33C28,32.447,27.552,32,27,32z"/>
+ <path style="fill:#25AE88;" d="M46,16c-0.552,0-1,0.447-1,1v36c0,0.553,0.448,1,1,1s1-0.447,1-1V17C47,16.447,46.552,16,46,16z"/>
+ <path style="fill:#25AE88;" d="M46,0c-0.552,0-1,0.447-1,1v4c0,0.553,0.448,1,1,1s1-0.447,1-1V1C47,0.447,46.552,0,46,0z"/>
+</g>
+<rect x="3" y="37" style="fill:#EBBA16;" width="10" height="12"/>
+<rect x="22" y="21" style="fill:#23A24D;" width="10" height="12"/>
+<rect x="41" y="5" style="fill:#23A24D;" width="10" height="12"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/controls-3.svg b/img/icons/essential-collection/svg/controls-3.svg
new file mode 100644
index 00000000..0c1a8d72
--- /dev/null
+++ b/img/icons/essential-collection/svg/controls-3.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect style="fill:#424A60;" width="58" height="58"/>
+<g>
+ <path style="fill:#7383BF;" d="M10,4C9.448,4,9,4.447,9,5v32c0,0.553,0.448,1,1,1s1-0.447,1-1V5C11,4.447,10.552,4,10,4z"/>
+ <path style="fill:#7383BF;" d="M10,48c-0.552,0-1,0.447-1,1v4c0,0.553,0.448,1,1,1s1-0.447,1-1v-4C11,48.447,10.552,48,10,48z"/>
+ <path style="fill:#7383BF;" d="M29,4c-0.552,0-1,0.447-1,1v18c0,0.553,0.448,1,1,1s1-0.447,1-1V5C30,4.447,29.552,4,29,4z"/>
+ <path style="fill:#7383BF;" d="M29,34c-0.552,0-1,0.447-1,1v18c0,0.553,0.448,1,1,1s1-0.447,1-1V35C30,34.447,29.552,34,29,34z"/>
+ <path style="fill:#7383BF;" d="M48,20c-0.552,0-1,0.447-1,1v32c0,0.553,0.448,1,1,1s1-0.447,1-1V21C49,20.447,48.552,20,48,20z"/>
+ <path style="fill:#7383BF;" d="M48,4c-0.552,0-1,0.447-1,1v4c0,0.553,0.448,1,1,1s1-0.447,1-1V5C49,4.447,48.552,4,48,4z"/>
+</g>
+<rect x="5" y="37" style="fill:#C7CAC7;" width="10" height="12"/>
+<rect x="24" y="23" style="fill:#C7CAC7;" width="10" height="12"/>
+<rect x="43" y="9" style="fill:#C7CAC7;" width="10" height="12"/>
+<rect x="5" y="35" style="fill:#E7ECED;" width="10" height="12"/>
+<rect x="24" y="21" style="fill:#E7ECED;" width="10" height="12"/>
+<rect x="43" y="7" style="fill:#E7ECED;" width="10" height="12"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/controls-4.svg b/img/icons/essential-collection/svg/controls-4.svg
new file mode 100644
index 00000000..18697809
--- /dev/null
+++ b/img/icons/essential-collection/svg/controls-4.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<g>
+ <path style="fill:#949493;" d="M14,9h40c0.553,0,1-0.447,1-1s-0.447-1-1-1H14c-0.552,0-1,0.447-1,1S13.448,9,14,9z"/>
+ <path style="fill:#949493;" d="M42,49H2c-0.552,0-1,0.447-1,1s0.448,1,1,1h40c0.552,0,1-0.447,1-1S42.552,49,42,49z"/>
+ <path style="fill:#949493;" d="M54,28H35c-0.552,0-1,0.447-1,1s0.448,1,1,1h19c0.553,0,1-0.447,1-1S54.553,28,54,28z"/>
+ <path style="fill:#949493;" d="M2,30h20c0.552,0,1-0.447,1-1s-0.448-1-1-1H2c-0.552,0-1,0.447-1,1S1.448,30,2,30z"/>
+</g>
+<circle style="fill:#C7CAC7;" cx="8" cy="8" r="6"/>
+<circle style="fill:#C7CAC7;" cx="28.207" cy="28.793" r="6.207"/>
+<circle style="fill:#C7CAC7;" cx="48" cy="50" r="6"/>
+<circle style="fill:#E7ECED;" cx="8" cy="6" r="6"/>
+<circle style="fill:#E7ECED;" cx="28.207" cy="26.793" r="6.207"/>
+<circle style="fill:#E7ECED;" cx="48" cy="48" r="6"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/controls-5.svg b/img/icons/essential-collection/svg/controls-5.svg
new file mode 100644
index 00000000..8e2ea640
--- /dev/null
+++ b/img/icons/essential-collection/svg/controls-5.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="0" y="0" style="fill:#E7ECED;" width="58" height="58"/>
+<g>
+ <path style="fill:#556080;" d="M19,12h32c0.553,0,1-0.447,1-1s-0.447-1-1-1H19c-0.553,0-1,0.447-1,1S18.447,12,19,12z"/>
+ <path style="fill:#556080;" d="M39,46H7c-0.553,0-1,0.447-1,1s0.447,1,1,1h32c0.553,0,1-0.447,1-1S39.553,46,39,46z"/>
+ <path style="fill:#556080;" d="M51,28H36c-0.553,0-1,0.447-1,1s0.447,1,1,1h15c0.553,0,1-0.447,1-1S51.553,28,51,28z"/>
+ <path style="fill:#556080;" d="M7,30h17c0.553,0,1-0.447,1-1s-0.447-1-1-1H7c-0.553,0-1,0.447-1,1S6.447,30,7,30z"/>
+</g>
+<circle style="fill:#C7CAC7;" cx="13" cy="13" r="6"/>
+<circle style="fill:#C7CAC7;" cx="45" cy="49" r="6"/>
+<circle style="fill:#C7CAC7;" cx="30" cy="31" r="6"/>
+<circle style="fill:#FFFFFF;" cx="13" cy="11" r="6"/>
+<circle style="fill:#FFFFFF;" cx="45" cy="47" r="6"/>
+<circle style="fill:#FFFFFF;" cx="30" cy="29" r="6"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/controls-6.svg b/img/icons/essential-collection/svg/controls-6.svg
new file mode 100644
index 00000000..6b87d449
--- /dev/null
+++ b/img/icons/essential-collection/svg/controls-6.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<path style="fill:#7383BF;" d="M53,10H17c-0.553,0-1-0.447-1-1s0.447-1,1-1h36c0.553,0,1,0.447,1,1S53.553,10,53,10z"/>
+<path style="fill:#7383BF;" d="M5,10H1c-0.553,0-1-0.447-1-1s0.447-1,1-1h4c0.553,0,1,0.447,1,1S5.553,10,5,10z"/>
+<path style="fill:#7383BF;" d="M53,29H33c-0.553,0-1-0.447-1-1s0.447-1,1-1h20c0.553,0,1,0.447,1,1S53.553,29,53,29z"/>
+<path style="fill:#7383BF;" d="M21,29H1c-0.553,0-1-0.447-1-1s0.447-1,1-1h20c0.553,0,1,0.447,1,1S21.553,29,21,29z"/>
+<path style="fill:#7383BF;" d="M37,48H1c-0.553,0-1-0.447-1-1s0.447-1,1-1h36c0.553,0,1,0.447,1,1S37.553,48,37,48z"/>
+<path style="fill:#7383BF;" d="M53,48h-4c-0.553,0-1-0.447-1-1s0.447-1,1-1h4c0.553,0,1,0.447,1,1S53.553,48,53,48z"/>
+<rect x="5" y="4" style="fill:#424A60;" width="12" height="10"/>
+<rect x="21" y="23" style="fill:#424A60;" width="12" height="10"/>
+<rect x="37" y="42" style="fill:#424A60;" width="12" height="10"/>
+<rect x="5" y="2" style="fill:#556080;" width="12" height="10"/>
+<rect x="21" y="21" style="fill:#556080;" width="12" height="10"/>
+<rect x="37" y="40" style="fill:#556080;" width="12" height="10"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/controls-7.svg b/img/icons/essential-collection/svg/controls-7.svg
new file mode 100644
index 00000000..6720ac01
--- /dev/null
+++ b/img/icons/essential-collection/svg/controls-7.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="0" y="0" style="fill:#556080;" width="58" height="58"/>
+<g>
+ <path style="fill:#424A60;" d="M21,11h32c0.553,0,1-0.447,1-1s-0.447-1-1-1H21c-0.553,0-1,0.447-1,1S20.447,11,21,11z"/>
+ <path style="fill:#424A60;" d="M5,11h4c0.553,0,1-0.447,1-1S9.553,9,9,9H5c-0.553,0-1,0.447-1,1S4.447,11,5,11z"/>
+ <path style="fill:#424A60;" d="M53,28H35c-0.553,0-1,0.447-1,1s0.447,1,1,1h18c0.553,0,1-0.447,1-1S53.553,28,53,28z"/>
+ <path style="fill:#424A60;" d="M5,30h18c0.553,0,1-0.447,1-1s-0.447-1-1-1H5c-0.553,0-1,0.447-1,1S4.447,30,5,30z"/>
+ <path style="fill:#424A60;" d="M37,47H5c-0.553,0-1,0.447-1,1s0.447,1,1,1h32c0.553,0,1-0.447,1-1S37.553,47,37,47z"/>
+ <path style="fill:#424A60;" d="M53,47h-4c-0.553,0-1,0.447-1,1s0.447,1,1,1h4c0.553,0,1-0.447,1-1S53.553,47,53,47z"/>
+</g>
+<rect x="9" y="5" style="fill:#424A60;" width="12" height="10"/>
+<rect x="23" y="24" style="fill:#424A60;" width="12" height="10"/>
+<rect x="37" y="43" style="fill:#424A60;" width="12" height="10"/>
+<rect x="9" y="3" style="fill:#E7ECED;" width="12" height="10"/>
+<rect x="23" y="22" style="fill:#E7ECED;" width="12" height="10"/>
+<rect x="37" y="41" style="fill:#E7ECED;" width="12" height="10"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/controls-8.svg b/img/icons/essential-collection/svg/controls-8.svg
new file mode 100644
index 00000000..0ee99906
--- /dev/null
+++ b/img/icons/essential-collection/svg/controls-8.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57 57" style="enable-background:new 0 0 57 57;" xml:space="preserve">
+<path style="fill:#556080;" d="M6,43.5c-0.553,0-1-0.447-1-1v-40c0-0.553,0.447-1,1-1s1,0.447,1,1v40C7,43.053,6.553,43.5,6,43.5z"
+ />
+<path style="fill:#556080;" d="M21,31.5c-0.553,0-1-0.447-1-1v-28c0-0.553,0.447-1,1-1s1,0.447,1,1v28
+ C22,31.053,21.553,31.5,21,31.5z"/>
+<path style="fill:#556080;" d="M36,19.5c-0.553,0-1-0.447-1-1v-16c0-0.553,0.447-1,1-1s1,0.447,1,1v16
+ C37,19.053,36.553,19.5,36,19.5z"/>
+<path style="fill:#556080;" d="M51,7.5c-0.553,0-1-0.447-1-1v-4c0-0.553,0.447-1,1-1s1,0.447,1,1v4C52,7.053,51.553,7.5,51,7.5z"/>
+<path style="fill:#556080;" d="M21,55.5c-0.553,0-1-0.447-1-1v-12c0-0.553,0.447-1,1-1s1,0.447,1,1v12
+ C22,55.053,21.553,55.5,21,55.5z"/>
+<path style="fill:#556080;" d="M36,55.5c-0.553,0-1-0.447-1-1v-24c0-0.553,0.447-1,1-1s1,0.447,1,1v24
+ C37,55.053,36.553,55.5,36,55.5z"/>
+<path style="fill:#556080;" d="M51,55.5c-0.553,0-1-0.447-1-1v-36c0-0.553,0.447-1,1-1s1,0.447,1,1v36
+ C52,55.053,51.553,55.5,51,55.5z"/>
+<circle style="fill:#C7CAC7;" cx="6" cy="48.5" r="6"/>
+<circle style="fill:#C7CAC7;" cx="21" cy="36.5" r="6"/>
+<circle style="fill:#C7CAC7;" cx="51" cy="12.5" r="6"/>
+<circle style="fill:#E7ECED;" cx="6" cy="46.5" r="6"/>
+<circle style="fill:#E7ECED;" cx="21" cy="34.5" r="6"/>
+<circle style="fill:#C7CAC7;" cx="36" cy="24.5" r="6"/>
+<circle style="fill:#E7ECED;" cx="36" cy="22.5" r="6"/>
+<circle style="fill:#E7ECED;" cx="51" cy="10.5" r="6"/>
+<path style="fill:#FFFFFF;" d="M52,9.5h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S52.553,9.5,52,9.5z"/>
+<path style="fill:#FFFFFF;" d="M37,21.5h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S37.553,21.5,37,21.5z"/>
+<path style="fill:#FFFFFF;" d="M37,25.5h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S37.553,25.5,37,25.5z"/>
+<path style="fill:#FFFFFF;" d="M22,33.5h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S22.553,33.5,22,33.5z"/>
+<path style="fill:#FFFFFF;" d="M22,37.5h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S22.553,37.5,22,37.5z"/>
+<path style="fill:#FFFFFF;" d="M7,45.5H5c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S7.553,45.5,7,45.5z"/>
+<path style="fill:#FFFFFF;" d="M7,49.5H5c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S7.553,49.5,7,49.5z"/>
+<path style="fill:#FFFFFF;" d="M52,13.5h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S52.553,13.5,52,13.5z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/controls-9.svg b/img/icons/essential-collection/svg/controls-9.svg
new file mode 100644
index 00000000..2f188147
--- /dev/null
+++ b/img/icons/essential-collection/svg/controls-9.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<g>
+ <path style="fill:#556080;" d="M5,2C4.447,2,4,2.447,4,3v36c0,0.553,0.447,1,1,1s1-0.447,1-1V3C6,2.447,5.553,2,5,2z"/>
+ <path style="fill:#556080;" d="M5,50c-0.553,0-1,0.447-1,1v4c0,0.553,0.447,1,1,1s1-0.447,1-1v-4C6,50.447,5.553,50,5,50z"/>
+ <path style="fill:#556080;" d="M21,2c-0.553,0-1,0.447-1,1v26c0,0.553,0.447,1,1,1s1-0.447,1-1V3C22,2.447,21.553,2,21,2z"/>
+ <path style="fill:#556080;" d="M21,40c-0.553,0-1,0.447-1,1v14c0,0.553,0.447,1,1,1s1-0.447,1-1V41C22,40.447,21.553,40,21,40z"/>
+ <path style="fill:#556080;" d="M37,2c-0.553,0-1,0.447-1,1v16c0,0.553,0.447,1,1,1s1-0.447,1-1V3C38,2.447,37.553,2,37,2z"/>
+ <path style="fill:#556080;" d="M37,30c-0.553,0-1,0.447-1,1v24c0,0.553,0.447,1,1,1s1-0.447,1-1V31C38,30.447,37.553,30,37,30z"/>
+ <path style="fill:#556080;" d="M53,18c-0.553,0-1,0.447-1,1v36c0,0.553,0.447,1,1,1s1-0.447,1-1V19C54,18.447,53.553,18,53,18z"/>
+ <path style="fill:#556080;" d="M53,2c-0.553,0-1,0.447-1,1v4c0,0.553,0.447,1,1,1s1-0.447,1-1V3C54,2.447,53.553,2,53,2z"/>
+</g>
+<rect y="41" style="fill:#C7CAC7;" width="10" height="12"/>
+<rect x="16" y="31" style="fill:#C7CAC7;" width="10" height="12"/>
+<rect x="32" y="21" style="fill:#C7CAC7;" width="10" height="12"/>
+<rect x="48" y="9" style="fill:#C7CAC7;" width="10" height="12"/>
+<rect y="39" style="fill:#E7ECED;" width="10" height="12"/>
+<rect x="16" y="29" style="fill:#E7ECED;" width="10" height="12"/>
+<rect x="32" y="19" style="fill:#E7ECED;" width="10" height="12"/>
+<rect x="48" y="7" style="fill:#E7ECED;" width="10" height="12"/>
+<g>
+ <path style="fill:#FFFFFF;" d="M22,32h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S22.553,32,22,32z"/>
+ <path style="fill:#FFFFFF;" d="M38,26h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S38.553,26,38,26z"/>
+ <path style="fill:#FFFFFF;" d="M38,22h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S38.553,22,38,22z"/>
+ <path style="fill:#FFFFFF;" d="M54,14h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S54.553,14,54,14z"/>
+ <path style="fill:#FFFFFF;" d="M52,12h2c0.553,0,1-0.447,1-1s-0.447-1-1-1h-2c-0.553,0-1,0.447-1,1S51.447,12,52,12z"/>
+ <path style="fill:#FFFFFF;" d="M22,36h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S22.553,36,22,36z"/>
+ <path style="fill:#FFFFFF;" d="M6,42H4c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S6.553,42,6,42z"/>
+ <path style="fill:#FFFFFF;" d="M6,46H4c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S6.553,46,6,46z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/controls.svg b/img/icons/essential-collection/svg/controls.svg
new file mode 100644
index 00000000..4752b2b5
--- /dev/null
+++ b/img/icons/essential-collection/svg/controls.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<g>
+ <path style="fill:#C7CAC7;" d="M6,0C5.448,0,5,0.447,5,1v40c0,0.553,0.448,1,1,1s1-0.447,1-1V1C7,0.447,6.552,0,6,0z"/>
+ <path style="fill:#C7CAC7;" d="M48,12c-0.552,0-1,0.447-1,1v40c0,0.553,0.448,1,1,1s1-0.447,1-1V13C49,12.447,48.552,12,48,12z"/>
+ <path style="fill:#C7CAC7;" d="M27,0c-0.552,0-1,0.447-1,1v19c0,0.553,0.448,1,1,1s1-0.447,1-1V1C28,0.447,27.552,0,27,0z"/>
+ <path style="fill:#C7CAC7;" d="M27,32c-0.552,0-1,0.447-1,1v20c0,0.553,0.448,1,1,1s1-0.447,1-1V33C28,32.447,27.552,32,27,32z"/>
+</g>
+<circle style="fill:#7383BF;" cx="6" cy="47" r="6"/>
+<circle style="fill:#26B99A;" cx="26.793" cy="26.793" r="6.207"/>
+<circle style="fill:#7383BF;" cx="48" cy="7" r="6"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/database-1.svg b/img/icons/essential-collection/svg/database-1.svg
new file mode 100644
index 00000000..0b6d5ba8
--- /dev/null
+++ b/img/icons/essential-collection/svg/database-1.svg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53 53" style="enable-background:new 0 0 53 53;" xml:space="preserve">
+<path style="fill:#424A60;" d="M50.455,8L50.455,8C49.724,3.538,39.281,0,26.5,0S3.276,3.538,2.545,8l0,0H2.5v0.5V20v0.5V21v11v0.5
+ V33v12h0.045c0.731,4.461,11.175,8,23.955,8s23.224-3.539,23.955-8H50.5V33v-0.5V32V21v-0.5V20V8.5V8H50.455z"/>
+<g>
+ <path style="fill:#424A60;" d="M26.5,41c-13.255,0-24-3.806-24-8.5V45h0.045c0.731,4.461,11.175,8,23.955,8s23.224-3.539,23.955-8
+ H50.5V32.5C50.5,37.194,39.755,41,26.5,41z"/>
+ <path style="fill:#424A60;" d="M2.5,32v0.5c0-0.168,0.018-0.334,0.045-0.5H2.5z"/>
+ <path style="fill:#424A60;" d="M50.455,32c0.027,0.166,0.045,0.332,0.045,0.5V32H50.455z"/>
+</g>
+<g>
+ <path style="fill:#556080;" d="M26.5,29c-13.255,0-24-3.806-24-8.5V33h0.045c0.731,4.461,11.175,8,23.955,8s23.224-3.539,23.955-8
+ H50.5V20.5C50.5,25.194,39.755,29,26.5,29z"/>
+ <path style="fill:#556080;" d="M2.5,20v0.5c0-0.168,0.018-0.334,0.045-0.5H2.5z"/>
+ <path style="fill:#556080;" d="M50.455,20c0.027,0.166,0.045,0.332,0.045,0.5V20H50.455z"/>
+</g>
+<ellipse style="fill:#7FABDA;" cx="26.5" cy="8.5" rx="24" ry="8.5"/>
+<g>
+ <path style="fill:#7383BF;" d="M26.5,17c-13.255,0-24-3.806-24-8.5V21h0.045c0.731,4.461,11.175,8,23.955,8s23.224-3.539,23.955-8
+ H50.5V8.5C50.5,13.194,39.755,17,26.5,17z"/>
+ <path style="fill:#7383BF;" d="M2.5,8v0.5c0-0.168,0.018-0.334,0.045-0.5H2.5z"/>
+ <path style="fill:#7383BF;" d="M50.455,8C50.482,8.166,50.5,8.332,50.5,8.5V8H50.455z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/database-2.svg b/img/icons/essential-collection/svg/database-2.svg
new file mode 100644
index 00000000..39dee7c4
--- /dev/null
+++ b/img/icons/essential-collection/svg/database-2.svg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53 53" style="enable-background:new 0 0 53 53;" xml:space="preserve">
+<path style="fill:#424A60;" d="M50.455,8L50.455,8C49.724,3.538,39.281,0,26.5,0S3.276,3.538,2.545,8l0,0H2.5v0.5V20v0.5V21v11v0.5
+ V33v12h0.045c0.731,4.461,11.175,8,23.955,8s23.224-3.539,23.955-8H50.5V33v-0.5V32V21v-0.5V20V8.5V8H50.455z"/>
+<g>
+ <path style="fill:#424A60;" d="M26.5,41c-13.255,0-24-3.806-24-8.5V45h0.045c0.731,4.461,11.175,8,23.955,8s23.224-3.539,23.955-8
+ H50.5V32.5C50.5,37.194,39.755,41,26.5,41z"/>
+ <path style="fill:#424A60;" d="M2.5,32v0.5c0-0.168,0.018-0.334,0.045-0.5H2.5z"/>
+ <path style="fill:#424A60;" d="M50.455,32c0.027,0.166,0.045,0.332,0.045,0.5V32H50.455z"/>
+</g>
+<g>
+ <path style="fill:#EFCE4A;" d="M26.5,29c-13.255,0-24-3.806-24-8.5V33h0.045c0.731,4.461,11.175,8,23.955,8s23.224-3.539,23.955-8
+ H50.5V20.5C50.5,25.194,39.755,29,26.5,29z"/>
+ <path style="fill:#EFCE4A;" d="M2.5,20v0.5c0-0.168,0.018-0.334,0.045-0.5H2.5z"/>
+ <path style="fill:#EFCE4A;" d="M50.455,20c0.027,0.166,0.045,0.332,0.045,0.5V20H50.455z"/>
+</g>
+<ellipse style="fill:#7FABDA;" cx="26.5" cy="8.5" rx="24" ry="8.5"/>
+<g>
+ <path style="fill:#7383BF;" d="M26.5,17c-13.255,0-24-3.806-24-8.5V21h0.045c0.731,4.461,11.175,8,23.955,8s23.224-3.539,23.955-8
+ H50.5V8.5C50.5,13.194,39.755,17,26.5,17z"/>
+ <path style="fill:#7383BF;" d="M2.5,8v0.5c0-0.168,0.018-0.334,0.045-0.5H2.5z"/>
+ <path style="fill:#7383BF;" d="M50.455,8C50.482,8.166,50.5,8.332,50.5,8.5V8H50.455z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/database-3.svg b/img/icons/essential-collection/svg/database-3.svg
new file mode 100644
index 00000000..057c8c17
--- /dev/null
+++ b/img/icons/essential-collection/svg/database-3.svg
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#424A60;" d="M34,0C22.773,0,13.35,2.73,10.728,6.418C4.63,7.854,0.495,10.252,0.045,13l0,0H0v0.5V25v0.5V26v11
+ v0.5V38v12h0.045C0.776,54.461,11.219,58,24,58c11.227,0,20.648-2.731,23.269-6.419c6.097-1.436,10.236-3.833,10.687-6.581H58V33
+ v-0.5V21v-0.5v-12C58,3.806,47.255,0,34,0z"/>
+<g>
+ <path style="fill:#424A60;" d="M24,46c-13.255,0-24-3.806-24-8.5V50h0.045C0.776,54.461,11.219,58,24,58s23.224-3.539,23.955-8H48
+ V37.5C48,42.194,37.255,46,24,46z"/>
+ <path style="fill:#424A60;" d="M0,37v0.5c0-0.168,0.018-0.334,0.045-0.5H0z"/>
+ <path style="fill:#424A60;" d="M47.955,37C47.982,37.166,48,37.332,48,37.5V37H47.955z"/>
+</g>
+<g>
+ <path style="fill:#556080;" d="M24,34c-13.255,0-24-3.806-24-8.5V38h0.045C0.776,42.461,11.219,46,24,46s23.224-3.539,23.955-8H48
+ V25.5C48,30.194,37.255,34,24,34z"/>
+ <path style="fill:#556080;" d="M0,25v0.5c0-0.168,0.018-0.334,0.045-0.5H0z"/>
+ <path style="fill:#556080;" d="M47.955,25C47.982,25.166,48,25.332,48,25.5V25H47.955z"/>
+</g>
+<ellipse style="fill:#7FABDA;" cx="24" cy="13.5" rx="24" ry="8.5"/>
+<g>
+ <path style="fill:#7383BF;" d="M24,22c-13.255,0-24-3.806-24-8.5V26h0.045C0.776,30.461,11.219,34,24,34s23.224-3.539,23.955-8H48
+ V13.5C48,18.194,37.255,22,24,22z"/>
+ <path style="fill:#7383BF;" d="M0,13v0.5c0-0.168,0.018-0.334,0.045-0.5H0z"/>
+ <path style="fill:#7383BF;" d="M47.955,13C47.982,13.166,48,13.332,48,13.5V13H47.955z"/>
+</g>
+<path style="fill:#88C057;" d="M34,0C22.772,0,13.347,2.731,10.727,6.42C14.529,5.524,19.09,5,24,5c12.781,0,23.224,3.538,23.955,8
+ H48v0.5v1.902c6.054-1.543,10-4.059,10-6.902C58,3.806,47.255,0,34,0z"/>
+<path style="fill:#61B872;" d="M48,15.402V25v0.5V26v1.403c5.696-1.452,9.523-3.766,9.955-6.403H58V8.5
+ C58,11.343,54.054,13.859,48,15.402z"/>
+<path style="fill:#25AE88;" d="M48,27.402V37v0.5V38v1.403c5.696-1.452,9.523-3.766,9.955-6.403H58V20.5
+ C58,23.343,54.054,25.859,48,27.402z"/>
+<path style="fill:#1A9172;" d="M48,39.402V50h-0.045c-0.089,0.542-0.324,1.071-0.687,1.581c6.097-1.436,10.236-3.833,10.687-6.581
+ H58V32.5C58,35.343,54.054,37.859,48,39.402z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/database.svg b/img/icons/essential-collection/svg/database.svg
new file mode 100644
index 00000000..a8795a6c
--- /dev/null
+++ b/img/icons/essential-collection/svg/database.svg
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<g>
+ <path style="fill:#424A60;" d="M24,35v-0.375V34.25v-8.625V25.25h0.034C24.013,25.374,24,25.499,24,25.625
+ c0-2.437,3.862-4.552,9.534-5.625H3.608C1.616,20,0,21.615,0,23.608v11.783C0,37.385,1.616,39,3.608,39H24V35z"/>
+</g>
+<g>
+ <path style="fill:#556080;" d="M24.034,53H24v-9v-0.375V43.25V39H3.608C1.616,39,0,40.615,0,42.608v11.783
+ C0,56.385,1.616,58,3.608,58h28.718C27.601,56.931,24.378,55.103,24.034,53z"/>
+</g>
+<path style="fill:#556080;" d="M54.392,20H3.608C1.616,20,0,18.384,0,16.392V4.608C0,2.616,1.616,1,3.608,1h50.783
+ C56.384,1,58,2.616,58,4.608v11.783C58,18.384,56.384,20,54.392,20z"/>
+<circle style="fill:#7383BF;" cx="9.5" cy="10.5" r="3.5"/>
+<circle style="fill:#7383BF;" cx="49" cy="9" r="1"/>
+<circle style="fill:#7383BF;" cx="45" cy="9" r="1"/>
+<circle style="fill:#7383BF;" cx="51" cy="12" r="1"/>
+<circle style="fill:#7383BF;" cx="47" cy="12" r="1"/>
+<circle style="fill:#7383BF;" cx="41" cy="9" r="1"/>
+<circle style="fill:#7383BF;" cx="43" cy="12" r="1"/>
+<circle style="fill:#7383BF;" cx="37" cy="9" r="1"/>
+<circle style="fill:#7383BF;" cx="39" cy="12" r="1"/>
+<circle style="fill:#7383BF;" cx="33" cy="9" r="1"/>
+<circle style="fill:#7383BF;" cx="35" cy="12" r="1"/>
+<circle style="fill:#7383BF;" cx="9.5" cy="29.5" r="3.5"/>
+<circle style="fill:#7383BF;" cx="9.5" cy="48.5" r="3.5"/>
+<g>
+ <path style="fill:#1A9172;" d="M42,48.75c-9.941,0-18-2.854-18-6.375V53h0.034c0.548,3.346,8.381,6,17.966,6s17.418-2.654,17.966-6
+ H60V42.375C60,45.896,51.941,48.75,42,48.75z"/>
+ <path style="fill:#1A9172;" d="M24,42v0.375c0-0.126,0.013-0.251,0.034-0.375H24z"/>
+ <path style="fill:#1A9172;" d="M59.966,42C59.987,42.124,60,42.249,60,42.375V42H59.966z"/>
+</g>
+<g>
+ <path style="fill:#25AE88;" d="M42,38c-9.941,0-18-2.854-18-6.375V42.75h0.034c0.548,3.346,8.381,6,17.966,6s17.418-2.654,17.966-6
+ H60V31.625C60,35.146,51.941,38,42,38z"/>
+ <path style="fill:#25AE88;" d="M24,31.25v0.375c0-0.126,0.013-0.251,0.034-0.375H24z"/>
+ <path style="fill:#25AE88;" d="M59.966,31.25C59.987,31.374,60,31.499,60,31.625V31.25H59.966z"/>
+</g>
+<ellipse style="fill:#88C057;" cx="42" cy="21.375" rx="18" ry="6.375"/>
+<g>
+ <path style="fill:#61B872;" d="M42,27.75c-9.941,0-18-2.854-18-6.375V32h0.034c0.548,3.346,8.381,6,17.966,6s17.418-2.654,17.966-6
+ H60V21.375C60,24.896,51.941,27.75,42,27.75z"/>
+ <path style="fill:#61B872;" d="M24,21v0.375c0-0.126,0.013-0.251,0.034-0.375H24z"/>
+ <path style="fill:#61B872;" d="M59.966,21C59.987,21.124,60,21.249,60,21.375V21H59.966z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/diamond.svg b/img/icons/essential-collection/svg/diamond.svg
new file mode 100644
index 00000000..630bf840
--- /dev/null
+++ b/img/icons/essential-collection/svg/diamond.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#CC2E48;" points="29,55 0,19 58,19 "/>
+<polygon style="fill:#FC3952;" points="58,19 0,19 10,3 48,3 "/>
+<polygon style="fill:#F76363;" points="42.154,19 48,3 10,3 15.846,19 "/>
+<polygon style="fill:#F49A9A;" points="42,19 29,3 16,19 "/>
+<polygon style="fill:#CB465F;" points="15.846,19 29,55 42.154,19 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/diploma.svg b/img/icons/essential-collection/svg/diploma.svg
new file mode 100644
index 00000000..2907d6dc
--- /dev/null
+++ b/img/icons/essential-collection/svg/diploma.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#EDEADA;" points="51.5,14 37.5,0 6.5,0 6.5,58 51.5,58 "/>
+<polygon style="fill:#CEC9AE;" points="37.5,0 37.5,14 51.5,14 "/>
+<g>
+ <path style="fill:#CEC9AE;" d="M15.5,16h9c0.553,0,1-0.447,1-1s-0.447-1-1-1h-9c-0.553,0-1,0.447-1,1S14.947,16,15.5,16z"/>
+ <path style="fill:#CEC9AE;" d="M15.5,24h5c0.553,0,1-0.447,1-1s-0.447-1-1-1h-5c-0.553,0-1,0.447-1,1S14.947,24,15.5,24z"/>
+ <path style="fill:#CEC9AE;" d="M37.5,22h-7c-0.553,0-1,0.447-1,1s0.447,1,1,1h7c0.553,0,1-0.447,1-1S38.053,22,37.5,22z"/>
+ <path style="fill:#CEC9AE;" d="M24.79,22.3c-0.19,0.18-0.29,0.439-0.29,0.7c0,0.26,0.1,0.52,0.29,0.71
+ C24.979,23.89,25.24,24,25.5,24s0.52-0.101,0.71-0.3c0.18-0.181,0.29-0.44,0.29-0.7c0-0.261-0.11-0.521-0.29-0.71
+ C25.83,21.92,25.16,21.92,24.79,22.3z"/>
+ <path style="fill:#CEC9AE;" d="M43.21,22.29c-0.38-0.37-1.04-0.37-1.42,0c-0.181,0.189-0.29,0.449-0.29,0.71
+ c0,0.26,0.109,0.52,0.29,0.71C41.979,23.89,42.24,24,42.5,24s0.52-0.11,0.71-0.29c0.18-0.19,0.29-0.45,0.29-0.71
+ C43.5,22.739,43.39,22.479,43.21,22.29z"/>
+ <path style="fill:#CEC9AE;" d="M27.5,30h-7c-0.553,0-1,0.447-1,1s0.447,1,1,1h7c0.553,0,1-0.447,1-1S28.053,30,27.5,30z"/>
+ <path style="fill:#CEC9AE;" d="M14.79,30.29C14.6,30.479,14.5,30.729,14.5,31c0,0.26,0.109,0.52,0.29,0.71
+ C14.979,31.89,15.24,32,15.5,32s0.52-0.11,0.71-0.29c0.189-0.19,0.29-0.45,0.29-0.71c0-0.261-0.101-0.521-0.29-0.71
+ C15.83,29.92,15.17,29.92,14.79,30.29z"/>
+</g>
+<g>
+ <path style="fill:#7383BF;" d="M18.645,39.166c-2.191,1.141-2.928,3.321-3.196,5.582c-0.414-0.347-0.828-0.693-1.241-1.04
+ c-0.981-0.822-2.404,0.585-1.414,1.415c0.935,0.783,1.871,1.567,2.806,2.351c0.662,0.555,1.676,0.211,1.707-0.707
+ c0.073-2.167,0.177-4.743,2.348-5.873C20.799,40.298,19.787,38.572,18.645,39.166z"/>
+ <path style="fill:#7383BF;" d="M27.983,44.25c-0.52-0.93-1.642-1.391-2.688-1.095c-1.365,0.386-2.981,2.042-3.936,0.106
+ c-0.571-1.157-2.295-0.143-1.727,1.009c0.514,1.042,1.5,1.798,2.669,1.932c0.607,0.069,1.117-0.013,1.688-0.226
+ c0.406-0.152,1.923-1.332,2.267-0.717C26.885,46.385,28.613,45.376,27.983,44.25z"/>
+</g>
+<path style="fill:#EBBA16;" d="M40.045,29.09L40.045,29.09c0.326,0.915,1.371,1.349,2.249,0.931l0,0
+ c1.393-0.662,2.847,0.791,2.185,2.185l0,0c-0.417,0.877,0.016,1.923,0.931,2.249h0c1.454,0.517,1.454,2.573,0,3.09h0
+ c-0.915,0.326-1.349,1.371-0.931,2.249l0,0c0.662,1.393-0.791,2.847-2.185,2.185l0,0c-0.877-0.417-1.923,0.016-2.249,0.931v0
+ c-0.517,1.454-2.573,1.454-3.09,0v0c-0.326-0.915-1.371-1.349-2.249-0.931l0,0c-1.393,0.662-2.847-0.791-2.185-2.185l0,0
+ c0.417-0.877-0.016-1.923-0.931-2.249h0c-1.454-0.517-1.454-2.573,0-3.09h0c0.915-0.326,1.349-1.371,0.931-2.249l0,0
+ c-0.662-1.393,0.791-2.847,2.185-2.185l0,0c0.877,0.417,1.923-0.016,2.249-0.931v0C37.472,27.637,39.528,27.637,40.045,29.09z"/>
+<path style="fill:#D75A4A;" d="M42.294,41.979c-0.878-0.417-1.923,0.016-2.249,0.931c-0.517,1.454-2.573,1.454-3.09,0
+ c-0.326-0.916-1.371-1.349-2.249-0.931c-0.069,0.033-0.137,0.038-0.206,0.061V53l4-4l4,4V42.039
+ C42.431,42.017,42.363,42.011,42.294,41.979z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/dislike-1.svg b/img/icons/essential-collection/svg/dislike-1.svg
new file mode 100644
index 00000000..1a50537a
--- /dev/null
+++ b/img/icons/essential-collection/svg/dislike-1.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<path style="fill:#949493;" d="M24.85,10.126c2.018-4.783,6.628-8.125,11.99-8.125c7.223,0,12.425,6.179,13.079,13.543
+ c0,0,0.353,1.828-0.424,5.119c-1.058,4.482-3.545,8.464-6.898,11.503L24.85,48L7.402,32.165c-3.353-3.038-5.84-7.021-6.898-11.503
+ c-0.777-3.291-0.424-5.119-0.424-5.119C0.734,8.179,5.936,2,13.159,2C18.522,2,22.832,5.343,24.85,10.126z"/>
+<path style="fill:#C7CAC7;" d="M36.841,2.001c-5.24,0-9.753,3.195-11.841,7.803v1.274l-7,7l15,2l-12,11l8,5l-3.9,11.699
+ l17.498-15.611c3.353-3.038,5.84-7.021,6.898-11.503c0.777-3.291,0.424-5.119,0.424-5.119C49.266,8.18,44.064,2.001,36.841,2.001z"
+ />
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/dislike.svg b/img/icons/essential-collection/svg/dislike.svg
new file mode 100644
index 00000000..36357d55
--- /dev/null
+++ b/img/icons/essential-collection/svg/dislike.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<rect x="40.5" y="0" style="fill:#4B6DAA;" width="14" height="36"/>
+<circle style="fill:#D8A852;" cx="47.5" cy="9" r="4"/>
+<path style="fill:#FBCE9D;" d="M2.5,30c0,2.209,1.791,4,4,4h9h3h3.602l-0.988,4.619c-0.754,3.524-0.552,7.819-0.104,10.836
+ C21.458,52.472,24.16,56,26.987,56h0.239c2.41,0,3.274-2.659,3.274-6c0-16.25,8-16,8-16h2V2h-15h-10h-4c-2.209,0-4,1.791-4,4
+ c0,2.209,1.791,4,4,4h-3c-2.209,0-4,1.791-4,4c0,2.209,1.791,4,4,4h-3c-2.209,0-4,1.791-4,4c0,2.493,1.613,3.442,4,3.796
+ C6.663,25.969,8.776,26,9.5,26h-3C4.291,26,2.5,27.791,2.5,30z"/>
+<path style="fill:#F7B563;" d="M19.5,10c0-0.553-0.448-1-1-1H8.88c0.703,0.615,1.613,1,2.62,1h-3c-1.008,0-1.917,0.385-2.62,1H18.5
+ C19.052,11,19.5,10.553,19.5,10z"/>
+<path style="fill:#F7B563;" d="M16.5,17H5.88c0.703,0.615,1.613,1,2.62,1h-3c-1.008,0-1.917,0.385-2.62,1H16.5c0.552,0,1-0.447,1-1
+ S17.052,17,16.5,17z"/>
+<path style="fill:#F7B563;" d="M16.5,25H3.044c0.657,0.403,1.488,0.653,2.456,0.796C6.663,25.969,8.776,26,9.5,26h-3
+ c-1.008,0-1.917,0.385-2.62,1H16.5c0.552,0,1-0.447,1-1S17.052,25,16.5,25z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/divide-1.svg b/img/icons/essential-collection/svg/divide-1.svg
new file mode 100644
index 00000000..208a6145
--- /dev/null
+++ b/img/icons/essential-collection/svg/divide-1.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect style="fill:#E7ECED;" width="58" height="58"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" x1="50" y1="29" x2="8" y2="29"/>
+<path style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" d="M29,20L29,20c-2.2,0-4-1.8-4-4v0c0-2.2,1.8-4,4-4h0
+ c2.2,0,4,1.8,4,4v0C33,18.2,31.2,20,29,20z"/>
+<path style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" d="M29,46L29,46c-2.2,0-4-1.8-4-4v0c0-2.2,1.8-4,4-4h0
+ c2.2,0,4,1.8,4,4v0C33,44.2,31.2,46,29,46z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/divide.svg b/img/icons/essential-collection/svg/divide.svg
new file mode 100644
index 00000000..5beb7add
--- /dev/null
+++ b/img/icons/essential-collection/svg/divide.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 42 42" style="enable-background:new 0 0 42 42;" xml:space="preserve">
+<line style="fill:none;stroke:#C5411E;stroke-width:2;stroke-miterlimit:10;" x1="42" y1="21" x2="0" y2="21"/>
+<path style="fill:none;stroke:#C5411E;stroke-width:2;stroke-miterlimit:10;" d="M21,12L21,12c-2.2,0-4-1.8-4-4v0c0-2.2,1.8-4,4-4h0
+ c2.2,0,4,1.8,4,4v0C25,10.2,23.2,12,21,12z"/>
+<path style="fill:none;stroke:#C5411E;stroke-width:2;stroke-miterlimit:10;" d="M21,38L21,38c-2.2,0-4-1.8-4-4v0c0-2.2,1.8-4,4-4h0
+ c2.2,0,4,1.8,4,4v0C25,36.2,23.2,38,21,38z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/division.svg b/img/icons/essential-collection/svg/division.svg
new file mode 100644
index 00000000..27172368
--- /dev/null
+++ b/img/icons/essential-collection/svg/division.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 42 42" style="enable-background:new 0 0 42 42;" xml:space="preserve">
+<path style="fill:#3083C9;" d="M37.059,16H26H16H4.941C2.224,16,0,18.282,0,21s2.224,5,4.941,5H16h10h11.059
+ C39.776,26,42,23.718,42,21S39.776,16,37.059,16z"/>
+<circle style="fill:#3083C9;" cx="21" cy="6" r="5"/>
+<circle style="fill:#3083C9;" cx="21" cy="36" r="5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/document.svg b/img/icons/essential-collection/svg/document.svg
new file mode 100644
index 00000000..b2949436
--- /dev/null
+++ b/img/icons/essential-collection/svg/document.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#EDEADA;" points="51.5,14 37.5,0 6.5,0 6.5,58 51.5,58 "/>
+<polygon style="fill:#CEC9AE;" points="37.5,0 37.5,14 51.5,14 "/>
+<g>
+ <path style="fill:#CEC9AE;" d="M15.5,16h9c0.552,0,1-0.447,1-1s-0.448-1-1-1h-9c-0.552,0-1,0.447-1,1S14.948,16,15.5,16z"/>
+ <path style="fill:#CEC9AE;" d="M32.5,36h-17c-0.552,0-1,0.447-1,1s0.448,1,1,1h17c0.552,0,1-0.447,1-1S33.052,36,32.5,36z"/>
+ <path style="fill:#CEC9AE;" d="M42.5,29h-7c-0.552,0-1,0.447-1,1s0.448,1,1,1h7c0.552,0,1-0.447,1-1S43.052,29,42.5,29z"/>
+ <path style="fill:#CEC9AE;" d="M15.5,24h5c0.552,0,1-0.447,1-1s-0.448-1-1-1h-5c-0.552,0-1,0.447-1,1S14.948,24,15.5,24z"/>
+ <path style="fill:#CEC9AE;" d="M30.5,24h7c0.552,0,1-0.447,1-1s-0.448-1-1-1h-7c-0.552,0-1,0.447-1,1S29.948,24,30.5,24z"/>
+ <path style="fill:#CEC9AE;" d="M24.5,23c0,0.26,0.11,0.52,0.29,0.71C24.98,23.89,25.24,24,25.5,24c0.26,0,0.52-0.11,0.71-0.29
+ c0.18-0.19,0.29-0.45,0.29-0.71c0-0.261-0.11-0.521-0.29-0.71c-0.37-0.37-1.04-0.37-1.42,0C24.61,22.479,24.5,22.739,24.5,23z"/>
+ <path style="fill:#CEC9AE;" d="M20.5,29c-0.552,0-1,0.447-1,1s0.448,1,1,1h10c0.552,0,1-0.447,1-1s-0.448-1-1-1H20.5z"/>
+ <path style="fill:#CEC9AE;" d="M15.5,31c0.26,0,0.52-0.11,0.71-0.29c0.18-0.19,0.29-0.45,0.29-0.71c0-0.261-0.11-0.521-0.29-0.71
+ c-0.37-0.37-1.05-0.37-1.42,0c-0.18,0.189-0.29,0.439-0.29,0.71c0,0.26,0.11,0.52,0.29,0.71C14.98,30.89,15.24,31,15.5,31z"/>
+ <path style="fill:#CEC9AE;" d="M42.5,43h-7c-0.552,0-1,0.447-1,1s0.448,1,1,1h7c0.552,0,1-0.447,1-1S43.052,43,42.5,43z"/>
+ <path style="fill:#CEC9AE;" d="M30.5,43h-10c-0.552,0-1,0.447-1,1s0.448,1,1,1h10c0.552,0,1-0.447,1-1S31.052,43,30.5,43z"/>
+ <path style="fill:#CEC9AE;" d="M14.79,43.29c-0.18,0.18-0.29,0.439-0.29,0.71c0,0.27,0.1,0.52,0.29,0.71
+ C14.98,44.89,15.24,45,15.5,45c0.27,0,0.52-0.11,0.71-0.29c0.18-0.19,0.29-0.45,0.29-0.71c0-0.271-0.11-0.521-0.29-0.7
+ C15.84,42.92,15.17,42.92,14.79,43.29z"/>
+ <path style="fill:#CEC9AE;" d="M42.5,24c0.26,0,0.52-0.11,0.71-0.29c0.19-0.19,0.29-0.45,0.29-0.71c0-0.261-0.1-0.521-0.29-0.71
+ c-0.38-0.37-1.04-0.37-1.42,0c-0.18,0.189-0.29,0.449-0.29,0.71c0,0.26,0.11,0.52,0.29,0.71C41.98,23.89,42.24,24,42.5,24z"/>
+ <path style="fill:#CEC9AE;" d="M38.21,37.71c0.18-0.19,0.29-0.45,0.29-0.71c0-0.261-0.11-0.521-0.29-0.71
+ c-0.38-0.37-1.05-0.37-1.42,0c-0.18,0.189-0.29,0.449-0.29,0.71c0,0.26,0.11,0.52,0.29,0.71C36.98,37.899,37.23,38,37.5,38
+ S38.02,37.89,38.21,37.71z"/>
+ <path style="fill:#CEC9AE;" d="M41.79,36.29c-0.18,0.189-0.29,0.449-0.29,0.71c0,0.26,0.11,0.52,0.29,0.71
+ C41.98,37.89,42.23,38,42.5,38s0.52-0.11,0.71-0.29c0.18-0.19,0.29-0.45,0.29-0.71c0-0.261-0.11-0.521-0.29-0.71
+ C42.84,35.92,42.16,35.92,41.79,36.29z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/download.svg b/img/icons/essential-collection/svg/download.svg
new file mode 100644
index 00000000..7cfefc8a
--- /dev/null
+++ b/img/icons/essential-collection/svg/download.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#3083C9;" points="36,17 22,17 8,17 8,58 50,58 50,17 "/>
+<polyline style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" points="
+ 38.979,28.979 28.958,39 18.979,29.021 "/>
+<line style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="29" y1="39" x2="29" y2="1"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/edit-1.svg b/img/icons/essential-collection/svg/edit-1.svg
new file mode 100644
index 00000000..186dcee5
--- /dev/null
+++ b/img/icons/essential-collection/svg/edit-1.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58.018 58.018" style="enable-background:new 0 0 58.018 58.018;" xml:space="preserve">
+<polygon style="fill:#EDEADA;" points="24.192,39.492 16.414,41.613 18.536,33.835 48.362,4.009 0,4.009 0,58.009 54,58.009
+ 54,9.685 "/>
+<path style="fill:#F7E6A1;" d="M18.716,39.311c0.391,0.391,0.391,1.023,0,1.414l-0.358,0.358l5.793-1.58l-5.627-5.627l-1.58,5.792
+ l0.358-0.358C17.693,38.92,18.326,38.92,18.716,39.311z"/>
+<path style="fill:#424A60;" d="M18.358,41.083l0.358-0.358c0.391-0.391,0.391-1.023,0-1.414s-1.023-0.391-1.414,0l-0.358,0.358
+ l-0.53,1.944L18.358,41.083z"/>
+<polygon style="fill:#EBBA16;" points="51.062,12.622 45.406,6.965 18.536,33.835 18.524,33.876 24.151,39.503 24.192,39.492 "/>
+<path style="fill:#ED7161;" d="M57.437,3.44l-2.85-2.85c-0.775-0.775-2.032-0.775-2.807,0l-3.546,3.546l5.657,5.657l3.546-3.546
+ C58.212,5.472,58.212,4.215,57.437,3.44z"/>
+<rect x="44.82" y="5.551" transform="matrix(0.7071 -0.7071 0.7071 0.7071 9.789 34.7337)" style="fill:#F7E6A1;" width="4" height="0"/>
+<rect x="45.648" y="6.379" transform="matrix(0.7071 0.7071 -0.7071 0.7071 20.4667 -32.6524)" style="fill:#F7E6A1;" width="8" height="4"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/edit.svg b/img/icons/essential-collection/svg/edit.svg
new file mode 100644
index 00000000..cb7c280c
--- /dev/null
+++ b/img/icons/essential-collection/svg/edit.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53.255 53.255" style="enable-background:new 0 0 53.255 53.255;" xml:space="preserve">
+<path style="fill:#D75A4A;" d="M39.598,2.343c3.124-3.124,8.19-3.124,11.314,0s3.124,8.19,0,11.314L39.598,2.343z"/>
+<polygon style="fill:#ED8A19;" points="42.426,17.899 16.512,43.814 15.982,48.587 44.548,20.02 44.548,20.02 "/>
+<polygon style="fill:#ED8A19;" points="10.325,42.93 15.098,42.4 41.012,16.485 36.77,12.243 10.855,38.157 "/>
+<polygon style="fill:#ED8A19;" points="35.356,10.829 33.234,8.707 33.234,8.707 4.668,37.273 9.441,36.743 "/>
+<polygon style="fill:#C7CAC7;" points="48.79,15.778 48.79,15.778 50.912,13.657 39.598,2.343 37.476,4.465 37.477,4.465 "/>
+<polygon style="fill:#C7CAC7;" points="36.062,5.879 36.062,5.879 34.648,7.293 34.648,7.293 45.962,18.606 45.962,18.606
+ 47.376,17.192 47.376,17.192 "/>
+<path style="fill:#FBCE9D;" d="M14.424,44.488l-5.122,0.569c-0.036,0.004-0.073,0.006-0.109,0.006c0,0-0.001,0-0.001,0H9.192H9.192
+ c-0.001,0-0.001,0-0.001,0c-0.036,0-0.073-0.002-0.109-0.006c-0.039-0.004-0.071-0.026-0.108-0.035
+ c-0.072-0.017-0.141-0.035-0.207-0.067c-0.05-0.024-0.093-0.053-0.138-0.084c-0.057-0.04-0.109-0.083-0.157-0.134
+ c-0.038-0.04-0.069-0.081-0.1-0.127c-0.038-0.057-0.069-0.116-0.095-0.181c-0.022-0.054-0.038-0.107-0.05-0.165
+ c-0.007-0.032-0.024-0.059-0.028-0.092c-0.004-0.038,0.01-0.073,0.01-0.11c0-0.038-0.014-0.072-0.01-0.11l0.569-5.122l-5.122,0.569
+ c-0.037,0.004-0.075,0.006-0.111,0.006c-0.079,0-0.152-0.024-0.227-0.042L0.442,51.399l2.106-2.106c0.391-0.391,1.023-0.391,1.414,0
+ s0.391,1.023,0,1.414l-2.106,2.106l12.03-2.864c-0.026-0.109-0.043-0.222-0.03-0.339L14.424,44.488z"/>
+<path style="fill:#38454F;" d="M3.962,49.293c-0.391-0.391-1.023-0.391-1.414,0l-2.106,2.106L0,53.255l1.856-0.442l2.106-2.106
+ C4.352,50.316,4.352,49.684,3.962,49.293z"/>
+<polygon style="fill:#F2ECBF;" points="48.79,15.778 37.477,4.465 37.476,4.465 36.062,5.879 36.062,5.879 47.376,17.192
+ 47.376,17.192 48.79,15.778 "/>
+<path style="fill:#EBBA16;" d="M41.012,16.485L15.098,42.4l-4.773,0.53l0.53-4.773L36.77,12.243l-1.414-1.414L9.441,36.743
+ l-4.773,0.53l-1.133,1.133l-0.228,0.957c0.075,0.018,0.147,0.042,0.227,0.042c0.036,0,0.074-0.002,0.111-0.006l5.122-0.569
+ l-0.569,5.122c-0.004,0.038,0.01,0.073,0.01,0.11c0,0.038-0.014,0.072-0.01,0.11c0.004,0.033,0.021,0.06,0.028,0.092
+ c0.012,0.057,0.029,0.112,0.05,0.165c0.026,0.064,0.057,0.124,0.095,0.181c0.03,0.045,0.063,0.088,0.1,0.127
+ c0.047,0.05,0.1,0.094,0.157,0.134c0.044,0.031,0.089,0.061,0.138,0.084c0.065,0.031,0.135,0.05,0.207,0.067
+ c0.038,0.009,0.069,0.03,0.108,0.035c0.036,0.004,0.072,0.006,0.109,0.006h0.001h0h0.001h0.001c0,0,0.001,0,0.001,0h0
+ c0.035,0,0.072-0.002,0.109-0.006l5.122-0.569l-0.569,5.122c-0.013,0.118,0.004,0.23,0.03,0.339l0.963-0.229l1.133-1.132l0.53-4.773
+ l25.914-25.915L41.012,16.485z"/>
+<polygon style="fill:#F2ECBF;" points="45.962,18.606 34.648,7.293 34.648,7.293 33.234,8.707 33.234,8.707 35.356,10.829
+ 36.77,12.243 41.012,16.485 42.426,17.899 44.548,20.02 44.548,20.02 45.962,18.606 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/eject-1.svg b/img/icons/essential-collection/svg/eject-1.svg
new file mode 100644
index 00000000..9aebaa6c
--- /dev/null
+++ b/img/icons/essential-collection/svg/eject-1.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#694F87;" cx="29" cy="29" r="29"/>
+<g>
+ <polygon style="fill:#FFFFFF;" points="29,11 44,33 29.273,33 14,33 "/>
+ <path style="fill:#FFFFFF;" d="M44.02,34c-0.004,0-0.012,0.001-0.02,0H14c-0.371,0-0.711-0.205-0.884-0.533
+ c-0.174-0.327-0.151-0.724,0.058-1.03l15-22c0.373-0.547,1.279-0.547,1.652,0l14.904,21.86c0.179,0.181,0.289,0.429,0.289,0.703
+ C45.02,33.553,44.572,34,44.02,34z M15.893,32h26.215L29,12.775L15.893,32z"/>
+</g>
+<g>
+ <rect x="14" y="38" style="fill:#FFFFFF;" width="30" height="5"/>
+ <path style="fill:#FFFFFF;" d="M45,44H13v-7h32V44z M15,42h28v-3H15V42z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/eject.svg b/img/icons/essential-collection/svg/eject.svg
new file mode 100644
index 00000000..f2054fdb
--- /dev/null
+++ b/img/icons/essential-collection/svg/eject.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 40 40" style="enable-background:new 0 0 40 40;" xml:space="preserve">
+<polygon style="fill:#424A60;" points="20,0 0,29 19.636,29 40,29 "/>
+<rect y="34" style="fill:#424A60;" width="40" height="6"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/equal-1.svg b/img/icons/essential-collection/svg/equal-1.svg
new file mode 100644
index 00000000..60ab6b02
--- /dev/null
+++ b/img/icons/essential-collection/svg/equal-1.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 42 42" style="enable-background:new 0 0 42 42;" xml:space="preserve">
+<path style="fill:#7383BF;" d="M37.059,8H26H16H4.941C2.224,8,0,10.282,0,13s2.224,5,4.941,5H16h10h11.059
+ C39.776,18,42,15.718,42,13S39.776,8,37.059,8z"/>
+<path style="fill:#7383BF;" d="M37.059,24H26H16H4.941C2.224,24,0,26.282,0,29s2.224,5,4.941,5H16h10h11.059
+ C39.776,34,42,31.718,42,29S39.776,24,37.059,24z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/equal-2.svg b/img/icons/essential-collection/svg/equal-2.svg
new file mode 100644
index 00000000..45352c4a
--- /dev/null
+++ b/img/icons/essential-collection/svg/equal-2.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect style="fill:#E7ECED;" width="58" height="58"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" x1="47" y1="24" x2="11" y2="24"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" x1="47" y1="34" x2="11" y2="34"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/equal.svg b/img/icons/essential-collection/svg/equal.svg
new file mode 100644
index 00000000..9ba79496
--- /dev/null
+++ b/img/icons/essential-collection/svg/equal.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 36 36" style="enable-background:new 0 0 36 36;" xml:space="preserve">
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-miterlimit:10;" x1="36" y1="13" x2="0" y2="13"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-miterlimit:10;" x1="36" y1="23" x2="0" y2="23"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/error.svg b/img/icons/essential-collection/svg/error.svg
new file mode 100644
index 00000000..b30ccf33
--- /dev/null
+++ b/img/icons/essential-collection/svg/error.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<circle style="fill:#D75A4A;" cx="25" cy="25" r="25"/>
+<polyline style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" points="16,34 25,25 34,16
+ "/>
+<polyline style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" points="16,16 25,25 34,34
+ "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/exit-1.svg b/img/icons/essential-collection/svg/exit-1.svg
new file mode 100644
index 00000000..5cbd1bc9
--- /dev/null
+++ b/img/icons/essential-collection/svg/exit-1.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53 53" style="enable-background:new 0 0 53 53;" xml:space="preserve">
+<polygon style="fill:#556080;" points="0.5,0 0.5,46 22.5,46 34.5,46 34.5,29 34.5,17 34.5,0 "/>
+<polygon style="fill:#7383BF;" points="22.5,7 0.5,0 0.5,46 22.5,53 "/>
+<line style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="39.5" y1="35" x2="51.5" y2="23"/>
+<line style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="39.5" y1="11" x2="51.5" y2="23"/>
+<line style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="51.5" y1="23" x2="27.5" y2="23"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/exit-2.svg b/img/icons/essential-collection/svg/exit-2.svg
new file mode 100644
index 00000000..6ee038bb
--- /dev/null
+++ b/img/icons/essential-collection/svg/exit-2.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<line style="fill:none;stroke:#DC691D;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="41" y1="35.5" x2="53" y2="23.5"/>
+<line style="fill:none;stroke:#DC691D;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="41" y1="11.5" x2="53" y2="23.5"/>
+<line style="fill:none;stroke:#DC691D;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="53" y1="23.5" x2="34" y2="23.5"/>
+<polyline style="fill:#38454F;" points="22,46.5 34,46.5 34,29.5 34,17.5 34,0.5 0,0.5 0,46.5 "/>
+<polygon style="fill:#E7ECED;" points="22,7.5 0,0.5 0,46.5 22,53.5 "/>
+<line style="fill:none;stroke:#839594;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="14" y1="29.5" x2="19" y2="31.5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/exit.svg b/img/icons/essential-collection/svg/exit.svg
new file mode 100644
index 00000000..dce4083e
--- /dev/null
+++ b/img/icons/essential-collection/svg/exit.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<polygon style="fill:#556080;" points="1,0 1,54 35,54 35,33 35,21 35,0 "/>
+<line style="fill:none;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="40" y1="39" x2="52" y2="27"/>
+<line style="fill:none;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="40" y1="15" x2="52" y2="27"/>
+<line style="fill:none;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="52" y1="27" x2="19" y2="27"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/eyeglasses.svg b/img/icons/essential-collection/svg/eyeglasses.svg
new file mode 100644
index 00000000..06926364
--- /dev/null
+++ b/img/icons/essential-collection/svg/eyeglasses.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#7383BF;" d="M26,30c0,6.075-4.813,11-10.928,11S4,36.075,4,30s4.957-11,11.072-11S26,23.925,26,30z"/>
+<path style="fill:#7383BF;" d="M56,30c0,6.075-4.813,11-10.928,11S34,36.075,34,30s4.957-11,11.072-11S56,23.925,56,30z"/>
+<path style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="M34,30
+ c-2.195-3.556-5.805-3.556-8,0"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="4" y1="30" x2="1" y2="30"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="56" y1="29" x2="59" y2="29"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/fast-forward-1.svg b/img/icons/essential-collection/svg/fast-forward-1.svg
new file mode 100644
index 00000000..0fd80b57
--- /dev/null
+++ b/img/icons/essential-collection/svg/fast-forward-1.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#25AE88;" cx="29" cy="29" r="29"/>
+<g>
+ <polygon style="fill:#FFFFFF;" points="54,29 32,44 32,29.273 32,14 "/>
+ <path style="fill:#FFFFFF;" d="M32,45c-0.16,0-0.32-0.038-0.467-0.116C31.205,44.711,31,44.371,31,44V14
+ c0-0.371,0.205-0.711,0.533-0.884c0.327-0.174,0.725-0.15,1.03,0.058l22,15C54.837,28.36,55,28.669,55,29s-0.163,0.64-0.437,0.826
+ l-22,15C32.395,44.941,32.197,45,32,45z M33,15.893v26.215L52.225,29L33,15.893z"/>
+</g>
+<g>
+ <polygon style="fill:#FFFFFF;" points="32,29 10,44 10,29.273 10,14 "/>
+ <path style="fill:#FFFFFF;" d="M10,45c-0.16,0-0.32-0.038-0.467-0.116C9.205,44.711,9,44.371,9,44V14
+ c0-0.371,0.205-0.711,0.533-0.884c0.327-0.174,0.725-0.15,1.03,0.058l22,15C32.837,28.36,33,28.669,33,29s-0.163,0.64-0.437,0.826
+ l-22,15C10.395,44.941,10.197,45,10,45z M11,15.893v26.215L30.225,29L11,15.893z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/fast-forward.svg b/img/icons/essential-collection/svg/fast-forward.svg
new file mode 100644
index 00000000..c81fe83b
--- /dev/null
+++ b/img/icons/essential-collection/svg/fast-forward.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 55 55" style="enable-background:new 0 0 55 55;" xml:space="preserve">
+<polygon style="fill:#424A60;" points="27,27.5 0,46.487 0,27.845 0,8.513 "/>
+<polygon style="fill:#424A60;" points="55,27.5 28,46.5 28,27.5 28,8.5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/fax.svg b/img/icons/essential-collection/svg/fax.svg
new file mode 100644
index 00000000..f5b1700d
--- /dev/null
+++ b/img/icons/essential-collection/svg/fax.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#7383BF;" points="49,35 49,52 52,52 52,49 58,49 58,17 0,17 0,49 6,49 6,52 9,52 9,35 "/>
+<rect x="6" y="41" style="fill:#556080;" width="46" height="11"/>
+<rect y="17" style="fill:#556080;" width="58" height="18"/>
+<polygon style="fill:#EDEADA;" points="49,0 49,7 49,17 9,17 9,0 "/>
+<circle style="fill:#88C057;" cx="49" cy="26" r="4"/>
+<path style="fill:#CEC9AE;" d="M35,8H17c-0.553,0-1-0.447-1-1s0.447-1,1-1h18c0.553,0,1,0.447,1,1S35.553,8,35,8z"/>
+<path style="fill:#CEC9AE;" d="M41,13H17c-0.553,0-1-0.447-1-1s0.447-1,1-1h24c0.553,0,1,0.447,1,1S41.553,13,41,13z"/>
+<path style="fill:#FFFFFF;" d="M8,23H5c-0.553,0-1-0.447-1-1s0.447-1,1-1h3c0.553,0,1,0.447,1,1S8.553,23,8,23z"/>
+<path style="fill:#FFFFFF;" d="M8,27H5c-0.553,0-1-0.447-1-1s0.447-1,1-1h3c0.553,0,1,0.447,1,1S8.553,27,8,27z"/>
+<path style="fill:#FFFFFF;" d="M8,31H5c-0.553,0-1-0.447-1-1s0.447-1,1-1h3c0.553,0,1,0.447,1,1S8.553,31,8,31z"/>
+<path style="fill:#FFFFFF;" d="M15,23h-3c-0.553,0-1-0.447-1-1s0.447-1,1-1h3c0.553,0,1,0.447,1,1S15.553,23,15,23z"/>
+<path style="fill:#FFFFFF;" d="M15,27h-3c-0.553,0-1-0.447-1-1s0.447-1,1-1h3c0.553,0,1,0.447,1,1S15.553,27,15,27z"/>
+<path style="fill:#FFFFFF;" d="M15,31h-3c-0.553,0-1-0.447-1-1s0.447-1,1-1h3c0.553,0,1,0.447,1,1S15.553,31,15,31z"/>
+<path style="fill:#FFFFFF;" d="M22,23h-3c-0.553,0-1-0.447-1-1s0.447-1,1-1h3c0.553,0,1,0.447,1,1S22.553,23,22,23z"/>
+<path style="fill:#FFFFFF;" d="M22,27h-3c-0.553,0-1-0.447-1-1s0.447-1,1-1h3c0.553,0,1,0.447,1,1S22.553,27,22,27z"/>
+<path style="fill:#FFFFFF;" d="M22,31h-3c-0.553,0-1-0.447-1-1s0.447-1,1-1h3c0.553,0,1,0.447,1,1S22.553,31,22,31z"/>
+<rect x="9" y="35" style="fill:#EDEADA;" width="40" height="23"/>
+<path style="fill:#CEC9AE;" d="M41,44H17c-0.553,0-1-0.447-1-1s0.447-1,1-1h24c0.553,0,1,0.447,1,1S41.553,44,41,44z"/>
+<path style="fill:#CEC9AE;" d="M41,49H17c-0.553,0-1-0.447-1-1s0.447-1,1-1h24c0.553,0,1,0.447,1,1S41.553,49,41,49z"/>
+<polygon style="fill:#E2DFD5;" points="49,15 49,15.824 49,17 9,17 9,15 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/file-1.svg b/img/icons/essential-collection/svg/file-1.svg
new file mode 100644
index 00000000..383f15ae
--- /dev/null
+++ b/img/icons/essential-collection/svg/file-1.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#EDEADA;" points="52,19 38,5 11,5 11,58 52,58 "/>
+<polygon style="fill:#C1BCA4;" points="11,5 38,5 47,14 47,0 6,0 6,53 11,53 "/>
+<g>
+ <path style="fill:#CEC9AE;" d="M19,26h25c0.552,0,1-0.447,1-1s-0.448-1-1-1H19c-0.552,0-1,0.447-1,1S18.448,26,19,26z"/>
+ <path style="fill:#CEC9AE;" d="M19,18h10c0.552,0,1-0.447,1-1s-0.448-1-1-1H19c-0.552,0-1,0.447-1,1S18.448,18,19,18z"/>
+ <path style="fill:#CEC9AE;" d="M44,32H19c-0.552,0-1,0.447-1,1s0.448,1,1,1h25c0.552,0,1-0.447,1-1S44.552,32,44,32z"/>
+ <path style="fill:#CEC9AE;" d="M44,40H19c-0.552,0-1,0.447-1,1s0.448,1,1,1h25c0.552,0,1-0.447,1-1S44.552,40,44,40z"/>
+ <path style="fill:#CEC9AE;" d="M44,48H19c-0.552,0-1,0.447-1,1s0.448,1,1,1h25c0.552,0,1-0.447,1-1S44.552,48,44,48z"/>
+</g>
+<polygon style="fill:#CEC9AE;" points="38,5 38,19 52,19 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/file-2.svg b/img/icons/essential-collection/svg/file-2.svg
new file mode 100644
index 00000000..faeed1f9
--- /dev/null
+++ b/img/icons/essential-collection/svg/file-2.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<polygon style="fill:#EDEADA;" points="49,20 34,5 11,5 11,55 49,55 "/>
+<circle style="fill:#FFFFFF;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="31.453" cy="37.453" r="10.828"/>
+<line style="fill:none;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="39.244" y1="45.244" x2="52" y2="58"/>
+<path style="fill:#CEC9AE;" d="M31.625,35h-6c-0.553,0-1-0.447-1-1s0.447-1,1-1h6c0.553,0,1,0.447,1,1S32.178,35,31.625,35z"/>
+<path style="fill:#CEC9AE;" d="M37.625,41h-12c-0.553,0-1-0.447-1-1s0.447-1,1-1h12c0.553,0,1,0.447,1,1S38.178,41,37.625,41z"/>
+<polygon style="fill:#E2DBBF;" points="11,5 34,5 44,15 44,0 6,0 6,50 11,50 "/>
+<path style="fill:#CEC9AE;" d="M48.712,20H34V5.288c0-0.106,0.129-0.16,0.204-0.084l14.592,14.592
+ C48.871,19.871,48.818,20,48.712,20z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/file.svg b/img/icons/essential-collection/svg/file.svg
new file mode 100644
index 00000000..5b541f95
--- /dev/null
+++ b/img/icons/essential-collection/svg/file.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#EDEADA;" points="51.5,14 37.5,0 6.5,0 6.5,58 51.5,58 "/>
+<g>
+ <path style="fill:#CEC9AE;" d="M16.5,23h25c0.552,0,1-0.447,1-1s-0.448-1-1-1h-25c-0.552,0-1,0.447-1,1S15.948,23,16.5,23z"/>
+ <path style="fill:#CEC9AE;" d="M16.5,15h10c0.552,0,1-0.447,1-1s-0.448-1-1-1h-10c-0.552,0-1,0.447-1,1S15.948,15,16.5,15z"/>
+ <path style="fill:#CEC9AE;" d="M41.5,29h-25c-0.552,0-1,0.447-1,1s0.448,1,1,1h25c0.552,0,1-0.447,1-1S42.052,29,41.5,29z"/>
+ <path style="fill:#CEC9AE;" d="M41.5,37h-25c-0.552,0-1,0.447-1,1s0.448,1,1,1h25c0.552,0,1-0.447,1-1S42.052,37,41.5,37z"/>
+ <path style="fill:#CEC9AE;" d="M41.5,45h-25c-0.552,0-1,0.447-1,1s0.448,1,1,1h25c0.552,0,1-0.447,1-1S42.052,45,41.5,45z"/>
+</g>
+<polygon style="fill:#CEC9AE;" points="37.5,0 37.5,14 51.5,14 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/film.svg b/img/icons/essential-collection/svg/film.svg
new file mode 100644
index 00000000..1fec9d9c
--- /dev/null
+++ b/img/icons/essential-collection/svg/film.svg
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M47,47
+ c0,5.527,4.473,10,10,10"/>
+<path style="fill:#424A60;" d="M28,16c-2.106,0-4.083,0.546-5.804,1.499C22.863,20.086,25.205,22,28,22s5.137-1.914,5.804-4.501
+ C32.083,16.546,30.106,16,28,16z"/>
+<path style="fill:#424A60;" d="M28,40c2.106,0,4.083-0.546,5.804-1.499C33.137,35.914,30.795,34,28,34s-5.137,1.914-5.804,4.501
+ C23.917,39.454,25.894,40,28,40z"/>
+<path style="fill:#424A60;" d="M40,28c0-2.106-0.546-4.083-1.499-5.803C35.914,22.863,34,25.205,34,28s1.914,5.137,4.501,5.803
+ C39.454,32.083,40,30.106,40,28z"/>
+<path style="fill:#424A60;" d="M17.499,22.197C16.546,23.917,16,25.894,16,28s0.546,4.083,1.499,5.803
+ C20.086,33.137,22,30.795,22,28S20.086,22.863,17.499,22.197z"/>
+<path style="fill:#C7CAC7;" d="M28,0C12.536,0,0,12.536,0,28c0,15.464,12.536,28,28,28s28-12.536,28-28C56,12.536,43.464,0,28,0z
+ M28,10c3.314,0,6,2.686,6,6s-2.686,6-6,6s-6-2.686-6-6S24.686,10,28,10z M16,34c-3.314,0-6-2.686-6-6s2.686-6,6-6s6,2.686,6,6
+ S19.314,34,16,34z M28,46c-3.314,0-6-2.686-6-6s2.686-6,6-6s6,2.686,6,6S31.314,46,28,46z M40,34c-3.314,0-6-2.686-6-6s2.686-6,6-6
+ s6,2.686,6,6S43.314,34,40,34z"/>
+<path style="fill:#E7ECED;" d="M28,4C14.745,4,4,14.745,4,28s10.745,24,24,24s24-10.745,24-24S41.255,4,28,4z M28,10
+ c3.314,0,6,2.686,6,6s-2.686,6-6,6s-6-2.686-6-6S24.686,10,28,10z M16,34c-3.314,0-6-2.686-6-6s2.686-6,6-6s6,2.686,6,6
+ S19.314,34,16,34z M28,46c-3.314,0-6-2.686-6-6s2.686-6,6-6s6,2.686,6,6S31.314,46,28,46z M40,34c-3.314,0-6-2.686-6-6s2.686-6,6-6
+ s6,2.686,6,6S43.314,34,40,34z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/fingerprint.svg b/img/icons/essential-collection/svg/fingerprint.svg
new file mode 100644
index 00000000..b34465b5
--- /dev/null
+++ b/img/icons/essential-collection/svg/fingerprint.svg
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58.999 58.999" style="enable-background:new 0 0 58.999 58.999;" xml:space="preserve">
+<g>
+ <path style="fill:#C7CAC7;" d="M29.083,26.038c-0.53,0.154-0.836,0.708-0.683,1.239c0.027,0.093,2.697,9.591,1.962,30.687
+ c-0.02,0.553,0.412,1.016,0.964,1.034c0.012,0.001,0.024,0.001,0.036,0.001c0.536,0,0.979-0.425,0.998-0.965
+ c0.747-21.414-1.925-30.919-2.038-31.313C30.169,26.19,29.616,25.888,29.083,26.038z"/>
+ <path style="fill:#C7CAC7;" d="M54.228,16.479C49.992,6.469,40.232,0,29.362,0c-3.587,0-7.085,0.701-10.396,2.083
+ c-1.834,0.765-3.567,1.675-5.151,2.704c-0.463,0.302-0.595,0.921-0.294,1.384c0.302,0.463,0.922,0.595,1.384,0.294
+ c1.483-0.964,3.108-1.817,4.831-2.536C22.803,2.648,26.041,2,29.362,2c10.064,0,19.102,5.989,23.023,15.259
+ c1.63,3.854,2.511,10.95,2.891,14.838c0.051,0.517,0.485,0.902,0.994,0.902c0.032,0,0.065-0.002,0.099-0.005
+ c0.549-0.054,0.951-0.543,0.897-1.093C56.789,27.015,55.875,20.372,54.228,16.479z"/>
+ <path style="fill:#C7CAC7;" d="M10.851,9.711c0.394-0.387,0.397-1.021,0.01-1.414c-0.387-0.393-1.02-0.397-1.414-0.01
+ C4.069,13.585-1.288,23.438,3.73,40.284c0.129,0.435,0.526,0.715,0.958,0.715c0.094,0,0.19-0.014,0.285-0.042
+ c0.529-0.157,0.831-0.714,0.673-1.243C1.899,27.132,3.698,16.758,10.851,9.711z"/>
+ <path style="fill:#C7CAC7;" d="M30.13,6.014c-3.06-0.119-6.038,0.432-8.853,1.606C11.471,11.711,6.257,22.494,9.15,32.704
+ c0.289,1.021,0.585,2.107,0.744,3.189c0.358,2.449,0.377,6.956,0.377,14.105c0,0.553,0.447,1,1,1s1-0.447,1-1
+ c0-7.458-0.019-11.804-0.398-14.396c-0.176-1.202-0.491-2.36-0.799-3.444c-2.617-9.236,2.1-18.992,10.973-22.693
+ c2.548-1.063,5.259-1.546,8.012-1.454C37.17,8.267,45.23,14.535,47.661,21.7c2.104,6.199,2.122,16.76,1.861,26.271
+ c-0.015,0.552,0.421,1.012,0.973,1.027c0.542-0.01,1.012-0.419,1.027-0.973c0.265-9.689,0.238-20.471-1.967-26.969
+ C46.838,13.049,38.124,6.3,30.13,6.014z"/>
+ <path style="fill:#C7CAC7;" d="M21.935,16.337c0.452-0.317,0.562-0.941,0.244-1.393c-0.316-0.452-0.941-0.563-1.393-0.244
+ c-5.15,3.616-7.388,10.563-5.565,17.295c0.021,0.073,2.051,7.462,2.051,19.004c0,0.553,0.447,1,1,1s1-0.447,1-1
+ c0-11.813-2.038-19.232-2.123-19.535C15.548,25.55,17.472,19.471,21.935,16.337z"/>
+ <path style="fill:#C7CAC7;" d="M29.362,12c-1.087,0-2.169,0.117-3.218,0.349c-0.539,0.119-0.88,0.652-0.761,1.192
+ c0.119,0.539,0.646,0.873,1.192,0.761c0.907-0.2,1.845-0.302,2.786-0.302c5.233,0,9.933,3.114,11.972,7.935
+ c2.43,5.74,2.589,14.953,2.028,31.029c-0.02,0.552,0.412,1.016,0.964,1.034c0.012,0.001,0.024,0.001,0.036,0.001
+ c0.536,0,0.979-0.425,0.998-0.965c0.584-16.723,0.406-25.758-2.185-31.879C40.823,15.594,35.401,12,29.362,12z"/>
+ <path style="fill:#C7CAC7;" d="M39.272,48.006c0.004-0.553-0.44-1.003-0.993-1.007c-0.002,0-0.005,0-0.007,0
+ c-0.549,0-0.996,0.443-1,0.993c-0.005,0.752,0.02,1.85,0.047,3.036c0.039,1.725,0.083,3.68,0.04,4.937
+ c-0.02,0.552,0.412,1.015,0.965,1.033c0.012,0.001,0.023,0.001,0.035,0.001c0.536,0,0.979-0.425,0.998-0.966
+ c0.046-1.313,0.001-3.299-0.039-5.051C39.291,49.82,39.267,48.743,39.272,48.006z"/>
+ <path style="fill:#C7CAC7;" d="M29.362,19c-1.062,0-2.098,0.208-3.081,0.618c-3.892,1.624-5.783,6.015-4.4,10.214
+ c0.754,2.289,1.391,14.272,1.391,26.167c0,0.553,0.447,1,1,1s1-0.447,1-1c0-10.707-0.57-23.995-1.49-26.792
+ c-1.054-3.197,0.353-6.526,3.27-7.743C27.789,21.156,28.566,21,29.362,21c2.415,0,4.584,1.438,5.529,3.67
+ c1.867,4.419,2.422,12.419,2.558,18.353c0.013,0.544,0.458,0.977,1,0.977c0.007,0,0.016,0,0.023,0
+ c0.552-0.013,0.989-0.471,0.977-1.023c-0.141-6.106-0.726-14.375-2.72-19.093C35.475,20.917,32.583,19,29.362,19z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/flag-1.svg b/img/icons/essential-collection/svg/flag-1.svg
new file mode 100644
index 00000000..6cbb2558
--- /dev/null
+++ b/img/icons/essential-collection/svg/flag-1.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<rect x="8.5" y="4" style="fill:#14A085;" width="45" height="32"/>
+<path style="fill:#424A60;" d="M7.5,0c-0.552,0-1,0.447-1,1v3v55c0,0.553,0.448,1,1,1s1-0.447,1-1V4V1C8.5,0.447,8.052,0,7.5,0z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/flag-2.svg b/img/icons/essential-collection/svg/flag-2.svg
new file mode 100644
index 00000000..08c36183
--- /dev/null
+++ b/img/icons/essential-collection/svg/flag-2.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#EBBA16;" d="M33,4.074c-8.167,4.333-23,0-23,0v30c0,0,14.833,4.333,23,0c8.167-4.333,19,0,19,0v-30
+ C52,4.074,41.167-0.259,33,4.074z"/>
+<path style="fill:#424A60;" d="M9,0C8.448,0,8,0.447,8,1v3v55c0,0.553,0.448,1,1,1s1-0.447,1-1V4V1C10,0.447,9.552,0,9,0z"/>
+<path style="fill:#DBA91F;" d="M36,2.879c-1.022,0.292-2.03,0.681-3,1.196c-3.099,1.644-7.156,2.039-11,1.898v30
+ c3.844,0.141,7.901-0.254,11-1.898c0.97-0.515,1.978-0.904,3-1.196V2.879z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/flag-3.svg b/img/icons/essential-collection/svg/flag-3.svg
new file mode 100644
index 00000000..042fdc50
--- /dev/null
+++ b/img/icons/essential-collection/svg/flag-3.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<polygon style="fill:#48A0DC;" points="54,36 8,36 8,4 54,4 44,20 "/>
+<path style="fill:#424A60;" d="M7,0C6.448,0,6,0.447,6,1v3v55c0,0.553,0.448,1,1,1s1-0.447,1-1V4V1C8,0.447,7.552,0,7,0z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/flag-4.svg b/img/icons/essential-collection/svg/flag-4.svg
new file mode 100644
index 00000000..00be1a89
--- /dev/null
+++ b/img/icons/essential-collection/svg/flag-4.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<rect x="16.5" y="31" style="fill:#871B1B;" width="10" height="6"/>
+<path style="fill:#424A60;" d="M3.5,0c-0.552,0-1,0.447-1,1v3v55c0,0.553,0.448,1,1,1s1-0.447,1-1V4V1C4.5,0.447,4.052,0,3.5,0z"/>
+<rect x="4.5" y="4" style="fill:#DD352E;" width="22" height="29"/>
+<path style="fill:#C03A2B;" d="M26.5,9v24h-6c-2.209,0-4,1.791-4,4c0,2.209,1.791,4,4,4h4h33l-11-16l11-16H26.5z"/>
+<path style="fill:#B02721;" d="M16.5,37c0,2.209,1.791,4,4,4h4h2v-8h-6C18.291,33,16.5,34.791,16.5,37z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/flag.svg b/img/icons/essential-collection/svg/flag.svg
new file mode 100644
index 00000000..e6517bc5
--- /dev/null
+++ b/img/icons/essential-collection/svg/flag.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<polygon style="fill:#CC4B4C;" points="52,23.5 10,40 10,22 10,4 "/>
+<path style="fill:#424A60;" d="M9,0C8.448,0,8,0.447,8,1v3v55c0,0.553,0.448,1,1,1s1-0.447,1-1V4V1C10,0.447,9.552,0,9,0z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/focus.svg b/img/icons/essential-collection/svg/focus.svg
new file mode 100644
index 00000000..533f8296
--- /dev/null
+++ b/img/icons/essential-collection/svg/focus.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<line style="fill:none;stroke:#659C35;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="30.028" y1="1" x2="30.028" y2="11"/>
+<line style="fill:none;stroke:#659C35;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="30.028" y1="11" x2="34.028" y2="7"/>
+<line style="fill:none;stroke:#659C35;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="30.028" y1="11" x2="26.028" y2="7"/>
+<line style="fill:none;stroke:#659C35;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="30.028" y1="59" x2="30.028" y2="49"/>
+<line style="fill:none;stroke:#659C35;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="30.028" y1="49" x2="26.028" y2="53"/>
+<line style="fill:none;stroke:#659C35;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="30.028" y1="49" x2="34.028" y2="53"/>
+<path style="fill:#E7ECED;" d="M57.972,29.642l-7.234,7.234c-11.517,11.517-30.19,11.517-41.707,0l-7.004-7.004l7.234-7.234
+ c11.517-11.517,30.19-11.517,41.707,0L57.972,29.642z"/>
+<circle style="fill:#3083C9;" cx="29.67" cy="29.783" r="11.813"/>
+<path style="fill:#FFFFFF;" d="M22.857,31c-0.552,0-1-0.448-1-1c0-3.86,3.14-7,7-7c0.552,0,1,0.448,1,1s-0.448,1-1,1
+ c-2.757,0-5,2.243-5,5C23.857,30.552,23.41,31,22.857,31z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-1.svg b/img/icons/essential-collection/svg/folder-1.svg
new file mode 100644
index 00000000..0c59b61e
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-1.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#7383BF;" points="20,3.5 25,10.5 58,10.5 58,3.5 "/>
+<polygon style="fill:#424A60;" points="25,10.5 20,3.5 0,3.5 0,10.5 0,54.5 58,54.5 58,17.5 30,17.5 "/>
+<polygon style="fill:#71C3A9;" points="30,17.5 58,17.5 58,10.5 25,10.5 "/>
+<g>
+ <path style="fill:#7383BF;" d="M18,29.5h14c0.552,0,1-0.447,1-1s-0.448-1-1-1H18c-0.552,0-1,0.447-1,1S17.448,29.5,18,29.5z"/>
+ <path style="fill:#7383BF;" d="M18,35.5h22c0.552,0,1-0.447,1-1s-0.448-1-1-1H18c-0.552,0-1,0.447-1,1S17.448,35.5,18,35.5z"/>
+ <path style="fill:#7383BF;" d="M40,39.5H18c-0.552,0-1,0.447-1,1s0.448,1,1,1h22c0.552,0,1-0.447,1-1S40.552,39.5,40,39.5z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-10.svg b/img/icons/essential-collection/svg/folder-10.svg
new file mode 100644
index 00000000..3e239431
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-10.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#EFCE4A;" d="M46.324,52.5H1.565c-1.03,0-1.779-0.978-1.51-1.973l10.166-27.871
+ c0.184-0.682,0.803-1.156,1.51-1.156H56.49c1.03,0,1.51,0.984,1.51,1.973L47.834,51.344C47.65,52.026,47.031,52.5,46.324,52.5z"/>
+<g>
+ <path style="fill:#EBBA16;" d="M50.268,12.5H25l-5-7H1.732C0.776,5.5,0,6.275,0,7.232V49.96c0.069,0.002,0.138,0.006,0.205,0.01
+ l10.015-27.314c0.184-0.683,0.803-1.156,1.51-1.156H52v-7.268C52,13.275,51.224,12.5,50.268,12.5z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-11.svg b/img/icons/essential-collection/svg/folder-11.svg
new file mode 100644
index 00000000..9860c861
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-11.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#EFCE4A;" d="M46.324,52.5H1.565c-1.03,0-1.779-0.978-1.51-1.973l10.166-27.871
+ c0.184-0.682,0.803-1.156,1.51-1.156H56.49c1.03,0,1.51,0.984,1.51,1.973L47.834,51.344C47.65,52.026,47.031,52.5,46.324,52.5z"/>
+<g>
+ <path style="fill:#F4EFDC;" d="M10.221,22.656c0.184-0.683,0.803-1.156,1.51-1.156H53v-9H9l-6,6v23.953L10.221,22.656z"/>
+</g>
+<path style="fill:#EBBA16;" d="M3,18.5l6-6h16l-5-7H1.732C0.776,5.5,0,6.275,0,7.232V49.96c0.069,0.002,0.138,0.006,0.205,0.01
+ L3,42.349V18.5z"/>
+<g>
+ <rect x="28" y="17.5" style="fill:#D1BF86;" width="2" height="4"/>
+ <rect x="35" y="17.5" style="fill:#D1BF86;" width="2" height="4"/>
+ <rect x="42" y="17.5" style="fill:#D1BF86;" width="2" height="4"/>
+ <rect x="14" y="17.5" style="fill:#D1BF86;" width="2" height="4"/>
+ <rect x="21" y="17.5" style="fill:#D1BF86;" width="2" height="4"/>
+</g>
+<polygon style="fill:#D1BF86;" points="9,18.5 9,12.5 3,18.5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-12.svg b/img/icons/essential-collection/svg/folder-12.svg
new file mode 100644
index 00000000..6ee0e93e
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-12.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#EFCE4A;" d="M46.324,52.5H1.565c-1.03,0-1.779-0.978-1.51-1.973l10.166-27.871
+ c0.184-0.682,0.803-1.156,1.51-1.156H56.49c1.03,0,1.51,0.984,1.51,1.973L47.834,51.344C47.65,52.026,47.031,52.5,46.324,52.5z"/>
+<path style="fill:#F4EFDC;" d="M10.221,22.656c0.184-0.683,0.803-1.156,1.51-1.156H53v-7H9l-6,6v21.953L10.221,22.656z"/>
+<path style="fill:#EBBA16;" d="M23.571,10.5L20,5.5H1.732C0.776,5.5,0,6.275,0,7.232V49.96c0.069,0.002,0.138,0.006,0.205,0.01
+ L3,42.349V20.5l2-2v-8H23.571z"/>
+<polygon style="fill:#D1BF86;" points="5,10.5 5,18.5 9,14.5 51,14.5 51,10.5 "/>
+<rect x="28" y="19.5" style="fill:#BFBAA5;" width="2" height="2"/>
+<rect x="35" y="19.5" style="fill:#BFBAA5;" width="2" height="2"/>
+<rect x="42" y="19.5" style="fill:#BFBAA5;" width="2" height="2"/>
+<rect x="14" y="19.5" style="fill:#BFBAA5;" width="2" height="2"/>
+<rect x="21" y="19.5" style="fill:#BFBAA5;" width="2" height="2"/>
+<polygon style="fill:#CEC9AE;" points="9,20.5 9,14.5 3,20.5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-13.svg b/img/icons/essential-collection/svg/folder-13.svg
new file mode 100644
index 00000000..8de423aa
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-13.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#EFCE4A;" d="M46.324,58H1.565c-1.03,0-1.779-0.978-1.51-1.973l10.166-27.871C10.405,27.474,11.024,27,11.731,27
+ H56.49c1.03,0,1.51,0.984,1.51,1.973L47.834,56.844C47.65,57.526,47.031,58,46.324,58z"/>
+<path style="fill:#F4EFDC;" d="M10.221,28.156C10.405,27.474,11.024,27,11.731,27H46V15L31,0H8v34.245L10.221,28.156z"/>
+<g>
+ <path style="fill:#EBBA16;" d="M50.268,18H46v9h6v-7.268C52,18.775,51.224,18,50.268,18z"/>
+ <path style="fill:#EBBA16;" d="M8,11H1.732C0.776,11,0,11.775,0,12.732V55.46c0.069,0.002,0.138,0.006,0.205,0.01L8,34.212V11z"/>
+</g>
+<path style="fill:#CEC9AE;" d="M25,16H15c-0.552,0-1-0.447-1-1s0.448-1,1-1h10c0.552,0,1,0.447,1,1S25.552,16,25,16z"/>
+<path style="fill:#CEC9AE;" d="M25,9H15c-0.552,0-1-0.447-1-1s0.448-1,1-1h10c0.552,0,1,0.447,1,1S25.552,9,25,9z"/>
+<path style="fill:#CEC9AE;" d="M39,23H15c-0.552,0-1-0.447-1-1s0.448-1,1-1h24c0.552,0,1,0.447,1,1S39.552,23,39,23z"/>
+<polygon style="fill:#D1BF86;" points="31,15 46,15 31,0 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-14.svg b/img/icons/essential-collection/svg/folder-14.svg
new file mode 100644
index 00000000..78088936
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-14.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#EFCE4A;" d="M46.324,58H1.565c-1.03,0-1.779-0.978-1.51-1.973l10.166-27.871C10.405,27.474,11.024,27,11.731,27
+ H56.49c1.03,0,1.51,0.984,1.51,1.973L47.834,56.844C47.65,57.526,47.031,58,46.324,58z"/>
+<path style="fill:#EBBA16;" d="M50.268,18H48v9h4v-7.268C52,18.775,51.224,18,50.268,18z"/>
+<path style="fill:#EBBA16;" d="M4,11H1.732C0.776,11,0,11.775,0,12.732V55.46c0.069,0.002,0.138,0.006,0.205,0.01L4,45.122V11z"/>
+<path style="fill:#F4EFDC;" d="M10.221,28.156C10.405,27.474,11.024,27,11.731,27h2H48V15V0H33H10v28.761L10.221,28.156z"/>
+<g>
+ <path style="fill:#CEC9AE;" d="M17,16h24c0.552,0,1-0.447,1-1s-0.448-1-1-1H17c-0.552,0-1,0.447-1,1S16.448,16,17,16z"/>
+ <path style="fill:#CEC9AE;" d="M17,9h10c0.552,0,1-0.447,1-1s-0.448-1-1-1H17c-0.552,0-1,0.447-1,1S16.448,9,17,9z"/>
+ <path style="fill:#CEC9AE;" d="M41,21H17c-0.552,0-1,0.447-1,1s0.448,1,1,1h24c0.552,0,1-0.447,1-1S41.552,21,41,21z"/>
+</g>
+<polygon style="fill:#CEC9AE;" points="10,28.761 10,2 7,2 7,36.986 "/>
+<polygon style="fill:#D1BF86;" points="7,36.986 7,4 4,4 4,45.211 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-15.svg b/img/icons/essential-collection/svg/folder-15.svg
new file mode 100644
index 00000000..ad07d28e
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-15.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#556080;" points="25,10.5 20,3.5 0,3.5 0,10.5 0,54.5 58,54.5 58,17.5 30,17.5 "/>
+<polygon style="fill:#3C4451;" points="30,17.5 58,17.5 58,10.5 25,10.5 "/>
+<rect x="28" y="25.5" style="fill:#424A60;" width="2" height="20"/>
+<polygon style="fill:#424A60;" points="29,46.914 20.293,38.207 21.707,36.793 29,44.086 36.293,36.793 37.707,38.207 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-16.svg b/img/icons/essential-collection/svg/folder-16.svg
new file mode 100644
index 00000000..5a27bfb2
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-16.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#556080;" points="25,10.5 20,3.5 0,3.5 0,10.5 0,54.5 58,54.5 58,17.5 30,17.5 "/>
+<polygon style="fill:#3C4451;" points="30,17.5 58,17.5 58,10.5 25,10.5 "/>
+<rect x="28" y="25.5" style="fill:#424A60;" width="2" height="20"/>
+<polygon style="fill:#424A60;" points="36.293,34.207 29,26.914 21.707,34.207 20.293,32.793 29,24.086 37.707,32.793 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-17.svg b/img/icons/essential-collection/svg/folder-17.svg
new file mode 100644
index 00000000..6651c24e
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-17.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#556080;" points="25,10.5 20,3.5 0,3.5 0,10.5 0,54.5 58,54.5 58,17.5 30,17.5 "/>
+<polygon style="fill:#3C4451;" points="30,17.5 58,17.5 58,10.5 25,10.5 "/>
+<path style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M24,35.5v-7
+ c0-2.761,2.239-5,5-5h0c2.761,0,5,2.239,5,5v7"/>
+<rect x="20" y="33.5" style="fill:#7383BF;" width="18" height="14"/>
+<path style="fill:#424A60;" d="M32,39.5c0-1.657-1.343-3-3-3s-3,1.343-3,3c0,1.304,0.837,2.403,2,2.816V44.5c0,0.553,0.447,1,1,1
+ s1-0.447,1-1v-2.184C31.163,41.903,32,40.804,32,39.5z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-18.svg b/img/icons/essential-collection/svg/folder-18.svg
new file mode 100644
index 00000000..bbb8ad0a
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-18.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#556080;" points="25,10.5 20,3.5 0,3.5 0,10.5 0,54.5 58,54.5 58,17.5 30,17.5 "/>
+<polygon style="fill:#3C4451;" points="30,17.5 58,17.5 58,10.5 25,10.5 "/>
+<path style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M24,28.5c0-2.761,2.239-5,5-5
+ h0c2.761,0,5,2.239,5,5v5"/>
+<rect x="20" y="33.5" style="fill:#7383BF;" width="18" height="14"/>
+<path style="fill:#424A60;" d="M32,39.5c0-1.657-1.343-3-3-3s-3,1.343-3,3c0,1.304,0.837,2.403,2,2.816V44.5c0,0.553,0.447,1,1,1
+ s1-0.447,1-1v-2.184C31.163,41.903,32,40.804,32,39.5z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-19.svg b/img/icons/essential-collection/svg/folder-19.svg
new file mode 100644
index 00000000..e5049b02
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-19.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<polygon style="fill:#7383BF;" points="25.5,15 20.5,8 0.5,8 0.5,15 0.5,59 58.5,59 58.5,22 30.5,22 "/>
+<polygon style="fill:#EBBA16;" points="30.5,22 58.5,22 58.5,15 25.5,15 "/>
+<polygon style="fill:#556080;" points="58.5,11 28.5,11 23.5,4 3.5,4 3.5,8 20.5,8 25.5,15 58.5,15 "/>
+<polygon style="fill:#424A60;" points="58.5,7 31.5,7 26.5,0 6.5,0 6.5,4 23.5,4 28.5,11 58.5,11 "/>
+<rect x="27.5" y="36" style="fill:#EDEADA;" width="26" height="18"/>
+<g>
+ <rect x="32.5" y="40" style="fill:#CEC9AE;" width="10" height="2"/>
+ <rect x="32.5" y="44" style="fill:#CEC9AE;" width="16" height="2"/>
+ <rect x="32.5" y="48" style="fill:#CEC9AE;" width="16" height="2"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-2.svg b/img/icons/essential-collection/svg/folder-2.svg
new file mode 100644
index 00000000..dc0c155b
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-2.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#7383BF;" points="20,3.5 25,10.5 58,10.5 58,3.5 "/>
+<polygon style="fill:#424A60;" points="25,10.5 20,3.5 0,3.5 0,10.5 0,54.5 58,54.5 58,17.5 30,17.5 "/>
+<polygon style="fill:#71C3A9;" points="30,17.5 58,17.5 58,10.5 25,10.5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-3.svg b/img/icons/essential-collection/svg/folder-3.svg
new file mode 100644
index 00000000..6b37e721
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-3.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#EFCE4A;" d="M55.981,54.5H2.019C0.904,54.5,0,53.596,0,52.481V20.5h58v31.981C58,53.596,57.096,54.5,55.981,54.5z
+ "/>
+<path style="fill:#EBBA16;" d="M26.019,11.5V5.519C26.019,4.404,25.115,3.5,24,3.5H2.019C0.904,3.5,0,4.404,0,5.519V10.5v10h58
+ v-6.981c0-1.115-0.904-2.019-2.019-2.019H26.019z"/>
+<rect x="34" y="37.5" style="fill:#EDEADA;" width="19" height="12"/>
+<g>
+ <path style="fill:#CEC9AE;" d="M38,42.5h4c0.552,0,1-0.447,1-1s-0.448-1-1-1h-4c-0.552,0-1,0.447-1,1S37.448,42.5,38,42.5z"/>
+ <path style="fill:#CEC9AE;" d="M46,42.5h1c0.552,0,1-0.447,1-1s-0.448-1-1-1h-1c-0.552,0-1,0.447-1,1S45.448,42.5,46,42.5z"/>
+ <path style="fill:#CEC9AE;" d="M49,44.5H38c-0.552,0-1,0.447-1,1s0.448,1,1,1h11c0.552,0,1-0.447,1-1S49.552,44.5,49,44.5z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-4.svg b/img/icons/essential-collection/svg/folder-4.svg
new file mode 100644
index 00000000..9e9384ab
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-4.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#EFCE4A;" d="M55.981,54.5H2.019C0.904,54.5,0,53.596,0,52.481V20.5h58v31.981C58,53.596,57.096,54.5,55.981,54.5z
+ "/>
+<path style="fill:#EBBA16;" d="M26.019,11.5V5.519C26.019,4.404,25.115,3.5,24,3.5H2.019C0.904,3.5,0,4.404,0,5.519V10.5v10h58
+ v-6.981c0-1.115-0.904-2.019-2.019-2.019H26.019z"/>
+<g>
+ <path style="fill:#EB7937;" d="M18,32.5h14c0.552,0,1-0.447,1-1s-0.448-1-1-1H18c-0.552,0-1,0.447-1,1S17.448,32.5,18,32.5z"/>
+ <path style="fill:#EB7937;" d="M18,38.5h22c0.552,0,1-0.447,1-1s-0.448-1-1-1H18c-0.552,0-1,0.447-1,1S17.448,38.5,18,38.5z"/>
+ <path style="fill:#EB7937;" d="M40,42.5H18c-0.552,0-1,0.447-1,1s0.448,1,1,1h22c0.552,0,1-0.447,1-1S40.552,42.5,40,42.5z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-5.svg b/img/icons/essential-collection/svg/folder-5.svg
new file mode 100644
index 00000000..ed5bb411
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-5.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#EFCE4A;" d="M55.981,54.5H2.019C0.904,54.5,0,53.596,0,52.481V20.5h58v31.981C58,53.596,57.096,54.5,55.981,54.5z
+ "/>
+<path style="fill:#EBBA16;" d="M26.019,11.5V5.519C26.019,4.404,25.115,3.5,24,3.5H2.019C0.904,3.5,0,4.404,0,5.519V10.5v10h58
+ v-6.981c0-1.115-0.904-2.019-2.019-2.019H26.019z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-6.svg b/img/icons/essential-collection/svg/folder-6.svg
new file mode 100644
index 00000000..c0efe306
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-6.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57.912 57.912" style="enable-background:new 0 0 57.912 57.912;" xml:space="preserve">
+<path style="fill:#F7B563;" d="M52.723,55.956H5.189c-0.134,0-0.248-0.098-0.268-0.23L0.003,23.268
+ c-0.025-0.164,0.102-0.312,0.268-0.312h57.37c0.166,0,0.293,0.148,0.268,0.312l-4.918,32.458
+ C52.971,55.858,52.857,55.956,52.723,55.956z"/>
+<g>
+ <path style="fill:#B5885B;" d="M53.956,22.956V7.724c0-0.424-0.344-0.768-0.768-0.768H22.391c-0.27,0-0.52-0.141-0.658-0.373
+ L19.18,2.329c-0.139-0.231-0.389-0.373-0.658-0.373H4.724C4.3,1.956,3.956,2.3,3.956,2.724v20.232H53.956z"/>
+</g>
+<rect x="7.956" y="15.956" style="fill:#FFFFFF;" width="42" height="7"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-7.svg b/img/icons/essential-collection/svg/folder-7.svg
new file mode 100644
index 00000000..5e70f522
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-7.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57.912 57.912" style="enable-background:new 0 0 57.912 57.912;" xml:space="preserve">
+<path style="fill:#F7B563;" d="M52.723,55.956H5.189c-0.134,0-0.248-0.098-0.268-0.23L0.003,23.268
+ c-0.025-0.164,0.102-0.312,0.268-0.312h57.37c0.166,0,0.293,0.148,0.268,0.312l-4.918,32.458
+ C52.971,55.858,52.857,55.956,52.723,55.956z"/>
+<g>
+ <path style="fill:#B5885B;" d="M54,22.956V7.724c0-0.424-0.344-0.768-0.768-0.768H22.435c-0.27,0-0.52-0.141-0.658-0.373
+ l-2.553-4.255c-0.139-0.231-0.389-0.373-0.658-0.373H4.768C4.344,1.956,4,2.3,4,2.724v20.232H54z"/>
+</g>
+<rect x="7" y="18.956" style="fill:#FFFFFF;" width="44" height="4"/>
+<rect x="8" y="15.956" style="fill:#E7ECED;" width="42" height="3"/>
+<rect x="9" y="12.956" style="fill:#C7CAC7;" width="40" height="3"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-8.svg b/img/icons/essential-collection/svg/folder-8.svg
new file mode 100644
index 00000000..2f287268
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-8.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57.912 57.912" style="enable-background:new 0 0 57.912 57.912;" xml:space="preserve">
+<path style="fill:#F7B563;" d="M52.723,55.956H5.189c-0.134,0-0.248-0.098-0.268-0.23L0.003,23.268
+ c-0.025-0.164,0.102-0.312,0.268-0.312h57.37c0.166,0,0.293,0.148,0.268,0.312l-4.918,32.458
+ C52.971,55.858,52.857,55.956,52.723,55.956z"/>
+<g>
+ <path style="fill:#B5885B;" d="M54,22.956V7.724c0-0.424-0.344-0.768-0.768-0.768H22.435c-0.27,0-0.52-0.141-0.658-0.373
+ l-2.553-4.255c-0.139-0.231-0.389-0.373-0.658-0.373H4.768C4.344,1.956,4,2.3,4,2.724v20.232H54z"/>
+</g>
+<rect x="7" y="18.956" style="fill:#FFFFFF;" width="44" height="4"/>
+<rect x="8" y="15.956" style="fill:#E7ECED;" width="42" height="3"/>
+<rect x="9" y="12.956" style="fill:#C7CAC7;" width="40" height="3"/>
+<polygon style="fill:#424A60;" points="2.38,38.956 3.185,44.269 8.498,38.956 "/>
+<polygon style="fill:#EFCE4A;" points="11.326,38.956 8.498,38.956 3.185,44.269 3.557,46.725 4.106,50.347 15.498,38.956 "/>
+<polygon style="fill:#424A60;" points="18.326,38.956 15.498,38.956 4.106,50.347 4.198,50.956 6.326,50.956 11.498,50.956
+ 23.498,38.956 "/>
+<polygon style="fill:#EFCE4A;" points="26.326,38.956 23.498,38.956 11.498,50.956 14.326,50.956 19.498,50.956 31.498,38.956 "/>
+<polygon style="fill:#424A60;" points="34.326,38.956 31.498,38.956 19.498,50.956 22.326,50.956 27.498,50.956 39.498,38.956 "/>
+<polygon style="fill:#EFCE4A;" points="42.326,38.956 39.498,38.956 27.498,50.956 30.326,50.956 35.498,50.956 47.498,38.956 "/>
+<polygon style="fill:#424A60;" points="50.326,38.956 47.498,38.956 35.498,50.956 38.326,50.956 43.498,50.956 55.498,38.956 "/>
+<polygon style="fill:#EFCE4A;" points="55.498,38.956 43.498,50.956 46.326,50.956 53.713,50.956 55.033,42.249 55.532,38.956 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder-9.svg b/img/icons/essential-collection/svg/folder-9.svg
new file mode 100644
index 00000000..03e25654
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder-9.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57.912 57.912" style="enable-background:new 0 0 57.912 57.912;" xml:space="preserve">
+<g>
+ <path style="fill:#B5885B;" d="M54,22.956V7.724c0-0.424-0.344-0.768-0.768-0.768H22.435c-0.27,0-0.52-0.141-0.658-0.373
+ l-2.553-4.255c-0.139-0.231-0.389-0.373-0.658-0.373H4.768C4.344,1.956,4,2.3,4,2.724v20.232H54z"/>
+</g>
+<rect x="7" y="18.956" style="fill:#FFFFFF;" width="44" height="4"/>
+<rect x="8" y="15.956" style="fill:#E7ECED;" width="42" height="3"/>
+<rect x="9" y="12.956" style="fill:#C7CAC7;" width="40" height="3"/>
+<path style="fill:#F7B563;" d="M52.723,55.956H5.189c-0.134,0-0.248-0.098-0.268-0.23L0.003,23.268
+ c-0.025-0.164,0.102-0.312,0.268-0.312h57.37c0.166,0,0.293,0.148,0.268,0.312l-4.918,32.458
+ C52.971,55.858,52.857,55.956,52.723,55.956z"/>
+<rect x="26.956" y="36.956" style="fill:#EDEADA;" width="19" height="12"/>
+<g>
+ <path style="fill:#CEC9AE;" d="M30.956,41.956h4c0.553,0,1-0.447,1-1s-0.447-1-1-1h-4c-0.553,0-1,0.447-1,1
+ S30.403,41.956,30.956,41.956z"/>
+ <path style="fill:#CEC9AE;" d="M38.956,41.956h1c0.553,0,1-0.447,1-1s-0.447-1-1-1h-1c-0.553,0-1,0.447-1,1
+ S38.403,41.956,38.956,41.956z"/>
+ <path style="fill:#CEC9AE;" d="M41.956,43.956h-11c-0.553,0-1,0.447-1,1s0.447,1,1,1h11c0.553,0,1-0.447,1-1
+ S42.509,43.956,41.956,43.956z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/folder.svg b/img/icons/essential-collection/svg/folder.svg
new file mode 100644
index 00000000..c19ed25d
--- /dev/null
+++ b/img/icons/essential-collection/svg/folder.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#7383BF;" points="20,3.5 25,10.5 58,10.5 58,3.5 "/>
+<polygon style="fill:#424A60;" points="25,10.5 20,3.5 0,3.5 0,10.5 0,54.5 58,54.5 58,17.5 30,17.5 "/>
+<polygon style="fill:#71C3A9;" points="30,17.5 58,17.5 58,10.5 25,10.5 "/>
+<rect x="34" y="37.5" style="fill:#E6E6E6;" width="19" height="12"/>
+<g>
+ <path style="fill:#7383BF;" d="M38,42.5h4c0.552,0,1-0.447,1-1s-0.448-1-1-1h-4c-0.552,0-1,0.447-1,1S37.448,42.5,38,42.5z"/>
+ <path style="fill:#7383BF;" d="M46,42.5h1c0.552,0,1-0.447,1-1s-0.448-1-1-1h-1c-0.552,0-1,0.447-1,1S45.448,42.5,46,42.5z"/>
+ <path style="fill:#7383BF;" d="M49,44.5H38c-0.552,0-1,0.447-1,1s0.448,1,1,1h11c0.552,0,1-0.447,1-1S49.552,44.5,49,44.5z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/forbidden.svg b/img/icons/essential-collection/svg/forbidden.svg
new file mode 100644
index 00000000..90b486ae
--- /dev/null
+++ b/img/icons/essential-collection/svg/forbidden.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve">
+<circle style="fill:#D75A4A;stroke:#38454F;stroke-width:2;stroke-miterlimit:10;" cx="26" cy="26" r="25"/>
+<line style="fill:none;stroke:#38454F;stroke-width:2;stroke-miterlimit:10;" x1="8.322" y1="43.678" x2="43.678" y2="8.322"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/funnel.svg b/img/icons/essential-collection/svg/funnel.svg
new file mode 100644
index 00000000..92c7d5e2
--- /dev/null
+++ b/img/icons/essential-collection/svg/funnel.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 49.913 49.913" style="enable-background:new 0 0 49.913 49.913;" xml:space="preserve">
+<path style="fill:#61B872;" d="M2.606,8.187C2.584,8.173,2.564,8.199,2.579,8.22l17.37,23.77c0.004,0.006,0.012,0.01,0.019,0.01
+ h9.976c0.008,0,0.015-0.004,0.019-0.01l17.37-23.77c0.015-0.021-0.005-0.048-0.027-0.034"/>
+<path style="fill:#569E61;" d="M29.957,40l-9.895,9.895c-0.039,0.039-0.105,0.011-0.105-0.043V32h10V40z"/>
+<ellipse style="fill:#569E61;" cx="24.957" cy="6" rx="24" ry="6"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/garbage-1.svg b/img/icons/essential-collection/svg/garbage-1.svg
new file mode 100644
index 00000000..ec04a4b7
--- /dev/null
+++ b/img/icons/essential-collection/svg/garbage-1.svg
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<path style="fill:#556080;" d="M48.063,16.104l-37.63-5.289l0.479-3.41c0.197-1.398,1.489-2.373,2.888-2.176l32.566,4.577
+ c1.398,0.197,2.373,1.489,2.176,2.888L48.063,16.104z"/>
+<path style="fill:#FFFFFF;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M24.141,6.683l0.557-3.961
+ c0.153-1.089,1.17-1.855,2.259-1.702l7.922,1.113c1.089,0.153,1.855,1.17,1.702,2.259l-0.557,3.961L24.141,6.683z"/>
+<path style="fill:#EBBA16;" d="M12.597,20h10.627l0.343-0.343L17.91,14l-5.401,5.401c-0.141,0.141-0.141,0.37,0,0.511L12.597,20z"/>
+<rect x="24.567" y="17" style="fill:#DD352E;" width="8" height="3"/>
+<rect x="35.567" y="17" style="fill:#694F87;" width="5" height="3"/>
+<path style="fill:#556080;" d="M42.838,59H14.297c-1.507,0-2.729-1.222-2.729-2.729V20h34v36.271C45.567,57.778,44.345,59,42.838,59
+ z"/>
+<g>
+ <circle style="fill:#7383BF;" cx="16.567" cy="28" r="1"/>
+ <circle style="fill:#7383BF;" cx="16.567" cy="34" r="1"/>
+ <circle style="fill:#7383BF;" cx="19.567" cy="25" r="1"/>
+ <circle style="fill:#7383BF;" cx="25.567" cy="25" r="1"/>
+ <circle style="fill:#7383BF;" cx="19.567" cy="31" r="1"/>
+ <circle style="fill:#7383BF;" cx="25.567" cy="31" r="1"/>
+ <circle style="fill:#7383BF;" cx="22.567" cy="28" r="1"/>
+ <circle style="fill:#7383BF;" cx="28.567" cy="28" r="1"/>
+ <circle style="fill:#7383BF;" cx="22.567" cy="34" r="1"/>
+ <circle style="fill:#7383BF;" cx="28.567" cy="34" r="1"/>
+ <circle style="fill:#7383BF;" cx="31.567" cy="25" r="1"/>
+ <circle style="fill:#7383BF;" cx="37.567" cy="25" r="1"/>
+ <circle style="fill:#7383BF;" cx="31.567" cy="31" r="1"/>
+ <circle style="fill:#7383BF;" cx="37.567" cy="31" r="1"/>
+ <circle style="fill:#7383BF;" cx="34.567" cy="28" r="1"/>
+ <circle style="fill:#7383BF;" cx="40.567" cy="28" r="1"/>
+ <circle style="fill:#7383BF;" cx="34.567" cy="34" r="1"/>
+ <circle style="fill:#7383BF;" cx="40.567" cy="34" r="1"/>
+ <circle style="fill:#7383BF;" cx="16.567" cy="40" r="1"/>
+ <circle style="fill:#7383BF;" cx="16.567" cy="46" r="1"/>
+ <circle style="fill:#7383BF;" cx="19.567" cy="37" r="1"/>
+ <circle style="fill:#7383BF;" cx="25.567" cy="37" r="1"/>
+ <circle style="fill:#7383BF;" cx="19.567" cy="43" r="1"/>
+ <circle style="fill:#7383BF;" cx="25.567" cy="43" r="1"/>
+ <circle style="fill:#7383BF;" cx="22.567" cy="40" r="1"/>
+ <circle style="fill:#7383BF;" cx="28.567" cy="40" r="1"/>
+ <circle style="fill:#7383BF;" cx="22.567" cy="46" r="1"/>
+ <circle style="fill:#7383BF;" cx="28.567" cy="46" r="1"/>
+ <circle style="fill:#7383BF;" cx="31.567" cy="37" r="1"/>
+ <circle style="fill:#7383BF;" cx="37.567" cy="37" r="1"/>
+ <circle style="fill:#7383BF;" cx="31.567" cy="43" r="1"/>
+ <circle style="fill:#7383BF;" cx="37.567" cy="43" r="1"/>
+ <circle style="fill:#7383BF;" cx="34.567" cy="40" r="1"/>
+ <circle style="fill:#7383BF;" cx="40.567" cy="40" r="1"/>
+ <circle style="fill:#7383BF;" cx="34.567" cy="46" r="1"/>
+ <circle style="fill:#7383BF;" cx="40.567" cy="46" r="1"/>
+ <circle style="fill:#7383BF;" cx="16.567" cy="52" r="1"/>
+ <circle style="fill:#7383BF;" cx="19.567" cy="49" r="1"/>
+ <circle style="fill:#7383BF;" cx="25.567" cy="49" r="1"/>
+ <circle style="fill:#7383BF;" cx="19.567" cy="55" r="1"/>
+ <circle style="fill:#7383BF;" cx="25.567" cy="55" r="1"/>
+ <circle style="fill:#7383BF;" cx="22.567" cy="52" r="1"/>
+ <circle style="fill:#7383BF;" cx="28.567" cy="52" r="1"/>
+ <circle style="fill:#7383BF;" cx="31.567" cy="49" r="1"/>
+ <circle style="fill:#7383BF;" cx="37.567" cy="49" r="1"/>
+ <circle style="fill:#7383BF;" cx="31.567" cy="55" r="1"/>
+ <circle style="fill:#7383BF;" cx="37.567" cy="55" r="1"/>
+ <circle style="fill:#7383BF;" cx="34.567" cy="52" r="1"/>
+ <circle style="fill:#7383BF;" cx="40.567" cy="52" r="1"/>
+</g>
+<path style="fill:#556080;" d="M48.063,16.104l-37.63-5.289l0.479-3.41c0.197-1.398,1.489-2.373,2.888-2.176l32.566,4.577
+ c1.398,0.197,2.373,1.489,2.176,2.888L48.063,16.104z"/>
+<path style="fill:#FFFFFF;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M24.141,6.683l0.557-3.961
+ c0.153-1.089,1.17-1.855,2.259-1.702l7.922,1.113c1.089,0.153,1.855,1.17,1.702,2.259l-0.557,3.961L24.141,6.683z"/>
+<path style="fill:#EBBA16;" d="M12.597,20h10.627l0.343-0.343L17.91,14l-5.401,5.401c-0.141,0.141-0.141,0.37,0,0.511L12.597,20z"/>
+<rect x="24.567" y="17" style="fill:#DD352E;" width="8" height="3"/>
+<rect x="35.567" y="17" style="fill:#694F87;" width="5" height="3"/>
+<path style="fill:#556080;" d="M42.838,59H14.297c-1.507,0-2.729-1.222-2.729-2.729V20h34v36.271C45.567,57.778,44.345,59,42.838,59
+ z"/>
+<g>
+ <circle style="fill:#7383BF;" cx="16.567" cy="28" r="1"/>
+ <circle style="fill:#7383BF;" cx="16.567" cy="34" r="1"/>
+ <circle style="fill:#7383BF;" cx="19.567" cy="25" r="1"/>
+ <circle style="fill:#7383BF;" cx="25.567" cy="25" r="1"/>
+ <circle style="fill:#7383BF;" cx="19.567" cy="31" r="1"/>
+ <circle style="fill:#7383BF;" cx="25.567" cy="31" r="1"/>
+ <circle style="fill:#7383BF;" cx="22.567" cy="28" r="1"/>
+ <circle style="fill:#7383BF;" cx="28.567" cy="28" r="1"/>
+ <circle style="fill:#7383BF;" cx="22.567" cy="34" r="1"/>
+ <circle style="fill:#7383BF;" cx="28.567" cy="34" r="1"/>
+ <circle style="fill:#7383BF;" cx="31.567" cy="25" r="1"/>
+ <circle style="fill:#7383BF;" cx="37.567" cy="25" r="1"/>
+ <circle style="fill:#7383BF;" cx="31.567" cy="31" r="1"/>
+ <circle style="fill:#7383BF;" cx="37.567" cy="31" r="1"/>
+ <circle style="fill:#7383BF;" cx="34.567" cy="28" r="1"/>
+ <circle style="fill:#7383BF;" cx="40.567" cy="28" r="1"/>
+ <circle style="fill:#7383BF;" cx="34.567" cy="34" r="1"/>
+ <circle style="fill:#7383BF;" cx="40.567" cy="34" r="1"/>
+ <circle style="fill:#7383BF;" cx="16.567" cy="40" r="1"/>
+ <circle style="fill:#7383BF;" cx="16.567" cy="46" r="1"/>
+ <circle style="fill:#7383BF;" cx="19.567" cy="37" r="1"/>
+ <circle style="fill:#7383BF;" cx="25.567" cy="37" r="1"/>
+ <circle style="fill:#7383BF;" cx="19.567" cy="43" r="1"/>
+ <circle style="fill:#7383BF;" cx="25.567" cy="43" r="1"/>
+ <circle style="fill:#7383BF;" cx="22.567" cy="40" r="1"/>
+ <circle style="fill:#7383BF;" cx="28.567" cy="40" r="1"/>
+ <circle style="fill:#7383BF;" cx="22.567" cy="46" r="1"/>
+ <circle style="fill:#7383BF;" cx="28.567" cy="46" r="1"/>
+ <circle style="fill:#7383BF;" cx="31.567" cy="37" r="1"/>
+ <circle style="fill:#7383BF;" cx="37.567" cy="37" r="1"/>
+ <circle style="fill:#7383BF;" cx="31.567" cy="43" r="1"/>
+ <circle style="fill:#7383BF;" cx="37.567" cy="43" r="1"/>
+ <circle style="fill:#7383BF;" cx="34.567" cy="40" r="1"/>
+ <circle style="fill:#7383BF;" cx="40.567" cy="40" r="1"/>
+ <circle style="fill:#7383BF;" cx="34.567" cy="46" r="1"/>
+ <circle style="fill:#7383BF;" cx="40.567" cy="46" r="1"/>
+ <circle style="fill:#7383BF;" cx="16.567" cy="52" r="1"/>
+ <circle style="fill:#7383BF;" cx="19.567" cy="49" r="1"/>
+ <circle style="fill:#7383BF;" cx="25.567" cy="49" r="1"/>
+ <circle style="fill:#7383BF;" cx="19.567" cy="55" r="1"/>
+ <circle style="fill:#7383BF;" cx="25.567" cy="55" r="1"/>
+ <circle style="fill:#7383BF;" cx="22.567" cy="52" r="1"/>
+ <circle style="fill:#7383BF;" cx="28.567" cy="52" r="1"/>
+ <circle style="fill:#7383BF;" cx="31.567" cy="49" r="1"/>
+ <circle style="fill:#7383BF;" cx="37.567" cy="49" r="1"/>
+ <circle style="fill:#7383BF;" cx="31.567" cy="55" r="1"/>
+ <circle style="fill:#7383BF;" cx="37.567" cy="55" r="1"/>
+ <circle style="fill:#7383BF;" cx="34.567" cy="52" r="1"/>
+ <circle style="fill:#7383BF;" cx="40.567" cy="52" r="1"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/garbage-2.svg b/img/icons/essential-collection/svg/garbage-2.svg
new file mode 100644
index 00000000..de8a13b0
--- /dev/null
+++ b/img/icons/essential-collection/svg/garbage-2.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#23A24D;" d="M49,7l-1.956,47c0,0-0.085,4-3.908,4H28.54h-0.059H14.864c-3.823,0-3.908-4-3.908-4L9,7"/>
+<path style="fill:none;stroke:#33636C;stroke-width:2;stroke-miterlimit:10;" d="M36.999,7c0,0,0.156-6-4-6h-5.061h0.122H23
+ c-4.156,0-4,6-4,6"/>
+<line style="fill:none;stroke:#61B872;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="29" y1="17" x2="29" y2="50"/>
+<line style="fill:none;stroke:#61B872;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="19" y1="17" x2="19" y2="50"/>
+<line style="fill:none;stroke:#61B872;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="39" y1="17" x2="39" y2="50"/>
+<line style="fill:none;stroke:#33636C;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="6" y1="7" x2="52" y2="7"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/garbage.svg b/img/icons/essential-collection/svg/garbage.svg
new file mode 100644
index 00000000..035e61ed
--- /dev/null
+++ b/img/icons/essential-collection/svg/garbage.svg
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M40.271,52H11.729C10.222,52,9,50.778,9,49.271V13h34v36.271C43,50.778,41.778,52,40.271,52z"/>
+<path style="fill:#C7D0D3;" d="M45,13H7V9.557C7,8.145,8.145,7,9.557,7h32.886C43.855,7,45,8.145,45,9.557V13z"/>
+<path style="fill:#FFFFFF;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M20,7V3c0-1.1,0.9-2,2-2h8
+ c1.1,0,2,0.9,2,2v4H20z"/>
+<g>
+ <circle style="fill:#C7D0D3;" cx="14" cy="21" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="14" cy="27" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="17" cy="18" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="23" cy="18" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="17" cy="24" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="23" cy="24" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="20" cy="21" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="26" cy="21" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="20" cy="27" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="26" cy="27" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="29" cy="18" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="35" cy="18" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="29" cy="24" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="35" cy="24" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="32" cy="21" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="38" cy="21" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="32" cy="27" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="38" cy="27" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="14" cy="33" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="14" cy="39" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="17" cy="30" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="23" cy="30" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="17" cy="36" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="23" cy="36" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="20" cy="33" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="26" cy="33" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="20" cy="39" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="26" cy="39" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="29" cy="30" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="35" cy="30" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="29" cy="36" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="35" cy="36" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="32" cy="33" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="38" cy="33" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="32" cy="39" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="38" cy="39" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="14" cy="45" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="17" cy="42" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="23" cy="42" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="17" cy="48" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="23" cy="48" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="20" cy="45" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="26" cy="45" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="29" cy="42" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="35" cy="42" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="29" cy="48" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="35" cy="48" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="32" cy="45" r="1"/>
+ <circle style="fill:#C7D0D3;" cx="38" cy="45" r="1"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/gift.svg b/img/icons/essential-collection/svg/gift.svg
new file mode 100644
index 00000000..eaa66b26
--- /dev/null
+++ b/img/icons/essential-collection/svg/gift.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57 57" style="enable-background:new 0 0 57 57;" xml:space="preserve">
+<rect x="1" y="13.002" style="fill:#CB465F;" width="55" height="12"/>
+<rect x="6" y="25.002" style="fill:#EF4D4D;" width="46" height="30"/>
+<path style="fill:#EBBA16;" d="M56,12.002H41.741C42.556,10.837,43,9.453,43,7.995c0-1.875-0.726-3.633-2.043-4.95
+ c-2.729-2.729-7.17-2.729-9.899,0l-2.829,2.829l-2.828-2.829c-2.729-2.729-7.17-2.729-9.899,0c-1.317,1.317-2.043,3.075-2.043,4.95
+ c0,1.458,0.444,2.842,1.259,4.007H1c-0.552,0-1,0.447-1,1s0.448,1,1,1h27v24H6c-0.552,0-1,0.447-1,1s0.448,1,1,1h22v15
+ c0,0.553,0.448,1,1,1s1-0.447,1-1v-15h22c0.552,0,1-0.447,1-1s-0.448-1-1-1H30v-24h26c0.552,0,1-0.447,1-1S56.552,12.002,56,12.002z
+ M32.472,4.459c1.95-1.949,5.122-1.949,7.071,0C40.482,5.399,41,6.654,41,7.995c0,1.34-0.518,2.596-1.457,3.535l-0.472,0.472H24.929
+ l4.006-4.006l0.001-0.001l0.001-0.001L32.472,4.459z M16.916,11.53c-0.939-0.939-1.457-2.195-1.457-3.535
+ c0-1.341,0.518-2.596,1.457-3.536c1.95-1.949,5.122-1.949,7.071,0l2.828,2.829l-3.536,3.536c-0.331,0.331-0.622,0.735-0.898,1.179
+ h-4.994L16.916,11.53z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/help.svg b/img/icons/essential-collection/svg/help.svg
new file mode 100644
index 00000000..d211e49a
--- /dev/null
+++ b/img/icons/essential-collection/svg/help.svg
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<g>
+ <g>
+ <path style="fill:#7383BF;" d="M17.609,3h-0.5c-0.552,0-1-0.447-1-1s0.448-1,1-1h0.5c0.552,0,1,0.447,1,1S18.162,3,17.609,3z"/>
+ <path style="fill:#7383BF;" d="M2,14.188c-0.552,0-1-0.447-1-1v-0.977c0-0.553,0.448-1,1-1s1,0.447,1,1v0.977
+ C3,13.741,2.552,14.188,2,14.188z M2,9.304c-0.552,0-1-0.447-1-1V7.326c0-0.553,0.448-1,1-1s1,0.447,1,1v0.978
+ C3,8.856,2.552,9.304,2,9.304z M2.958,4.639c-0.22,0-0.441-0.072-0.626-0.221C1.901,4.072,1.833,3.442,2.179,3.012
+ C2.43,2.699,2.715,2.416,3.025,2.168c0.431-0.344,1.061-0.273,1.405,0.159c0.344,0.432,0.273,1.061-0.159,1.405
+ C4.076,3.888,3.896,4.067,3.737,4.266C3.54,4.511,3.25,4.639,2.958,4.639z M13.201,3h-0.977c-0.552,0-1-0.447-1-1s0.448-1,1-1
+ h0.977c0.552,0,1,0.447,1,1S13.753,3,13.201,3z M8.316,3H7.339c-0.552,0-1-0.447-1-1s0.448-1,1-1h0.977c0.552,0,1,0.447,1,1
+ S8.868,3,8.316,3z"/>
+ <path style="fill:#7383BF;" d="M2,18.609c-0.552,0-1-0.447-1-1v-0.5c0-0.553,0.448-1,1-1s1,0.447,1,1v0.5
+ C3,18.162,2.552,18.609,2,18.609z"/>
+ </g>
+ <g>
+ <path style="fill:#7383BF;" d="M54,18.609c-0.552,0-1-0.447-1-1v-0.5c0-0.553,0.448-1,1-1s1,0.447,1,1v0.5
+ C55,18.162,54.552,18.609,54,18.609z"/>
+ <path style="fill:#7383BF;" d="M54,14.201c-0.552,0-1-0.447-1-1v-0.977c0-0.553,0.448-1,1-1s1,0.447,1,1v0.977
+ C55,13.754,54.552,14.201,54,14.201z M54,9.316c-0.552,0-1-0.447-1-1V7.339c0-0.553,0.448-1,1-1s1,0.447,1,1v0.978
+ C55,8.869,54.552,9.316,54,9.316z M53.05,4.648c-0.294,0-0.585-0.129-0.783-0.377c-0.156-0.196-0.335-0.376-0.532-0.533
+ c-0.431-0.346-0.5-0.976-0.154-1.406c0.346-0.431,0.976-0.498,1.406-0.154c0.312,0.251,0.596,0.536,0.845,0.848
+ c0.344,0.432,0.273,1.061-0.159,1.405C53.489,4.577,53.269,4.648,53.05,4.648z M48.673,3h-0.977c-0.552,0-1-0.447-1-1s0.448-1,1-1
+ h0.977c0.552,0,1,0.447,1,1S49.226,3,48.673,3z M43.789,3h-0.977c-0.552,0-1-0.447-1-1s0.448-1,1-1h0.977c0.552,0,1,0.447,1,1
+ S44.341,3,43.789,3z"/>
+ <path style="fill:#7383BF;" d="M38.891,3h-0.5c-0.552,0-1-0.447-1-1s0.448-1,1-1h0.5c0.552,0,1,0.447,1,1S39.443,3,38.891,3z"/>
+ </g>
+ <g>
+ <path style="fill:#7383BF;" d="M38.891,55h-0.5c-0.552,0-1-0.447-1-1s0.448-1,1-1h0.5c0.552,0,1,0.447,1,1S39.443,55,38.891,55z"
+ />
+ <path style="fill:#7383BF;" d="M48.661,55h-0.977c-0.552,0-1-0.447-1-1s0.448-1,1-1h0.977c0.552,0,1,0.447,1,1
+ S49.213,55,48.661,55z M43.776,55h-0.977c-0.552,0-1-0.447-1-1s0.448-1,1-1h0.977c0.552,0,1,0.447,1,1S44.328,55,43.776,55z
+ M52.352,54.05c-0.294,0-0.585-0.129-0.783-0.377c-0.344-0.432-0.273-1.061,0.159-1.405c0.195-0.155,0.375-0.335,0.534-0.533
+ c0.346-0.429,0.977-0.497,1.406-0.152c0.431,0.346,0.499,0.976,0.153,1.406c-0.251,0.313-0.536,0.596-0.847,0.844
+ C52.791,53.979,52.571,54.05,52.352,54.05z M54,49.674c-0.552,0-1-0.447-1-1v-0.978c0-0.553,0.448-1,1-1s1,0.447,1,1v0.978
+ C55,49.227,54.552,49.674,54,49.674z M54,44.788c-0.552,0-1-0.447-1-1v-0.977c0-0.553,0.448-1,1-1s1,0.447,1,1v0.977
+ C55,44.341,54.552,44.788,54,44.788z"/>
+ <path style="fill:#7383BF;" d="M54,39.891c-0.552,0-1-0.447-1-1v-0.5c0-0.553,0.448-1,1-1s1,0.447,1,1v0.5
+ C55,39.443,54.552,39.891,54,39.891z"/>
+ </g>
+ <g>
+ <path style="fill:#7383BF;" d="M2,39.891c-0.552,0-1-0.447-1-1v-0.5c0-0.553,0.448-1,1-1s1,0.447,1,1v0.5
+ C3,39.443,2.552,39.891,2,39.891z"/>
+ <path style="fill:#7383BF;" d="M13.188,55h-0.977c-0.552,0-1-0.447-1-1s0.448-1,1-1h0.977c0.552,0,1,0.447,1,1
+ S13.741,55,13.188,55z M8.304,55H7.327c-0.552,0-1-0.447-1-1s0.448-1,1-1h0.977c0.552,0,1,0.447,1,1S8.856,55,8.304,55z
+ M3.638,54.042c-0.22,0-0.441-0.072-0.625-0.22c-0.312-0.251-0.596-0.536-0.845-0.848c-0.344-0.432-0.273-1.061,0.159-1.405
+ c0.431-0.343,1.061-0.273,1.405,0.159c0.156,0.196,0.335,0.376,0.532,0.533c0.431,0.346,0.5,0.976,0.154,1.406
+ C4.221,53.914,3.931,54.042,3.638,54.042z M2,49.661c-0.552,0-1-0.447-1-1v-0.978c0-0.553,0.448-1,1-1s1,0.447,1,1v0.978
+ C3,49.214,2.552,49.661,2,49.661z M2,44.775c-0.552,0-1-0.447-1-1v-0.977c0-0.553,0.448-1,1-1s1,0.447,1,1v0.977
+ C3,44.328,2.552,44.775,2,44.775z"/>
+ <path style="fill:#7383BF;" d="M17.609,55h-0.5c-0.552,0-1-0.447-1-1s0.448-1,1-1h0.5c0.552,0,1,0.447,1,1S18.162,55,17.609,55z"
+ />
+ </g>
+</g>
+<path style="fill:#EFCE4A;" d="M28,0C12.536,0,0,12.536,0,28s12.536,28,28,28s28-12.536,28-28S43.464,0,28,0z M28,42.56
+ c-8.041,0-14.56-6.519-14.56-14.56S19.959,13.44,28,13.44S42.56,19.959,42.56,28S36.041,42.56,28,42.56z"/>
+<g>
+ <path style="fill:#ED8A19;" d="M21.392,0.805c-0.134-0.536-0.678-0.86-1.213-0.728c-0.536,0.134-0.861,0.677-0.728,1.212
+ l3.261,13.045c0.114,0.455,0.521,0.758,0.969,0.758c0.081,0,0.162-0.01,0.244-0.03c0.536-0.134,0.861-0.677,0.728-1.212
+ L21.392,0.805z"/>
+ <path style="fill:#ED8A19;" d="M35.821,0.077c-0.533-0.133-1.079,0.191-1.213,0.728L31.347,13.85
+ c-0.134,0.535,0.192,1.078,0.728,1.212c0.082,0.021,0.163,0.03,0.244,0.03c0.448,0,0.855-0.303,0.969-0.758l3.261-13.045
+ C36.683,0.754,36.357,0.211,35.821,0.077z"/>
+ <path style="fill:#ED8A19;" d="M33.288,41.666c-0.134-0.537-0.679-0.858-1.213-0.728c-0.536,0.134-0.861,0.677-0.728,1.212
+ l3.261,13.045c0.114,0.455,0.521,0.758,0.969,0.758c0.081,0,0.162-0.01,0.244-0.03c0.536-0.134,0.861-0.677,0.728-1.212
+ L33.288,41.666z"/>
+ <path style="fill:#ED8A19;" d="M23.925,40.938c-0.535-0.131-1.078,0.19-1.213,0.728l-3.261,13.045
+ c-0.134,0.535,0.192,1.078,0.728,1.212c0.082,0.021,0.163,0.03,0.244,0.03c0.448,0,0.855-0.303,0.969-0.758l3.261-13.045
+ C24.787,41.615,24.461,41.072,23.925,40.938z"/>
+ <path style="fill:#ED8A19;" d="M41.908,24.683c0.081,0,0.162-0.01,0.244-0.03l13.045-3.261c0.536-0.134,0.861-0.677,0.728-1.212
+ c-0.134-0.537-0.678-0.863-1.213-0.728l-13.045,3.261c-0.536,0.134-0.861,0.677-0.728,1.212
+ C41.052,24.38,41.46,24.683,41.908,24.683z"/>
+ <path style="fill:#ED8A19;" d="M55.196,34.608l-13.045-3.261c-0.533-0.133-1.078,0.191-1.213,0.728
+ c-0.134,0.535,0.192,1.078,0.728,1.212l13.045,3.261c0.082,0.021,0.163,0.03,0.244,0.03c0.448,0,0.855-0.303,0.969-0.758
+ C56.058,35.285,55.732,34.742,55.196,34.608z"/>
+ <path style="fill:#ED8A19;" d="M13.849,31.348L0.804,34.608c-0.536,0.134-0.861,0.677-0.728,1.212
+ c0.114,0.455,0.521,0.758,0.969,0.758c0.081,0,0.162-0.01,0.244-0.03l13.045-3.261c0.536-0.134,0.861-0.677,0.728-1.212
+ C14.927,31.539,14.383,31.215,13.849,31.348z"/>
+ <path style="fill:#ED8A19;" d="M14.334,22.713L1.289,19.452c-0.533-0.136-1.079,0.19-1.213,0.728
+ c-0.134,0.535,0.192,1.078,0.728,1.212l13.045,3.261c0.082,0.021,0.163,0.03,0.244,0.03c0.448,0,0.855-0.303,0.969-0.758
+ C15.195,23.39,14.87,22.847,14.334,22.713z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/hide.svg b/img/icons/essential-collection/svg/hide.svg
new file mode 100644
index 00000000..6d4f2e14
--- /dev/null
+++ b/img/icons/essential-collection/svg/hide.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56.372 56.372" style="enable-background:new 0 0 56.372 56.372;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M56.372,28.564l-7.234,7.234c-11.517,11.517-30.19,11.517-41.707,0L0,28.367l7.234-7.234
+ c11.517-11.517,30.19-11.517,41.707,0L56.372,28.564z"/>
+<circle style="fill:#3083C9;" cx="28.158" cy="28.436" r="12"/>
+<line style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="6.052" y1="51.436" x2="52.552" y2="4.936"/>
+<path style="fill:#FFFFFF;" d="M21.372,28.436c-0.552,0-1-0.448-1-1c0-3.86,3.14-7,7-7c0.552,0,1,0.448,1,1s-0.448,1-1,1
+ c-2.757,0-5,2.243-5,5C22.372,27.988,21.924,28.436,21.372,28.436z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/hold.svg b/img/icons/essential-collection/svg/hold.svg
new file mode 100644
index 00000000..308f5bde
--- /dev/null
+++ b/img/icons/essential-collection/svg/hold.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57.066 57.066" style="enable-background:new 0 0 57.066 57.066;" xml:space="preserve">
+<path style="fill:#F7B563;" d="M30.797,10v15.5c0,0.828-0.672,1.5-1.5,1.5h0c-0.828,0-1.5-0.672-1.5-1.5V3c0-1.657-1.343-3-3-3h0
+ c-1.657,0-3,1.343-3,3v22.5c0,0.828-0.672,1.5-1.5,1.5h0c-0.828,0-1.5-0.672-1.5-1.5v-18c0-1.381-1.119-2.5-2.5-2.5h0
+ c-1.381,0-2.5,1.119-2.5,2.5v20c0,0.828-0.672,1.5-1.5,1.5h0c-0.828,0-1.5-0.672-1.5-1.5V15c0-1.381-1.119-2.5-2.5-2.5h-0.01
+ c-1.381,0-2.5,1.119-2.5,2.5v27.128c0.836,12.08,7.46,14.938,16.81,14.938c6.667,0,12.416-3.409,15.177-8.351
+ c1.161-1.874,8.194-12.825,8.798-13.969c0.704-1.334,1.735-2.94,3.035-4.002c0.693-0.566,1.154-1.318,1.581-2.105
+ c0.109-0.202,0.426-2.646-1.391-2.639c-1.576,0.006-3.375,0.67-4.68,1.552c-1.463,0.989-3.362,2.696-4.984,5.531
+ c-0.527,0.922-1.471,1.564-2.532,1.588c-1.001,0.023-0.742-0.468-0.804-2.536l0,0v-2.988V10c0-1.657-1.343-3-3-3h0
+ C32.14,7,30.797,8.343,30.797,10z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/home-1.svg b/img/icons/essential-collection/svg/home-1.svg
new file mode 100644
index 00000000..426bae3a
--- /dev/null
+++ b/img/icons/essential-collection/svg/home-1.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#E7ECED;" points="29,1.682 6,23.039 6,27.682 6,57.682 52,57.682 52,27.682 52,23.039 "/>
+<path style="fill:#556080;" d="M36,57.682H22v-17c0-3.866,3.134-7,7-7h0c3.866,0,7,3.134,7,7V57.682z"/>
+<polyline style="fill:none;stroke:#DD352E;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" points="1,27.682 29,1.682
+ 57,27.682 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/home-2.svg b/img/icons/essential-collection/svg/home-2.svg
new file mode 100644
index 00000000..2e55bbaa
--- /dev/null
+++ b/img/icons/essential-collection/svg/home-2.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#E7ECED;" points="29,1.682 6,23.039 6,27.682 6,57.682 52,57.682 52,27.682 52,23.039 "/>
+<rect x="14" y="22.682" style="fill:#25AE88;" width="12" height="12"/>
+<rect x="32" y="22.682" style="fill:#25AE88;" width="12" height="12"/>
+<rect x="14" y="40.682" style="fill:#25AE88;" width="12" height="12"/>
+<rect x="32" y="40.682" style="fill:#25AE88;" width="12" height="12"/>
+<polyline style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" points="1,27.682 29,1.682
+ 57,27.682 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/home.svg b/img/icons/essential-collection/svg/home.svg
new file mode 100644
index 00000000..4b2cfd0b
--- /dev/null
+++ b/img/icons/essential-collection/svg/home.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#E7ECED;" points="29,1.682 6,23.039 6,27.682 6,57.682 52,57.682 52,27.682 52,23.039 "/>
+<path style="fill:#6B5B4B;" d="M36,57.682H22V35.619c0-1.07,0.867-1.937,1.937-1.937h10.126c1.07,0,1.937,0.867,1.937,1.937V57.682z
+ "/>
+<polygon style="fill:#6C4127;" points="48,19.325 48,6.682 40,6.682 40,11.897 "/>
+<polyline style="fill:none;stroke:#6B5B4B;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" points="1,27.682 29,1.682
+ 57,27.682 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/hourglass-1.svg b/img/icons/essential-collection/svg/hourglass-1.svg
new file mode 100644
index 00000000..f391f82d
--- /dev/null
+++ b/img/icons/essential-collection/svg/hourglass-1.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#7383BF;" d="M41.857,22.096C43.82,20.786,45,18.582,45,16.222V5H15v11.222c0,2.36,1.18,4.564,3.143,5.874
+ L28,28.667v2.667l-9.857,6.571C16.18,39.214,15,41.418,15,43.778V55h30V43.778c0-2.36-1.18-4.564-3.143-5.874L32,31.333v-2.667
+ L41.857,22.096z"/>
+<path style="fill:#424A60;" d="M40.192,19.6C41.324,18.845,42,17.582,42,16.223v0c0-1.306-0.889-2.445-2.156-2.762L24.791,9.698
+ C21.342,8.835,18,11.444,18,15v1.223c0,1.359,0.676,2.622,1.808,3.377L29,26.346v15.877c0,3.63-3.764,6.036-7.058,4.511l0,0
+ c-1.774-0.821-3.922,0.394-3.941,2.349c0,0.014,0,0.027,0,0.041V55h24V43.777c0-0.014,0-0.027,0-0.041
+ c-0.019-1.931-1.889-3.322-3.791-2.991l-2.049,0.357C33.466,41.571,31,39.497,31,36.763V26.346L40.192,19.6z"/>
+<rect x="10" y="55" style="fill:#424A60;" width="40" height="4"/>
+<path style="fill:#556080;" d="M54,58h-3v-4H9v4H6c-0.552,0-1,0.447-1,1s0.448,1,1,1h3h1h40h1h3c0.552,0,1-0.447,1-1
+ S54.552,58,54,58z M11,56h38v2H11V56z"/>
+<rect x="10" y="1" style="fill:#424A60;" width="40" height="4"/>
+<path style="fill:#556080;" d="M54,0h-3h-1H10H9H6C5.448,0,5,0.447,5,1s0.448,1,1,1h3v4h42V2h3c0.552,0,1-0.447,1-1S54.552,0,54,0z
+ M49,4H11V2h38V4z"/>
+<path style="fill:#7FABDA;" d="M24.999,24c-0.19,0-0.383-0.055-0.554-0.168l-4.638-3.092C18.676,19.986,18,18.724,18,17.362v-2.222
+ c0-0.553,0.448-1,1-1s1,0.447,1,1v2.222c0,0.69,0.343,1.331,0.917,1.714l4.638,3.092c0.459,0.307,0.583,0.927,0.277,1.387
+ C25.639,23.844,25.322,24,24.999,24z"/>
+<path style="fill:#7FABDA;" d="M41,46c-0.552,0-1-0.447-1-1v-2.222c0-0.69-0.343-1.331-0.917-1.714l-4.638-3.092
+ c-0.459-0.307-0.583-0.927-0.277-1.387c0.307-0.46,0.926-0.584,1.387-0.277l4.638,3.092C41.324,40.154,42,41.417,42,42.778V45
+ C42,45.553,41.552,46,41,46z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/hourglass-2.svg b/img/icons/essential-collection/svg/hourglass-2.svg
new file mode 100644
index 00000000..1ac02cfb
--- /dev/null
+++ b/img/icons/essential-collection/svg/hourglass-2.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#E6E6E6;" d="M41.857,22.096C43.82,20.786,45,18.582,45,16.222V5H15v11.222c0,2.36,1.18,4.564,3.143,5.874
+ l9.319,6.843C27.8,29.187,28,29.581,28,30l0,0c0,0.419-0.2,0.813-0.537,1.061l-9.319,6.843C16.18,39.214,15,41.418,15,43.778V55h30
+ V43.778c0-2.36-1.18-4.564-3.143-5.874l-9.319-6.843C32.2,30.813,32,30.419,32,30l0,0c0-0.419,0.2-0.813,0.537-1.061L41.857,22.096z
+ "/>
+<rect x="10" y="55" style="fill:#9E6C53;" width="40" height="4"/>
+<rect x="10" y="1" style="fill:#9E6C53;" width="40" height="4"/>
+<g>
+ <path style="fill:#8A5336;" d="M54,58h-4H6c-0.552,0-1,0.447-1,1s0.448,1,1,1h44h4c0.552,0,1-0.447,1-1S54.552,58,54,58z"/>
+ <path style="fill:#8A5336;" d="M6,2h44h4c0.552,0,1-0.447,1-1s-0.448-1-1-1h-4H6C5.448,0,5,0.447,5,1S5.448,2,6,2z"/>
+</g>
+<path style="fill:#EBBA16;" d="M40.192,19.6C41.324,18.845,42,17.582,42,16.223v0c0-1.306-0.889-2.445-2.156-2.762L24.791,9.698
+ C21.342,8.835,18,11.444,18,15v1.223c0,1.359,0.676,2.622,1.808,3.377L29,26.346v15.877c0,3.63-3.764,6.036-7.058,4.511l0,0
+ c-1.774-0.821-3.922,0.394-3.941,2.349c0,0.014,0,0.027,0,0.041V55h24V43.777c0-0.014,0-0.027,0-0.041
+ c-0.019-1.931-1.889-3.322-3.791-2.991l-2.049,0.357C33.466,41.571,31,39.497,31,36.763V26.346L40.192,19.6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/hourglass-3.svg b/img/icons/essential-collection/svg/hourglass-3.svg
new file mode 100644
index 00000000..ceed6f3d
--- /dev/null
+++ b/img/icons/essential-collection/svg/hourglass-3.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<g>
+ <path style="fill:#7FABDA;" d="M30.5,10h-12c-0.552,0-1,0.447-1,1s0.448,1,1,1h12c0.552,0,1-0.447,1-1S31.052,10,30.5,10z"/>
+ <path style="fill:#7FABDA;" d="M18.5,6h12c0.552,0,1-0.447,1-1s-0.448-1-1-1h-12c-0.552,0-1,0.447-1,1S17.948,6,18.5,6z"/>
+ <path style="fill:#7FABDA;" d="M30.5,17h-17c-0.552,0-1,0.447-1,1s0.448,1,1,1h17c0.552,0,1-0.447,1-1S31.052,17,30.5,17z"/>
+ <path style="fill:#7FABDA;" d="M30.5,24h-22c-0.552,0-1,0.447-1,1s0.448,1,1,1h22c0.552,0,1-0.447,1-1S31.052,24,30.5,24z"/>
+ <path style="fill:#7FABDA;" d="M30.5,31h-26c-0.552,0-1,0.447-1,1s0.448,1,1,1h26c0.552,0,1-0.447,1-1S31.052,31,30.5,31z"/>
+ <path style="fill:#7FABDA;" d="M30.5,38h-20c-0.552,0-1,0.447-1,1s0.448,1,1,1h20c0.552,0,1-0.447,1-1S31.052,38,30.5,38z"/>
+ <path style="fill:#7FABDA;" d="M30.5,45h-14c-0.552,0-1,0.447-1,1s0.448,1,1,1h14c0.552,0,1-0.447,1-1S31.052,45,30.5,45z"/>
+ <path style="fill:#7FABDA;" d="M30.5,52h-14c-0.552,0-1,0.447-1,1s0.448,1,1,1h14c0.552,0,1-0.447,1-1S31.052,52,30.5,52z"/>
+</g>
+<path style="fill:#23A24D;" d="M52.5,0h-24v4h24c1.105,0,2-0.896,2-2S53.605,0,52.5,0z"/>
+<path style="fill:#23A24D;" d="M52.5,54h-24v4h24c1.105,0,2-0.896,2-2S53.605,54,52.5,54z"/>
+<path style="fill:#7FABDA;" d="M36.872,27.817C42.78,24.351,46.5,17.979,46.5,11V4h-18v50h18v-7c0-6.979-3.72-13.351-9.628-16.817
+ C35.972,29.655,35.972,28.345,36.872,27.817z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/hourglass.svg b/img/icons/essential-collection/svg/hourglass.svg
new file mode 100644
index 00000000..0850414c
--- /dev/null
+++ b/img/icons/essential-collection/svg/hourglass.svg
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#23A24D;" d="M49,4H9C7.895,4,7,3.105,7,2v0c0-1.105,0.895-2,2-2h40c1.105,0,2,0.895,2,2v0C51,3.105,50.105,4,49,4
+ z"/>
+<path style="fill:#23A24D;" d="M49,58H9c-1.105,0-2-0.895-2-2v0c0-1.105,0.895-2,2-2h40c1.105,0,2,0.895,2,2v0
+ C51,57.105,50.105,58,49,58z"/>
+<path style="fill:#7FABDA;" d="M43,11V4H15v7c0,6.979,3.72,13.351,9.628,16.817c0.9,0.528,0.9,1.838,0,2.366
+ C18.72,33.649,15,40.021,15,47v7h28v-7c0-6.979-3.72-13.351-9.628-16.817c-0.9-0.528-0.9-1.838,0-2.366
+ C39.28,24.351,43,17.979,43,11z"/>
+<path style="fill:#7296B7;" d="M29,54h14v-7c0-6.979-3.72-13.351-9.628-16.817c-0.9-0.528-0.9-1.838,0-2.366
+ C39.28,24.351,43,17.979,43,11V4H29V54z"/>
+<g>
+ <circle style="fill:#E7ECED;" cx="17" cy="53" r="1"/>
+ <circle style="fill:#E7ECED;" cx="21" cy="53" r="1"/>
+ <circle style="fill:#E7ECED;" cx="25" cy="53" r="1"/>
+ <circle style="fill:#E7ECED;" cx="29" cy="53" r="1"/>
+ <circle style="fill:#E7ECED;" cx="33" cy="53" r="1"/>
+ <circle style="fill:#E7ECED;" cx="37" cy="53" r="1"/>
+ <circle style="fill:#E7ECED;" cx="41" cy="53" r="1"/>
+ <circle style="fill:#E7ECED;" cx="19" cy="51" r="1"/>
+ <circle style="fill:#E7ECED;" cx="23" cy="51" r="1"/>
+ <circle style="fill:#E7ECED;" cx="27" cy="51" r="1"/>
+ <circle style="fill:#E7ECED;" cx="31" cy="51" r="1"/>
+ <circle style="fill:#E7ECED;" cx="35" cy="51" r="1"/>
+ <circle style="fill:#E7ECED;" cx="39" cy="51" r="1"/>
+ <circle style="fill:#E7ECED;" cx="21" cy="49" r="1"/>
+ <circle style="fill:#E7ECED;" cx="25" cy="49" r="1"/>
+ <circle style="fill:#E7ECED;" cx="29" cy="32" r="1"/>
+ <circle style="fill:#E7ECED;" cx="23" cy="21" r="1"/>
+ <circle style="fill:#E7ECED;" cx="27" cy="21" r="1"/>
+ <circle style="fill:#E7ECED;" cx="31" cy="21" r="1"/>
+ <circle style="fill:#E7ECED;" cx="35" cy="21" r="1"/>
+ <circle style="fill:#E7ECED;" cx="33" cy="19" r="1"/>
+ <circle style="fill:#E7ECED;" cx="35" cy="17" r="1"/>
+ <circle style="fill:#E7ECED;" cx="25" cy="19" r="1"/>
+ <circle style="fill:#E7ECED;" cx="29" cy="19" r="1"/>
+ <circle style="fill:#E7ECED;" cx="23" cy="17" r="1"/>
+ <circle style="fill:#E7ECED;" cx="25" cy="23" r="1"/>
+ <circle style="fill:#E7ECED;" cx="27" cy="25" r="1"/>
+ <circle style="fill:#E7ECED;" cx="31" cy="25" r="1"/>
+ <circle style="fill:#E7ECED;" cx="29" cy="23" r="1"/>
+ <circle style="fill:#E7ECED;" cx="33" cy="23" r="1"/>
+ <circle style="fill:#E7ECED;" cx="29" cy="35" r="1"/>
+ <circle style="fill:#E7ECED;" cx="29" cy="38" r="1"/>
+ <circle style="fill:#E7ECED;" cx="29" cy="41" r="1"/>
+ <circle style="fill:#E7ECED;" cx="29" cy="44" r="1"/>
+ <circle style="fill:#E7ECED;" cx="29" cy="47" r="1"/>
+ <circle style="fill:#E7ECED;" cx="33" cy="49" r="1"/>
+ <circle style="fill:#E7ECED;" cx="37" cy="49" r="1"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/house.svg b/img/icons/essential-collection/svg/house.svg
new file mode 100644
index 00000000..c2952fb1
--- /dev/null
+++ b/img/icons/essential-collection/svg/house.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#B02721;" d="M53.792,28.028L30,9.688L6.208,28.028c-1.228,0.946-2.974,0.801-4.028-0.335l0,0
+ c-1.195-1.287-1.033-3.32,0.35-4.402l25.43-19.895L30,1.5l2.041,1.896l25.43,19.895c1.383,1.082,1.545,3.115,0.35,4.402l0,0
+ C56.766,28.829,55.02,28.974,53.792,28.028z"/>
+<path style="fill:#B02721;" d="M53.792,28.028L30,9.688L6.208,28.028c-1.228,0.946-2.974,0.801-4.028-0.335l0,0
+ c-1.195-1.287-1.033-3.32,0.35-4.402l25.43-19.895L30,1.5l2.041,1.896l25.43,19.895c1.383,1.082,1.545,3.115,0.35,4.402l0,0
+ C56.766,28.829,55.02,28.974,53.792,28.028z"/>
+<polygon style="fill:#E0E1E2;" points="30,9.688 7,27.417 7,27.5 7,57.5 53,57.5 53,27.5 53,27.417 "/>
+<g>
+ <path style="fill:#E0E1E2;" d="M59,47.5c-0.553,0-1,0.448-1,1v1h-1v-1c0-0.552-0.447-1-1-1s-1,0.448-1,1v1h-2c-0.553,0-1,0.448-1,1
+ s0.447,1,1,1h2v3h-2c-0.553,0-1,0.448-1,1s0.447,1,1,1h2v1c0,0.552,0.447,1,1,1s1-0.448,1-1v-1h1v1c0,0.552,0.447,1,1,1
+ s1-0.448,1-1v-9C60,47.948,59.553,47.5,59,47.5z M57,54.5v-3h1v3H57z"/>
+ <path style="fill:#E0E1E2;" d="M7,51.5c0.553,0,1-0.448,1-1s-0.447-1-1-1H5v-1c0-0.552-0.447-1-1-1s-1,0.448-1,1v1H2v-1
+ c0-0.552-0.447-1-1-1s-1,0.448-1,1v9c0,0.552,0.447,1,1,1s1-0.448,1-1v-1h1v1c0,0.552,0.447,1,1,1s1-0.448,1-1v-1h2
+ c0.553,0,1-0.448,1-1s-0.447-1-1-1H5v-3H7z M3,54.5H2v-3h1V54.5z"/>
+</g>
+<rect x="15" y="26.5" style="fill:#556080;" width="12" height="8"/>
+<rect x="15" y="40.5" style="fill:#556080;" width="12" height="10"/>
+<rect x="33" y="26.5" style="fill:#556080;" width="12" height="8"/>
+<rect x="33" y="40.5" style="fill:#556080;" width="12" height="17"/>
+<rect x="33" y="26.5" style="fill:#7383BF;" width="12" height="6"/>
+<rect x="15" y="26.5" style="fill:#7383BF;" width="12" height="2.765"/>
+<polygon style="fill:#7383BF;" points="22,44.5 22,40.5 20,40.5 20,44.5 15,44.5 15,46.5 20,46.5 20,50.5 22,50.5 22,46.5 27,46.5
+ 27,44.5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/id-card-1.svg b/img/icons/essential-collection/svg/id-card-1.svg
new file mode 100644
index 00000000..e0a95bff
--- /dev/null
+++ b/img/icons/essential-collection/svg/id-card-1.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="32.5" y1="5" x2="35.5" y2="1"/>
+<path style="fill:#E7ECED;" d="M46.5,5h-34c-1.1,0-2,0.9-2,2v50c0,1.1,0.9,2,2,2h34c1.1,0,2-0.9,2-2V7C48.5,5.9,47.6,5,46.5,5z
+ M29.5,14c-1.657,0-3-1.343-3-3s1.343-3,3-3s3,1.343,3,3S31.157,14,29.5,14z"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="24.5" y1="1" x2="29.5" y2="11"/>
+<rect x="20.5" y="18" style="fill:#EFCE4A;" width="18" height="18"/>
+<path style="fill:#424A60;" d="M39.5,43h-20c-0.553,0-1-0.447-1-1s0.447-1,1-1h20c0.553,0,1,0.447,1,1S40.053,43,39.5,43z"/>
+<path style="fill:#424A60;" d="M39.5,48h-20c-0.553,0-1-0.447-1-1s0.447-1,1-1h20c0.553,0,1,0.447,1,1S40.053,48,39.5,48z"/>
+<path style="fill:#424A60;" d="M39.5,53h-20c-0.553,0-1-0.447-1-1s0.447-1,1-1h20c0.553,0,1,0.447,1,1S40.053,53,39.5,53z"/>
+<g>
+ <circle style="fill:#DC691D;" cx="29.5" cy="26" r="4"/>
+ <path style="fill:#DC691D;" d="M29.5,30c-2.761,0-5,2.239-5,5v1h10v-1C34.5,32.239,32.261,30,29.5,30z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/id-card-2.svg b/img/icons/essential-collection/svg/id-card-2.svg
new file mode 100644
index 00000000..072bec0a
--- /dev/null
+++ b/img/icons/essential-collection/svg/id-card-2.svg
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<path style="fill:#424A60;" d="M32.499,6C32.29,6,32.08,5.934,31.9,5.8c-0.442-0.331-0.532-0.958-0.2-1.399l3-4
+ c0.331-0.442,0.958-0.531,1.399-0.2c0.442,0.331,0.532,0.958,0.2,1.399l-3,4C33.103,5.862,32.804,6,32.499,6z"/>
+<path style="fill:#E7ECED;" d="M46.5,5h-34c-1.1,0-2,0.9-2,2v50c0,1.1,0.9,2,2,2h34c1.1,0,2-0.9,2-2V7C48.5,5.9,47.6,5,46.5,5z
+ M29.5,14c-1.657,0-3-1.343-3-3s1.343-3,3-3s3,1.343,3,3S31.157,14,29.5,14z"/>
+<path style="fill:#556080;" d="M10.5,41v16c0,1.1,0.9,2,2,2h34c1.1,0,2-0.9,2-2V41H10.5z"/>
+<g>
+ <path style="fill:#FFFFFF;" d="M20.5,51h18c0.553,0,1-0.447,1-1s-0.447-1-1-1h-18c-0.553,0-1,0.447-1,1S19.947,51,20.5,51z"/>
+ <path style="fill:#FFFFFF;" d="M24.5,47h10c0.553,0,1-0.447,1-1s-0.447-1-1-1h-10c-0.553,0-1,0.447-1,1S23.947,47,24.5,47z"/>
+ <path style="fill:#FFFFFF;" d="M21.5,53h-1c-0.553,0-1,0.447-1,1s0.447,1,1,1h1c0.553,0,1-0.447,1-1S22.053,53,21.5,53z"/>
+ <path style="fill:#FFFFFF;" d="M27.5,53h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S28.053,53,27.5,53z"/>
+ <path style="fill:#FFFFFF;" d="M32.5,53h-1c-0.553,0-1,0.447-1,1s0.447,1,1,1h1c0.553,0,1-0.447,1-1S33.053,53,32.5,53z"/>
+ <path style="fill:#FFFFFF;" d="M38.5,53h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S39.053,53,38.5,53z"/>
+</g>
+<path style="fill:#3083C9;" d="M38.495,41c-0.027-1.214-0.719-2.317-1.809-2.862l-3.767-1.924c-0.257-0.131-0.419-0.396-0.419-0.685
+ v-1.153c1.933-0.833,3.044-2.451,3.585-4.475C36.9,29.649,37.5,28.895,37.5,28v-1c0-0.766-0.441-1.427-1.078-1.763
+ c-0.441-3.761-2.927-5.283-6.922-5.283c-0.189,0-0.375,0.007-0.557,0.022c-1.358,0.108-2.732-0.147-3.862-0.909
+ c-0.47-0.316-0.865-0.653-1.143-1.006c-0.127-0.161-0.38-0.058-0.357,0.145c0.04,0.35,0.1,0.758,0.188,1.204
+ c0.33,1.66,0.133,1.418-0.509,2.984c-0.355,0.866-0.584,1.827-0.69,2.845C21.938,25.578,21.5,26.237,21.5,27v1
+ c0,0.895,0.6,1.649,1.415,1.902c0.541,2.023,1.651,3.642,3.585,4.475v1.145c0,0.293-0.166,0.56-0.429,0.69l-3.861,1.901
+ c-1.054,0.575-1.71,1.68-1.71,2.88V41H38.495z"/>
+<path style="fill:#424A60;" d="M29.501,12c-0.367,0-0.72-0.202-0.896-0.553l-5-10c-0.247-0.494-0.047-1.095,0.447-1.342
+ c0.494-0.245,1.095-0.047,1.342,0.447l5,10c0.247,0.494,0.047,1.095-0.447,1.342C29.804,11.966,29.651,12,29.501,12z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/id-card-3.svg b/img/icons/essential-collection/svg/id-card-3.svg
new file mode 100644
index 00000000..8f276945
--- /dev/null
+++ b/img/icons/essential-collection/svg/id-card-3.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M35,14v4.687C35,19.412,34.412,20,33.687,20h-9.375C23.588,20,23,19.412,23,18.687V14H3.678
+ C1.647,14,0,15.647,0,17.678v32.644C0,52.353,1.647,54,3.678,54h50.644C56.353,54,58,52.353,58,50.322V17.678
+ C58,15.647,56.353,14,54.322,14H35z"/>
+<path style="fill:#424A60;" d="M33.687,4h-9.375C23.588,4,23,4.588,23,5.313v13.375C23,19.412,23.588,20,24.313,20h9.375
+ C34.412,20,35,19.412,35,18.687V5.313C35,4.588,34.412,4,33.687,4z M29,13c-1.657,0-3-1.343-3-3s1.343-3,3-3s3,1.343,3,3
+ S30.657,13,29,13z"/>
+<path style="fill:#26B99A;" d="M22.186,42.156l-3.767-1.924C18.162,40.1,18,39.836,18,39.547v-1.153
+ c1.933-0.833,3.044-2.451,3.585-4.475C22.4,33.666,23,32.912,23,32.017v-1c0-0.766-0.441-1.427-1.078-1.763
+ c-0.441-3.761-2.927-5.283-6.922-5.283c-0.189,0-0.375,0.007-0.557,0.022c-1.358,0.108-2.732-0.147-3.862-0.909
+ c-0.47-0.316-0.865-0.653-1.143-1.006c-0.127-0.161-0.38-0.058-0.357,0.145c0.04,0.35,0.1,0.758,0.188,1.204
+ c0.33,1.66,0.133,1.418-0.509,2.984c-0.355,0.866-0.584,1.827-0.69,2.845C7.438,29.595,7,30.254,7,31.017v1
+ c0,0.895,0.6,1.649,1.415,1.902c0.541,2.023,1.651,3.642,3.585,4.475v1.145c0,0.293-0.166,0.56-0.429,0.69L7.71,42.13
+ C6.656,42.705,6,43.81,6,45.01v0.916c0,0,0,0.269,0,0.409c0,1.13,4.029,1.682,9,1.682s9-0.552,9-1.682c0-0.14,0-0.409,0-0.409
+ v-0.836C24,43.848,23.298,42.712,22.186,42.156z"/>
+<g>
+ <path style="fill:#AFB6BB;" d="M51.29,43.29C51.109,43.479,51,43.74,51,44s0.1,0.52,0.29,0.71C51.479,44.89,51.74,45,52,45
+ s0.52-0.11,0.71-0.29C52.89,44.52,53,44.26,53,44s-0.11-0.521-0.29-0.71C52.34,42.93,51.67,42.92,51.29,43.29z"/>
+ <path style="fill:#AFB6BB;" d="M30,28.018h10c0.553,0,1-0.447,1-1s-0.447-1-1-1H30c-0.553,0-1,0.447-1,1S29.447,28.018,30,28.018z"
+ />
+ <path style="fill:#AFB6BB;" d="M31,43.018h-1c-0.553,0-1,0.447-1,1s0.447,1,1,1h1c0.553,0,1-0.447,1-1S31.553,43.018,31,43.018z"/>
+ <path style="fill:#AFB6BB;" d="M37,43.018h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S37.553,43.018,37,43.018z"/>
+ <path style="fill:#AFB6BB;" d="M42,43.018h-1c-0.553,0-1,0.447-1,1s0.447,1,1,1h1c0.553,0,1-0.447,1-1S42.553,43.018,42,43.018z"/>
+ <path style="fill:#AFB6BB;" d="M48,43.018h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S48.553,43.018,48,43.018z"/>
+ <path style="fill:#AFB6BB;" d="M30,34.018h22c0.553,0,1-0.447,1-1s-0.447-1-1-1H30c-0.553,0-1,0.447-1,1S29.447,34.018,30,34.018z"
+ />
+ <path style="fill:#AFB6BB;" d="M52,38.018H30c-0.553,0-1,0.447-1,1s0.447,1,1,1h22c0.553,0,1-0.447,1-1S52.553,38.018,52,38.018z"
+ />
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/id-card-4.svg b/img/icons/essential-collection/svg/id-card-4.svg
new file mode 100644
index 00000000..fc3857bd
--- /dev/null
+++ b/img/icons/essential-collection/svg/id-card-4.svg
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M54.783,50H3.217C1.44,50,0,48.56,0,46.783V11.217C0,9.44,1.44,8,3.217,8h51.566
+ C56.56,8,58,9.44,58,11.217v35.566C58,48.56,56.56,50,54.783,50z"/>
+<path style="fill:#BF4D90;" d="M21.186,36.138l-3.767-1.924C17.162,34.083,17,33.818,17,33.53v-1.153
+ c1.933-0.833,3.044-2.451,3.585-4.475C21.4,27.649,22,26.895,22,26v-1c0-0.766-0.441-1.427-1.078-1.763
+ c-0.441-3.761-2.927-5.283-6.922-5.283c-0.189,0-0.375,0.007-0.557,0.022c-1.358,0.108-2.732-0.147-3.862-0.909
+ c-0.47-0.316-0.865-0.653-1.143-1.006c-0.127-0.161-0.38-0.058-0.357,0.145c0.04,0.35,0.1,0.758,0.188,1.204
+ c0.33,1.66,0.133,1.418-0.509,2.984c-0.355,0.866-0.584,1.827-0.69,2.845C6.438,23.578,6,24.237,6,25v1
+ c0,0.895,0.6,1.649,1.415,1.902c0.541,2.023,1.651,3.642,3.585,4.475v1.145c0,0.293-0.166,0.56-0.429,0.69L6.71,36.113
+ C5.656,36.688,5,37.792,5,38.993v0.916c0,0,0,0.269,0,0.409C5,41.448,9.029,42,14,42s9-0.552,9-1.682c0-0.14,0-0.409,0-0.409v-0.836
+ C23,37.831,22.298,36.694,21.186,36.138z"/>
+<g>
+ <path style="fill:#AFB6BB;" d="M29,22h10c0.553,0,1-0.447,1-1s-0.447-1-1-1H29c-0.553,0-1,0.447-1,1S28.447,22,29,22z"/>
+ <path style="fill:#AFB6BB;" d="M43,22h1c0.553,0,1-0.447,1-1s-0.447-1-1-1h-1c-0.553,0-1,0.447-1,1S42.447,22,43,22z"/>
+ <path style="fill:#AFB6BB;" d="M30,37h-1c-0.553,0-1,0.447-1,1s0.447,1,1,1h1c0.553,0,1-0.447,1-1S30.553,37,30,37z"/>
+ <path style="fill:#AFB6BB;" d="M36,37h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S36.553,37,36,37z"/>
+ <path style="fill:#AFB6BB;" d="M41,37h-1c-0.553,0-1,0.447-1,1s0.447,1,1,1h1c0.553,0,1-0.447,1-1S41.553,37,41,37z"/>
+ <path style="fill:#AFB6BB;" d="M47,37h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S47.553,37,47,37z"/>
+ <path style="fill:#AFB6BB;" d="M50.29,37.29C50.109,37.479,50,37.74,50,38s0.109,0.52,0.29,0.71C50.479,38.89,50.74,39,51,39
+ s0.52-0.11,0.71-0.29C51.89,38.52,52,38.26,52,38s-0.11-0.521-0.29-0.71C51.33,36.92,50.66,36.92,50.29,37.29z"/>
+ <path style="fill:#AFB6BB;" d="M29,28h22c0.553,0,1-0.447,1-1s-0.447-1-1-1H29c-0.553,0-1,0.447-1,1S28.447,28,29,28z"/>
+ <path style="fill:#AFB6BB;" d="M51,32H29c-0.553,0-1,0.447-1,1s0.447,1,1,1h22c0.553,0,1-0.447,1-1S51.553,32,51,32z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/id-card-5.svg b/img/icons/essential-collection/svg/id-card-5.svg
new file mode 100644
index 00000000..b19e47d2
--- /dev/null
+++ b/img/icons/essential-collection/svg/id-card-5.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M54.783,50H3.217C1.44,50,0,48.56,0,46.783V11.217C0,9.44,1.44,8,3.217,8h51.566
+ C56.56,8,58,9.44,58,11.217v35.566C58,48.56,56.56,50,54.783,50z"/>
+<rect x="33" y="25" style="fill:#424A60;" width="20" height="20"/>
+<path style="fill:#FFFFFF;" d="M47.791,42.092l-2.511-1.283C45.108,40.722,45,40.545,45,40.353v-0.769
+ c1.289-0.555,2.03-1.634,2.39-2.983c0.543-0.168,0.943-0.671,0.943-1.268v-0.667c0-0.511-0.294-0.951-0.718-1.175
+ C47.321,30.984,45.664,29.97,43,29.97c-0.126,0-0.25,0.005-0.371,0.015c-0.905,0.072-1.821-0.098-2.574-0.606
+ c-0.313-0.211-0.577-0.435-0.762-0.67c-0.084-0.107-0.254-0.039-0.238,0.097c0.027,0.233,0.066,0.505,0.125,0.803
+ c0.22,1.107,0.089,0.945-0.339,1.99c-0.237,0.577-0.389,1.218-0.46,1.897c-0.422,0.225-0.714,0.664-0.714,1.173v0.667
+ c0,0.597,0.4,1.099,0.943,1.268c0.36,1.349,1.101,2.428,2.39,2.983v0.763c0,0.195-0.111,0.374-0.286,0.46l-2.574,1.268
+ c-0.703,0.383-1.14,1.12-1.14,1.92v0.611c0,0,0,0.179,0,0.273c0,0.042,0.011,0.082,0.028,0.121h11.945
+ C48.989,44.961,49,44.92,49,44.879c0-0.094,0-0.273,0-0.273v-0.557C49,43.22,48.532,42.463,47.791,42.092z"/>
+<rect y="13" style="fill:#38454F;" width="58" height="8"/>
+<g>
+ <path style="fill:#AFB6BB;" d="M14,26H5c-0.553,0-1,0.447-1,1s0.447,1,1,1h9c0.553,0,1-0.447,1-1S14.553,26,14,26z"/>
+ <path style="fill:#AFB6BB;" d="M28,27c0-0.553-0.447-1-1-1h-9c-0.553,0-1,0.447-1,1s0.447,1,1,1h9C27.553,28,28,27.553,28,27z"/>
+ <path style="fill:#AFB6BB;" d="M6,31H5c-0.553,0-1,0.447-1,1s0.447,1,1,1h1c0.553,0,1-0.447,1-1S6.553,31,6,31z"/>
+ <path style="fill:#AFB6BB;" d="M12,31h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S12.553,31,12,31z"/>
+ <path style="fill:#AFB6BB;" d="M17,31h-1c-0.553,0-1,0.447-1,1s0.447,1,1,1h1c0.553,0,1-0.447,1-1S17.553,31,17,31z"/>
+ <path style="fill:#AFB6BB;" d="M23,31h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S23.553,31,23,31z"/>
+ <path style="fill:#AFB6BB;" d="M26.29,31.29C26.109,31.479,26,31.729,26,32c0,0.27,0.109,0.52,0.29,0.71
+ C26.479,32.89,26.74,33,27,33s0.52-0.11,0.71-0.29C27.89,32.52,28,32.26,28,32s-0.11-0.521-0.29-0.71
+ C27.34,30.92,26.66,30.92,26.29,31.29z"/>
+</g>
+<g>
+ <path style="fill:#7383BF;" d="M10.651,36.4c-2.191,1.14-2.928,3.32-3.196,5.582c-0.414-0.346-0.827-0.693-1.241-1.04
+ c-0.981-0.822-2.404,0.585-1.414,1.414c0.935,0.783,1.871,1.567,2.806,2.351C8.267,45.262,9.282,44.918,9.313,44
+ c0.073-2.167,0.177-4.743,2.348-5.873C12.805,37.532,11.794,35.806,10.651,36.4z"/>
+ <path style="fill:#7383BF;" d="M25.814,40.513c-0.423-0.579-0.859-1.063-1.632-1.121c-1.457-0.11-3.958,1.975-4.992,0.132
+ c-0.262-0.468-0.91-0.64-1.368-0.359c-1.416,0.869-3.267,2.119-4.756,0.5c-0.875-0.951-2.286,0.467-1.414,1.414
+ c1.871,2.033,4.284,1.41,6.407,0.259c0.448,0.481,0.984,0.81,1.697,1.067c0.909,0.328,4.087-1.22,4.333-0.883
+ C24.839,42.553,26.576,41.557,25.814,40.513z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/id-card.svg b/img/icons/essential-collection/svg/id-card.svg
new file mode 100644
index 00000000..73bdd652
--- /dev/null
+++ b/img/icons/essential-collection/svg/id-card.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<path style="fill:#424A60;" d="M31.499,7c-0.219,0-0.44-0.071-0.624-0.219c-0.432-0.346-0.501-0.975-0.156-1.406l4-5
+ c0.345-0.43,0.976-0.501,1.405-0.156c0.432,0.346,0.501,0.975,0.156,1.406l-4,5C32.083,6.871,31.792,7,31.499,7z"/>
+<path style="fill:#E7ECED;" d="M46.5,5h-34c-1.1,0-2,0.9-2,2v50c0,1.1,0.9,2,2,2h34c1.1,0,2-0.9,2-2V7C48.5,5.9,47.6,5,46.5,5z
+ M29.5,14c-1.657,0-3-1.343-3-3s1.343-3,3-3s3,1.343,3,3S31.157,14,29.5,14z"/>
+<circle style="fill:#424A60;" cx="29.5" cy="36" r="12"/>
+<path style="fill:#7383BF;" d="M33.284,41.261c0.748-0.874,1.216-1.994,1.216-3.234V34c0-2.761-2.239-5-5-5s-5,2.239-5,5v4.027
+ c0,1.24,0.468,2.36,1.216,3.234l-5.803,1.934C22.102,46.108,25.576,48,29.5,48s7.398-1.892,9.587-4.804L33.284,41.261z"/>
+<path style="fill:#424A60;" d="M29.501,12c-0.367,0-0.72-0.202-0.896-0.553l-5-10c-0.247-0.494-0.047-1.095,0.447-1.342
+ c0.496-0.245,1.095-0.047,1.342,0.447l5,10c0.247,0.494,0.047,1.095-0.447,1.342C29.804,11.966,29.651,12,29.501,12z"/>
+<g>
+ <circle style="fill:#424A60;" cx="29.5" cy="19" r="1"/>
+ <circle style="fill:#424A60;" cx="33.3" cy="19" r="1"/>
+ <circle style="fill:#424A60;" cx="25.7" cy="19" r="1"/>
+ <circle style="fill:#424A60;" cx="18.099" cy="19" r="1"/>
+ <circle style="fill:#424A60;" cx="14.3" cy="19" r="1"/>
+ <circle style="fill:#424A60;" cx="44.7" cy="19" r="1"/>
+ <circle style="fill:#424A60;" cx="37.099" cy="19" r="1"/>
+ <circle style="fill:#424A60;" cx="40.9" cy="19" r="1"/>
+ <circle style="fill:#424A60;" cx="21.9" cy="19" r="1"/>
+ <circle style="fill:#424A60;" cx="21.9" cy="54" r="1"/>
+ <circle style="fill:#424A60;" cx="18.099" cy="54" r="1"/>
+ <circle style="fill:#424A60;" cx="14.3" cy="54" r="1"/>
+ <circle style="fill:#424A60;" cx="37.099" cy="54" r="1"/>
+ <circle style="fill:#424A60;" cx="40.9" cy="54" r="1"/>
+ <circle style="fill:#424A60;" cx="44.7" cy="54" r="1"/>
+ <circle style="fill:#424A60;" cx="29.5" cy="54" r="1"/>
+ <circle style="fill:#424A60;" cx="33.3" cy="54" r="1"/>
+ <circle style="fill:#424A60;" cx="25.7" cy="54" r="1"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/idea.svg b/img/icons/essential-collection/svg/idea.svg
new file mode 100644
index 00000000..c7730ec4
--- /dev/null
+++ b/img/icons/essential-collection/svg/idea.svg
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53 53" style="enable-background:new 0 0 53 53;" xml:space="preserve">
+<path style="fill:#EFCE4A;" d="M26.5,9c-8.837,0-16,7.164-16,16c0,7.089,4.615,13.091,11,15.192V50h2v3h6v-3h2v-9.808
+ c6.385-2.101,11-8.103,11-15.192C42.5,16.164,35.337,9,26.5,9z"/>
+<g>
+ <path style="fill:#EFCE4A;" d="M26.5,0c-0.553,0-1,0.447-1,1v4c0,0.553,0.447,1,1,1s1-0.447,1-1V1C27.5,0.447,27.053,0,26.5,0z"/>
+ <path style="fill:#EFCE4A;" d="M50.5,24h-4c-0.553,0-1,0.447-1,1s0.447,1,1,1h4c0.553,0,1-0.447,1-1S51.053,24,50.5,24z"/>
+ <path style="fill:#EFCE4A;" d="M6.5,24h-4c-0.553,0-1,0.447-1,1s0.447,1,1,1h4c0.553,0,1-0.447,1-1S7.053,24,6.5,24z"/>
+ <path style="fill:#EFCE4A;" d="M42.764,7.322l-2.828,2.828c-0.391,0.391-0.391,1.023,0,1.414c0.195,0.195,0.451,0.293,0.707,0.293
+ s0.512-0.098,0.707-0.293l2.828-2.828c0.391-0.391,0.391-1.023,0-1.414S43.154,6.932,42.764,7.322z"/>
+ <path style="fill:#EFCE4A;" d="M11.65,38.436l-2.828,2.828c-0.391,0.391-0.391,1.023,0,1.414c0.195,0.195,0.451,0.293,0.707,0.293
+ s0.512-0.098,0.707-0.293l2.828-2.828c0.391-0.391,0.391-1.023,0-1.414S12.041,38.045,11.65,38.436z"/>
+ <path style="fill:#EFCE4A;" d="M41.35,38.436c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l2.828,2.828
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L41.35,38.436z"/>
+ <path style="fill:#EFCE4A;" d="M10.236,7.322c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l2.828,2.828
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L10.236,7.322z"/>
+</g>
+<path style="fill:#F7E6A1;" d="M15.5,26c-0.553,0-1-0.447-1-1c0-6.617,5.383-12,12-12c0.553,0,1,0.447,1,1s-0.447,1-1,1
+ c-5.514,0-10,4.486-10,10C16.5,25.553,16.053,26,15.5,26z"/>
+<polygon style="fill:#556080;" points="21.5,43 21.5,50 23.5,50 23.5,53 29.5,53 29.5,50 31.5,50 31.5,43 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/incoming.svg b/img/icons/essential-collection/svg/incoming.svg
new file mode 100644
index 00000000..0a253512
--- /dev/null
+++ b/img/icons/essential-collection/svg/incoming.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54.451 54.451" style="enable-background:new 0 0 54.451 54.451;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M34.944,20.083l5.119,5.119l-17.017-0.046L23,8.14l5.119,5.119
+ c5.444-5.782,10.483-5.951,10.483-5.951C41.456,7.046,43.914,7.445,46,8.151V4.226H0v46h46V13.611
+ C38.281,14.631,34.944,20.083,34.944,20.083z"/>
+<path style="fill:#ED8A19;" d="M28.119,13.258L23,8.14l0.046,17.017l17.017,0.046l-5.119-5.119c0,0,5.712-9.359,19.507-5.857
+ c0,0-5.318-7.884-15.849-6.919C38.602,7.307,33.562,7.477,28.119,13.258z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/infinity.svg b/img/icons/essential-collection/svg/infinity.svg
new file mode 100644
index 00000000..afa98523
--- /dev/null
+++ b/img/icons/essential-collection/svg/infinity.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M30,30
+ c0,8.008-6.492,14.5-14.5,14.5S1,38.008,1,30s6.492-14.5,14.5-14.5c2.983,0,5.757,0.901,8.062,2.446
+ c0.796,0.533,1.536,1.143,2.21,1.82"/>
+<path style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M30,30
+ c0-8.008,6.492-14.5,14.5-14.5S59,21.992,59,30s-6.492,14.5-14.5,14.5c-4.003,0-7.627-1.622-10.251-4.245"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/info.svg b/img/icons/essential-collection/svg/info.svg
new file mode 100644
index 00000000..b0f29561
--- /dev/null
+++ b/img/icons/essential-collection/svg/info.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<circle style="fill:#48A0DC;" cx="25" cy="25" r="25"/>
+<line style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="25" y1="37" x2="25" y2="39"/>
+<path style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M18,16
+ c0-3.899,3.188-7.054,7.1-6.999c3.717,0.052,6.848,3.182,6.9,6.9c0.035,2.511-1.252,4.723-3.21,5.986
+ C26.355,23.457,25,26.261,25,29.158V32"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/internet.svg b/img/icons/essential-collection/svg/internet.svg
new file mode 100644
index 00000000..188f08d6
--- /dev/null
+++ b/img/icons/essential-collection/svg/internet.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#7383BF;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="29" cy="29" r="28"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="29" y1="57" x2="29" y2="1"/>
+<path style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M29,1
+ c-0.214,0-0.426,0.011-0.639,0.016C20.213,7.616,15,17.697,15,29s5.213,21.384,13.361,27.984C28.574,56.989,28.786,57,29,57"/>
+<path style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M8.698,9.728
+ C14.478,13.683,21.468,16,29,16s14.522-2.317,20.302-6.272"/>
+<path style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M49.862,47.67
+ C43.975,43.475,36.779,41,29,41s-14.975,2.475-20.862,6.67"/>
+<path style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M29,57
+ c0.214,0,0.426-0.011,0.639-0.016C37.787,50.384,43,40.303,43,29S37.787,7.616,29.639,1.016C29.426,1.011,29.214,1,29,1"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="1" y1="29" x2="57" y2="29"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/key.svg b/img/icons/essential-collection/svg/key.svg
new file mode 100644
index 00000000..0d34eca2
--- /dev/null
+++ b/img/icons/essential-collection/svg/key.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#D8A852;" d="M41,0c-9.374,0-17,7.626-17,17c0,3.195,0.902,6.175,2.441,8.731L0.586,51.586
+ c-0.781,0.781-0.781,2.047,0,2.828C0.977,54.805,1.488,55,2,55s1.023-0.195,1.414-0.586L7,50.828l6.586,6.586
+ C13.977,57.805,14.488,58,15,58s1.023-0.195,1.414-0.586c0.781-0.781,0.781-2.047,0-2.828L9.828,48L12,45.828l4.586,4.586
+ C16.977,50.805,17.488,51,18,51s1.023-0.195,1.414-0.586c0.781-0.781,0.781-2.047,0-2.828L14.828,43L17,40.828l6.586,6.586
+ C23.977,47.805,24.488,48,25,48s1.023-0.195,1.414-0.586c0.781-0.781,0.781-2.047,0-2.828L19.828,38l9.075-9.075
+ C31.988,32.054,36.269,34,41,34c9.374,0,17-7.626,17-17S50.374,0,41,0z M41,30c-7.168,0-13-5.832-13-13S33.832,4,41,4
+ s13,5.832,13,13S48.168,30,41,30z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/lamp.svg b/img/icons/essential-collection/svg/lamp.svg
new file mode 100644
index 00000000..61fea7f4
--- /dev/null
+++ b/img/icons/essential-collection/svg/lamp.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<polygon style="fill:#556080;" points="57,45 2,45 8,9 51,9 "/>
+<polygon style="fill:#424A60;" points="57,45 2,45 3.414,38 55.586,38 "/>
+<rect x="26" y="45" style="fill:#E7ECED;" width="7" height="11"/>
+<path style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M16,17V6c0-2.75,2.25-5,5-5h0
+ c2.75,0,5,2.25,5,5"/>
+<rect x="23" y="56" style="fill:#AFB6BB;" width="13" height="3"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/layers-1.svg b/img/icons/essential-collection/svg/layers-1.svg
new file mode 100644
index 00000000..80036fee
--- /dev/null
+++ b/img/icons/essential-collection/svg/layers-1.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 51 51" style="enable-background:new 0 0 51 51;" xml:space="preserve">
+<polygon style="fill:#694F87;" points="25.5,29 9.7,19.973 0.044,25.456 25.5,40 50.956,25.456 41.3,19.973 "/>
+<g>
+ <polygon style="fill:#556080;" points="25.5,40 9.7,30.973 0.044,36.456 25.5,51 50.956,36.456 41.3,30.973 "/>
+</g>
+<g>
+ <circle style="fill:#BF4D90;" cx="40.044" cy="21" r="1"/>
+ <circle style="fill:#BF4D90;" cx="43.044" cy="24" r="1"/>
+ <circle style="fill:#BF4D90;" cx="10.044" cy="21" r="1"/>
+ <circle style="fill:#BF4D90;" cx="37.044" cy="24" r="1"/>
+ <circle style="fill:#BF4D90;" cx="7.044" cy="24" r="1"/>
+ <circle style="fill:#BF4D90;" cx="13.044" cy="24" r="1"/>
+ <circle style="fill:#BF4D90;" cx="10.044" cy="27" r="1"/>
+ <circle style="fill:#BF4D90;" cx="16.044" cy="27" r="1"/>
+ <circle style="fill:#BF4D90;" cx="16.044" cy="33" r="1"/>
+ <circle style="fill:#BF4D90;" cx="13.044" cy="30" r="1"/>
+ <circle style="fill:#BF4D90;" cx="19.044" cy="30" r="1"/>
+ <circle style="fill:#BF4D90;" cx="22.044" cy="33" r="1"/>
+ <circle style="fill:#BF4D90;" cx="28.044" cy="33" r="1"/>
+ <circle style="fill:#BF4D90;" cx="25.044" cy="30" r="1"/>
+ <circle style="fill:#BF4D90;" cx="31.044" cy="30" r="1"/>
+ <circle style="fill:#BF4D90;" cx="25.044" cy="36" r="1"/>
+ <circle style="fill:#BF4D90;" cx="34.044" cy="27" r="1"/>
+ <circle style="fill:#BF4D90;" cx="40.044" cy="27" r="1"/>
+ <circle style="fill:#BF4D90;" cx="34.044" cy="33" r="1"/>
+ <circle style="fill:#BF4D90;" cx="37.044" cy="30" r="1"/>
+ <circle style="fill:#BF4D90;" cx="46.044" cy="27" r="1"/>
+</g>
+<polygon style="fill:#BF4D90;" points="50.956,14.456 25.5,29 0.044,14.456 25.5,0 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/layers.svg b/img/icons/essential-collection/svg/layers.svg
new file mode 100644
index 00000000..4756e507
--- /dev/null
+++ b/img/icons/essential-collection/svg/layers.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 51 51" style="enable-background:new 0 0 51 51;" xml:space="preserve">
+<polygon style="fill:#EFCE4A;" points="50.956,14.456 25.5,29 0.044,14.456 25.5,0 "/>
+<polygon style="fill:#ED8A19;" points="25.5,29 9.7,19.973 0.044,25.456 25.5,40 50.956,25.456 41.3,19.973 "/>
+<g>
+ <polygon style="fill:#EA6248;" points="25.5,40 9.7,30.973 0.044,36.456 25.5,51 50.956,36.456 41.3,30.973 "/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/like-1.svg b/img/icons/essential-collection/svg/like-1.svg
new file mode 100644
index 00000000..9813e898
--- /dev/null
+++ b/img/icons/essential-collection/svg/like-1.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<path style="fill:#D75A4A;" d="M24.85,10.126c2.018-4.783,6.628-8.125,11.99-8.125c7.223,0,12.425,6.179,13.079,13.543
+ c0,0,0.353,1.828-0.424,5.119c-1.058,4.482-3.545,8.464-6.898,11.503L24.85,48L7.402,32.165c-3.353-3.038-5.84-7.021-6.898-11.503
+ c-0.777-3.291-0.424-5.119-0.424-5.119C0.734,8.179,5.936,2,13.159,2C18.522,2,22.832,5.343,24.85,10.126z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/like-2.svg b/img/icons/essential-collection/svg/like-2.svg
new file mode 100644
index 00000000..e4051206
--- /dev/null
+++ b/img/icons/essential-collection/svg/like-2.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<path style="fill:#C03A2B;" d="M24.85,10.126c2.018-4.783,6.628-8.125,11.99-8.125c7.223,0,12.425,6.179,13.079,13.543
+ c0,0,0.353,1.828-0.424,5.119c-1.058,4.482-3.545,8.464-6.898,11.503L24.85,48L7.402,32.165c-3.353-3.038-5.84-7.021-6.898-11.503
+ c-0.777-3.291-0.424-5.119-0.424-5.119C0.734,8.179,5.936,2,13.159,2C18.522,2,22.832,5.343,24.85,10.126z"/>
+<path style="fill:#ED7161;" d="M6,18.078c-0.553,0-1-0.447-1-1c0-5.514,4.486-10,10-10c0.553,0,1,0.447,1,1s-0.447,1-1,1
+ c-4.411,0-8,3.589-8,8C7,17.631,6.553,18.078,6,18.078z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/like.svg b/img/icons/essential-collection/svg/like.svg
new file mode 100644
index 00000000..e3fb6356
--- /dev/null
+++ b/img/icons/essential-collection/svg/like.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<rect x="1.5" y="20" style="fill:#4B6DAA;" width="14" height="36"/>
+<circle style="fill:#D8A852;" cx="8.5" cy="47" r="4"/>
+<path style="fill:#FBCE9D;" d="M53.5,26c0-2.209-1.791-4-4-4h-9h-3h-3.602l0.988-4.619c0.754-3.524,0.552-7.819,0.104-10.836
+ C34.542,3.528,31.84,0,29.013,0h-0.239C26.364,0,25.5,2.659,25.5,6c0,16.25-8,16-8,16h-2v32h15h10h4c2.209,0,4-1.791,4-4
+ c0-2.209-1.791-4-4-4h3c2.209,0,4-1.791,4-4c0-2.209-1.791-4-4-4h3c2.209,0,4-1.791,4-4c0-2.493-1.613-3.442-4-3.796
+ C49.337,30.031,47.224,30,46.5,30h3C51.709,30,53.5,28.209,53.5,26z"/>
+<path style="fill:#F7B563;" d="M52.12,29H39.5c-0.552,0-1,0.447-1,1s0.448,1,1,1h13.456c-0.657-0.403-1.488-0.653-2.456-0.796
+ C49.337,30.031,47.224,30,46.5,30h3C50.508,30,51.417,29.615,52.12,29z"/>
+<path style="fill:#F7B563;" d="M53.12,37H39.5c-0.552,0-1,0.447-1,1s0.448,1,1,1h10.621c-0.703-0.615-1.613-1-2.621-1h3
+ C51.508,38,52.417,37.615,53.12,37z"/>
+<path style="fill:#F7B563;" d="M50.12,45H37.5c-0.552,0-1,0.447-1,1s0.448,1,1,1h9.621c-0.703-0.615-1.613-1-2.621-1h3
+ C48.508,46,49.417,45.615,50.12,45z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/link.svg b/img/icons/essential-collection/svg/link.svg
new file mode 100644
index 00000000..49518e9b
--- /dev/null
+++ b/img/icons/essential-collection/svg/link.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57.654 57.654" style="enable-background:new 0 0 57.654 57.654;" xml:space="preserve">
+<path style="fill:none;stroke:#25AE88;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M28.827,28.827L28.827,28.827
+ c-4.276-4.276-4.276-11.273,0-15.55l9.071-9.071c4.276-4.276,11.273-4.276,15.549,0l0,0c4.276,4.276,4.276,11.273,0,15.549
+ l-9.071,9.071C40.101,33.103,33.103,33.103,28.827,28.827z"/>
+<path style="fill:none;stroke:#25AE88;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M4.207,53.447L4.207,53.447
+ c-4.276-4.276-4.276-11.273,0-15.55l9.071-9.071c4.276-4.276,11.273-4.276,15.549,0l0,0c4.276,4.276,4.276,11.273,0,15.549
+ l-9.071,9.071C15.48,57.723,8.483,57.723,4.207,53.447z"/>
+<line style="fill:none;stroke:#25AE88;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="38.158" y1="19.496" x2="19.496" y2="38.158"/>
+<path style="fill:none;stroke:#25AE88;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M28.827,28.827L28.827,28.827
+ c-4.276-4.276-4.276-11.273,0-15.55l9.071-9.071c4.276-4.276,11.273-4.276,15.549,0l0,0c4.276,4.276,4.276,11.273,0,15.549
+ l-9.071,9.071C40.101,33.103,33.103,33.103,28.827,28.827z"/>
+<path style="fill:none;stroke:#25AE88;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M4.207,53.447L4.207,53.447
+ c-4.276-4.276-4.276-11.273,0-15.55l9.071-9.071c4.276-4.276,11.273-4.276,15.549,0l0,0c4.276,4.276,4.276,11.273,0,15.549
+ l-9.071,9.071C15.48,57.723,8.483,57.723,4.207,53.447z"/>
+<line style="fill:none;stroke:#25AE88;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="38.158" y1="19.496" x2="19.496" y2="38.158"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/list-1.svg b/img/icons/essential-collection/svg/list-1.svg
new file mode 100644
index 00000000..b9b93e02
--- /dev/null
+++ b/img/icons/essential-collection/svg/list-1.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect style="fill:#EDEADA;" width="58" height="58"/>
+<polygon style="fill:#EBBA16;" points="13.929,10 15.143,12.46 17.858,12.855 15.894,14.77 16.357,17.474 13.929,16.197
+ 11.501,17.474 11.965,14.77 10,12.855 12.715,12.46 "/>
+<polygon style="fill:#EBBA16;" points="13.929,25.083 15.143,27.543 17.858,27.938 15.894,29.853 16.357,32.557 13.929,31.28
+ 11.501,32.557 11.965,29.853 10,27.938 12.715,27.543 "/>
+<polygon style="fill:#EBBA16;" points="13.929,40.526 15.143,42.987 17.858,43.381 15.894,45.296 16.357,48 13.929,46.723
+ 11.501,48 11.965,45.296 10,43.381 12.715,42.987 "/>
+<path style="fill:#7383BF;" d="M46,16H22.429c-0.552,0-1-0.447-1-1s0.448-1,1-1H46c0.552,0,1,0.447,1,1S46.552,16,46,16z"/>
+<path style="fill:#7383BF;" d="M46,31H22.429c-0.552,0-1-0.447-1-1s0.448-1,1-1H46c0.552,0,1,0.447,1,1S46.552,31,46,31z"/>
+<path style="fill:#7383BF;" d="M46,46H22.429c-0.552,0-1-0.447-1-1s0.448-1,1-1H46c0.552,0,1,0.447,1,1S46.552,46,46,46z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/list.svg b/img/icons/essential-collection/svg/list.svg
new file mode 100644
index 00000000..8c5735e6
--- /dev/null
+++ b/img/icons/essential-collection/svg/list.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#EDEADA;" points="51.5,14 37.5,0 6.5,0 6.5,58 51.5,58 "/>
+<polygon style="fill:#CEC9AE;" points="37.5,0 37.5,14 51.5,14 "/>
+<path style="fill:#CEC9AE;" d="M41.5,22h-16c-0.552,0-1-0.447-1-1s0.448-1,1-1h16c0.552,0,1,0.447,1,1S42.052,22,41.5,22z"/>
+<path style="fill:#14A085;" d="M17.5,23c-0.257,0-0.514-0.099-0.708-0.293l-2-2c-0.391-0.391-0.391-1.023,0-1.414
+ s1.023-0.391,1.414,0l1.367,1.367l4.301-3.441c0.43-0.345,1.061-0.275,1.405,0.156c0.345,0.432,0.275,1.061-0.156,1.406l-5,4
+ C17.941,22.928,17.72,23,17.5,23z"/>
+<path style="fill:#CEC9AE;" d="M41.5,33h-16c-0.552,0-1-0.447-1-1s0.448-1,1-1h16c0.552,0,1,0.447,1,1S42.052,33,41.5,33z"/>
+<path style="fill:#14A085;" d="M17.5,34c-0.257,0-0.514-0.099-0.708-0.293l-2-2c-0.391-0.391-0.391-1.023,0-1.414
+ s1.023-0.391,1.414,0l1.367,1.367l4.301-3.441c0.43-0.345,1.061-0.275,1.405,0.156c0.345,0.432,0.275,1.061-0.156,1.406l-5,4
+ C17.941,33.928,17.72,34,17.5,34z"/>
+<path style="fill:#CEC9AE;" d="M41.5,44h-16c-0.552,0-1-0.447-1-1s0.448-1,1-1h16c0.552,0,1,0.447,1,1S42.052,44,41.5,44z"/>
+<path style="fill:#14A085;" d="M17.5,45c-0.257,0-0.514-0.099-0.708-0.293l-2-2c-0.391-0.391-0.391-1.023,0-1.414
+ s1.023-0.391,1.414,0l1.367,1.367l4.301-3.441c0.43-0.345,1.061-0.275,1.405,0.156c0.345,0.432,0.275,1.061-0.156,1.406l-5,4
+ C17.941,44.928,17.72,45,17.5,45z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/lock-1.svg b/img/icons/essential-collection/svg/lock-1.svg
new file mode 100644
index 00000000..8fdf4f0d
--- /dev/null
+++ b/img/icons/essential-collection/svg/lock-1.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:none;stroke:#949493;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M25,15v-1
+ c0-2.761,2.239-5,5-5h0c2.761,0,5,2.239,5,5v8"/>
+<path style="fill:none;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="M30,53
+ C15.641,53,4,41.359,4,27S15.641,1,30,1s26,11.641,26,26c0,7.135-2.874,13.599-7.528,18.297"/>
+<line style="fill:none;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="30" y1="53" x2="24" y2="59"/>
+<line style="fill:none;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="30" y1="53" x2="24" y2="47"/>
+<rect x="20" y="22" style="fill:#EB7937;" width="20" height="17"/>
+<path style="fill:#FFFFFF;" d="M33,29c0-1.657-1.343-3-3-3s-3,1.343-3,3c0,1.317,0.854,2.424,2.035,2.827
+ C29.024,31.885,29,31.939,29,32v3c0,0.553,0.448,1,1,1s1-0.447,1-1v-3c0-0.061-0.024-0.115-0.035-0.173
+ C32.146,31.424,33,30.317,33,29z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/lock.svg b/img/icons/essential-collection/svg/lock.svg
new file mode 100644
index 00000000..eb9e3669
--- /dev/null
+++ b/img/icons/essential-collection/svg/lock.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:none;stroke:#949493;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M35,24H25v-8
+ c0-2.761,2.239-5,5-5h0c2.761,0,5,2.239,5,5V24z"/>
+<path style="fill:none;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="M30,53
+ C15.641,53,4,41.359,4,27S15.641,1,30,1s26,11.641,26,26c0,7.135-2.874,13.599-7.528,18.297"/>
+<line style="fill:none;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="30" y1="53" x2="24" y2="59"/>
+<line style="fill:none;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="30" y1="53" x2="24" y2="47"/>
+<rect x="20" y="22" style="fill:#EB7937;" width="20" height="17"/>
+<path style="fill:#FFFFFF;" d="M33,29c0-1.657-1.343-3-3-3s-3,1.343-3,3c0,1.317,0.854,2.424,2.035,2.827
+ C29.024,31.885,29,31.939,29,32v3c0,0.553,0.448,1,1,1s1-0.447,1-1v-3c0-0.061-0.024-0.115-0.035-0.173
+ C32.146,31.424,33,30.317,33,29z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/locked-1.svg b/img/icons/essential-collection/svg/locked-1.svg
new file mode 100644
index 00000000..da26d118
--- /dev/null
+++ b/img/icons/essential-collection/svg/locked-1.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57 57" style="enable-background:new 0 0 57 57;" xml:space="preserve">
+<path style="fill:none;stroke:#424A60;stroke-width:4;stroke-linecap:round;stroke-miterlimit:10;" d="M16.5,15.82v-3.219
+ C16.5,6.77,21.675,2,28,2h0c6.325,0,11.5,4.77,11.5,10.601V25"/>
+<rect x="7.5" y="25" style="fill:#EBBA16;" width="42" height="32"/>
+<path style="fill:#424A60;" d="M28.5,45L28.5,45c-1.65,0-3-1.35-3-3v-6c0-1.65,1.35-3,3-3h0c1.65,0,3,1.35,3,3v6
+ C31.5,43.65,30.15,45,28.5,45z"/>
+<rect x="7.5" y="51" style="fill:#38454F;" width="42" height="6"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/locked-2.svg b/img/icons/essential-collection/svg/locked-2.svg
new file mode 100644
index 00000000..e2eda16e
--- /dev/null
+++ b/img/icons/essential-collection/svg/locked-2.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#C7CAC7;stroke:#C7CAC7;stroke-width:2;stroke-miterlimit:10;" d="M42,32H15V13.601C15,6.652,21.056,1,28.5,1
+ S42,6.652,42,13.601V32z M19,28h19V13.601C38,8.858,33.738,5,28.5,5S19,8.858,19,13.601V28z"/>
+<rect x="8" y="26" style="fill:#7383BF;" width="42" height="32"/>
+<rect x="29" y="26" style="fill:#6879AF;" width="21" height="32"/>
+<polygon style="fill:#EBBA16;" points="42.586,57 49,50.586 49,47 43.414,47 33.414,57 "/>
+<polygon style="fill:#4F5970;" points="9,47 9,54.586 16.586,47 "/>
+<polygon style="fill:#424A60;" points="30.586,57 40.586,47 31.414,47 21.414,57 "/>
+<path style="fill:#EACC18;" d="M28.586,47h-9.172l-9.707,9.707C9.512,56.902,9.256,57,9,57h9.586L28.586,47z"/>
+<polygon style="fill:#424A60;" points="49,57 49,53.414 45.414,57 "/>
+<polygon style="fill:#4F5970;" points="29,49.414 21.414,57 29,57 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/locked-3.svg b/img/icons/essential-collection/svg/locked-3.svg
new file mode 100644
index 00000000..e1f3487c
--- /dev/null
+++ b/img/icons/essential-collection/svg/locked-3.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#C7CAC7;stroke:#C7CAC7;stroke-width:2;stroke-miterlimit:10;" d="M40,28c-1.104,0-2-0.896-2-2V13.601
+ C38,8.858,33.738,5,28.5,5S19,8.858,19,13.601v3.22c0,1.104-0.896,2-2,2s-2-0.896-2-2v-3.22C15,6.652,21.056,1,28.5,1
+ S42,6.652,42,13.601V26C42,27.104,41.104,28,40,28z"/>
+<rect x="8" y="26" style="fill:#7383BF;" width="42" height="32"/>
+<rect x="29" y="26" style="fill:#6879AF;" width="21" height="32"/>
+<polygon style="fill:#EBBA16;" points="42.586,57 49,50.586 49,47 43.414,47 33.414,57 "/>
+<polygon style="fill:#4F5970;" points="9,47 9,54.586 16.586,47 "/>
+<polygon style="fill:#424A60;" points="30.586,57 40.586,47 31.414,47 21.414,57 "/>
+<path style="fill:#EACC18;" d="M28.586,47h-9.172l-9.707,9.707C9.512,56.902,9.256,57,9,57h9.586L28.586,47z"/>
+<polygon style="fill:#424A60;" points="49,57 49,53.414 45.414,57 "/>
+<polygon style="fill:#4F5970;" points="29,49.414 21.414,57 29,57 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/locked-4.svg b/img/icons/essential-collection/svg/locked-4.svg
new file mode 100644
index 00000000..6903ccd4
--- /dev/null
+++ b/img/icons/essential-collection/svg/locked-4.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve">
+<path style="fill:#C7CAC7;" d="M40.771,52H11.229C7.789,52,5,49.211,5,45.771V26.229C5,22.789,7.789,20,11.229,20h29.542
+ C44.211,20,47,22.789,47,26.229v19.542C47,49.211,44.211,52,40.771,52z"/>
+<path style="fill:#E7ECED;" d="M40.771,20H26v32h14.771C44.211,52,47,49.211,47,45.771V26.229C47,22.789,44.211,20,40.771,20z"/>
+<path style="fill:#4C4C4F;" d="M26,40L26,40c-1.65,0-3-1.35-3-3v-6c0-1.65,1.35-3,3-3h0c1.65,0,3,1.35,3,3v6
+ C29,38.65,27.65,40,26,40z"/>
+<path style="fill:#546A79;" d="M11.229,20H15v-6.5C15,8.262,19.935,4,26,4s11,4.262,11,9.5V20h3.771
+ c0.077,0,0.152,0.009,0.229,0.011V13.5C41,6.075,34.25,0,26,0S11,6.075,11,13.5v6.511C11.077,20.009,11.152,20,11.229,20z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/locked-5.svg b/img/icons/essential-collection/svg/locked-5.svg
new file mode 100644
index 00000000..9fd662c5
--- /dev/null
+++ b/img/icons/essential-collection/svg/locked-5.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:none;stroke:#D8A852;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="
+ M39,22.866V11.219C39,6.149,34.5,2,29,2s-10,4.149-10,9.219v11.647"/>
+<circle style="fill:#E7ECED;" cx="29" cy="39" r="19"/>
+<path style="fill:#C7CAC7;" d="M48,39c0-10.493-8.507-19-19-19v38C39.493,58,48,49.493,48,39z"/>
+<path style="fill:#424A60;" d="M29,44L29,44c-1.65,0-3-1.35-3-3v-6c0-1.65,1.35-3,3-3h0c1.65,0,3,1.35,3,3v6
+ C32,42.65,30.65,44,29,44z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/locked-6.svg b/img/icons/essential-collection/svg/locked-6.svg
new file mode 100644
index 00000000..2b3819b8
--- /dev/null
+++ b/img/icons/essential-collection/svg/locked-6.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:none;stroke:#FBD490;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="
+ M39,22.866V11.219C39,6.149,34.5,2,29,2s-10,4.149-10,9.219v11.647"/>
+<circle style="fill:#7383BF;" cx="29" cy="39" r="19"/>
+<path style="fill:#556080;" d="M48,39c0-10.493-8.507-19-19-19v38C39.493,58,48,49.493,48,39z"/>
+<circle style="fill:#424A60;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" cx="29" cy="39" r="8"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="29" y1="31" x2="29" y2="27"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="29" y1="51" x2="29" y2="47"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="34.657" y1="44.657" x2="37.485" y2="47.485"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="20.515" y1="47.485" x2="23.343" y2="44.657"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="34.657" y1="33.343" x2="37.485" y2="30.515"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="20.515" y1="30.515" x2="23.343" y2="33.343"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="37" y1="39" x2="41" y2="39"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="17" y1="39" x2="21" y2="39"/>
+<circle style="fill:#556080;" cx="29" cy="39" r="4"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/locked.svg b/img/icons/essential-collection/svg/locked.svg
new file mode 100644
index 00000000..84cef779
--- /dev/null
+++ b/img/icons/essential-collection/svg/locked.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57 57" style="enable-background:new 0 0 57 57;" xml:space="preserve">
+<path style="fill:none;stroke:#424A60;stroke-width:4;stroke-linecap:round;stroke-miterlimit:10;" d="M16.5,28V12.601
+ C16.5,6.77,21.675,2,28,2h0c6.325,0,11.5,4.77,11.5,10.601V28H16.5z"/>
+<rect x="7.5" y="25" style="fill:#EBBA16;" width="42" height="32"/>
+<path style="fill:#424A60;" d="M28.5,45L28.5,45c-1.65,0-3-1.35-3-3v-6c0-1.65,1.35-3,3-3h0c1.65,0,3,1.35,3,3v6
+ C31.5,43.65,30.15,45,28.5,45z"/>
+<rect x="7.5" y="51" style="fill:#38454F;" width="42" height="6"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/login.svg b/img/icons/essential-collection/svg/login.svg
new file mode 100644
index 00000000..94243866
--- /dev/null
+++ b/img/icons/essential-collection/svg/login.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<polygon style="fill:#556080;" points="13.5,0 13.5,21 13.5,33 13.5,54 50.5,54 50.5,0 "/>
+<line style="fill:none;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="25.5" y1="15" x2="37.5" y2="27"/>
+<line style="fill:none;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="25.5" y1="39" x2="37.5" y2="27"/>
+<line style="fill:none;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="37.5" y1="27" x2="4.5" y2="27"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/magic-wand.svg b/img/icons/essential-collection/svg/magic-wand.svg
new file mode 100644
index 00000000..c187c07d
--- /dev/null
+++ b/img/icons/essential-collection/svg/magic-wand.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56.598 56.598" style="enable-background:new 0 0 56.598 56.598;" xml:space="preserve">
+<rect x="-6.142" y="31.306" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -17.7016 25.8758)" style="fill:#424A60;" width="57.052" height="6"/>
+<path style="fill:#EBBA16;" d="M40.506,9c-0.552,0-1-0.447-1-1V1c0-0.553,0.448-1,1-1s1,0.447,1,1v7C41.506,8.553,41.058,9,40.506,9
+ z"/>
+<path style="fill:#EBBA16;" d="M40.506,32c-0.552,0-1-0.447-1-1v-7c0-0.553,0.448-1,1-1s1,0.447,1,1v7
+ C41.506,31.553,41.058,32,40.506,32z"/>
+<path style="fill:#EBBA16;" d="M55.506,17h-7c-0.552,0-1-0.447-1-1s0.448-1,1-1h7c0.552,0,1,0.447,1,1S56.058,17,55.506,17z"/>
+<path style="fill:#EBBA16;" d="M32.506,17h-7c-0.552,0-1-0.447-1-1s0.448-1,1-1h7c0.552,0,1,0.447,1,1S33.058,17,32.506,17z"/>
+<path style="fill:#EBBA16;" d="M46.506,11c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414l4.95-4.95
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414l-4.95,4.95C47.018,10.902,46.762,11,46.506,11z"/>
+<path style="fill:#EBBA16;" d="M51.456,27.95c-0.256,0-0.512-0.098-0.707-0.293l-4.95-4.95c-0.391-0.391-0.391-1.023,0-1.414
+ s1.023-0.391,1.414,0l4.95,4.95c0.391,0.391,0.391,1.023,0,1.414C51.967,27.853,51.711,27.95,51.456,27.95z"/>
+<path style="fill:#EBBA16;" d="M34.506,11c-0.256,0-0.512-0.098-0.707-0.293l-4.95-4.95c-0.391-0.391-0.391-1.023,0-1.414
+ s1.023-0.391,1.414,0l4.95,4.95c0.391,0.391,0.391,1.023,0,1.414C35.018,10.902,34.762,11,34.506,11z"/>
+<rect x="30.327" y="16.175" transform="matrix(-0.7071 0.7071 -0.7071 -0.7071 77.6005 6.2057)" style="fill:#7383BF;" width="14.376" height="5.999"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/magnet-1.svg b/img/icons/essential-collection/svg/magnet-1.svg
new file mode 100644
index 00000000..62162630
--- /dev/null
+++ b/img/icons/essential-collection/svg/magnet-1.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<path style="fill:#424A60;" d="M46,41.5H26c-6.627,0-12-5.373-12-12v0c0-6.627,5.373-12,12-12h20v-14H26c-14.359,0-26,11.641-26,26
+ v0c0,14.359,11.641,26,26,26h20V41.5z"/>
+<g>
+ <path style="fill:#C7CAC7;" d="M53,7.5h1c0.552,0,1-0.447,1-1s-0.448-1-1-1h-1c-0.552,0-1,0.447-1,1S52.448,7.5,53,7.5z"/>
+ <path style="fill:#C7CAC7;" d="M49,7.5h1c0.552,0,1-0.447,1-1s-0.448-1-1-1h-1c-0.552,0-1,0.447-1,1S48.448,7.5,49,7.5z"/>
+ <path style="fill:#C7CAC7;" d="M57,7.5h1c0.552,0,1-0.447,1-1s-0.448-1-1-1h-1c-0.552,0-1,0.447-1,1S56.448,7.5,57,7.5z"/>
+ <path style="fill:#C7CAC7;" d="M54,13.5h-1c-0.552,0-1,0.447-1,1s0.448,1,1,1h1c0.552,0,1-0.447,1-1S54.552,13.5,54,13.5z"/>
+ <path style="fill:#C7CAC7;" d="M49,15.5h1c0.552,0,1-0.447,1-1s-0.448-1-1-1h-1c-0.552,0-1,0.447-1,1S48.448,15.5,49,15.5z"/>
+ <path style="fill:#C7CAC7;" d="M58,13.5h-1c-0.552,0-1,0.447-1,1s0.448,1,1,1h1c0.552,0,1-0.447,1-1S58.552,13.5,58,13.5z"/>
+ <path style="fill:#C7CAC7;" d="M50,10.5c0,0.553,0.448,1,1,1h1c0.552,0,1-0.447,1-1s-0.448-1-1-1h-1C50.448,9.5,50,9.947,50,10.5z"
+ />
+ <path style="fill:#C7CAC7;" d="M54,10.5c0,0.553,0.448,1,1,1h1c0.552,0,1-0.447,1-1s-0.448-1-1-1h-1C54.448,9.5,54,9.947,54,10.5z"
+ />
+ <path style="fill:#C7CAC7;" d="M54,44.5h-1c-0.552,0-1,0.447-1,1s0.448,1,1,1h1c0.552,0,1-0.447,1-1S54.552,44.5,54,44.5z"/>
+ <path style="fill:#C7CAC7;" d="M49,46.5h1c0.552,0,1-0.447,1-1s-0.448-1-1-1h-1c-0.552,0-1,0.447-1,1S48.448,46.5,49,46.5z"/>
+ <path style="fill:#C7CAC7;" d="M58,44.5h-1c-0.552,0-1,0.447-1,1s0.448,1,1,1h1c0.552,0,1-0.447,1-1S58.552,44.5,58,44.5z"/>
+ <path style="fill:#C7CAC7;" d="M54,52.5h-1c-0.552,0-1,0.447-1,1s0.448,1,1,1h1c0.552,0,1-0.447,1-1S54.552,52.5,54,52.5z"/>
+ <path style="fill:#C7CAC7;" d="M50,52.5h-1c-0.552,0-1,0.447-1,1s0.448,1,1,1h1c0.552,0,1-0.447,1-1S50.552,52.5,50,52.5z"/>
+ <path style="fill:#C7CAC7;" d="M58,52.5h-1c-0.552,0-1,0.447-1,1s0.448,1,1,1h1c0.552,0,1-0.447,1-1S58.552,52.5,58,52.5z"/>
+ <path style="fill:#C7CAC7;" d="M53,49.5c0-0.553-0.448-1-1-1h-1c-0.552,0-1,0.447-1,1s0.448,1,1,1h1C52.552,50.5,53,50.053,53,49.5
+ z"/>
+ <path style="fill:#C7CAC7;" d="M57,49.5c0-0.553-0.448-1-1-1h-1c-0.552,0-1,0.447-1,1s0.448,1,1,1h1C56.552,50.5,57,50.053,57,49.5
+ z"/>
+</g>
+<rect x="32" y="3.5" style="fill:#EBBA16;" width="14" height="14"/>
+<rect x="32" y="41.5" style="fill:#EBBA16;" width="14" height="14"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/magnet-2.svg b/img/icons/essential-collection/svg/magnet-2.svg
new file mode 100644
index 00000000..c924edfa
--- /dev/null
+++ b/img/icons/essential-collection/svg/magnet-2.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#424A60;" d="M58,41H26c-6.627,0-12-5.373-12-12v0c0-6.627,5.373-12,12-12h32V3H26C11.641,3,0,14.641,0,29v0
+ c0,14.359,11.641,26,26,26h32V41z"/>
+<rect x="44" y="3" style="fill:#DD352E;" width="14" height="14"/>
+<rect x="44" y="41" style="fill:#EFCE4A;" width="14" height="14"/>
+<path style="fill:#FFFFFF;" d="M54,11h-6c-0.553,0-1-0.447-1-1s0.447-1,1-1h6c0.553,0,1,0.447,1,1S54.553,11,54,11z"/>
+<path style="fill:#FFFFFF;" d="M51,14c-0.553,0-1-0.447-1-1V7c0-0.553,0.447-1,1-1s1,0.447,1,1v6C52,13.553,51.553,14,51,14z"/>
+<path style="fill:#FFFFFF;" d="M54,49h-6c-0.553,0-1-0.447-1-1s0.447-1,1-1h6c0.553,0,1,0.447,1,1S54.553,49,54,49z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/magnet.svg b/img/icons/essential-collection/svg/magnet.svg
new file mode 100644
index 00000000..0d3ff0fc
--- /dev/null
+++ b/img/icons/essential-collection/svg/magnet.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#424A60;" d="M58,41H26c-6.627,0-12-5.373-12-12v0c0-6.627,5.373-12,12-12h32V3H26C11.641,3,0,14.641,0,29v0
+ c0,14.359,11.641,26,26,26h32V41z"/>
+<rect x="41" y="3" style="fill:#EBBA16;" width="4" height="14"/>
+<rect x="41" y="41" style="fill:#EBBA16;" width="4" height="14"/>
+<rect x="45.031" y="41" style="fill:#DD352E;" width="12.969" height="14"/>
+<rect x="45.031" y="3" style="fill:#DD352E;" width="12.969" height="14"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/map-1.svg b/img/icons/essential-collection/svg/map-1.svg
new file mode 100644
index 00000000..3d214f5b
--- /dev/null
+++ b/img/icons/essential-collection/svg/map-1.svg
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve">
+<polygon style="fill:#556080;" points="18,44 0,50 0,7 18,1 "/>
+<polygon style="fill:#465066;" points="52,42 35,51 35,10 52,1 "/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="10" y1="17" x2="10" y2="20"/>
+<circle style="fill:#D75A4A;" cx="10" cy="13" r="4"/>
+<path style="fill:#7383BF;" d="M31.418,33.497c-0.542-0.104-0.896-0.63-0.792-1.172s0.628-0.898,1.172-0.791
+ C32.917,31.75,33.963,31.837,35,31.8V10L18,1v28.228c0.625-0.076,1.263-0.127,1.918-0.141c0.007,0,0.015,0,0.022,0
+ c0.542,0,0.988,0.434,1,0.979c0.012,0.553-0.426,1.01-0.979,1.021c-0.674,0.014-1.328,0.068-1.961,0.155V44l17,7V33.799
+ c-0.14,0.004-0.282,0.016-0.421,0.016C33.571,33.815,32.508,33.708,31.418,33.497z M28.708,31.74
+ c-0.161,0.384-0.532,0.614-0.923,0.614c-0.128,0-0.259-0.024-0.385-0.077c-0.357-0.149-0.614-0.27-0.748-0.334
+ c-0.984-0.25-1.951-0.448-2.877-0.59c-0.546-0.083-0.921-0.594-0.838-1.14c0.083-0.546,0.594-0.923,1.14-0.837
+ c1.023,0.156,2.09,0.376,3.173,0.654c0.071,0.019,0.14,0.045,0.205,0.078c0.017,0.009,0.275,0.138,0.716,0.322
+ C28.68,30.645,28.92,31.23,28.708,31.74z"/>
+<path style="fill:#EFCE4A;" d="M15.736,29.653c-0.534,0.142-0.852,0.689-0.71,1.223c0.119,0.448,0.523,0.744,0.966,0.744
+ c0.084,0,0.171-0.011,0.257-0.033c0.56-0.148,1.146-0.262,1.751-0.345v-2.014C17.217,29.323,16.459,29.462,15.736,29.653z"/>
+<path style="fill:#EFCE4A;" d="M11.805,31.342c-1.207,0.757-2.295,1.705-3.235,2.82c-0.356,0.422-0.302,1.053,0.12,1.409
+ c0.188,0.158,0.417,0.235,0.644,0.235c0.285,0,0.567-0.121,0.765-0.355c0.806-0.956,1.737-1.769,2.768-2.414
+ c0.468-0.294,0.609-0.911,0.316-1.379C12.89,31.19,12.272,31.048,11.805,31.342z"/>
+<path style="fill:#EFCE4A;" d="M7.627,37.276c-0.502-0.23-1.096-0.013-1.327,0.489c-1.026,2.226-1.28,4.023-1.291,4.099
+ c-0.075,0.547,0.307,1.05,0.854,1.125c0.046,0.007,0.093,0.01,0.138,0.01c0.491,0,0.919-0.362,0.99-0.861
+ c0.002-0.016,0.231-1.597,1.125-3.534C8.347,38.102,8.128,37.508,7.627,37.276z"/>
+<path style="fill:#AF903A;" d="M47.068,13.919c-0.01-0.553-0.49-0.973-1.018-0.982c-0.552,0.01-0.992,0.466-0.982,1.018
+ c0.006,0.347,0.01,0.688,0.01,1.022c0,1-0.03,1.973-0.089,2.893c-0.035,0.551,0.383,1.026,0.934,1.062
+ c0.022,0.001,0.043,0.002,0.065,0.002c0.523,0,0.963-0.406,0.997-0.937c0.062-0.961,0.093-1.978,0.093-3.02
+ C47.078,14.63,47.075,14.277,47.068,13.919z"/>
+<path style="fill:#AF903A;" d="M45.69,20.914c-0.546-0.09-1.065,0.257-1.167,0.8c-0.252,1.348-0.595,2.58-1.019,3.663
+ c-0.201,0.514,0.052,1.094,0.566,1.296c0.12,0.047,0.243,0.068,0.364,0.068c0.4,0,0.777-0.241,0.932-0.636
+ c0.47-1.199,0.847-2.553,1.123-4.024C46.59,21.539,46.233,21.017,45.69,20.914z"/>
+<path style="fill:#AF903A;" d="M41.702,28.582c-0.776,0.967-1.696,1.726-2.735,2.257c-0.492,0.252-0.687,0.854-0.435,1.346
+ c0.177,0.346,0.527,0.545,0.891,0.545c0.153,0,0.309-0.035,0.454-0.109c1.292-0.661,2.431-1.599,3.384-2.786
+ c0.346-0.431,0.277-1.061-0.154-1.406C42.678,28.085,42.048,28.151,41.702,28.582z"/>
+<path style="fill:#AF903A;" d="M35.512,31.779c-0.17,0.013-0.341,0.015-0.512,0.021v1.999c0.222-0.007,0.443-0.009,0.667-0.026
+ c0.55-0.043,0.962-0.523,0.919-1.074C36.544,32.148,36.061,31.729,35.512,31.779z"/>
+<path style="fill:#F9EE2B;" d="M28.17,30.432c-0.441-0.185-0.699-0.313-0.716-0.322c-0.065-0.033-0.134-0.06-0.205-0.078
+ c-1.083-0.278-2.15-0.498-3.173-0.654c-0.545-0.086-1.056,0.291-1.14,0.837c-0.083,0.546,0.292,1.057,0.838,1.14
+ c0.926,0.142,1.893,0.34,2.877,0.59c0.134,0.064,0.39,0.185,0.748,0.334c0.126,0.053,0.257,0.077,0.385,0.077
+ c0.391,0,0.763-0.23,0.923-0.614C28.92,31.23,28.68,30.645,28.17,30.432z"/>
+<path style="fill:#F9EE2B;" d="M31.799,31.534c-0.544-0.107-1.067,0.249-1.172,0.791s0.25,1.067,0.792,1.172
+ c1.089,0.211,2.153,0.318,3.16,0.318c0.139,0,0.281-0.012,0.421-0.016V31.8C33.963,31.837,32.917,31.75,31.799,31.534z"/>
+<path style="fill:#F9EE2B;" d="M20.94,30.065c-0.012-0.545-0.457-0.979-1-0.979c-0.007,0-0.015,0-0.022,0
+ c-0.655,0.014-1.294,0.065-1.918,0.141v2.014c0.633-0.087,1.288-0.14,1.961-0.155C20.514,31.075,20.952,30.618,20.94,30.065z"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="8" y1="23" x2="12" y2="27"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="8" y1="27" x2="12" y2="23"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/map-2.svg b/img/icons/essential-collection/svg/map-2.svg
new file mode 100644
index 00000000..fa171102
--- /dev/null
+++ b/img/icons/essential-collection/svg/map-2.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#D6C990;" points="0,30.588 0,53.5 2.785,52.386 12.291,42.88 "/>
+<polygon style="fill:#D6C990;" points="15,9.519 11.415,5.934 0,10.5 0,15.032 15,30.032 "/>
+<polygon style="fill:#F7E6A1;" points="29,26.171 29,23.519 15,9.519 15,30.032 20.069,35.101 "/>
+<polygon style="fill:#7383BF;" points="29,44.032 29,41.727 27.848,42.88 "/>
+<polygon style="fill:#6472A0;" points="38.104,32.623 29,41.727 29,44.032 35.628,50.66 43,47.5 43,37.519 "/>
+<polygon style="fill:#D6C990;" points="43,12.171 43,4.5 30.776,9.739 38.104,17.067 "/>
+<polygon style="fill:#D6C990;" points="30.326,24.845 29,23.519 29,26.171 "/>
+<polygon style="fill:#F7E6A1;" points="48.23,6.941 43,4.5 43,12.171 "/>
+<polygon style="fill:#7383BF;" points="58,36.963 58,12.727 45.882,24.845 "/>
+<polygon style="fill:#7383BF;" points="43,47.5 58,53.5 58,52.519 43,37.519 "/>
+<polygon style="fill:#D1AF43;" points="15,40.171 15,30.032 0,15.032 0,30.588 12.291,42.88 "/>
+<polygon style="fill:#EFCE4A;" points="20.759,49.968 29,53.5 29,44.032 27.848,42.88 "/>
+<polygon style="fill:#EFCE4A;" points="15,30.032 15,40.171 20.069,35.101 "/>
+<polygon style="fill:#D1AF43;" points="29,53.5 35.628,50.66 29,44.032 "/>
+<polygon style="fill:#D1AF43;" points="15,4.5 11.415,5.934 15,9.519 "/>
+<polygon style="fill:#EFCE4A;" points="29,10.5 15,4.5 15,9.519 29,23.519 "/>
+<polygon style="fill:#D1AF43;" points="29,23.519 30.326,24.845 38.104,17.067 30.776,9.739 29,10.5 "/>
+<polygon style="fill:#D1AF43;" points="43,37.519 43,27.727 38.104,32.623 "/>
+<polygon style="fill:#EFCE4A;" points="45.882,24.845 43,27.727 43,37.519 58,52.519 58,36.963 "/>
+<polygon style="fill:#D1AF43;" points="15,45.588 12.291,42.88 2.785,52.386 15,47.5 "/>
+<polygon style="fill:#EFCE4A;" points="15,47.5 18.345,48.934 15,45.588 "/>
+<polygon style="fill:#EFCE4A;" points="20.069,35.101 27.848,42.88 29,41.727 29,26.171 "/>
+<polygon style="fill:#D1AF43;" points="43,12.171 38.104,17.067 43,21.963 "/>
+<polygon style="fill:#D1AF43;" points="29,26.171 29,41.727 38.104,32.623 30.326,24.845 "/>
+<polygon style="fill:#EFCE4A;" points="43,21.963 45.882,24.845 58,12.727 58,11.5 48.23,6.941 43,12.171 "/>
+<polygon style="fill:#D1AF43;" points="12.291,42.88 15,45.588 15,40.171 "/>
+<polygon style="fill:#EFCE4A;" points="20.069,35.101 15,40.171 15,45.588 18.345,48.934 20.759,49.968 27.848,42.88 "/>
+<polygon style="fill:#D1AF43;" points="38.104,17.067 30.326,24.845 38.104,32.623 43,27.727 43,21.963 "/>
+<polygon style="fill:#EFCE4A;" points="43,27.727 45.882,24.845 43,21.963 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/map-location.svg b/img/icons/essential-collection/svg/map-location.svg
new file mode 100644
index 00000000..bbe4e71a
--- /dev/null
+++ b/img/icons/essential-collection/svg/map-location.svg
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59.51 59.51" style="enable-background:new 0 0 59.51 59.51;" xml:space="preserve">
+<polygon style="fill:#FFFFFF;" points="53.057,24.76 43.057,24.76 17.057,24.76 7.057,24.76 3.402,53.76 56.171,53.76 "/>
+<path style="fill:#556080;" d="M53.057,24.76l3.114,29H3.402l3.655-29h10h26H53.057 M55.752,21.76h-2.695h-10h-26h-10H4.411
+ L4.08,24.385l-3.655,29L0,56.76h3.402h52.769h3.339l-0.357-3.32l-3.114-29L55.752,21.76L55.752,21.76z"/>
+<path style="fill:#EBBA16;" d="M13.684,49.76c-0.257,0-0.513-0.016-0.769-0.047c-0.218-0.026-0.438-0.067-0.653-0.124
+ c-0.535-0.138-0.856-0.684-0.718-1.218c0.138-0.535,0.683-0.86,1.218-0.718c0.132,0.033,0.264,0.059,0.396,0.075
+ c0.403,0.05,0.811,0.037,1.215-0.015c0.552-0.065,1.049,0.319,1.117,0.867c0.069,0.548-0.319,1.048-0.867,1.117
+ C14.31,49.738,13.995,49.76,13.684,49.76z M18.334,48.602c-0.401,0-0.779-0.243-0.933-0.64c-0.199-0.516,0.058-1.095,0.572-1.293
+ c0.592-0.229,1.188-0.483,1.774-0.759c0.503-0.235,1.096-0.019,1.33,0.48c0.234,0.5,0.02,1.096-0.48,1.33
+ c-0.628,0.295-1.269,0.568-1.903,0.813C18.576,48.581,18.454,48.602,18.334,48.602z M9.987,46.87c-0.507,0-0.941-0.384-0.994-0.898
+ c-0.02-0.197-0.028-0.395-0.028-0.592c0-0.116,0.003-0.232,0.009-0.347c0.023-0.469,0.099-0.942,0.225-1.406
+ c0.144-0.535,0.697-0.853,1.226-0.704c0.533,0.144,0.849,0.692,0.704,1.226c-0.088,0.326-0.141,0.657-0.156,0.983
+ c-0.004,0.082-0.007,0.165-0.007,0.248c0,0.129,0.005,0.26,0.019,0.389c0.056,0.55-0.345,1.04-0.894,1.097
+ C10.055,46.868,10.021,46.87,9.987,46.87z M23.666,45.871c-0.327,0-0.648-0.16-0.84-0.455c-0.301-0.464-0.169-1.083,0.294-1.384
+ c0.535-0.347,1.066-0.72,1.58-1.107c0.444-0.332,1.068-0.241,1.401,0.196c0.332,0.441,0.244,1.068-0.196,1.401
+ c-0.552,0.415-1.122,0.815-1.695,1.188C24.041,45.819,23.853,45.871,23.666,45.871z M28.425,42.221c-0.309,0-0.613-0.143-0.81-0.411
+ c-0.325-0.446-0.227-1.072,0.22-1.397c0.209-0.151,0.422-0.3,0.641-0.441c0.377-0.245,0.781-0.477,1.2-0.688
+ c0.496-0.247,1.095-0.048,1.343,0.444c0.248,0.493,0.049,1.095-0.444,1.343c-0.354,0.178-0.693,0.372-1.01,0.577
+ c-0.188,0.123-0.372,0.25-0.552,0.382C28.835,42.159,28.629,42.221,28.425,42.221z M12.469,41.748c-0.355,0-0.699-0.189-0.88-0.523
+ c-0.264-0.485-0.083-1.092,0.402-1.355c0.518-0.281,1.071-0.456,1.644-0.52c0.29-0.033,0.593-0.032,0.891,0.008
+ c0.547,0.072,0.933,0.574,0.86,1.122c-0.072,0.546-0.561,0.931-1.122,0.86c-0.133-0.018-0.271-0.018-0.406-0.002
+ c-0.316,0.034-0.623,0.132-0.913,0.289C12.793,41.709,12.63,41.748,12.469,41.748z M33.903,39.896c-0.462,0-0.877-0.321-0.977-0.791
+ c-0.115-0.541,0.229-1.072,0.769-1.187c0.643-0.138,1.335-0.252,2.058-0.342c0.553-0.081,1.047,0.32,1.115,0.869
+ c0.068,0.548-0.321,1.048-0.869,1.115c-0.665,0.083-1.3,0.188-1.886,0.313C34.042,39.889,33.972,39.896,33.903,39.896z
+ M39.863,39.279c-0.533,0-0.977-0.421-0.998-0.959c-0.022-0.552,0.406-1.018,0.958-1.04l1.993-0.082
+ c0.55-0.05,1.02,0.401,1.045,0.954c0.025,0.551-0.402,1.019-0.954,1.044l-2.002,0.082C39.892,39.279,39.877,39.279,39.863,39.279z
+ M45.842,38.836c-0.465,0-0.881-0.325-0.979-0.798c-0.111-0.541,0.236-1.07,0.777-1.182c0.578-0.119,1.006-0.286,1.347-0.525
+ c0.437-0.341,1.102-0.285,1.438,0.149c0.339,0.437,0.296,1.039-0.14,1.378c-0.055,0.042-0.11,0.083-0.169,0.122
+ c-0.544,0.384-1.229,0.661-2.072,0.835C45.977,38.829,45.908,38.836,45.842,38.836z M49.911,34.806
+ c-0.098,0-0.197-0.015-0.296-0.045c-0.527-0.163-0.823-0.724-0.659-1.251c0.053-0.171,0.086-0.341,0.097-0.506l0.004-0.116
+ c0-0.229-0.044-0.462-0.13-0.694c-0.192-0.518,0.071-1.093,0.59-1.285c0.514-0.191,1.094,0.071,1.285,0.59
+ c0.169,0.455,0.255,0.923,0.255,1.39c0,0.084-0.003,0.167-0.008,0.25c-0.022,0.324-0.084,0.646-0.183,0.964
+ C50.734,34.531,50.338,34.806,49.911,34.806z M44.851,30.699c-0.436,0-0.837-0.287-0.961-0.729c-0.15-0.531,0.158-1.084,0.69-1.233
+ c0.779-0.22,1.597-0.286,2.386-0.18c0.547,0.074,0.931,0.577,0.857,1.125c-0.073,0.547-0.566,0.931-1.125,0.857
+ c-0.521-0.069-1.058-0.023-1.575,0.121C45.032,30.687,44.942,30.699,44.851,30.699z"/>
+<path style="fill:#DD352E;" d="M40.844,11.931C40.32,7.932,38.23,2.75,30.022,2.75c-8.207,0-10.298,5.182-10.822,9.181
+ c-0.287,2.192-0.126,4.419,0.33,6.582c2.509,11.893,8.71,19.022,10.177,20.577c0.172,0.182,0.458,0.182,0.63,0
+ c1.467-1.555,7.668-8.684,10.177-20.577C40.971,16.35,41.132,14.123,40.844,11.931z M30.022,19.672
+ c-3.505,0-6.346-2.841-6.346-6.346c0-3.505,2.841-6.345,6.346-6.345c3.505,0,6.346,2.841,6.346,6.345
+ C36.368,16.831,33.527,19.672,30.022,19.672z"/>
+<g>
+ <path style="fill:#B02721;" d="M30.023,5.981c-4.051,0-7.346,3.295-7.346,7.345c0,4.051,3.295,7.346,7.346,7.346
+ s7.346-3.295,7.346-7.346C37.368,9.276,34.073,5.981,30.023,5.981z M30.023,18.672c-2.947,0-5.346-2.398-5.346-5.346
+ s2.398-5.345,5.346-5.345s5.346,2.397,5.346,5.345S32.97,18.672,30.023,18.672z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/map.svg b/img/icons/essential-collection/svg/map.svg
new file mode 100644
index 00000000..13902089
--- /dev/null
+++ b/img/icons/essential-collection/svg/map.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53 53" style="enable-background:new 0 0 53 53;" xml:space="preserve">
+<polygon style="fill:#43B05C;" points="18,23.243 2.256,7.499 0,8 0,51 2.099,50.534 18,34.632 "/>
+<polygon style="fill:#48A0DC;" points="9.372,48.917 18,47 18,40.289 "/>
+<polygon style="fill:#43B05C;" points="18,4 6.884,6.47 18,17.586 "/>
+<polygon style="fill:#43B05C;" points="49.449,3.184 35,8 35,17.632 "/>
+<polygon style="fill:#48A0DC;" points="35,23.289 35,50 53,43 53,5.289 "/>
+<polygon style="fill:#3D994F;" points="26.523,26.109 35,17.632 35,8 18,4 18,17.586 "/>
+<polygon style="fill:#3D994F;" points="18,23.243 18,34.632 23.695,28.938 "/>
+<polygon style="fill:#4393BF;" points="18,40.289 18,47 35,50 35,23.289 "/>
+<polygon style="fill:#EFCE4A;" points="18,17.586 6.884,6.47 2.256,7.499 18,23.243 "/>
+<polygon style="fill:#EFCE4A;" points="18,34.632 2.099,50.534 9.372,48.917 18,40.289 "/>
+<polygon style="fill:#EFCE4A;" points="35,23.289 53,5.289 53,2 49.449,3.184 35,17.632 "/>
+<polygon style="fill:#D6B445;" points="26.523,26.109 18,17.586 18,23.243 23.695,28.938 18,34.632 18,40.289 35,23.289 35,17.632
+ "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/megaphone-1.svg b/img/icons/essential-collection/svg/megaphone-1.svg
new file mode 100644
index 00000000..661d6271
--- /dev/null
+++ b/img/icons/essential-collection/svg/megaphone-1.svg
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<polygon style="fill:#556080;" points="38,43.5 5,33.1 5,25.9 38,15.5 "/>
+<path style="fill:none;stroke:#AFB6BB;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M21.276,43.384L9.86,39.685
+ c-1.256-0.407-1.95-1.767-1.544-3.023l0,0c0.407-1.256,1.767-1.95,3.023-1.544l11.416,3.698c1.256,0.407,1.95,1.767,1.544,3.023l0,0
+ C23.892,43.096,22.532,43.79,21.276,43.384z"/>
+<path style="fill:#424A60;" d="M2.5,36.5L2.5,36.5C1.125,36.5,0,35.375,0,34v-9c0-1.375,1.125-2.5,2.5-2.5h0
+ C3.875,22.5,5,23.625,5,25v9C5,35.375,3.875,36.5,2.5,36.5z"/>
+<path style="fill:#424A60;" d="M41,48.5L41,48.5c-1.65,0-3-1.35-3-3v-32c0-1.65,1.35-3,3-3h0c1.65,0,3,1.35,3,3v32
+ C44,47.15,42.65,48.5,41,48.5z"/>
+<path style="fill:#C7CAC7;" d="M58,30.5h-1c-0.553,0-1-0.447-1-1s0.447-1,1-1h1c0.553,0,1,0.447,1,1S58.553,30.5,58,30.5z M54,30.5
+ h-1c-0.553,0-1-0.447-1-1s0.447-1,1-1h1c0.553,0,1,0.447,1,1S54.553,30.5,54,30.5z M50,30.5h-1c-0.553,0-1-0.447-1-1s0.447-1,1-1h1
+ c0.553,0,1,0.447,1,1S50.553,30.5,50,30.5z"/>
+<path style="fill:#C7CAC7;" d="M49,18.864c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414L49,16.45
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414l-0.707,0.707C49.512,18.767,49.256,18.864,49,18.864z M51.828,16.036
+ c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414l0.707-0.707c0.391-0.391,1.023-0.391,1.414,0
+ s0.391,1.023,0,1.414l-0.707,0.707C52.34,15.938,52.084,16.036,51.828,16.036z M54.657,13.207c-0.256,0-0.512-0.098-0.707-0.293
+ c-0.391-0.391-0.391-1.023,0-1.414l0.707-0.707c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414l-0.707,0.707
+ C55.169,13.109,54.913,13.207,54.657,13.207z"/>
+<path style="fill:#C7CAC7;" d="M49,24.864c-0.419,0-0.809-0.265-0.948-0.684c-0.175-0.523,0.107-1.09,0.632-1.265l0.948-0.316
+ c0.523-0.176,1.09,0.108,1.265,0.632s-0.107,1.09-0.632,1.265l-0.948,0.316C49.212,24.848,49.104,24.864,49,24.864z M52.795,23.6
+ c-0.419,0-0.809-0.265-0.948-0.684c-0.175-0.523,0.107-1.09,0.632-1.265l0.948-0.316c0.524-0.176,1.09,0.108,1.265,0.632
+ s-0.107,1.09-0.632,1.265l-0.948,0.316C53.007,23.583,52.899,23.6,52.795,23.6z M56.59,22.334c-0.419,0-0.81-0.265-0.949-0.685
+ c-0.174-0.523,0.109-1.09,0.634-1.265l0.948-0.315c0.522-0.172,1.09,0.109,1.265,0.634c0.174,0.523-0.109,1.09-0.634,1.265
+ l-0.948,0.315C56.801,22.317,56.694,22.334,56.59,22.334z"/>
+<path style="fill:#C7CAC7;" d="M55.364,48.5c-0.256,0-0.512-0.098-0.707-0.293L53.95,47.5c-0.391-0.391-0.391-1.023,0-1.414
+ s1.023-0.391,1.414,0l0.707,0.707c0.391,0.391,0.391,1.023,0,1.414C55.876,48.402,55.62,48.5,55.364,48.5z M52.535,45.671
+ c-0.256,0-0.512-0.098-0.707-0.293l-0.707-0.707c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0l0.707,0.707
+ c0.391,0.391,0.391,1.023,0,1.414C53.047,45.573,52.791,45.671,52.535,45.671z M49.707,42.843c-0.256,0-0.512-0.098-0.707-0.293
+ l-0.707-0.707c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0l0.707,0.707c0.391,0.391,0.391,1.023,0,1.414
+ C50.219,42.745,49.963,42.843,49.707,42.843z"/>
+<path style="fill:#C7CAC7;" d="M57.538,38.981c-0.104,0-0.211-0.017-0.315-0.051l-0.948-0.315c-0.524-0.175-0.808-0.741-0.634-1.265
+ c0.174-0.524,0.742-0.807,1.265-0.634l0.948,0.315c0.524,0.175,0.808,0.741,0.634,1.265C58.348,38.717,57.957,38.981,57.538,38.981z
+ M53.743,37.717c-0.104,0-0.212-0.017-0.316-0.052l-0.948-0.316c-0.524-0.175-0.807-0.741-0.632-1.265s0.742-0.809,1.265-0.632
+ l0.948,0.316c0.524,0.175,0.807,0.741,0.632,1.265C54.552,37.452,54.162,37.717,53.743,37.717z M49.948,36.452
+ c-0.104,0-0.212-0.017-0.316-0.052l-0.948-0.316c-0.524-0.175-0.807-0.741-0.632-1.265s0.741-0.809,1.265-0.632l0.948,0.316
+ c0.524,0.175,0.807,0.741,0.632,1.265C50.757,36.188,50.367,36.452,49.948,36.452z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/megaphone.svg b/img/icons/essential-collection/svg/megaphone.svg
new file mode 100644
index 00000000..fd16ac14
--- /dev/null
+++ b/img/icons/essential-collection/svg/megaphone.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 55 55" style="enable-background:new 0 0 55 55;" xml:space="preserve">
+<path style="fill:#EB7937;" d="M51,52L51,52c-2.2,0-4-1.8-4-4V7c0-2.2,1.8-4,4-4h0c2.2,0,4,1.8,4,4v41C55,50.2,53.2,52,51,52z"/>
+<polygon style="fill:#EBBA16;" points="47,45 6,32 6,23 47,10 "/>
+<path style="fill:#C7CAC7;" d="M27.263,46c-0.416,0-0.829-0.065-1.227-0.194l-14.27-4.623c-1.013-0.327-1.84-1.033-2.326-1.987
+ c-0.487-0.954-0.574-2.037-0.246-3.051c0.536-1.654,2.068-2.767,3.813-2.767c0.415,0,0.828,0.065,1.225,0.194l14.271,4.623
+ c1.013,0.328,1.839,1.034,2.326,1.988c0.486,0.953,0.573,2.036,0.245,3.05C30.538,44.888,29.007,46,27.263,46z M13.007,35.378
+ c-0.86,0-1.646,0.569-1.91,1.384c-0.164,0.505-0.119,1.046,0.125,1.523c0.243,0.479,0.656,0.831,1.161,0.995l14.271,4.623
+ c1.025,0.33,2.191-0.276,2.519-1.287c0.164-0.505,0.119-1.046-0.125-1.523c-0.243-0.478-0.656-0.831-1.161-0.995l-14.271-4.623
+ C13.418,35.411,13.213,35.378,13.007,35.378z"/>
+<path style="fill:#424A60;" d="M3,36L3,36c-1.65,0-3-1.35-3-3V22c0-1.65,1.35-3,3-3h0c1.65,0,3,1.35,3,3v11C6,34.65,4.65,36,3,36z"
+ />
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/menu-1.svg b/img/icons/essential-collection/svg/menu-1.svg
new file mode 100644
index 00000000..8338b7c5
--- /dev/null
+++ b/img/icons/essential-collection/svg/menu-1.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<circle style="fill:#38454F;" cx="27" cy="27" r="27"/>
+<line style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="15" y1="16" x2="39" y2="16"/>
+<line style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="15" y1="27" x2="39" y2="27"/>
+<line style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="15" y1="38" x2="39" y2="38"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/menu-2.svg b/img/icons/essential-collection/svg/menu-2.svg
new file mode 100644
index 00000000..e47f9d8f
--- /dev/null
+++ b/img/icons/essential-collection/svg/menu-2.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<rect y="3" style="fill:#556080;" width="50" height="2"/>
+<rect y="17" style="fill:#556080;" width="50" height="2"/>
+<rect y="31" style="fill:#556080;" width="50" height="2"/>
+<rect y="45" style="fill:#556080;" width="50" height="2"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/menu-3.svg b/img/icons/essential-collection/svg/menu-3.svg
new file mode 100644
index 00000000..42ff7076
--- /dev/null
+++ b/img/icons/essential-collection/svg/menu-3.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<rect style="fill:#556080;" width="56" height="56"/>
+<line style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-miterlimit:10;" x1="8" y1="12" x2="48" y2="12"/>
+<line style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-miterlimit:10;" x1="8" y1="28" x2="48" y2="28"/>
+<line style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-miterlimit:10;" x1="8" y1="44" x2="48" y2="44"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/menu-4.svg b/img/icons/essential-collection/svg/menu-4.svg
new file mode 100644
index 00000000..79a34379
--- /dev/null
+++ b/img/icons/essential-collection/svg/menu-4.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<circle style="fill:#556080;" cx="7" cy="47" r="7"/>
+<circle style="fill:#556080;" cx="27" cy="47" r="7"/>
+<circle style="fill:#556080;" cx="47" cy="47" r="7"/>
+<circle style="fill:#556080;" cx="7" cy="27" r="7"/>
+<circle style="fill:#556080;" cx="27" cy="27" r="7"/>
+<circle style="fill:#556080;" cx="47" cy="27" r="7"/>
+<circle style="fill:#556080;" cx="7" cy="7" r="7"/>
+<circle style="fill:#556080;" cx="27" cy="7" r="7"/>
+<circle style="fill:#556080;" cx="47" cy="7" r="7"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/menu.svg b/img/icons/essential-collection/svg/menu.svg
new file mode 100644
index 00000000..addaa234
--- /dev/null
+++ b/img/icons/essential-collection/svg/menu.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<circle style="fill:#694F87;" cx="27" cy="27" r="27"/>
+<line style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="14" y1="15" x2="40" y2="15"/>
+<line style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="10" y1="31" x2="44" y2="31"/>
+<line style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="10" y1="23" x2="44" y2="23"/>
+<line style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="14" y1="39" x2="40" y2="39"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/microphone-1.svg b/img/icons/essential-collection/svg/microphone-1.svg
new file mode 100644
index 00000000..6d300075
--- /dev/null
+++ b/img/icons/essential-collection/svg/microphone-1.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57 57" style="enable-background:new 0 0 57 57;" xml:space="preserve">
+<path style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M43.5,28v6
+ c0,8.271-6.729,15-15,15s-15-6.729-15-15v-6"/>
+<path style="fill:#4E3787;" d="M28.5,44L28.5,44c-5.5,0-10-4.5-10-10V10c0-5.5,4.5-10,10-10h0c5.5,0,10,4.5,10,10v24
+ C38.5,39.5,34,44,28.5,44z"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="28.5" y1="49" x2="28.5" y2="56"/>
+<polyline style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" points="34.5,56 28.5,56
+ 22.5,56 "/>
+<g>
+ <circle style="fill:#DDB7DE;" cx="28.5" cy="3" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="25.5" cy="6" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="19.5" cy="12" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="25.5" cy="12" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="22.5" cy="9" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="28.5" cy="9" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="22.5" cy="15" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="28.5" cy="15" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="31.5" cy="6" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="31.5" cy="12" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="34.5" cy="9" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="34.5" cy="15" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="19.5" cy="18" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="25.5" cy="18" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="19.5" cy="24" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="25.5" cy="24" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="22.5" cy="21" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="28.5" cy="21" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="22.5" cy="27" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="28.5" cy="27" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="31.5" cy="18" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="31.5" cy="24" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="34.5" cy="21" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="34.5" cy="27" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="19.5" cy="30" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="25.5" cy="30" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="37.5" cy="12" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="37.5" cy="18" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="37.5" cy="24" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="37.5" cy="30" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="25.5" cy="36" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="22.5" cy="33" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="28.5" cy="33" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="22.5" cy="39" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="28.5" cy="39" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="31.5" cy="30" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="31.5" cy="36" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="34.5" cy="33" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="34.5" cy="39" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="25.5" cy="42" r="1"/>
+ <circle style="fill:#DDB7DE;" cx="31.5" cy="42" r="1"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/microphone.svg b/img/icons/essential-collection/svg/microphone.svg
new file mode 100644
index 00000000..92a197de
--- /dev/null
+++ b/img/icons/essential-collection/svg/microphone.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57 57" style="enable-background:new 0 0 57 57;" xml:space="preserve">
+<path style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M43.5,28v6
+ c0,8.271-6.729,15-15,15s-15-6.729-15-15v-6"/>
+<path style="fill:#C7CAC7;" d="M28.5,44L28.5,44c-5.5,0-10-4.5-10-10V10c0-5.5,4.5-10,10-10h0c5.5,0,10,4.5,10,10v24
+ C38.5,39.5,34,44,28.5,44z"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="28.5" y1="49" x2="28.5" y2="56"/>
+<polyline style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" points="34.5,56 28.5,56
+ 22.5,56 "/>
+<path style="fill:#AFB6BB;" d="M38.5,34V10c0-5.5-4.5-10-10-10v44C34,44,38.5,39.5,38.5,34z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/minus-1.svg b/img/icons/essential-collection/svg/minus-1.svg
new file mode 100644
index 00000000..cffae8f6
--- /dev/null
+++ b/img/icons/essential-collection/svg/minus-1.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 42 42" style="enable-background:new 0 0 42 42;" xml:space="preserve">
+<path style="fill:#DC9628;" d="M37.059,16H26H16H4.941C2.224,16,0,18.282,0,21s2.224,5,4.941,5H16h10h11.059
+ C39.776,26,42,23.718,42,21S39.776,16,37.059,16z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/minus.svg b/img/icons/essential-collection/svg/minus.svg
new file mode 100644
index 00000000..41d1f73d
--- /dev/null
+++ b/img/icons/essential-collection/svg/minus.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<circle style="fill:#ED8A19;" cx="25" cy="25" r="25"/>
+<line style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="38" y1="25" x2="12" y2="25"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/more-1.svg b/img/icons/essential-collection/svg/more-1.svg
new file mode 100644
index 00000000..44edb201
--- /dev/null
+++ b/img/icons/essential-collection/svg/more-1.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#7383BF;" cx="29" cy="7" r="7"/>
+<circle style="fill:#7383BF;" cx="29" cy="51" r="7"/>
+<circle style="fill:#7383BF;" cx="29" cy="29" r="7"/>
+<circle style="fill:#7383BF;" cx="29" cy="7" r="7"/>
+<circle style="fill:#7383BF;" cx="29" cy="51" r="7"/>
+<circle style="fill:#7383BF;" cx="29" cy="29" r="7"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/more-2.svg b/img/icons/essential-collection/svg/more-2.svg
new file mode 100644
index 00000000..f8d808da
--- /dev/null
+++ b/img/icons/essential-collection/svg/more-2.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<circle style="fill:#7383BF;" cx="18" cy="30" r="3"/>
+<circle style="fill:#7383BF;" cx="30" cy="30" r="3"/>
+<circle style="fill:#7383BF;" cx="42" cy="30" r="3"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="1" y1="30" x2="15" y2="16"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="1" y1="30" x2="15" y2="44"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="59" y1="30" x2="45" y2="44"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="59" y1="30" x2="45" y2="16"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/more.svg b/img/icons/essential-collection/svg/more.svg
new file mode 100644
index 00000000..c69348e5
--- /dev/null
+++ b/img/icons/essential-collection/svg/more.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#7383BF;" cx="7" cy="29" r="7"/>
+<circle style="fill:#7383BF;" cx="51" cy="29" r="7"/>
+<circle style="fill:#7383BF;" cx="29" cy="29" r="7"/>
+<circle style="fill:#7383BF;" cx="7" cy="29" r="7"/>
+<circle style="fill:#7383BF;" cx="51" cy="29" r="7"/>
+<circle style="fill:#7383BF;" cx="29" cy="29" r="7"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/multiply-1.svg b/img/icons/essential-collection/svg/multiply-1.svg
new file mode 100644
index 00000000..b36cfdca
--- /dev/null
+++ b/img/icons/essential-collection/svg/multiply-1.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect style="fill:#E7ECED;" width="58" height="58"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" x1="44" y1="14" x2="14.302" y2="43.698"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" x1="44" y1="43.698" x2="14.302" y2="14"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/multiply.svg b/img/icons/essential-collection/svg/multiply.svg
new file mode 100644
index 00000000..033c92e9
--- /dev/null
+++ b/img/icons/essential-collection/svg/multiply.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 31.113 31.113" style="enable-background:new 0 0 31.113 31.113;" xml:space="preserve">
+<line style="fill:none;stroke:#1081E0;stroke-width:2;stroke-miterlimit:10;" x1="30.406" y1="0.707" x2="0.707" y2="30.406"/>
+<line style="fill:none;stroke:#1081E0;stroke-width:2;stroke-miterlimit:10;" x1="30.406" y1="30.406" x2="0.707" y2="0.707"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/music-player-1.svg b/img/icons/essential-collection/svg/music-player-1.svg
new file mode 100644
index 00000000..e77a2eb9
--- /dev/null
+++ b/img/icons/essential-collection/svg/music-player-1.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54.888 54.888" style="enable-background:new 0 0 54.888 54.888;" xml:space="preserve">
+<path style="fill:#EA6248;" d="M52.104,0.249c-0.216-0.189-0.501-0.275-0.789-0.241l-31,4.011c-0.499,0.065-0.872,0.489-0.872,0.992
+ v6.017v4.212v26.035C17.706,39.285,14.997,38,11.944,38c-5.247,0-9.5,3.781-9.5,8.444s4.253,8.444,9.5,8.444s9.5-3.781,9.5-8.444
+ c0-0.332-0.027-0.658-0.069-0.981c0.04-0.108,0.069-0.221,0.069-0.343V16.118l29-3.753v18.909C48.706,29.285,45.997,28,42.944,28
+ c-5.247,0-9.5,3.781-9.5,8.444s4.253,8.444,9.5,8.444s9.5-3.781,9.5-8.444c0-0.092-0.012-0.181-0.015-0.272
+ c0.002-0.027,0.015-0.05,0.015-0.077V11.227V7.016V1C52.444,0.712,52.32,0.438,52.104,0.249z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/music-player-2.svg b/img/icons/essential-collection/svg/music-player-2.svg
new file mode 100644
index 00000000..7a35916e
--- /dev/null
+++ b/img/icons/essential-collection/svg/music-player-2.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="8" y="6" style="fill:#EF6129;" width="42" height="46"/>
+<g>
+ <rect x="50" y="10" style="fill:#EBBA16;" width="4" height="38"/>
+ <rect x="4" y="10" style="fill:#EBBA16;" width="4" height="38"/>
+</g>
+<g>
+ <rect x="54" y="14" style="fill:#EFCE4A;" width="4" height="30"/>
+ <rect y="14" style="fill:#EFCE4A;" width="4" height="30"/>
+</g>
+<path style="fill:#FFFFFF;" d="M43.649,12.24c-0.222-0.19-0.515-0.273-0.805-0.228l-19,3C23.358,15.089,23,15.508,23,16v3.286V22
+ v13.68C21.831,34.642,20.246,34,18.5,34c-3.584,0-6.5,2.691-6.5,6s2.916,6,6.5,6c3.533,0,6.411-2.617,6.492-5.861
+ C24.993,40.126,25,40.115,25,40.102V22.854l17-2.684v9.511C40.831,28.642,39.246,28,37.5,28c-3.584,0-6.5,2.691-6.5,6s2.916,6,6.5,6
+ s6.5-2.691,6.5-6V19v-5v-1C44,12.708,43.872,12.43,43.649,12.24z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/music-player-3.svg b/img/icons/essential-collection/svg/music-player-3.svg
new file mode 100644
index 00000000..cd7b4e88
--- /dev/null
+++ b/img/icons/essential-collection/svg/music-player-3.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="8" y="4" style="fill:#DC691D;" width="50" height="50"/>
+<rect y="4" style="fill:#424A60;" width="8" height="50"/>
+<polygon style="fill:#EBBA16;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" points="
+ 45,19 26,22 26,16 45,13 "/>
+<line style="fill:#23A24D;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="26" y1="40.102" x2="26" y2="19.286"/>
+<line style="fill:#23A24D;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="45" y1="34" x2="45" y2="14"/>
+<ellipse style="fill:#EBBA16;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" cx="39.5" cy="34" rx="5.5" ry="5"/>
+<ellipse style="fill:#EBBA16;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" cx="20.5" cy="40" rx="5.5" ry="5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/music-player.svg b/img/icons/essential-collection/svg/music-player.svg
new file mode 100644
index 00000000..ef7ca908
--- /dev/null
+++ b/img/icons/essential-collection/svg/music-player.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve">
+<path style="fill:#EA6248;" d="M40.824,52H11.176C5.003,52,0,46.997,0,40.824V11.176C0,5.003,5.003,0,11.176,0h29.649
+ C46.997,0,52,5.003,52,11.176v29.649C52,46.997,46.997,52,40.824,52z"/>
+<path style="fill:#EFCE4A;" d="M42.66,8.106c-0.217-0.189-0.506-0.279-0.789-0.24l-22,2.856C19.373,10.787,19,11.211,19,11.714V16v3
+ v16.737c-1.371-1.328-3.326-2.165-5.5-2.165c-4.136,0-7.5,3.013-7.5,6.715S9.364,47,13.5,47s7.5-3.012,7.5-6.714V19.878l20-2.598
+ v12.009c-1.357-1.317-3.285-2.146-5.429-2.146c-4.096,0-7.428,3.013-7.428,6.715s3.333,6.714,7.428,6.714
+ c4.096,0,7.429-3.012,7.429-6.714V16.143v-3V8.857C43,8.569,42.876,8.296,42.66,8.106z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/mute.svg b/img/icons/essential-collection/svg/mute.svg
new file mode 100644
index 00000000..74c83f79
--- /dev/null
+++ b/img/icons/essential-collection/svg/mute.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#D75A4A;" cx="29" cy="29" r="29"/>
+<path style="fill:#FFFFFF;" d="M22.427,20h-8.323C12.942,20,12,20.942,12,22.104v12.793C12,36.058,12.942,37,14.104,37h8.323
+ c0.375,0,0.743,0.1,1.067,0.29L36.83,49.706C38.232,50.531,40,49.52,40,47.893V9.107c0-1.627-1.768-2.638-3.17-1.813L23.494,19.71
+ C23.17,19.9,22.802,20,22.427,20z"/>
+<path style="fill:#424A60;" d="M50.866,9.962c-0.436-0.5-0.884-0.992-1.36-1.468s-0.968-0.924-1.468-1.36L7.134,48.038
+ c0.436,0.5,0.884,0.992,1.36,1.468s0.968,0.924,1.468,1.36L50.866,9.962z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/muted.svg b/img/icons/essential-collection/svg/muted.svg
new file mode 100644
index 00000000..8187f4fd
--- /dev/null
+++ b/img/icons/essential-collection/svg/muted.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57 57" style="enable-background:new 0 0 57 57;" xml:space="preserve">
+<path style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M44,28v6
+ c0,8.271-6.729,15-15,15s-15-6.729-15-15v-6"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="29" y1="49" x2="29" y2="56"/>
+<polyline style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" points="35,56 29,56 23,56
+ "/>
+<path style="fill:#C7CAC7;" d="M29,44L29,44c-5.5,0-10-4.5-10-10V10c0-5.5,4.5-10,10-10h0c5.5,0,10,4.5,10,10v24
+ C39,39.5,34.5,44,29,44z"/>
+<path style="fill:#AFB6BB;" d="M39,34V10c0-5.5-4.5-10-10-10v44C34.5,44,39,39.5,39,34z"/>
+<line style="fill:none;stroke:#D75A4A;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="6" y1="49" x2="51" y2="4"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/navigation-1.svg b/img/icons/essential-collection/svg/navigation-1.svg
new file mode 100644
index 00000000..2d42cf4d
--- /dev/null
+++ b/img/icons/essential-collection/svg/navigation-1.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#E7ECED;" cx="29" cy="29" r="29"/>
+<polygon style="fill:#1081E0;" points="24.621,32.189 8.049,29.412 43.811,13 26.519,47.882 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/navigation.svg b/img/icons/essential-collection/svg/navigation.svg
new file mode 100644
index 00000000..bd5aae18
--- /dev/null
+++ b/img/icons/essential-collection/svg/navigation.svg
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 49.636 49.636" style="enable-background:new 0 0 49.636 49.636;" xml:space="preserve">
+<polygon style="fill:#1081E0;" points="23.001,27.245 0,23.39 49.636,0.61 25.636,49.026 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/network.svg b/img/icons/essential-collection/svg/network.svg
new file mode 100644
index 00000000..f32e5fd0
--- /dev/null
+++ b/img/icons/essential-collection/svg/network.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53 53" style="enable-background:new 0 0 53 53;" xml:space="preserve">
+<rect x="27" y="28" style="fill:#424A60;" width="2" height="18"/>
+<rect x="37.5" y="2.893" transform="matrix(0.7071 0.7071 -0.7071 0.7071 20.8223 -23.2696)" style="fill:#424A60;" width="2" height="21.213"/>
+<rect x="15" y="21.858" transform="matrix(0.7071 0.7071 -0.7071 0.7071 30.1421 -0.7696)" style="fill:#424A60;" width="2" height="28.284"/>
+<rect x="10.722" y="13.5" transform="matrix(0.7071 0.7071 -0.7071 0.7071 15.6716 -8.8345)" style="fill:#424A60;" width="15.556" height="2"/>
+<rect x="26.893" y="32.5" transform="matrix(0.7071 0.7071 -0.7071 0.7071 34.6716 -16.7046)" style="fill:#424A60;" width="21.213" height="2"/>
+<circle style="fill:#43B05C;" cx="48" cy="5" r="5"/>
+<circle style="fill:#7383BF;" cx="28" cy="48" r="5"/>
+<circle style="fill:#57D8AB;" cx="5" cy="46" r="5"/>
+<circle style="fill:#D75A4A;" cx="12" cy="8" r="3"/>
+<circle style="fill:#EBBA16;" cx="44" cy="40" r="3"/>
+<circle style="fill:#4B6DAA;" cx="28" cy="24" r="7"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/newspaper.svg b/img/icons/essential-collection/svg/newspaper.svg
new file mode 100644
index 00000000..97a5a187
--- /dev/null
+++ b/img/icons/essential-collection/svg/newspaper.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#CEC9AE;" d="M6.005,58L6.005,58c-2.75,0-5-2.25-5-5V30h10v23C11.005,55.75,8.755,58,6.005,58z"/>
+<rect x="11.005" style="fill:#CEC9AE;" width="45.99" height="11"/>
+<path style="fill:#EDEADA;" d="M11.005,35v7v11c0,2.75-2.25,5-5,5h5h6h35c2.756,0,4.99-2.234,4.99-4.99V13h-45.99V35z"/>
+<rect x="11.005" y="11" style="fill:#F4F3ED;" width="45.99" height="2"/>
+<rect x="17.005" y="16" style="fill:#61B872;" width="12" height="12"/>
+<path style="fill:#CEC9AE;" d="M51.005,17h-16c-0.553,0-1-0.447-1-1s0.447-1,1-1h16c0.553,0,1,0.447,1,1S51.558,17,51.005,17z"/>
+<path style="fill:#CEC9AE;" d="M51.005,23h-16c-0.553,0-1-0.447-1-1s0.447-1,1-1h16c0.553,0,1,0.447,1,1S51.558,23,51.005,23z"/>
+<path style="fill:#CEC9AE;" d="M51.005,29h-16c-0.553,0-1-0.447-1-1s0.447-1,1-1h16c0.553,0,1,0.447,1,1S51.558,29,51.005,29z"/>
+<path style="fill:#CEC9AE;" d="M51.005,35h-33c-0.553,0-1-0.447-1-1s0.447-1,1-1h33c0.553,0,1,0.447,1,1S51.558,35,51.005,35z"/>
+<path style="fill:#CEC9AE;" d="M33.005,41h-15c-0.553,0-1-0.447-1-1s0.447-1,1-1h15c0.553,0,1,0.447,1,1S33.558,41,33.005,41z"/>
+<path style="fill:#CEC9AE;" d="M33.005,47h-15c-0.553,0-1-0.447-1-1s0.447-1,1-1h15c0.553,0,1,0.447,1,1S33.558,47,33.005,47z"/>
+<path style="fill:#CEC9AE;" d="M33.005,53h-15c-0.553,0-1-0.447-1-1s0.447-1,1-1h15c0.553,0,1,0.447,1,1S33.558,53,33.005,53z"/>
+<rect x="39.005" y="40" style="fill:#F7B563;" width="12" height="12"/>
+<rect x="23.005" y="4" style="fill:#8E8872;" width="22" height="4"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/next.svg b/img/icons/essential-collection/svg/next.svg
new file mode 100644
index 00000000..392daf2f
--- /dev/null
+++ b/img/icons/essential-collection/svg/next.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 51.426 51.426" style="enable-background:new 0 0 51.426 51.426;" xml:space="preserve">
+<polygon style="fill:#25AE88;stroke:#424A60;stroke-width:6;stroke-miterlimit:10;" points="38.713,25.713 9.713,45.713
+ 9.713,26.077 9.713,5.713 "/>
+<line style="fill:none;stroke:#424A60;stroke-width:6;stroke-miterlimit:10;" x1="41.713" y1="5.713" x2="41.713" y2="45.713"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/note.svg b/img/icons/essential-collection/svg/note.svg
new file mode 100644
index 00000000..fcee9627
--- /dev/null
+++ b/img/icons/essential-collection/svg/note.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#EDEADA;" points="42,5 16,5 3,5 3,58 55,58 55,5 "/>
+<circle style="fill:#918553;" cx="20" cy="9" r="2"/>
+<circle style="fill:#918553;" cx="26" cy="9" r="2"/>
+<circle style="fill:#918553;" cx="32" cy="9" r="2"/>
+<circle style="fill:#918553;" cx="38" cy="9" r="2"/>
+<path style="fill:#D8A852;" d="M38,0c-1.13,0-2.162,0.391-3,1.025c0.534,0.405,0.979,0.912,1.315,1.495C36.796,2.192,37.376,2,38,2
+ c1.654,0,3,1.346,3,3s-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5S40.757,0,38,0z"/>
+<path style="fill:#A37F46;" d="M33.685,2.52C33.261,3.254,33,4.093,33,5h2C35,3.97,34.478,3.061,33.685,2.52z"/>
+<path style="fill:#A37F46;" d="M27.685,2.52C27.261,3.254,27,4.093,27,5h2C29,3.97,28.478,3.061,27.685,2.52z"/>
+<path style="fill:#D8A852;" d="M36.315,2.52C35.979,1.937,35.534,1.43,35,1.025C34.162,0.391,33.13,0,32,0s-2.162,0.391-3,1.025
+ c0.534,0.405,0.979,0.912,1.315,1.495C30.796,2.192,31.376,2,32,2s1.204,0.192,1.685,0.52C34.478,3.061,35,3.97,35,5
+ c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5C37,4.093,36.739,3.254,36.315,2.52z"/>
+<path style="fill:#A37F46;" d="M21.685,2.52C21.261,3.254,21,4.093,21,5h2C23,3.97,22.478,3.061,21.685,2.52z"/>
+<path style="fill:#D8A852;" d="M30.315,2.52C29.979,1.937,29.534,1.43,29,1.025C28.162,0.391,27.13,0,26,0s-2.162,0.391-3,1.025
+ c0.534,0.405,0.979,0.912,1.315,1.495C24.796,2.192,25.376,2,26,2s1.204,0.192,1.685,0.52C28.478,3.061,29,3.97,29,5
+ c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1s0.447,1,1,1c2.757,0,5-2.243,5-5C31,4.093,30.739,3.254,30.315,2.52z"/>
+<path style="fill:#D8A852;" d="M24.315,2.52C23.979,1.937,23.534,1.43,23,1.025C22.162,0.391,21.13,0,20,0c-2.757,0-5,2.243-5,5h2
+ c0-1.654,1.346-3,3-3c0.624,0,1.204,0.192,1.685,0.52C22.478,3.061,23,3.97,23,5c0,1.654-1.346,3-3,3c-0.553,0-1,0.447-1,1
+ s0.447,1,1,1c2.757,0,5-2.243,5-5C25,4.093,24.739,3.254,24.315,2.52z"/>
+<rect x="3" y="16" style="fill:#CEC9AE;" width="52" height="2"/>
+<rect x="3" y="26" style="fill:#CEC9AE;" width="52" height="2"/>
+<rect x="3" y="36" style="fill:#CEC9AE;" width="52" height="2"/>
+<rect x="3" y="46" style="fill:#CEC9AE;" width="40" height="2"/>
+<polygon style="fill:#EDD87E;" points="43,58 43,46 55,46 "/>
+<polygon style="fill:#918553;" points="55,46 55,58 43,58 "/>
+<rect x="10" y="5" style="fill:#E54C4C;" width="2" height="53"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/notebook-1.svg b/img/icons/essential-collection/svg/notebook-1.svg
new file mode 100644
index 00000000..5a58d745
--- /dev/null
+++ b/img/icons/essential-collection/svg/notebook-1.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56.997 56.997" style="enable-background:new 0 0 56.997 56.997;" xml:space="preserve">
+<path style="fill:#424A60;" d="M46.002,51.997H7.998V0h38.003c1.655,0,2.997,1.342,2.997,2.997V49
+ C48.998,50.655,47.657,51.997,46.002,51.997z"/>
+<rect x="37.998" style="fill:#EFCE4A;" width="5" height="51.997"/>
+<g>
+ <rect x="7.998" y="17.007" style="fill:#7383BF;" width="30" height="18"/>
+ <rect x="42.998" y="17.007" style="fill:#7383BF;" width="6" height="18"/>
+</g>
+<polygon style="fill:#DD352E;" points="17.998,56.997 14.998,54.997 11.998,56.997 11.998,51.997 17.998,51.997 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/notebook-2.svg b/img/icons/essential-collection/svg/notebook-2.svg
new file mode 100644
index 00000000..5398d4e5
--- /dev/null
+++ b/img/icons/essential-collection/svg/notebook-2.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56.997 56.997" style="enable-background:new 0 0 56.997 56.997;" xml:space="preserve">
+<path style="fill:#424A60;" d="M46.002,51.997H7.998V0h38.003c1.655,0,2.997,1.342,2.997,2.997V49
+ C48.998,50.655,47.657,51.997,46.002,51.997z"/>
+<rect x="37.998" style="fill:#7383BF;" width="5" height="51.997"/>
+<g>
+ <rect x="7.998" y="17.007" style="fill:#25AE88;" width="30" height="18"/>
+ <rect x="42.998" y="17.007" style="fill:#25AE88;" width="6" height="18"/>
+</g>
+<polygon style="fill:#CC4B4C;" points="17.998,56.997 14.998,54.997 11.998,56.997 11.998,51.997 17.998,51.997 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/notebook-3.svg b/img/icons/essential-collection/svg/notebook-3.svg
new file mode 100644
index 00000000..68bb93cc
--- /dev/null
+++ b/img/icons/essential-collection/svg/notebook-3.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<path style="fill:#556080;" d="M39.503,52H1.5V0.003h38.003C41.158,0.003,42.5,1.345,42.5,3v46.003C42.5,50.658,41.158,52,39.503,52
+ z"/>
+<rect x="31.5" y="0.003" style="fill:#D75A4A;" width="5" height="51.997"/>
+<g>
+ <rect x="1.5" y="17.01" style="fill:#424A60;" width="30" height="18"/>
+ <rect x="36.5" y="17.01" style="fill:#424A60;" width="6" height="18"/>
+</g>
+<polygon style="fill:#EBBA16;" points="11.5,57 8.5,55 5.5,57 5.5,52 11.5,52 "/>
+<rect x="49.5" y="7" style="fill:#E0E1E2;" width="4" height="4"/>
+<path style="fill:#D75A4A;" d="M53.5,0h-2.015c-0.274,0-0.535,0.056-0.773,0.156c-0.119,0.05-0.232,0.111-0.337,0.183
+ C49.847,0.696,49.5,1.3,49.5,1.985V7h4V0z"/>
+<path style="fill:#D75A4A;" d="M55.515,0L55.515,0c0.274,0,0.535,0.056,0.773,0.156C56.05,0.056,55.789,0,55.515,0z"/>
+<rect x="53.5" y="11" style="fill:#DB7B1B;" width="4" height="38"/>
+<rect x="53.5" y="7" style="fill:#C4C4C4;" width="4" height="4"/>
+<path style="fill:#D75A4A;" d="M57.5,1.985L57.5,1.985c0-0.685-0.347-1.289-0.875-1.646C57.153,0.696,57.5,1.3,57.5,1.985z"/>
+<path style="fill:#B74C44;" d="M57.5,7V1.985c0-0.685-0.347-1.289-0.875-1.646c-0.105-0.071-0.219-0.133-0.337-0.183
+ C56.05,0.056,55.789,0,55.515,0H53.5v7H57.5z"/>
+<polygon style="fill:#EBD6BD;" points="57.5,49 49.5,49 53.5,56 "/>
+<path style="fill:#4C4C4C;" d="M52.5,58c0,0.553,0.447,1,1,1s1-0.447,1-1v-4h-2V58z"/>
+<rect x="49.5" y="11" style="fill:#ED8A19;" width="4" height="38"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/notebook-4.svg b/img/icons/essential-collection/svg/notebook-4.svg
new file mode 100644
index 00000000..17fb4ab2
--- /dev/null
+++ b/img/icons/essential-collection/svg/notebook-4.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<rect x="0.5" style="fill:#BFA380;" width="44" height="58"/>
+<rect x="0.5" style="fill:#6B5B4B;" width="8" height="58"/>
+<rect x="15.5" y="10" style="fill:#EDEADA;" width="22" height="12"/>
+<rect x="19.5" y="13" style="fill:#CEC9AE;" width="14" height="2"/>
+<rect x="19.5" y="17" style="fill:#CEC9AE;" width="14" height="2"/>
+<rect x="50.5" y="7" style="fill:#E0E1E2;" width="4" height="4"/>
+<path style="fill:#D75A4A;" d="M54.5,0h-2.015c-0.274,0-0.535,0.056-0.773,0.156c-0.119,0.05-0.232,0.111-0.337,0.183
+ C50.847,0.696,50.5,1.3,50.5,1.985V7h4V0z"/>
+<path style="fill:#D75A4A;" d="M56.515,0L56.515,0c0.274,0,0.535,0.056,0.773,0.156C57.05,0.056,56.789,0,56.515,0z"/>
+<rect x="54.5" y="11" style="fill:#DB7B1B;" width="4" height="38"/>
+<rect x="54.5" y="7" style="fill:#C4C4C4;" width="4" height="4"/>
+<path style="fill:#D75A4A;" d="M58.5,1.985L58.5,1.985c0-0.685-0.347-1.289-0.875-1.646C58.153,0.696,58.5,1.3,58.5,1.985z"/>
+<path style="fill:#B74C44;" d="M58.5,7V1.985c0-0.685-0.347-1.289-0.875-1.646c-0.105-0.071-0.219-0.133-0.337-0.183
+ C57.05,0.056,56.789,0,56.515,0H54.5v7H58.5z"/>
+<polygon style="fill:#EBD6BD;" points="58.5,49 50.5,49 54.5,56 "/>
+<path style="fill:#4C4C4C;" d="M53.5,58c0,0.553,0.447,1,1,1s1-0.447,1-1v-4h-2V58z"/>
+<rect x="50.5" y="11" style="fill:#ED8A19;" width="4" height="38"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/notebook-5.svg b/img/icons/essential-collection/svg/notebook-5.svg
new file mode 100644
index 00000000..e1aeabf0
--- /dev/null
+++ b/img/icons/essential-collection/svg/notebook-5.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="7" style="fill:#D75A4A;" width="44" height="58"/>
+<rect x="7" style="fill:#C03A2B;" width="8" height="58"/>
+<rect x="22" y="10" style="fill:#EDEADA;" width="22" height="12"/>
+<rect x="26" y="13" style="fill:#CEC9AE;" width="14" height="2"/>
+<rect x="26" y="17" style="fill:#CEC9AE;" width="14" height="2"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/notebook.svg b/img/icons/essential-collection/svg/notebook.svg
new file mode 100644
index 00000000..8ab22f32
--- /dev/null
+++ b/img/icons/essential-collection/svg/notebook.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<path style="fill:#6B4842;" d="M51.503,56H17.5V0.003h34.003C53.158,0.003,54.5,1.345,54.5,3v50.003
+ C54.5,54.658,53.158,56,51.503,56z"/>
+<rect x="43.5" y="0.003" style="fill:#BFA380;" width="5" height="55.997"/>
+<rect x="6.5" style="fill:#BE6E41;" width="11" height="56"/>
+<circle style="fill:#6B4842;" cx="10.5" cy="45" r="2"/>
+<circle style="fill:#6B4842;" cx="10.5" cy="39" r="2"/>
+<circle style="fill:#6B4842;" cx="10.5" cy="33" r="2"/>
+<circle style="fill:#6B4842;" cx="10.5" cy="27" r="2"/>
+<path style="fill:#D8A852;" d="M1.5,27c0,1.13,0.391,2.162,1.025,3c0.405-0.534,0.912-0.979,1.495-1.315
+ C3.692,28.204,3.5,27.624,3.5,27c0-1.654,1.346-3,3-3s3,1.346,3,3c0,0.553,0.447,1,1,1s1-0.447,1-1c0-2.757-2.243-5-5-5
+ S1.5,24.243,1.5,27z"/>
+<path style="fill:#A37F46;" d="M4.02,31.315C4.754,31.739,5.593,32,6.5,32v-2C5.47,30,4.561,30.522,4.02,31.315z"/>
+<path style="fill:#A37F46;" d="M4.02,37.315C4.754,37.739,5.593,38,6.5,38v-2C5.47,36,4.561,36.522,4.02,37.315z"/>
+<path style="fill:#D8A852;" d="M4.02,28.685C3.437,29.021,2.93,29.466,2.525,30C1.891,30.838,1.5,31.87,1.5,33s0.391,2.162,1.025,3
+ c0.405-0.534,0.912-0.979,1.495-1.315C3.692,34.204,3.5,33.624,3.5,33s0.192-1.204,0.52-1.685C4.561,30.522,5.47,30,6.5,30
+ c1.654,0,3,1.346,3,3c0,0.553,0.447,1,1,1s1-0.447,1-1c0-2.757-2.243-5-5-5C5.593,28,4.754,28.261,4.02,28.685z"/>
+<path style="fill:#A37F46;" d="M4.02,43.315C4.754,43.739,5.593,44,6.5,44v-2C5.47,42,4.561,42.522,4.02,43.315z"/>
+<path style="fill:#D8A852;" d="M4.02,34.685C3.437,35.021,2.93,35.466,2.525,36C1.891,36.838,1.5,37.87,1.5,39s0.391,2.162,1.025,3
+ c0.405-0.534,0.912-0.979,1.495-1.315C3.692,40.204,3.5,39.624,3.5,39s0.192-1.204,0.52-1.685C4.561,36.522,5.47,36,6.5,36
+ c1.654,0,3,1.346,3,3c0,0.553,0.447,1,1,1s1-0.447,1-1c0-2.757-2.243-5-5-5C5.593,34,4.754,34.261,4.02,34.685z"/>
+<circle style="fill:#6B4842;" cx="10.5" cy="21" r="2"/>
+<circle style="fill:#6B4842;" cx="10.5" cy="15" r="2"/>
+<circle style="fill:#6B4842;" cx="10.5" cy="9" r="2"/>
+<path style="fill:#D8A852;" d="M1.5,9c0,1.13,0.391,2.162,1.025,3c0.405-0.534,0.912-0.979,1.495-1.315
+ C3.692,10.204,3.5,9.624,3.5,9c0-1.654,1.346-3,3-3s3,1.346,3,3c0,0.553,0.447,1,1,1s1-0.447,1-1c0-2.757-2.243-5-5-5
+ S1.5,6.243,1.5,9z"/>
+<path style="fill:#A37F46;" d="M4.02,13.315C4.754,13.739,5.593,14,6.5,14v-2C5.47,12,4.561,12.522,4.02,13.315z"/>
+<path style="fill:#A37F46;" d="M4.02,19.315C4.754,19.739,5.593,20,6.5,20v-2C5.47,18,4.561,18.522,4.02,19.315z"/>
+<path style="fill:#D8A852;" d="M4.02,10.685C3.437,11.021,2.93,11.466,2.525,12C1.891,12.838,1.5,13.87,1.5,15s0.391,2.162,1.025,3
+ c0.405-0.534,0.912-0.979,1.495-1.315C3.692,16.204,3.5,15.624,3.5,15s0.192-1.204,0.52-1.685C4.561,12.522,5.47,12,6.5,12
+ c1.654,0,3,1.346,3,3c0,0.553,0.447,1,1,1s1-0.447,1-1c0-2.757-2.243-5-5-5C5.593,10,4.754,10.261,4.02,10.685z"/>
+<path style="fill:#A37F46;" d="M4.02,25.315C4.754,25.739,5.593,26,6.5,26v-2C5.47,24,4.561,24.522,4.02,25.315z"/>
+<path style="fill:#D8A852;" d="M4.02,16.685C3.437,17.021,2.93,17.466,2.525,18C1.891,18.838,1.5,19.87,1.5,21s0.391,2.162,1.025,3
+ c0.405-0.534,0.912-0.979,1.495-1.315C3.692,22.204,3.5,21.624,3.5,21s0.192-1.204,0.52-1.685C4.561,18.522,5.47,18,6.5,18
+ c1.654,0,3,1.346,3,3c0,0.553,0.447,1,1,1s1-0.447,1-1c0-2.757-2.243-5-5-5C5.593,16,4.754,16.261,4.02,16.685z"/>
+<path style="fill:#D8A852;" d="M4.02,40.685C3.437,41.021,2.93,41.466,2.525,42C1.891,42.838,1.5,43.87,1.5,45c0,2.757,2.243,5,5,5
+ v-2c-1.654,0-3-1.346-3-3c0-0.624,0.192-1.204,0.52-1.685C4.561,42.522,5.47,42,6.5,42c1.654,0,3,1.346,3,3c0,0.553,0.447,1,1,1
+ s1-0.447,1-1c0-2.757-2.243-5-5-5C5.593,40,4.754,40.261,4.02,40.685z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/notepad-1.svg b/img/icons/essential-collection/svg/notepad-1.svg
new file mode 100644
index 00000000..a7f982fb
--- /dev/null
+++ b/img/icons/essential-collection/svg/notepad-1.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<rect x="24.5" style="fill:#303644;" width="9" height="5"/>
+<polygon style="fill:#424A60;" points="37.5,2 33.5,2 33.5,5 24.5,5 24.5,2 20.5,2 5.5,2 5.5,58 52.5,58 52.5,2 "/>
+<polygon style="fill:#EDEADA;" points="40.5,5 40.5,8 17.5,8 17.5,5 8.5,5 8.5,55 49.5,55 49.5,5 "/>
+<g>
+ <path style="fill:#CEC9AE;" d="M15.5,17h9c0.553,0,1-0.447,1-1s-0.447-1-1-1h-9c-0.553,0-1,0.447-1,1S14.947,17,15.5,17z"/>
+ <path style="fill:#CEC9AE;" d="M15.5,25h5c0.553,0,1-0.447,1-1s-0.447-1-1-1h-5c-0.553,0-1,0.447-1,1S14.947,25,15.5,25z"/>
+ <path style="fill:#CEC9AE;" d="M37.5,23h-7c-0.553,0-1,0.447-1,1s0.447,1,1,1h7c0.553,0,1-0.447,1-1S38.053,23,37.5,23z"/>
+ <path style="fill:#CEC9AE;" d="M24.79,23.29C24.6,23.479,24.5,23.729,24.5,24c0,0.27,0.109,0.52,0.29,0.71
+ C24.979,24.89,25.229,25,25.5,25c0.27,0,0.52-0.101,0.71-0.29c0.18-0.19,0.29-0.45,0.29-0.71c0-0.261-0.11-0.521-0.29-0.71
+ C25.83,22.92,25.17,22.92,24.79,23.29z"/>
+ <path style="fill:#CEC9AE;" d="M43.21,23.29c-0.37-0.37-1.04-0.37-1.42,0C41.6,23.479,41.5,23.729,41.5,24
+ c0,0.27,0.109,0.52,0.29,0.71C41.979,24.89,42.229,25,42.5,25c0.27,0,0.52-0.11,0.71-0.29c0.18-0.19,0.29-0.45,0.29-0.71
+ C43.5,23.739,43.39,23.479,43.21,23.29z"/>
+ <path style="fill:#CEC9AE;" d="M27.5,31h-7c-0.553,0-1,0.447-1,1s0.447,1,1,1h7c0.553,0,1-0.447,1-1S28.053,31,27.5,31z"/>
+ <path style="fill:#CEC9AE;" d="M14.79,31.29c-0.181,0.189-0.29,0.439-0.29,0.71c0,0.27,0.109,0.52,0.29,0.71
+ C14.979,32.89,15.229,33,15.5,33c0.27,0,0.52-0.11,0.71-0.29c0.18-0.19,0.29-0.45,0.29-0.71c0-0.261-0.11-0.521-0.29-0.71
+ C15.84,30.92,15.16,30.92,14.79,31.29z"/>
+</g>
+<g>
+ <path style="fill:#7383BF;" d="M18.645,40.166c-2.191,1.141-2.928,3.321-3.196,5.582c-0.414-0.347-0.828-0.693-1.241-1.04
+ c-0.981-0.822-2.404,0.585-1.414,1.415c0.935,0.783,1.871,1.567,2.806,2.351c0.662,0.555,1.676,0.211,1.707-0.707
+ c0.073-2.167,0.177-4.743,2.348-5.873C20.799,41.298,19.787,39.572,18.645,40.166z"/>
+ <path style="fill:#7383BF;" d="M27.983,45.25c-0.52-0.93-1.642-1.391-2.688-1.095c-1.365,0.386-2.981,2.042-3.936,0.106
+ c-0.571-1.157-2.295-0.143-1.727,1.009c0.514,1.042,1.5,1.798,2.669,1.932c0.607,0.069,1.117-0.013,1.688-0.226
+ c0.406-0.152,1.923-1.332,2.267-0.717C26.885,47.385,28.613,46.376,27.983,45.25z"/>
+</g>
+<line style="fill:none;stroke:#FC3952;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="52.5" y1="38" x2="32.5" y2="58"/>
+<polygon style="fill:#7383BF;" points="33.5,2 33.5,5 24.5,5 24.5,2 17.5,2 17.5,8 40.5,8 40.5,2 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/notepad-2.svg b/img/icons/essential-collection/svg/notepad-2.svg
new file mode 100644
index 00000000..d0d49ee3
--- /dev/null
+++ b/img/icons/essential-collection/svg/notepad-2.svg
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<path style="fill:#ED8A19;" d="M50.485,0c-0.274,0-0.535,0.056-0.773,0.156C49.95,0.056,50.211,0,50.485,0L50.485,0z"/>
+<rect x="48.5" y="7" style="fill:#E0E1E2;" width="4" height="4"/>
+<path style="fill:#D75A4A;" d="M49.375,0.339C48.847,0.696,48.5,1.3,48.5,1.985l0,0C48.5,1.3,48.847,0.696,49.375,0.339z"/>
+<path style="fill:#D75A4A;" d="M52.5,0h-2.015c-0.274,0-0.535,0.056-0.773,0.156c-0.119,0.05-0.232,0.111-0.337,0.183
+ C48.847,0.696,48.5,1.3,48.5,1.985V7h4V0z"/>
+<rect x="52.5" y="11" style="fill:#DB7B1B;" width="4" height="38"/>
+<rect x="52.5" y="7" style="fill:#C4C4C4;" width="4" height="4"/>
+<path style="fill:#B74C44;" d="M56.5,7V1.985c0-0.685-0.347-1.289-0.875-1.646c-0.105-0.071-0.219-0.133-0.337-0.183
+ C55.05,0.056,54.789,0,54.515,0H52.5v7H56.5z"/>
+<rect x="21.5" style="fill:#303644;" width="9" height="5"/>
+<polygon style="fill:#424A60;" points="48.5,49 48.5,2 34.5,2 30.5,2 30.5,5 21.5,5 21.5,2 17.5,2 2.5,2 2.5,58 49.5,58 49.5,50.75
+ "/>
+<polygon style="fill:#7383BF;" points="30.5,2 30.5,5 21.5,5 21.5,2 14.5,2 14.5,8 37.5,8 37.5,2 "/>
+<polygon style="fill:#EDEADA;" points="37.5,7 37.5,8 14.5,8 14.5,7 7.5,7 7.5,53 44.5,53 44.5,7 "/>
+<g>
+ <path style="fill:#CEC9AE;" d="M14.5,18h9c0.553,0,1-0.447,1-1s-0.447-1-1-1h-9c-0.553,0-1,0.447-1,1S13.947,18,14.5,18z"/>
+ <path style="fill:#CEC9AE;" d="M14.5,25h5c0.553,0,1-0.447,1-1s-0.447-1-1-1h-5c-0.553,0-1,0.447-1,1S13.947,25,14.5,25z"/>
+ <path style="fill:#CEC9AE;" d="M34.5,23h-7c-0.553,0-1,0.447-1,1s0.447,1,1,1h7c0.553,0,1-0.447,1-1S35.053,23,34.5,23z"/>
+ <path style="fill:#CEC9AE;" d="M22.79,23.29c-0.181,0.189-0.29,0.449-0.29,0.71c0,0.26,0.109,0.52,0.29,0.71
+ C22.979,24.899,23.229,25,23.5,25c0.26,0,0.52-0.11,0.71-0.29c0.18-0.19,0.29-0.45,0.29-0.71c0-0.261-0.11-0.521-0.29-0.71
+ C23.83,22.92,23.17,22.92,22.79,23.29z"/>
+ <path style="fill:#CEC9AE;" d="M39.21,23.29c-0.38-0.37-1.04-0.37-1.42,0c-0.181,0.189-0.29,0.449-0.29,0.71
+ c0,0.26,0.109,0.52,0.29,0.71C37.979,24.899,38.229,25,38.5,25c0.27,0,0.52-0.11,0.71-0.29c0.18-0.19,0.29-0.45,0.29-0.71
+ C39.5,23.739,39.39,23.479,39.21,23.29z"/>
+ <path style="fill:#CEC9AE;" d="M25.5,30h-7c-0.553,0-1,0.447-1,1s0.447,1,1,1h7c0.553,0,1-0.447,1-1S26.053,30,25.5,30z"/>
+ <path style="fill:#CEC9AE;" d="M13.79,30.29C13.6,30.479,13.5,30.729,13.5,31c0,0.26,0.109,0.52,0.29,0.71
+ C13.979,31.89,14.24,32,14.5,32s0.52-0.11,0.71-0.29c0.189-0.19,0.29-0.45,0.29-0.71c0-0.261-0.101-0.521-0.29-0.71
+ C14.83,29.92,14.17,29.92,13.79,30.29z"/>
+</g>
+<g>
+ <path style="fill:#7383BF;" d="M20.025,36.137c-2.191,1.14-2.928,3.32-3.196,5.582c-0.414-0.347-0.827-0.693-1.241-1.04
+ c-0.981-0.822-2.404,0.585-1.414,1.415c0.935,0.783,1.871,1.567,2.806,2.351c0.662,0.555,1.676,0.211,1.707-0.707
+ c0.073-2.167,0.177-4.743,2.348-5.873C22.179,37.268,21.167,35.542,20.025,36.137z"/>
+ <path style="fill:#7383BF;" d="M29.364,41.22c-0.52-0.93-1.642-1.391-2.688-1.095c-1.365,0.386-2.981,2.042-3.936,0.106
+ c-0.571-1.157-2.295-0.143-1.727,1.009c0.514,1.042,1.5,1.798,2.669,1.932c0.607,0.069,1.117-0.013,1.688-0.226
+ c0.406-0.152,1.923-1.332,2.267-0.717C28.266,43.355,29.993,42.347,29.364,41.22z"/>
+</g>
+<polygon style="fill:#EBD6BD;" points="56.5,49 48.5,49 52.5,56 "/>
+<path style="fill:#4C4C4C;" d="M51.5,58c0,0.553,0.447,1,1,1s1-0.447,1-1v-4h-2V58z"/>
+<rect x="48.5" y="11" style="fill:#ED8A19;" width="4" height="38"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/notepad.svg b/img/icons/essential-collection/svg/notepad.svg
new file mode 100644
index 00000000..3738ac35
--- /dev/null
+++ b/img/icons/essential-collection/svg/notepad.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#424A60;" points="37.5,2 33.5,2 33.5,5 24.5,5 24.5,2 20.5,2 5.5,2 5.5,58 52.5,58 52.5,2 "/>
+<rect x="24.5" style="fill:#303644;" width="9" height="5"/>
+<polygon style="fill:#EDEADA;" points="40.5,5 40.5,8 17.5,8 17.5,5 8.5,5 8.5,55 49.5,55 49.5,5 "/>
+<polygon style="fill:#7383BF;" points="33.5,2 33.5,5 24.5,5 24.5,2 17.5,2 17.5,8 40.5,8 40.5,2 "/>
+<path style="fill:#CEC9AE;" d="M27.5,16h-13c-0.553,0-1-0.447-1-1s0.447-1,1-1h13c0.553,0,1,0.447,1,1S28.053,16,27.5,16z"/>
+<path style="fill:#CEC9AE;" d="M27.5,47h-13c-0.553,0-1-0.447-1-1s0.447-1,1-1h13c0.553,0,1,0.447,1,1S28.053,47,27.5,47z"/>
+<path style="fill:#CEC9AE;" d="M43.5,22h-29c-0.553,0-1-0.447-1-1s0.447-1,1-1h29c0.553,0,1,0.447,1,1S44.053,22,43.5,22z"/>
+<path style="fill:#CEC9AE;" d="M43.5,34h-29c-0.553,0-1-0.447-1-1s0.447-1,1-1h29c0.553,0,1,0.447,1,1S44.053,34,43.5,34z"/>
+<path style="fill:#CEC9AE;" d="M43.5,41h-29c-0.553,0-1-0.447-1-1s0.447-1,1-1h29c0.553,0,1,0.447,1,1S44.053,41,43.5,41z"/>
+<path style="fill:#CEC9AE;" d="M28.5,28h-14c-0.553,0-1-0.447-1-1s0.447-1,1-1h14c0.553,0,1,0.447,1,1S29.053,28,28.5,28z"/>
+<path style="fill:#CEC9AE;" d="M43.5,28h-7c-0.553,0-1-0.447-1-1s0.447-1,1-1h7c0.553,0,1,0.447,1,1S44.053,28,43.5,28z"/>
+<path style="fill:#CEC9AE;" d="M32.5,28c-0.271,0-0.521-0.101-0.71-0.29c-0.181-0.19-0.29-0.45-0.29-0.71
+ c0-0.271,0.1-0.521,0.29-0.71c0.38-0.38,1.04-0.37,1.42,0c0.189,0.189,0.29,0.439,0.29,0.71c0,0.27-0.11,0.52-0.29,0.71
+ C33.02,27.89,32.77,28,32.5,28z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/notification.svg b/img/icons/essential-collection/svg/notification.svg
new file mode 100644
index 00000000..f8e578ba
--- /dev/null
+++ b/img/icons/essential-collection/svg/notification.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<path style="fill:#43B05C;" d="M43.5,19c-4.971,0-9-4.029-9-9c0-0.688,0.084-1.356,0.231-2H4.735C2.396,8,0.5,9.896,0.5,12.235
+ v37.53C0.5,52.104,2.396,54,4.735,54h37.53c2.339,0,4.235-1.896,4.235-4.235V18.477C45.56,18.81,44.554,19,43.5,19z"/>
+<circle style="fill:#DD352E;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="43.5" cy="10" r="9"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/paper-plane-1.svg b/img/icons/essential-collection/svg/paper-plane-1.svg
new file mode 100644
index 00000000..a5e4d709
--- /dev/null
+++ b/img/icons/essential-collection/svg/paper-plane-1.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58.064 58.064" style="enable-background:new 0 0 58.064 58.064;" xml:space="preserve">
+<polygon style="fill:#7383BF;" points="17.064,31.032 58.064,10.032 24.064,35.032 44.064,48.032 58.064,10.032 0,22.032 "/>
+<polygon style="fill:#556080;" points="24.064,35.032 20.127,48.032 17.064,31.032 58.064,10.032 "/>
+<polygon style="fill:#464F66;" points="24.064,35.032 20.064,48.032 31.912,40.133 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/paper-plane.svg b/img/icons/essential-collection/svg/paper-plane.svg
new file mode 100644
index 00000000..d84b5316
--- /dev/null
+++ b/img/icons/essential-collection/svg/paper-plane.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58.064 58.064" style="enable-background:new 0 0 58.064 58.064;" xml:space="preserve">
+<polygon style="fill:#E7ECED;" points="22,30.532 0,23.324 58.064,7.532 36,50.532 "/>
+<polygon style="fill:#AFB6BB;" points="22,30.532 20,46.532 28.594,39.952 "/>
+<path style="fill:#AFB6BB;" d="M21.462,29.689c-0.203,0.129-0.329,0.324-0.398,0.536L22,30.532l0.574,0.82L57.189,9.237l0.875-1.705
+ l-3.345,0.91L21.462,29.689z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/pause-1.svg b/img/icons/essential-collection/svg/pause-1.svg
new file mode 100644
index 00000000..92d048b2
--- /dev/null
+++ b/img/icons/essential-collection/svg/pause-1.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#C7CAC7;" cx="29" cy="29" r="29"/>
+<g>
+ <rect x="33" y="14" style="fill:#FFFFFF;" width="6" height="30"/>
+ <path style="fill:#FFFFFF;" d="M40,45h-8V13h8V45z M34,43h4V15h-4V43z"/>
+</g>
+<g>
+ <rect x="19" y="14" style="fill:#FFFFFF;" width="6" height="30"/>
+ <path style="fill:#FFFFFF;" d="M26,45h-8V13h8V45z M20,43h4V15h-4V43z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/pause.svg b/img/icons/essential-collection/svg/pause.svg
new file mode 100644
index 00000000..9380f2d1
--- /dev/null
+++ b/img/icons/essential-collection/svg/pause.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 40 40" style="enable-background:new 0 0 40 40;" xml:space="preserve">
+<rect x="23.5" style="fill:#424A60;" width="6" height="40"/>
+<rect x="10.5" style="fill:#424A60;" width="6" height="40"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/percent-1.svg b/img/icons/essential-collection/svg/percent-1.svg
new file mode 100644
index 00000000..31343c2f
--- /dev/null
+++ b/img/icons/essential-collection/svg/percent-1.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect style="fill:#E7ECED;" width="58" height="58"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" x1="11" y1="47" x2="47" y2="11"/>
+<circle style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" cx="16" cy="16" r="5"/>
+<circle style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" cx="42" cy="42" r="5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/percent.svg b/img/icons/essential-collection/svg/percent.svg
new file mode 100644
index 00000000..9151528c
--- /dev/null
+++ b/img/icons/essential-collection/svg/percent.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 38 38" style="enable-background:new 0 0 38 38;" xml:space="preserve">
+<line style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-miterlimit:10;" x1="1" y1="37" x2="37" y2="1"/>
+<circle style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-miterlimit:10;" cx="6" cy="6" r="5"/>
+<circle style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-miterlimit:10;" cx="32" cy="32" r="5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/perspective.svg b/img/icons/essential-collection/svg/perspective.svg
new file mode 100644
index 00000000..f32e82df
--- /dev/null
+++ b/img/icons/essential-collection/svg/perspective.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59.999 59.999" style="enable-background:new 0 0 59.999 59.999;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M57.972,29.64l-7.234,7.234c-11.517,11.517-30.19,11.517-41.707,0L2.027,29.87l7.234-7.234
+ c11.517-11.517,30.19-11.517,41.707,0L57.972,29.64z"/>
+<g>
+ <path style="fill:#556080;" d="M25.857,5.999c0.256,0,0.512-0.098,0.707-0.293l2.293-2.293v7.586c0,0.552,0.448,1,1,1s1-0.448,1-1
+ V3.413l2.293,2.293c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414l-4-4
+ c-0.092-0.092-0.203-0.165-0.325-0.216c-0.245-0.101-0.52-0.101-0.764,0c-0.122,0.051-0.233,0.124-0.325,0.216l-4,4
+ c-0.391,0.391-0.391,1.023,0,1.414C25.345,5.901,25.601,5.999,25.857,5.999z"/>
+ <path style="fill:#556080;" d="M33.15,54.292l-2.293,2.293v-7.586c0-0.552-0.448-1-1-1s-1,0.448-1,1v7.586l-2.293-2.293
+ c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l4,4c0.092,0.092,0.203,0.165,0.325,0.216
+ c0.122,0.051,0.252,0.077,0.382,0.077s0.26-0.027,0.382-0.077c0.122-0.051,0.233-0.124,0.325-0.216l4-4
+ c0.391-0.391,0.391-1.023,0-1.414S33.54,53.901,33.15,54.292z"/>
+</g>
+<circle style="fill:#3083C9;" cx="29.67" cy="29.782" r="11.813"/>
+<path style="fill:#FFFFFF;" d="M22.857,30.999c-0.552,0-1-0.448-1-1c0-3.86,3.14-7,7-7c0.552,0,1,0.448,1,1s-0.448,1-1,1
+ c-2.757,0-5,2.243-5,5C23.857,30.551,23.409,30.999,22.857,30.999z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/photo-camera-1.svg b/img/icons/essential-collection/svg/photo-camera-1.svg
new file mode 100644
index 00000000..e0f727f8
--- /dev/null
+++ b/img/icons/essential-collection/svg/photo-camera-1.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<rect x="19" y="6" style="fill:#226BAC;" width="19" height="4"/>
+<path style="fill:#57ABC1;" d="M53.63,50H2.37C1.061,50,0,48.939,0,47.63V12.37C0,11.061,1.061,10,2.37,10h51.26
+ c1.309,0,2.37,1.061,2.37,2.37v35.26C56,48.939,54.939,50,53.63,50z"/>
+<circle style="fill:#424A60;" cx="29" cy="30" r="16"/>
+<circle style="fill:#7383BF;" cx="29" cy="30" r="14"/>
+<path style="fill:#879AD8;" d="M32.818,30c0,4.576,1.804,8.626,4.582,11.181C40.795,38.626,43,34.576,43,30s-2.205-8.626-5.6-11.181
+ C34.622,21.374,32.818,25.424,32.818,30z"/>
+<path style="fill:#879AD8;" d="M15,30c0,4.576,2.205,8.626,5.6,11.181c2.778-2.555,4.582-6.605,4.582-11.181
+ s-1.804-8.626-4.582-11.181C17.205,21.374,15,25.424,15,30z"/>
+<circle style="fill:#BCCEF7;" cx="23.909" cy="24.909" r="2.545"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/photo-camera.svg b/img/icons/essential-collection/svg/photo-camera.svg
new file mode 100644
index 00000000..47e38cd1
--- /dev/null
+++ b/img/icons/essential-collection/svg/photo-camera.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#556080;" d="M45,15.5l-4-10H17l-4,10H3.799C1.701,15.5,0,17.201,0,19.299v29.368C0,50.784,1.716,52.5,3.833,52.5
+ h50.333c2.117,0,3.833-1.716,3.833-3.833V19.299c0-2.098-1.701-3.799-3.799-3.799H45z"/>
+<circle style="fill:#424A60;stroke:#2B313D;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="29" cy="31.5" r="17"/>
+<circle style="fill:#7383BF;" cx="29" cy="31.5" r="11"/>
+<rect x="6" y="10.5" style="fill:#38454F;" width="4" height="5"/>
+<circle style="fill:#EFCE4A;" cx="51" cy="22.5" r="3"/>
+<path style="fill:#879AD8;" d="M32,31.5c0,3.595,1.418,6.778,3.6,8.785c2.667-2.007,4.4-5.19,4.4-8.785s-1.733-6.778-4.4-8.785
+ C33.418,24.722,32,27.905,32,31.5z"/>
+<path style="fill:#879AD8;" d="M18,31.5c0,3.595,1.733,6.778,4.4,8.785c2.182-2.007,3.6-5.19,3.6-8.785s-1.418-6.778-3.6-8.785
+ C19.733,24.722,18,27.905,18,31.5z"/>
+<path style="fill:#556080;" d="M29,43.5c-6.617,0-12-5.383-12-12s5.383-12,12-12s12,5.383,12,12S35.617,43.5,29,43.5z M29,21.5
+ c-5.514,0-10,4.486-10,10s4.486,10,10,10s10-4.486,10-10S34.514,21.5,29,21.5z"/>
+<circle style="fill:#4674E8;" cx="30.5" cy="28" r="3.5"/>
+<circle style="fill:#BF4D90;" cx="28" cy="29.5" r="2"/>
+<circle style="fill:#BCCEF7;" cx="25" cy="27.5" r="2"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/photos.svg b/img/icons/essential-collection/svg/photos.svg
new file mode 100644
index 00000000..89071150
--- /dev/null
+++ b/img/icons/essential-collection/svg/photos.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58.013 58.013" style="enable-background:new 0 0 58.013 58.013;" xml:space="preserve">
+<path style="fill:#BF4D90;" d="M17.575,29.007c-1.247-0.43-2.42-1.13-3.411-2.121l-5.657-5.657c-0.344-0.344-0.644-0.714-0.92-1.097
+ c0,0-0.001-0.001-0.001-0.001C3.303,20.815,0,24.539,0,29.007c0,4.95,4.05,9,9,9h8c4.95,0,9-4.05,9-9
+ c0-0.435-0.042-0.859-0.102-1.278c-0.749,0.557-1.563,0.983-2.417,1.278C21.571,28.348,19.485,28.348,17.575,29.007z"/>
+<path style="fill:#ED8A19;" d="M37.888,7.58c-0.69-4.277-4.411-7.574-8.875-7.574s-8.185,3.297-8.875,7.574
+ c0.383,0.276,0.753,0.576,1.097,0.92l5.657,5.657c0.991,0.991,1.692,2.164,2.121,3.411c0.658,1.91,0.658,3.996,0,5.906
+ c-0.296,0.858-0.724,1.677-1.285,2.429c0.421,0.061,0.848,0.104,1.285,0.104s0.864-0.042,1.285-0.104
+ c0.929-0.135,1.811-0.411,2.627-0.809c1.816-0.885,3.291-2.36,4.176-4.176c0.578-1.186,0.912-2.51,0.912-3.912v-8
+ C38.013,8.52,37.963,8.046,37.888,7.58z"/>
+<path style="fill:#7FABDA;" d="M36.791,49.513l-5.657-5.657c-0.991-0.991-1.692-2.164-2.121-3.411c-0.658-1.91-0.658-3.996,0-5.906
+ c0.296-0.858,0.724-1.677,1.285-2.429c-0.421-0.061-0.848-0.104-1.285-0.104s-0.864,0.042-1.285,0.104
+ c-0.929,0.135-1.811,0.411-2.627,0.809c-1.816,0.885-3.291,2.36-4.176,4.176c-0.578,1.186-0.912,2.51-0.912,3.912v8
+ c0,0.486,0.05,0.96,0.125,1.426c0.69,4.277,4.411,7.574,8.875,7.574s8.185-3.297,8.875-7.574
+ C37.505,50.156,37.135,49.856,36.791,49.513z"/>
+<path style="fill:#A4E869;" d="M50.439,20.132c-0.276,0.383-0.576,0.753-0.92,1.097l-5.657,5.657
+ c-0.991,0.991-2.164,1.691-3.411,2.121c-1.91,0.658-3.996,0.658-5.906,0c-0.858-0.296-1.677-0.724-2.429-1.285
+ c-0.061,0.421-0.103,0.848-0.103,1.285c0,0.437,0.042,0.864,0.103,1.285c0.135,0.929,0.411,1.811,0.809,2.627
+ c0.885,1.816,2.36,3.291,4.176,4.176c1.186,0.578,2.51,0.912,3.912,0.912h8c0.486,0,0.96-0.05,1.426-0.125
+ c4.277-0.69,7.574-4.411,7.574-8.875S54.716,20.821,50.439,20.132z"/>
+<path style="fill:#EFCE4A;" d="M49.519,8.5C46.363,5.344,41.4,5.044,37.888,7.58c0.075,0.466,0.125,0.94,0.125,1.426v8
+ c0,1.402-0.334,2.726-0.912,3.912c-0.885,1.816-2.36,3.291-4.176,4.176c-0.816,0.398-1.698,0.674-2.627,0.809
+ c0.255,0.341,0.527,0.673,0.836,0.982s0.641,0.581,0.982,0.836c0.752,0.561,1.571,0.99,2.429,1.285c1.91,0.658,3.996,0.658,5.906,0
+ c1.247-0.43,2.42-1.13,3.411-2.121l5.657-5.657c0.344-0.344,0.644-0.714,0.92-1.097C52.976,16.619,52.675,11.657,49.519,8.5z"/>
+<path style="fill:#61B872;" d="M50.439,37.882c-0.466,0.075-0.94,0.125-1.426,0.125h-8c-1.402,0-2.726-0.334-3.912-0.912
+ c-1.816-0.885-3.291-2.36-4.176-4.176c-0.398-0.816-0.674-1.698-0.809-2.627c-0.341,0.255-0.673,0.527-0.982,0.836
+ s-0.581,0.641-0.836,0.982c-0.561,0.752-0.99,1.571-1.285,2.429c-0.658,1.91-0.658,3.996,0,5.906c0.43,1.247,1.13,2.42,2.121,3.411
+ l5.657,5.657c0.344,0.344,0.714,0.644,1.097,0.92c3.512,2.536,8.475,2.236,11.631-0.92S52.976,41.394,50.439,37.882z"/>
+<path style="fill:#ED7161;" d="M29.013,17.569c-0.43-1.247-1.13-2.42-2.121-3.411L21.235,8.5c-0.344-0.344-0.714-0.644-1.097-0.92
+ C16.626,5.044,11.663,5.344,8.507,8.5c-3.156,3.156-3.456,8.117-0.921,11.629C8.048,20.056,8.518,20.007,9,20.007h8
+ c4.515,0,8.271,3.373,8.898,7.722c0.004-0.003,0.008-0.005,0.012-0.008c0.341-0.255,0.673-0.527,0.982-0.836
+ s0.581-0.641,0.836-0.982c0.561-0.752,0.99-1.571,1.285-2.429C29.671,21.564,29.671,19.478,29.013,17.569z"/>
+<path style="fill:#BF4D90;" d="M17,20.007H9c-0.482,0-0.952,0.049-1.414,0.123c0,0,0.001,0.001,0.001,0.002
+ c0.276,0.383,0.576,0.753,0.92,1.097l5.657,5.657c0.991,0.991,2.164,1.691,3.411,2.121c1.91-0.658,3.996-0.658,5.906,0
+ c0.854-0.294,1.668-0.721,2.417-1.278C25.271,23.38,21.515,20.007,17,20.007z"/>
+<path style="fill:#9777A8;" d="M26.892,31.128c-0.309-0.309-0.641-0.581-0.982-0.836c-0.752-0.561-1.571-0.99-2.429-1.285
+ c-1.91-0.658-3.996-0.658-5.906,0c-1.247,0.43-2.42,1.13-3.411,2.121l-5.657,5.657c-0.344,0.344-0.644,0.714-0.92,1.097
+ c-2.536,3.512-2.236,8.475,0.92,11.631s8.119,3.456,11.631,0.92c-0.075-0.466-0.125-0.94-0.125-1.426v-8
+ c0-1.402,0.334-2.726,0.912-3.912c0.885-1.816,2.36-3.291,4.176-4.176c0.816-0.398,1.698-0.674,2.627-0.809
+ C27.473,31.769,27.201,31.437,26.892,31.128z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/picture-1.svg b/img/icons/essential-collection/svg/picture-1.svg
new file mode 100644
index 00000000..dc0895ce
--- /dev/null
+++ b/img/icons/essential-collection/svg/picture-1.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57 57" style="enable-background:new 0 0 57 57;" xml:space="preserve">
+<path style="fill:none;stroke:#556080;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:10;" d="M26.021,2.354
+ C20.164,6.042,9,16,9,16h40c0,0-11.164-9.958-17.021-13.646"/>
+<circle style="fill:#949493;stroke:#C7CAC7;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:10;" cx="29" cy="5" r="4"/>
+<rect x="2" y="16" style="fill:#E7ECED;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" width="53" height="40"/>
+<rect x="6" y="20" style="fill:#424A60;stroke:#E7ECED;stroke-width:2;stroke-miterlimit:10;" width="45" height="32"/>
+<circle style="fill:#EFCE4A;" cx="15" cy="27.569" r="4.569"/>
+<polygon style="fill:#1A9172;" points="50,42.111 49,41 37,30 26.5,41.5 31.983,46.983 36,51 50,51 "/>
+<polygon style="fill:#25AE88;" points="7,51 36,51 31.983,46.983 21.017,36.017 7,48.359 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/picture-2.svg b/img/icons/essential-collection/svg/picture-2.svg
new file mode 100644
index 00000000..1b58b567
--- /dev/null
+++ b/img/icons/essential-collection/svg/picture-2.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve">
+<rect x="2" y="1" style="fill:#424A60;stroke:#E7ECED;stroke-width:2;stroke-miterlimit:10;" width="48" height="50"/>
+<circle style="fill:#EFCE4A;" cx="14" cy="13.569" r="4.569"/>
+<rect x="2" y="41" style="fill:#E7ECED;" width="48" height="10"/>
+<polygon style="fill:#1A9172;" points="49,32.111 48,31 36,20 25.5,31.5 30.983,36.983 35,41 49,41 "/>
+<polygon style="fill:#25AE88;" points="30.983,36.983 20.017,26.017 3,41 35,41 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/picture.svg b/img/icons/essential-collection/svg/picture.svg
new file mode 100644
index 00000000..1bd60adc
--- /dev/null
+++ b/img/icons/essential-collection/svg/picture.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="1" y="7" style="fill:#C3E1ED;stroke:#E7ECED;stroke-width:2;stroke-miterlimit:10;" width="56" height="44"/>
+<circle style="fill:#ED8A19;" cx="16" cy="17.569" r="6.569"/>
+<polygon style="fill:#1A9172;" points="56,36.111 55,35 43,24 32.5,35.5 37.983,40.983 42,45 56,45 "/>
+<polygon style="fill:#1A9172;" points="2,49 26,49 21.983,44.983 11.017,34.017 2,41.956 "/>
+<rect x="2" y="45" style="fill:#6B5B4B;" width="54" height="5"/>
+<polygon style="fill:#25AE88;" points="37.983,40.983 27.017,30.017 10,45 42,45 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/pin.svg b/img/icons/essential-collection/svg/pin.svg
new file mode 100644
index 00000000..8c22696e
--- /dev/null
+++ b/img/icons/essential-collection/svg/pin.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="29" y1="28" x2="29" y2="57"/>
+<circle style="fill:#DD352E;" cx="29" cy="14" r="14"/>
+<circle style="fill:#F76363;" cx="24" cy="10" r="3"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/placeholder-1.svg b/img/icons/essential-collection/svg/placeholder-1.svg
new file mode 100644
index 00000000..3ab3a25f
--- /dev/null
+++ b/img/icons/essential-collection/svg/placeholder-1.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<rect y="41.5" style="fill:#424A60;" width="60" height="18"/>
+<path style="fill:#FFFFFF;" d="M56,51.5h-4v-2h4V51.5z M48,51.5h-4v-2h4V51.5z M40,51.5h-4v-2h4V51.5z M32,51.5h-4v-2h4V51.5z
+ M24,51.5h-4v-2h4V51.5z M16,51.5h-4v-2h4V51.5z M8,51.5H4v-2h4V51.5z"/>
+<path style="fill:#23A24D;" d="M44.03,5.824L44.03,5.824c-7.098-7.098-18.607-7.098-25.706,0h0
+ c-6.396,6.396-7.116,18.44-1.688,25.676l14.541,21l14.541-21C51.146,24.263,50.426,12.22,44.03,5.824z M31.354,24.5
+ c-3.314,0-6-2.686-6-6s2.686-6,6-6s6,2.686,6,6S34.667,24.5,31.354,24.5z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/placeholder-2.svg b/img/icons/essential-collection/svg/placeholder-2.svg
new file mode 100644
index 00000000..006e8558
--- /dev/null
+++ b/img/icons/essential-collection/svg/placeholder-2.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#EFCE4A;" points="48,37 39.564,37 29.177,52 18.79,37 10,37 0,58 58,58 "/>
+<path style="fill:#9777A8;" d="M42.03,5.324L42.03,5.324c-7.098-7.098-18.607-7.098-25.706,0h0C9.928,11.72,9.208,23.763,14.636,31
+ l14.541,21l14.541-21C49.146,23.763,48.426,11.72,42.03,5.324z M29.354,24c-3.314,0-6-2.686-6-6s2.686-6,6-6s6,2.686,6,6
+ S32.667,24,29.354,24z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/placeholder-3.svg b/img/icons/essential-collection/svg/placeholder-3.svg
new file mode 100644
index 00000000..76c8f49f
--- /dev/null
+++ b/img/icons/essential-collection/svg/placeholder-3.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve">
+<path style="fill:#1081E0;" d="M38.853,5.324L38.853,5.324c-7.098-7.098-18.607-7.098-25.706,0h0
+ C6.751,11.72,6.031,23.763,11.459,31L26,52l14.541-21C45.969,23.763,45.249,11.72,38.853,5.324z M26.177,24c-3.314,0-6-2.686-6-6
+ s2.686-6,6-6s6,2.686,6,6S29.491,24,26.177,24z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/placeholder.svg b/img/icons/essential-collection/svg/placeholder.svg
new file mode 100644
index 00000000..b694125b
--- /dev/null
+++ b/img/icons/essential-collection/svg/placeholder.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<ellipse style="fill:#23A24D;" cx="29" cy="50" rx="29" ry="8"/>
+<path style="fill:#EBBA16;" d="M41.676,5.324L41.676,5.324c-7.098-7.098-18.607-7.098-25.706,0h0
+ C9.574,11.72,8.855,23.763,14.282,31l14.541,21l14.541-21C48.792,23.763,48.072,11.72,41.676,5.324z M29,24c-3.314,0-6-2.686-6-6
+ s2.686-6,6-6s6,2.686,6,6S32.314,24,29,24z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/placeholders.svg b/img/icons/essential-collection/svg/placeholders.svg
new file mode 100644
index 00000000..1db6a65d
--- /dev/null
+++ b/img/icons/essential-collection/svg/placeholders.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#25AE88;" d="M51.809,12.208C51.112,6.89,48.332,0,37.419,0S23.727,6.89,23.03,12.208
+ c-0.382,2.915-0.168,5.876,0.439,8.752c3.336,15.813,11.581,25.293,13.532,27.36c0.229,0.242,0.609,0.242,0.837,0
+ c1.951-2.067,10.197-11.547,13.532-27.36C51.977,18.084,52.191,15.123,51.809,12.208z M37.419,22c-4.66,0-8.438-3.778-8.438-8.438
+ s3.778-8.438,8.438-8.438s8.438,3.778,8.438,8.438S42.079,22,37.419,22z"/>
+<path style="fill:#EBBA16;" d="M36.97,23.705c-0.697-5.318-3.477-12.208-14.39-12.208s-13.692,6.89-14.39,12.208
+ c-0.382,2.915-0.168,5.876,0.439,8.752c3.336,15.813,11.581,25.293,13.532,27.36c0.229,0.242,0.609,0.242,0.837,0
+ c1.951-2.067,10.197-11.547,13.532-27.36C37.138,29.581,37.352,26.62,36.97,23.705z M22.581,33.498c-4.66,0-8.438-3.778-8.438-8.438
+ s3.778-8.438,8.438-8.438s8.438,3.778,8.438,8.438S27.24,33.498,22.581,33.498z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/play-button-1.svg b/img/icons/essential-collection/svg/play-button-1.svg
new file mode 100644
index 00000000..1a0036f1
--- /dev/null
+++ b/img/icons/essential-collection/svg/play-button-1.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#EBBA16;" cx="29" cy="29" r="29"/>
+<g>
+ <polygon style="fill:#FFFFFF;" points="44,29 22,44 22,29.273 22,14 "/>
+ <path style="fill:#FFFFFF;" d="M22,45c-0.16,0-0.321-0.038-0.467-0.116C21.205,44.711,21,44.371,21,44V14
+ c0-0.371,0.205-0.711,0.533-0.884c0.328-0.174,0.724-0.15,1.031,0.058l22,15C44.836,28.36,45,28.669,45,29s-0.164,0.64-0.437,0.826
+ l-22,15C22.394,44.941,22.197,45,22,45z M23,15.893v26.215L42.225,29L23,15.893z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/play-button.svg b/img/icons/essential-collection/svg/play-button.svg
new file mode 100644
index 00000000..ffe05745
--- /dev/null
+++ b/img/icons/essential-collection/svg/play-button.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 51.426 51.426" style="enable-background:new 0 0 51.426 51.426;" xml:space="preserve">
+<polygon style="fill:#EBBA16;stroke:#424A60;stroke-width:6;stroke-miterlimit:10;" points="39.071,25.713 10.071,45.713
+ 10.071,26.077 10.071,5.713 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/plus.svg b/img/icons/essential-collection/svg/plus.svg
new file mode 100644
index 00000000..4506f3c8
--- /dev/null
+++ b/img/icons/essential-collection/svg/plus.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<circle style="fill:#43B05C;" cx="25" cy="25" r="25"/>
+<line style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="25" y1="13" x2="25" y2="38"/>
+<line style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="37.5" y1="25" x2="12.5" y2="25"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/power.svg b/img/icons/essential-collection/svg/power.svg
new file mode 100644
index 00000000..59177d64
--- /dev/null
+++ b/img/icons/essential-collection/svg/power.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<path style="fill:none;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M35.029,6.002
+ C45.414,9.039,53,18.633,53,30c0,13.807-11.193,25-25,25S3,43.807,3,30C3,18.623,10.6,9.021,21,5.993"/>
+<line style="fill:none;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="28" y1="1" x2="28" y2="26"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/previous.svg b/img/icons/essential-collection/svg/previous.svg
new file mode 100644
index 00000000..aef8a1ca
--- /dev/null
+++ b/img/icons/essential-collection/svg/previous.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#3083C9;" cx="29" cy="29" r="29"/>
+<g>
+ <polygon style="fill:#FFFFFF;" points="22,29 44,44 44,29.273 44,14 "/>
+ <path style="fill:#FFFFFF;" d="M44,45c-0.197,0-0.394-0.059-0.563-0.174l-22-15C21.164,29.64,21,29.331,21,29
+ s0.164-0.64,0.437-0.826l22-15c0.308-0.208,0.705-0.231,1.031-0.058C44.795,13.289,45,13.629,45,14v30
+ c0,0.371-0.205,0.711-0.533,0.884C44.321,44.962,44.16,45,44,45z M23.775,29L43,42.107V15.893L23.775,29z"/>
+</g>
+<g>
+ <rect x="13" y="14" style="fill:#FFFFFF;" width="5" height="30"/>
+ <path style="fill:#FFFFFF;" d="M19,45h-7V13h7V45z M14,43h3V15h-3V43z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/price-tag.svg b/img/icons/essential-collection/svg/price-tag.svg
new file mode 100644
index 00000000..acb8065d
--- /dev/null
+++ b/img/icons/essential-collection/svg/price-tag.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 55.568 55.568" style="enable-background:new 0 0 55.568 55.568;" xml:space="preserve">
+<path style="fill:#E3CDA4;" d="M44.472,0.784H31.294L6.848,25.151l23.734,23.785L55,24.599V11.288L44.472,0.784z M43.015,15.654
+ c-1.621,0-2.935-1.314-2.935-2.935s1.314-2.935,2.935-2.935c1.621,0,2.935,1.314,2.935,2.935S44.636,15.654,43.015,15.654z"/>
+<polygon style="fill:#CBB895;" points="6.877,25.138 1,30.999 24.734,54.784 30.637,48.898 "/>
+<path style="fill:#BFA380;" d="M43.015,9.784c1.621,0,2.935,1.314,2.935,2.935s-1.314,2.935-2.935,2.935
+ c-1.621,0-2.935-1.314-2.935-2.935S41.394,9.784,43.015,9.784 M43.015,5.784c-3.824,0-6.935,3.111-6.935,6.935
+ s3.111,6.935,6.935,6.935c3.824,0,6.935-3.111,6.935-6.935S46.839,5.784,43.015,5.784L43.015,5.784z"/>
+<path style="fill:#D75A4A;" d="M53.866,26.284c-0.07-0.121-0.161-0.22-0.266-0.299l-1.412,1.398
+ c0.526,0.983,4.22,8.578-2.895,15.694c-2.741,2.739-9.128,3.895-13.912,1.172c-4.812-2.738-6.378-8.497-4.412-16.218
+ c0.137-0.535-0.187-1.08-0.722-1.216c-0.537-0.143-1.079,0.187-1.216,0.722c-2.98,11.703,2.079,16.583,5.36,18.45
+ c2.143,1.219,4.695,1.809,7.215,1.808c3.501,0,6.935-1.138,9.101-3.304C59.275,35.923,53.921,26.38,53.866,26.284z"/>
+<path style="fill:#D75A4A;" d="M43.764,15.546c0.698-0.185,1.299-0.61,1.69-1.195L42.6,11.984
+ C22.251-3.278,0.636,11.816,0.419,11.971c-0.449,0.32-0.554,0.945-0.232,1.395s0.946,0.554,1.395,0.232
+ c0.203-0.145,20.627-14.409,39.78-0.044L43.764,15.546z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/print.svg b/img/icons/essential-collection/svg/print.svg
new file mode 100644
index 00000000..d7146960
--- /dev/null
+++ b/img/icons/essential-collection/svg/print.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#C7CAC7;" points="49,35 49,52 52,52 52,49 58,49 58,17 0,17 0,49 6,49 6,52 9,52 9,35 "/>
+<polygon style="fill:#556080;" points="58,35 58,17 0,17 0,35 9,35 49,35 "/>
+<rect x="6" y="35" style="fill:#7383BF;" width="46" height="17"/>
+<polygon style="fill:#EDEADA;" points="49,0 49,7 49,17 9,17 9,0 "/>
+<polyline style="fill:#EDEADA;" points="49,35 49,58 9,58 9,35 "/>
+<path style="fill:#CEC9AE;" d="M41,44H17c-0.553,0-1-0.447-1-1s0.447-1,1-1h24c0.553,0,1,0.447,1,1S41.553,44,41,44z"/>
+<path style="fill:#CEC9AE;" d="M41,49H17c-0.553,0-1-0.447-1-1s0.447-1,1-1h24c0.553,0,1,0.447,1,1S41.553,49,41,49z"/>
+<circle style="fill:#A4E869;" cx="49" cy="26" r="4"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/push-pin.svg b/img/icons/essential-collection/svg/push-pin.svg
new file mode 100644
index 00000000..87799f05
--- /dev/null
+++ b/img/icons/essential-collection/svg/push-pin.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 51.012 51.012" style="enable-background:new 0 0 51.012 51.012;" xml:space="preserve">
+<line style="fill:none;stroke:#E0E1E2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="35.729" y1="35.734" x2="50.006" y2="50.012"/>
+<path style="fill:#EFCE4A;" d="M35,36.463L20.452,51.012c-3.585-9.003,0.535-18.15,0.535-18.15L7.527,17.039
+ c0,0-4.386,0.704-7.522-1.785L15.26,0c0,0,2.508,3.117,1.768,7.607l15.785,13.43c0,0,8.493-4.385,18.15-0.537L35,36.463z"/>
+<path style="fill:#EBBA16;" d="M20.987,32.861c0,0-0.036,0.084-0.086,0.205L33.037,20.93c-0.133,0.062-0.225,0.107-0.225,0.107
+ L17.079,7.651l-9.476,9.476L20.987,32.861z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/radar.svg b/img/icons/essential-collection/svg/radar.svg
new file mode 100644
index 00000000..7b9efda3
--- /dev/null
+++ b/img/icons/essential-collection/svg/radar.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57.951 57.951" style="enable-background:new 0 0 57.951 57.951;" xml:space="preserve">
+<circle style="fill:#A4E869;" cx="28.965" cy="28.968" r="28"/>
+<path style="fill:#88C057;" d="M28.965,57.951c-7.426,0-14.853-2.827-20.506-8.48C-1.698,39.313-2.851,23.011,5.778,11.552
+ c0.332-0.44,0.958-0.531,1.4-0.197c0.441,0.332,0.529,0.959,0.197,1.4c-8.033,10.669-6.959,25.845,2.497,35.302
+ c10.527,10.527,27.656,10.527,38.184,0s10.527-27.656,0-38.185C38.602,0.417,23.426-0.657,12.755,7.376
+ c-0.442,0.334-1.068,0.243-1.4-0.197c-0.332-0.441-0.244-1.068,0.197-1.4c11.462-8.629,27.763-7.478,37.919,2.68
+ c11.307,11.308,11.307,29.706,0,41.013C43.817,55.124,36.39,57.951,28.965,57.951z"/>
+<path style="fill:#88C057;" d="M28.965,50.954c-5.634,0-11.268-2.145-15.557-6.434c-8.578-8.578-8.578-22.534,0-31.112
+ s22.535-8.578,31.113,0c2.554,2.554,4.453,5.73,5.493,9.187c0.159,0.529-0.141,1.087-0.67,1.246c-0.53,0.159-1.087-0.143-1.246-0.67
+ c-0.944-3.141-2.671-6.027-4.991-8.349c-7.798-7.798-20.487-7.798-28.285,0s-7.798,20.486,0,28.284
+ c7.799,7.799,20.486,7.799,28.285,0c3.309-3.309,5.355-7.708,5.764-12.388c0.048-0.55,0.548-0.957,1.083-0.909
+ c0.55,0.048,0.957,0.533,0.909,1.083c-0.449,5.147-2.701,9.987-6.342,13.628C40.232,48.809,34.598,50.954,28.965,50.954z"/>
+<path style="fill:#88C057;" d="M28.965,42.958c-3.744,0-7.26-1.454-9.899-4.094s-4.094-6.155-4.094-9.899s1.454-7.26,4.094-9.899
+ s6.155-4.094,9.899-4.094s7.26,1.454,9.899,4.094s4.094,6.155,4.094,9.899s-1.454,7.26-4.094,9.899S32.709,42.958,28.965,42.958z
+ M28.965,16.971c-3.21,0-6.224,1.246-8.485,3.508s-3.508,5.275-3.508,8.485s1.246,6.224,3.508,8.485s5.275,3.508,8.485,3.508
+ s6.224-1.246,8.485-3.508s3.508-5.275,3.508-8.485s-1.246-6.224-3.508-8.485S32.175,16.971,28.965,16.971z"/>
+<path style="fill:#EBBA16;" d="M28.965,29.965c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414l22.5-22.5
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414l-22.5,22.5C29.476,29.867,29.221,29.965,28.965,29.965z"/>
+<circle style="fill:#7383BF;" cx="8.965" cy="8.964" r="4"/>
+<circle style="fill:#CC4B4C;" cx="49.471" cy="26.843" r="4"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/reading.svg b/img/icons/essential-collection/svg/reading.svg
new file mode 100644
index 00000000..381bcbf3
--- /dev/null
+++ b/img/icons/essential-collection/svg/reading.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#556080;" d="M55,49.5H33c-1.65,0-4,1.75-4,4v-46c0-1.65,1.35-3,3-3h23c1.65,0,3,1.35,3,3v39
+ C58,48.15,56.65,49.5,55,49.5z"/>
+<path style="fill:#7383BF;" d="M3,49.5h22c1.65,0,4,1.75,4,4v-46c0-1.65-1.35-3-3-3H3c-1.65,0-3,1.35-3,3l0,39
+ C0,48.15,1.35,49.5,3,49.5z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/record.svg b/img/icons/essential-collection/svg/record.svg
new file mode 100644
index 00000000..e28a7b11
--- /dev/null
+++ b/img/icons/essential-collection/svg/record.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<g>
+ <circle style="fill:#DD352E;" cx="13" cy="30" r="12"/>
+ <path style="fill:#B02721;" d="M13,43C5.832,43,0,37.168,0,30s5.832-13,13-13s13,5.832,13,13S20.168,43,13,43z M13,19
+ C6.935,19,2,23.935,2,30s4.935,11,11,11s11-4.935,11-11S19.065,19,13,19z"/>
+</g>
+<g>
+ <circle style="fill:#DD352E;" cx="47" cy="30" r="12"/>
+ <path style="fill:#B02721;" d="M47,43c-7.168,0-13-5.832-13-13s5.832-13,13-13s13,5.832,13,13S54.168,43,47,43z M47,19
+ c-6.065,0-11,4.935-11,11s4.935,11,11,11s11-4.935,11-11S53.065,19,47,19z"/>
+</g>
+<path style="fill:#B02721;" d="M47,43H13c-0.553,0-1-0.448-1-1s0.447-1,1-1h34c0.553,0,1,0.448,1,1S47.553,43,47,43z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/repeat-1.svg b/img/icons/essential-collection/svg/repeat-1.svg
new file mode 100644
index 00000000..e10c314d
--- /dev/null
+++ b/img/icons/essential-collection/svg/repeat-1.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#F76363;" cx="29" cy="29" r="29"/>
+<path style="fill:#FFFFFF;" d="M10,32c-1.104,0-2-0.896-2-2c0-7.72,6.28-14,14-14h14c1.104,0,2,0.896,2,2s-0.896,2-2,2H22
+ c-5.514,0-10,4.486-10,10C12,31.104,11.104,32,10,32z"/>
+<path style="fill:#FFFFFF;" d="M26.002,28c-0.618,0-1.228-0.285-1.619-0.823c-0.65-0.894-0.452-2.145,0.44-2.794L33.6,18
+ l-8.776-6.383c-0.893-0.649-1.091-1.9-0.44-2.794c0.648-0.892,1.899-1.091,2.794-0.44L40.4,18l-13.224,9.617
+ C26.821,27.876,26.409,28,26.002,28z"/>
+<path style="fill:#FFFFFF;" d="M35,42H21c-1.104,0-2-0.896-2-2s0.896-2,2-2h14c5.514,0,10-4.486,10-10c0-1.104,0.896-2,2-2
+ s2,0.896,2,2C49,35.72,42.72,42,35,42z"/>
+<path style="fill:#FFFFFF;" d="M30.998,50c-0.407,0-0.819-0.124-1.175-0.383L16.6,40l13.224-9.617
+ c0.895-0.652,2.144-0.452,2.794,0.44c0.65,0.894,0.452,2.145-0.44,2.794L23.4,40l8.776,6.383c0.893,0.649,1.091,1.9,0.44,2.794
+ C32.227,49.715,31.616,50,30.998,50z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/repeat.svg b/img/icons/essential-collection/svg/repeat.svg
new file mode 100644
index 00000000..a47b8e74
--- /dev/null
+++ b/img/icons/essential-collection/svg/repeat.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<path style="fill:#43B05C;" d="M1,24.5c-0.553,0-1-0.447-1-1c0-7.168,5.832-13,13-13h25c0.553,0,1,0.447,1,1s-0.447,1-1,1H13
+ c-6.065,0-11,4.935-11,11C2,24.053,1.553,24.5,1,24.5z"/>
+<polygon style="fill:#43B05C;" points="38,19.5 49,11.5 38,3.5 "/>
+<path style="fill:#43B05C;" d="M37,39.5H12c-0.553,0-1-0.447-1-1s0.447-1,1-1h25c6.065,0,11-4.935,11-11c0-0.553,0.447-1,1-1
+ s1,0.447,1,1C50,33.668,44.168,39.5,37,39.5z"/>
+<polygon style="fill:#43B05C;" points="12,30.5 1,38.5 12,46.5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/restart.svg b/img/icons/essential-collection/svg/restart.svg
new file mode 100644
index 00000000..ad93dee0
--- /dev/null
+++ b/img/icons/essential-collection/svg/restart.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve">
+<circle style="fill:#E7ECED;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="26" cy="26" r="25"/>
+<polygon style="fill:#38454F;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" points="31,35 16,25.83
+ 31,17.17 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/resume.svg b/img/icons/essential-collection/svg/resume.svg
new file mode 100644
index 00000000..92b2addf
--- /dev/null
+++ b/img/icons/essential-collection/svg/resume.svg
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#EDEADA;" points="51.5,14 37.5,0 6.5,0 6.5,58 51.5,58 "/>
+<polygon style="fill:#CEC9AE;" points="37.5,0 37.5,14 51.5,14 "/>
+<g>
+ <path style="fill:#CEC9AE;" d="M33.5,34h-17c-0.552,0-1,0.447-1,1s0.448,1,1,1h17c0.552,0,1-0.447,1-1S34.052,34,33.5,34z"/>
+ <path style="fill:#CEC9AE;" d="M44.5,30c0-0.553-0.448-1-1-1h-7c-0.552,0-1,0.447-1,1s0.448,1,1,1h7C44.052,31,44.5,30.553,44.5,30
+ z"/>
+ <path style="fill:#CEC9AE;" d="M21.5,31h10c0.552,0,1-0.447,1-1s-0.448-1-1-1h-10c-0.552,0-1,0.447-1,1S20.948,31,21.5,31z"/>
+ <path style="fill:#CEC9AE;" d="M16.5,31c0.27,0,0.52-0.11,0.71-0.29c0.18-0.19,0.29-0.45,0.29-0.71c0-0.261-0.11-0.521-0.29-0.71
+ c-0.37-0.37-1.06-0.36-1.42,0c-0.18,0.189-0.29,0.449-0.29,0.71c0,0.26,0.11,0.52,0.29,0.7C15.97,30.89,16.23,31,16.5,31z"/>
+ <path style="fill:#CEC9AE;" d="M37.79,34.29c-0.18,0.189-0.29,0.439-0.29,0.71c0,0.27,0.1,0.52,0.29,0.71
+ C37.98,35.89,38.24,36,38.5,36c0.26,0,0.52-0.11,0.71-0.29c0.19-0.19,0.29-0.44,0.29-0.71c0-0.261-0.11-0.521-0.29-0.71
+ C38.83,33.92,38.17,33.92,37.79,34.29z"/>
+ <path style="fill:#CEC9AE;" d="M42.79,34.29c-0.18,0.189-0.29,0.439-0.29,0.71c0,0.27,0.1,0.52,0.29,0.71
+ C42.98,35.89,43.24,36,43.5,36c0.26,0,0.52-0.11,0.71-0.3c0.19-0.19,0.29-0.44,0.29-0.7c0-0.261-0.11-0.521-0.29-0.71
+ C43.83,33.92,43.17,33.92,42.79,34.29z"/>
+</g>
+<g>
+ <path style="fill:#7383BF;" d="M22.025,39.166c-2.191,1.141-2.928,3.321-3.196,5.582c-0.414-0.347-0.828-0.693-1.241-1.04
+ c-0.981-0.822-2.404,0.585-1.414,1.415c0.935,0.783,1.871,1.567,2.806,2.351c0.662,0.555,1.676,0.211,1.707-0.707
+ c0.073-2.167,0.177-4.743,2.348-5.873C24.179,40.298,23.167,38.572,22.025,39.166z"/>
+ <path style="fill:#7383BF;" d="M37.363,44.25c-0.423-0.58-0.859-1.063-1.632-1.121c-1.457-0.11-3.958,1.975-4.992,0.132
+ c-0.262-0.468-0.91-0.64-1.368-0.359c-1.416,0.869-3.267,2.119-4.756,0.5c-0.875-0.951-2.286,0.467-1.414,1.414
+ c1.871,2.034,4.284,1.411,6.407,0.259c0.448,0.481,0.984,0.81,1.697,1.067c0.909,0.328,4.087-1.22,4.333-0.883
+ C36.389,46.289,38.126,45.293,37.363,44.25z"/>
+</g>
+<path style="fill:#CEC9AE;" d="M26.093,21.092l-2.511-1.283c-0.171-0.088-0.279-0.264-0.279-0.457v-0.769
+ c1.289-0.555,2.03-1.634,2.39-2.983c0.543-0.168,0.943-0.671,0.943-1.268v-0.667c0-0.511-0.294-0.951-0.718-1.175
+ c-0.294-2.507-1.951-3.521-4.615-3.521c-0.126,0-0.25,0.005-0.371,0.015c-0.905,0.072-1.821-0.099-2.574-0.606
+ c-0.313-0.211-0.577-0.435-0.762-0.67c-0.084-0.107-0.254-0.039-0.238,0.097c0.027,0.233,0.066,0.505,0.125,0.803
+ c0.22,1.107,0.089,0.945-0.339,1.989c-0.237,0.578-0.389,1.218-0.46,1.897c-0.422,0.225-0.714,0.664-0.714,1.172v0.667
+ c0,0.597,0.4,1.1,0.943,1.268c0.36,1.349,1.101,2.428,2.39,2.983v0.764c0,0.195-0.111,0.374-0.286,0.46l-2.574,1.268
+ c-0.436,0.238-0.752,0.619-0.942,1.059C17.137,23.304,19.137,24,21.302,24c2.157,0,4.15-0.69,5.784-1.852
+ C26.882,21.702,26.548,21.32,26.093,21.092z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/rewind-1.svg b/img/icons/essential-collection/svg/rewind-1.svg
new file mode 100644
index 00000000..47f0351d
--- /dev/null
+++ b/img/icons/essential-collection/svg/rewind-1.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#25AE88;" cx="29" cy="29" r="29"/>
+<g>
+ <polygon style="fill:#FFFFFF;" points="4,29 26,44 26,29.273 26,14 "/>
+ <path style="fill:#FFFFFF;" d="M26,45c-0.197,0-0.395-0.059-0.563-0.174l-22-15C3.163,29.64,3,29.331,3,29s0.163-0.64,0.437-0.826
+ l22-15c0.308-0.208,0.704-0.231,1.03-0.058C26.795,13.289,27,13.629,27,14v30c0,0.371-0.205,0.711-0.533,0.884
+ C26.32,44.962,26.16,45,26,45z M5.775,29L25,42.107V15.893L5.775,29z"/>
+</g>
+<g>
+ <polygon style="fill:#FFFFFF;" points="26,29 48,44 48,29.273 48,14 "/>
+ <path style="fill:#FFFFFF;" d="M48,45c-0.197,0-0.395-0.059-0.563-0.174l-22-15C25.163,29.64,25,29.331,25,29
+ s0.163-0.64,0.437-0.826l22-15c0.307-0.208,0.704-0.231,1.03-0.058C48.795,13.289,49,13.629,49,14v30
+ c0,0.371-0.205,0.711-0.533,0.884C48.32,44.962,48.16,45,48,45z M27.775,29L47,42.107V15.893L27.775,29z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/rewind.svg b/img/icons/essential-collection/svg/rewind.svg
new file mode 100644
index 00000000..86a91f9b
--- /dev/null
+++ b/img/icons/essential-collection/svg/rewind.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 55 55" style="enable-background:new 0 0 55 55;" xml:space="preserve">
+<polygon style="fill:#424A60;" points="28,27.5 55,8.513 55,27.155 55,46.487 "/>
+<polygon style="fill:#424A60;" points="0,27.5 27,8.5 27,27.5 27,46.5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/route.svg b/img/icons/essential-collection/svg/route.svg
new file mode 100644
index 00000000..7baed7f6
--- /dev/null
+++ b/img/icons/essential-collection/svg/route.svg
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<path style="fill:#ED8A19;" d="M45.07,59c-0.553,0-1-0.447-1-1s0.447-1,1-1H47c0.553,0,1.035,0.447,1.035,0.999
+ c0,0.553-0.412,1-0.965,1v-1l-0.029,1L45.07,59z M41.07,59h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1
+ S41.623,59,41.07,59z M35.07,59h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S35.623,59,35.07,59z M29.07,59h-2
+ c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S29.623,59,29.07,59z M23.07,59h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2
+ c0.553,0,1,0.447,1,1S23.623,59,23.07,59z M17.07,59h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S17.623,59,17.07,59
+ z M50.537,57.282c-0.216,0-0.434-0.07-0.617-0.214c-0.435-0.342-0.509-0.971-0.168-1.404c0.325-0.413,0.548-0.882,0.663-1.392
+ c0.121-0.539,0.656-0.877,1.195-0.756s0.877,0.656,0.756,1.195c-0.178,0.792-0.538,1.549-1.042,2.188
+ C51.127,57.151,50.834,57.282,50.537,57.282z M50.538,51.719c-0.297,0-0.59-0.131-0.787-0.382c-0.32-0.407-0.734-0.744-1.197-0.974
+ c-0.494-0.246-0.696-0.846-0.45-1.341c0.246-0.494,0.844-0.697,1.341-0.45c0.727,0.361,1.376,0.89,1.879,1.528
+ c0.341,0.434,0.267,1.063-0.168,1.404C50.973,51.648,50.754,51.719,50.538,51.719z M45.071,50h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1
+ h2c0.553,0,1,0.447,1,1S45.624,50,45.071,50z M39.071,50h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1
+ S39.624,50,39.071,50z M33.129,49.594c-0.139,0-0.28-0.029-0.415-0.091c-0.736-0.336-1.402-0.844-1.927-1.467
+ c-0.355-0.423-0.301-1.054,0.122-1.409s1.053-0.301,1.409,0.122c0.334,0.397,0.759,0.721,1.228,0.936
+ c0.502,0.229,0.723,0.822,0.493,1.325C33.871,49.377,33.509,49.594,33.129,49.594z M30.58,44.65c-0.063,0-0.126-0.006-0.189-0.018
+ c-0.543-0.104-0.897-0.629-0.794-1.171c0.155-0.809,0.483-1.556,0.973-2.222c0.328-0.445,0.953-0.539,1.398-0.213
+ c0.445,0.328,0.54,0.954,0.213,1.398c-0.313,0.424-0.521,0.899-0.619,1.413C31.469,44.317,31.05,44.65,30.58,44.65z M34.784,41.005
+ c-0.533,0-0.977-0.421-0.998-0.959c-0.022-0.552,0.406-1.018,0.958-1.04C34.829,39.002,34.914,39,35,39h1.785c0.553,0,1,0.447,1,1
+ s-0.447,1-1,1l-1.959,0.004C34.812,41.005,34.798,41.005,34.784,41.005z M53,41h-0.215c-0.553,0-1-0.447-1-1s0.447-1,1-1H53
+ c0.469,0,0.923-0.091,1.352-0.271c0.505-0.215,1.095,0.025,1.309,0.535c0.214,0.509-0.025,1.095-0.535,1.309
+ C54.451,40.856,53.736,41,53,41z M48.785,41h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S49.338,41,48.785,41z
+ M42.785,41h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S43.338,41,42.785,41z M57.318,37.77
+ c-0.093,0-0.188-0.013-0.281-0.04c-0.53-0.155-0.834-0.711-0.679-1.241c0.094-0.32,0.142-0.652,0.142-0.988
+ c0.002-0.192-0.014-0.374-0.042-0.552c-0.088-0.545,0.283-1.059,0.829-1.146c0.543-0.09,1.058,0.283,1.146,0.829
+ c0.047,0.293,0.069,0.588,0.067,0.876c0,0.519-0.074,1.04-0.222,1.543C58.15,37.487,57.751,37.77,57.318,37.77z M55.25,32.604
+ c-0.17,0-0.343-0.043-0.501-0.135c-0.453-0.263-0.947-0.417-1.47-0.458c-0.551-0.043-0.962-0.524-0.919-1.075
+ c0.043-0.552,0.526-0.959,1.075-0.919c0.823,0.064,1.604,0.308,2.317,0.722c0.478,0.277,0.641,0.89,0.363,1.367
+ C55.931,32.425,55.595,32.604,55.25,32.604z M49.357,32h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1
+ S49.91,32,49.357,32z M43.357,32h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S43.91,32,43.357,32z M37.357,32h-2
+ c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S37.91,32,37.357,32z M31.357,32H31c-0.678-0.001-1.337-0.123-1.963-0.361
+ c-0.516-0.197-0.774-0.775-0.578-1.291c0.198-0.517,0.779-0.773,1.291-0.578c0.398,0.152,0.819,0.229,1.252,0.23h0.355
+ c0.553,0,1,0.447,1,1S31.91,32,31.357,32z M26.724,28.905c-0.42,0-0.812-0.267-0.95-0.688c-0.182-0.552-0.273-1.13-0.273-1.718
+ c0.001-0.238,0.016-0.469,0.044-0.694c0.068-0.546,0.552-0.931,1.117-0.867c0.548,0.068,0.937,0.569,0.867,1.117
+ c-0.019,0.147-0.027,0.298-0.028,0.449c0,0.37,0.059,0.737,0.174,1.088c0.172,0.524-0.113,1.09-0.638,1.263
+ C26.933,28.89,26.827,28.905,26.724,28.905z M28.628,23.676c-0.334,0-0.66-0.167-0.85-0.471c-0.292-0.469-0.149-1.086,0.319-1.378
+ c0.7-0.437,1.472-0.703,2.294-0.794c0.553-0.057,1.043,0.336,1.104,0.885s-0.336,1.043-0.885,1.104
+ c-0.521,0.058-1.011,0.227-1.454,0.503C28.991,23.627,28.809,23.676,28.628,23.676z M42.5,23h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2
+ c0.553,0,1,0.447,1,1S43.053,23,42.5,23z M36.5,23h-2c-0.553,0-1-0.447-1-1s0.447-1,1-1h2c0.553,0,1,0.447,1,1S37.053,23,36.5,23z"
+ />
+<path style="fill:#26B99A;" d="M53.47,2.669L53.47,2.669c-3.157-3.559-8.276-3.559-11.433,0v0c-3.157,3.559-3.157,9.328,0,12.887
+ L47.753,22l5.716-6.444C56.627,11.998,56.627,6.228,53.47,2.669z M48,13c-2.485,0-4.5-2.015-4.5-4.5S45.515,4,48,4
+ s4.5,2.015,4.5,4.5S50.485,13,48,13z"/>
+<path style="fill:#3083C9;" d="M19.278,28.64c-4.296-4.853-11.261-4.853-15.556,0h0c-4.296,4.853-4.296,12.721,0,17.573L11.5,55
+ l7.778-8.787C23.574,41.36,23.574,33.492,19.278,28.64z M11.5,41c-2.761,0-5-2.239-5-5s2.239-5,5-5s5,2.239,5,5S14.261,41,11.5,41z"
+ />
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/save.svg b/img/icons/essential-collection/svg/save.svg
new file mode 100644
index 00000000..4c413d51
--- /dev/null
+++ b/img/icons/essential-collection/svg/save.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 47 47" style="enable-background:new 0 0 47 47;" xml:space="preserve">
+<polygon style="fill:#424A60;" points="46.5,8 46.5,47 0.5,47 0.5,0 38.5,0 "/>
+<rect x="7.5" y="26" style="fill:#E7ECED;" width="31" height="21"/>
+<rect x="7.5" y="26" style="fill:#EBBA16;" width="31" height="12.037"/>
+<rect x="9.5" style="fill:#C7CAC7;" width="26" height="16"/>
+<g>
+ <path style="fill:#FFFFFF;" d="M12.5,31h7c0.553,0,1-0.447,1-1s-0.447-1-1-1h-7c-0.553,0-1,0.447-1,1S11.947,31,12.5,31z"/>
+ <path style="fill:#FFFFFF;" d="M22.5,33h-10c-0.553,0-1,0.447-1,1s0.447,1,1,1h10c0.553,0,1-0.447,1-1S23.053,33,22.5,33z"/>
+ <path style="fill:#FFFFFF;" d="M26.21,33.29c-0.37-0.37-1.04-0.37-1.41,0c-0.19,0.189-0.3,0.439-0.3,0.71
+ c0,0.27,0.109,0.52,0.29,0.71C24.979,34.89,25.229,35,25.5,35c0.27,0,0.52-0.11,0.71-0.29c0.18-0.19,0.29-0.45,0.29-0.71
+ S26.39,33.479,26.21,33.29z"/>
+</g>
+<rect x="27.5" y="4" style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" width="4" height="8"/>
+<polygon style="fill:#E7ECED;" points="24.5,16 9.5,16 9.5,0 16.5,0 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/search-1.svg b/img/icons/essential-collection/svg/search-1.svg
new file mode 100644
index 00000000..c4901044
--- /dev/null
+++ b/img/icons/essential-collection/svg/search-1.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52.213 52.213" style="enable-background:new 0 0 52.213 52.213;" xml:space="preserve">
+<circle style="fill:#556080;" cx="21" cy="21" r="20"/>
+<path style="fill:#2E253B;" d="M36.483,33.655c-0.846,1.034-1.794,1.982-2.828,2.828l15.73,15.73l2.828-2.828L36.483,33.655z"/>
+<path style="fill:#7383BF;" d="M3.493,31.85c0.84,1.424,1.849,2.776,3.072,3.999c0.723,0.723,1.499,1.356,2.297,1.945L36.794,9.862
+ c-0.589-0.798-1.222-1.574-1.945-2.297c-1.223-1.223-2.575-2.232-3.999-3.072L3.493,31.85z"/>
+<path style="fill:#2E253B;" d="M21,42C9.42,42,0,32.58,0,21S9.42,0,21,0s21,9.42,21,21S32.58,42,21,42z M21,2
+ C10.523,2,2,10.523,2,21s8.523,19,19,19s19-8.523,19-19S31.477,2,21,2z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/search.svg b/img/icons/essential-collection/svg/search.svg
new file mode 100644
index 00000000..bfd86918
--- /dev/null
+++ b/img/icons/essential-collection/svg/search.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52.966 52.966" style="enable-background:new 0 0 52.966 52.966;" xml:space="preserve">
+<circle style="fill:#57ABC1;" cx="21.983" cy="21" r="20"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="35.437" y1="35.798" x2="50.983" y2="51.966"/>
+<path style="fill:#7CCBD8;" d="M3.002,27.253c0.848,2.582,2.24,5.018,4.167,7.146L35.382,6.186
+ c-2.129-1.928-4.564-3.319-7.146-4.167L3.002,27.253z"/>
+<path style="fill:#556080;" d="M21.983,42c-11.58,0-21-9.42-21-21s9.42-21,21-21s21,9.42,21,21S33.562,42,21.983,42z M21.983,2
+ c-10.477,0-19,8.523-19,19s8.523,19,19,19s19-8.523,19-19S32.459,2,21.983,2z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/send.svg b/img/icons/essential-collection/svg/send.svg
new file mode 100644
index 00000000..22c23ac6
--- /dev/null
+++ b/img/icons/essential-collection/svg/send.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 55 55" style="enable-background:new 0 0 55 55;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M42.5,24.13v-7.239c0,0-10.656-2.579-17.935,9.652c0,0-1.815-9.335,6.315-16.1
+ c0,0,0.754-0.698,2.298-1.444H0.5v46h46V20.108L42.5,24.13z"/>
+<path style="fill:#88C057;" d="M42.5,7.239V0l12,12.065l-12,12.065v-7.239c0,0-10.656-2.579-17.935,9.652
+ c0,0-1.815-9.335,6.315-16.1C30.88,10.444,34.562,7,42.5,7.239z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/server-1.svg b/img/icons/essential-collection/svg/server-1.svg
new file mode 100644
index 00000000..a4344ec1
--- /dev/null
+++ b/img/icons/essential-collection/svg/server-1.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#424A60;" d="M55.392,20.5H4.608C2.616,20.5,1,18.884,1,16.892V5.108C1,3.116,2.616,1.5,4.608,1.5h50.783
+ C57.384,1.5,59,3.116,59,5.108v11.783C59,18.884,57.384,20.5,55.392,20.5z"/>
+<circle style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="30" cy="53.5" r="4"/>
+<path style="fill:#556080;" d="M55.392,39.5H4.608C2.616,39.5,1,37.884,1,35.892V24.108C1,22.116,2.616,20.5,4.608,20.5h50.783
+ c1.993,0,3.608,1.616,3.608,3.608v11.783C59,37.884,57.384,39.5,55.392,39.5z"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="1" y1="53.5" x2="26" y2="53.5"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="34" y1="53.5" x2="59" y2="53.5"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" x1="30" y1="49.5" x2="30" y2="39.5"/>
+<circle style="fill:#7383BF;" cx="10.5" cy="11" r="3.5"/>
+<circle style="fill:#7383BF;" cx="10.5" cy="30" r="3.5"/>
+<g>
+ <circle style="fill:#7383BF;" cx="50" cy="9.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="46" cy="9.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="52" cy="12.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="48" cy="12.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="42" cy="9.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="44" cy="12.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="38" cy="9.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="40" cy="12.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="34" cy="9.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="36" cy="12.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="50" cy="28.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="46" cy="28.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="52" cy="31.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="48" cy="31.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="42" cy="28.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="44" cy="31.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="38" cy="28.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="40" cy="31.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="34" cy="28.5" r="1"/>
+ <circle style="fill:#7383BF;" cx="36" cy="31.5" r="1"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/server-2.svg b/img/icons/essential-collection/svg/server-2.svg
new file mode 100644
index 00000000..8b8efc3b
--- /dev/null
+++ b/img/icons/essential-collection/svg/server-2.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 61 61" style="enable-background:new 0 0 61 61;" xml:space="preserve">
+<path style="fill:#CED8DB;" d="M4.608,21h50.783C57.384,21,59,22.616,59,24.608v11.783C59,38.384,57.384,40,55.392,40H4.608
+ C2.616,40,1,38.384,1,36.392V24.608C1,22.616,2.616,21,4.608,21z"/>
+<circle style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="30" cy="54" r="4"/>
+<path style="fill:#E7ECED;" d="M4.608,2h50.783C57.384,2,59,3.616,59,5.608v11.783C59,19.384,57.384,21,55.392,21H4.608
+ C2.616,21,1,19.384,1,17.392V5.608C1,3.616,2.616,2,4.608,2z"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="1" y1="54" x2="22" y2="54"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="38" y1="54" x2="60" y2="54"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" x1="30" y1="40" x2="24.5" y2="45.5"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" x1="35.5" y1="44.5" x2="30" y2="50"/>
+<circle style="fill:#FFFFFF;" cx="10.5" cy="11.5" r="3.5"/>
+<circle style="fill:#FFFFFF;" cx="50" cy="10" r="1"/>
+<circle style="fill:#FFFFFF;" cx="46" cy="10" r="1"/>
+<circle style="fill:#FFFFFF;" cx="52" cy="13" r="1"/>
+<circle style="fill:#FFFFFF;" cx="48" cy="13" r="1"/>
+<circle style="fill:#FFFFFF;" cx="42" cy="10" r="1"/>
+<circle style="fill:#FFFFFF;" cx="44" cy="13" r="1"/>
+<circle style="fill:#FFFFFF;" cx="38" cy="10" r="1"/>
+<circle style="fill:#FFFFFF;" cx="40" cy="13" r="1"/>
+<circle style="fill:#FFFFFF;" cx="34" cy="10" r="1"/>
+<circle style="fill:#FFFFFF;" cx="36" cy="13" r="1"/>
+<circle style="fill:#FFFFFF;" cx="10.5" cy="30.5" r="3.5"/>
+<circle style="fill:#FFFFFF;" cx="50" cy="29" r="1"/>
+<circle style="fill:#FFFFFF;" cx="46" cy="29" r="1"/>
+<circle style="fill:#FFFFFF;" cx="52" cy="32" r="1"/>
+<circle style="fill:#FFFFFF;" cx="48" cy="32" r="1"/>
+<circle style="fill:#FFFFFF;" cx="42" cy="29" r="1"/>
+<circle style="fill:#FFFFFF;" cx="44" cy="32" r="1"/>
+<circle style="fill:#FFFFFF;" cx="38" cy="29" r="1"/>
+<circle style="fill:#FFFFFF;" cx="40" cy="32" r="1"/>
+<circle style="fill:#FFFFFF;" cx="34" cy="29" r="1"/>
+<circle style="fill:#FFFFFF;" cx="36" cy="32" r="1"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/server-3.svg b/img/icons/essential-collection/svg/server-3.svg
new file mode 100644
index 00000000..d088b9d1
--- /dev/null
+++ b/img/icons/essential-collection/svg/server-3.svg
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#C7CAC7;" d="M31.045,58.431c-0.441,0-0.845-0.294-0.965-0.74c-0.144-0.533,0.172-1.082,0.706-1.226
+ c0.252-0.067,0.494-0.168,0.719-0.3c0.477-0.276,1.089-0.116,1.368,0.36c0.278,0.478,0.116,1.09-0.361,1.368
+ c-0.377,0.22-0.783,0.389-1.205,0.503C31.218,58.42,31.131,58.431,31.045,58.431z M28.012,58.041c-0.168,0-0.339-0.042-0.496-0.132
+ c-0.379-0.217-0.728-0.483-1.038-0.791c-0.392-0.389-0.394-1.022-0.004-1.414c0.39-0.39,1.022-0.394,1.414-0.004
+ c0.185,0.184,0.394,0.343,0.621,0.473c0.479,0.274,0.646,0.886,0.371,1.365C28.696,57.86,28.359,58.041,28.012,58.041z
+ M33.866,55.602c-0.085,0-0.172-0.011-0.258-0.034c-0.534-0.143-0.851-0.69-0.708-1.224C32.966,54.093,33,53.833,33,53.569
+ c0-0.553,0.448-1.023,1-1.023s1,0.424,1,0.977v0.047c0,0.438-0.057,0.872-0.168,1.291C34.712,55.307,34.308,55.602,33.866,55.602z
+ M26,54.581c-0.552,0-1-0.436-1-0.988h1l-1-0.002c0-0.449,0.054-0.874,0.161-1.284c0.139-0.535,0.685-0.854,1.22-0.716
+ c0.535,0.14,0.855,0.686,0.716,1.22C27.033,53.056,27,53.311,27,53.569C27,54.122,26.553,54.581,26,54.581z M32.799,51.711
+ c-0.252,0-0.505-0.095-0.7-0.286c-0.187-0.183-0.397-0.342-0.626-0.471c-0.48-0.272-0.648-0.883-0.376-1.363
+ c0.272-0.482,0.88-0.648,1.363-0.377c0.379,0.216,0.729,0.479,1.039,0.783c0.394,0.387,0.4,1.02,0.014,1.414
+ C33.317,51.611,33.059,51.711,32.799,51.711z M27.974,51.12c-0.343,0-0.677-0.177-0.863-0.493c-0.28-0.477-0.121-1.089,0.355-1.369
+ c0.376-0.221,0.78-0.393,1.2-0.508c0.534-0.145,1.083,0.166,1.23,0.698c0.147,0.532-0.166,1.083-0.698,1.229
+ c-0.251,0.069-0.493,0.172-0.719,0.305C28.321,51.076,28.146,51.12,27.974,51.12z"/>
+<path style="fill:#C7CAC7;" d="M22,54.569h-1c-0.552,0-1-0.447-1-1s0.448-1,1-1h1c0.552,0,1,0.447,1,1S22.552,54.569,22,54.569z
+ M18,54.569h-1c-0.552,0-1-0.447-1-1s0.448-1,1-1h1c0.552,0,1,0.447,1,1S18.552,54.569,18,54.569z M14,54.569h-1
+ c-0.552,0-1-0.447-1-1s0.448-1,1-1h1c0.552,0,1,0.447,1,1S14.552,54.569,14,54.569z M10,54.569H9c-0.552,0-1-0.447-1-1s0.448-1,1-1
+ h1c0.552,0,1,0.447,1,1S10.552,54.569,10,54.569z M6,54.569H5c-0.552,0-1-0.447-1-1s0.448-1,1-1h1c0.552,0,1,0.447,1,1
+ S6.552,54.569,6,54.569z M2,54.569H1c-0.552,0-1-0.447-1-1s0.448-1,1-1h1c0.552,0,1,0.447,1,1S2.552,54.569,2,54.569z"/>
+<path style="fill:#C7CAC7;" d="M59,54.569h-1c-0.552,0-1-0.447-1-1s0.448-1,1-1h1c0.552,0,1,0.447,1,1S59.552,54.569,59,54.569z
+ M55,54.569h-1c-0.552,0-1-0.447-1-1s0.448-1,1-1h1c0.552,0,1,0.447,1,1S55.552,54.569,55,54.569z M51,54.569h-1
+ c-0.552,0-1-0.447-1-1s0.448-1,1-1h1c0.552,0,1,0.447,1,1S51.552,54.569,51,54.569z M47,54.569h-1c-0.552,0-1-0.447-1-1s0.448-1,1-1
+ h1c0.552,0,1,0.447,1,1S47.552,54.569,47,54.569z M43,54.569h-1c-0.552,0-1-0.447-1-1s0.448-1,1-1h1c0.552,0,1,0.447,1,1
+ S43.552,54.569,43,54.569z M39,54.569h-1c-0.552,0-1-0.447-1-1s0.448-1,1-1h1c0.552,0,1,0.447,1,1S39.552,54.569,39,54.569z"/>
+<path style="fill:#C7CAC7;" d="M30,47.569c-0.552,0-1-0.447-1-1v-1c0-0.553,0.448-1,1-1s1,0.447,1,1v1
+ C31,47.122,30.552,47.569,30,47.569z M30,43.569c-0.552,0-1-0.447-1-1v-1c0-0.553,0.448-1,1-1s1,0.447,1,1v1
+ C31,43.122,30.552,43.569,30,43.569z"/>
+<path style="fill:#CED8DB;" d="M4.608,20.569h50.783c1.993,0,3.608,1.616,3.608,3.608V35.96c0,1.993-1.616,3.608-3.608,3.608H4.608
+ C2.616,39.569,1,37.953,1,35.96V24.177C1,22.184,2.616,20.569,4.608,20.569z"/>
+<path style="fill:#E7ECED;" d="M4.608,1.569h50.783C57.384,1.569,59,3.184,59,5.177V16.96c0,1.993-1.616,3.608-3.608,3.608H4.608
+ C2.616,20.569,1,18.953,1,16.96V5.177C1,3.184,2.616,1.569,4.608,1.569z"/>
+<circle style="fill:#FFFFFF;" cx="10.5" cy="11.069" r="3.5"/>
+<circle style="fill:#FFFFFF;" cx="50" cy="9.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="46" cy="9.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="52" cy="12.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="48" cy="12.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="42" cy="9.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="44" cy="12.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="38" cy="9.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="40" cy="12.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="34" cy="9.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="36" cy="12.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="10.5" cy="30.069" r="3.5"/>
+<circle style="fill:#FFFFFF;" cx="50" cy="28.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="46" cy="28.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="52" cy="31.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="48" cy="31.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="42" cy="28.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="44" cy="31.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="38" cy="28.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="40" cy="31.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="34" cy="28.569" r="1"/>
+<circle style="fill:#FFFFFF;" cx="36" cy="31.569" r="1"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/server.svg b/img/icons/essential-collection/svg/server.svg
new file mode 100644
index 00000000..724cc04f
--- /dev/null
+++ b/img/icons/essential-collection/svg/server.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#556080;" d="M54.392,19.5H3.608C1.616,19.5,0,17.884,0,15.892V4.108C0,2.116,1.616,0.5,3.608,0.5h50.783
+ C56.384,0.5,58,2.116,58,4.108v11.783C58,17.884,56.384,19.5,54.392,19.5z"/>
+<path style="fill:#424A60;" d="M54.392,38.5H3.608C1.616,38.5,0,36.884,0,34.892V23.108C0,21.116,1.616,19.5,3.608,19.5h50.783
+ c1.993,0,3.608,1.616,3.608,3.608v11.783C58,36.884,56.384,38.5,54.392,38.5z"/>
+<path style="fill:#556080;" d="M54.392,57.5H3.608C1.616,57.5,0,55.884,0,53.892V42.108C0,40.116,1.616,38.5,3.608,38.5h50.783
+ c1.993,0,3.608,1.616,3.608,3.608v11.783C58,55.884,56.384,57.5,54.392,57.5z"/>
+<circle style="fill:#7383BF;" cx="9.5" cy="10" r="3.5"/>
+<circle style="fill:#7383BF;" cx="49" cy="8.5" r="1"/>
+<circle style="fill:#7383BF;" cx="45" cy="8.5" r="1"/>
+<circle style="fill:#7383BF;" cx="51" cy="11.5" r="1"/>
+<circle style="fill:#7383BF;" cx="47" cy="11.5" r="1"/>
+<circle style="fill:#7383BF;" cx="41" cy="8.5" r="1"/>
+<circle style="fill:#7383BF;" cx="43" cy="11.5" r="1"/>
+<circle style="fill:#7383BF;" cx="37" cy="8.5" r="1"/>
+<circle style="fill:#7383BF;" cx="39" cy="11.5" r="1"/>
+<circle style="fill:#7383BF;" cx="33" cy="8.5" r="1"/>
+<circle style="fill:#7383BF;" cx="35" cy="11.5" r="1"/>
+<circle style="fill:#7383BF;" cx="9.5" cy="29" r="3.5"/>
+<circle style="fill:#7383BF;" cx="49" cy="27.5" r="1"/>
+<circle style="fill:#7383BF;" cx="45" cy="27.5" r="1"/>
+<circle style="fill:#7383BF;" cx="51" cy="30.5" r="1"/>
+<circle style="fill:#7383BF;" cx="47" cy="30.5" r="1"/>
+<circle style="fill:#7383BF;" cx="41" cy="27.5" r="1"/>
+<circle style="fill:#7383BF;" cx="43" cy="30.5" r="1"/>
+<circle style="fill:#7383BF;" cx="37" cy="27.5" r="1"/>
+<circle style="fill:#7383BF;" cx="39" cy="30.5" r="1"/>
+<circle style="fill:#7383BF;" cx="33" cy="27.5" r="1"/>
+<circle style="fill:#7383BF;" cx="35" cy="30.5" r="1"/>
+<circle style="fill:#7383BF;" cx="9.5" cy="48" r="3.5"/>
+<circle style="fill:#7383BF;" cx="49" cy="46.5" r="1"/>
+<circle style="fill:#7383BF;" cx="45" cy="46.5" r="1"/>
+<circle style="fill:#7383BF;" cx="51" cy="49.5" r="1"/>
+<circle style="fill:#7383BF;" cx="47" cy="49.5" r="1"/>
+<circle style="fill:#7383BF;" cx="41" cy="46.5" r="1"/>
+<circle style="fill:#7383BF;" cx="43" cy="49.5" r="1"/>
+<circle style="fill:#7383BF;" cx="37" cy="46.5" r="1"/>
+<circle style="fill:#7383BF;" cx="39" cy="49.5" r="1"/>
+<circle style="fill:#7383BF;" cx="33" cy="46.5" r="1"/>
+<circle style="fill:#7383BF;" cx="35" cy="49.5" r="1"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/settings-1.svg b/img/icons/essential-collection/svg/settings-1.svg
new file mode 100644
index 00000000..b3a2a96d
--- /dev/null
+++ b/img/icons/essential-collection/svg/settings-1.svg
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#424A60;" cx="29" cy="29" r="29"/>
+<path style="fill:#FFFFFF;" d="M53.148,21.529c-0.143-0.534-0.692-0.853-1.225-0.707l-2.269,0.608
+ c-0.369-1.168-0.837-2.302-1.4-3.393l2.03-1.172c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.479-0.889-0.644-1.366-0.366
+ l-2.045,1.181c-0.67-1.047-1.406-2.029-2.219-2.921l1.657-1.657c0.391-0.391,0.391-1.023,0-1.414s-1.023-0.391-1.414,0l-1.653,1.653
+ c-0.913-0.832-1.894-1.568-2.921-2.223l1.176-2.036c0.276-0.479,0.113-1.09-0.366-1.366c-0.479-0.277-1.091-0.113-1.366,0.366
+ l-1.179,2.042c-1.091-0.562-2.225-1.023-3.391-1.393l0.613-2.288c0.143-0.533-0.174-1.082-0.707-1.225
+ c-0.537-0.147-1.082,0.174-1.225,0.707l-0.613,2.288C32.439,6.584,31.226,6.417,30,6.358V4c0-0.553-0.448-1-1-1s-1,0.447-1,1v2.352
+ c-1.217,0.054-2.434,0.201-3.641,0.465l-0.605-2.258c-0.143-0.533-0.688-0.854-1.225-0.707c-0.533,0.143-0.85,0.691-0.707,1.225
+ l0.606,2.263c-1.151,0.366-2.278,0.849-3.383,1.42l-1.18-2.044C17.589,6.236,16.978,6.072,16.5,6.35
+ c-0.479,0.276-0.642,0.888-0.366,1.366l1.172,2.029c-1.04,0.667-2.012,1.415-2.91,2.237l-1.66-1.66
+ c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l1.664,1.664c-0.825,0.909-1.57,1.883-2.228,2.913l-2.043-1.179
+ c-0.48-0.277-1.09-0.113-1.366,0.366c-0.276,0.479-0.112,1.09,0.366,1.366l2.045,1.181c-0.56,1.085-1.03,2.218-1.403,3.387
+ l-2.281-0.612c-0.531-0.145-1.082,0.174-1.225,0.707c-0.143,0.533,0.173,1.082,0.707,1.225l2.281,0.612
+ c-0.338,1.535-0.521,3.115-0.516,4.721c0.001,0.552,0.449,0.997,1,0.997c0.001,0,0.002,0,0.003,0
+ c0.552-0.002,0.999-0.451,0.997-1.003c-0.015-4.964,1.852-9.68,5.076-13.267l7.57,7.57c-0.765,0.957-1.336,2.067-1.663,3.287
+ c-0.623,2.321-0.303,4.747,0.898,6.828C22.81,35.275,25.798,37,29.007,37c1.571,0,3.125-0.418,4.492-1.207
+ c2.082-1.201,3.57-3.142,4.192-5.464c0.623-2.321,0.303-4.747-0.898-6.828c-0.228-0.394-0.49-0.761-0.77-1.111l7.584-7.584
+ c0.912,1.01,1.737,2.125,2.444,3.35c1.732,3,2.638,6.432,2.62,9.924c-0.003,0.552,0.443,1.002,0.995,1.005c0.001,0,0.003,0,0.005,0
+ c0.55,0,0.997-0.444,1-0.995c0.008-1.597-0.169-3.18-0.504-4.725l2.273-0.61C52.975,22.611,53.291,22.063,53.148,21.529z M28.993,19
+ c-1.571,0-3.125,0.418-4.492,1.207c-0.395,0.228-0.76,0.49-1.111,0.768l-7.579-7.579c1.017-0.922,2.132-1.748,3.345-2.448
+ c7.573-4.373,16.868-3.118,23.037,2.445l-7.585,7.585C33.033,19.725,31.062,19,28.993,19z M35.76,29.812
+ c-0.484,1.806-1.642,3.314-3.261,4.249C31.436,34.675,30.228,35,29.007,35c-2.497,0-4.822-1.342-6.068-3.501
+ c-0.935-1.619-1.183-3.505-0.699-5.311s1.642-3.314,3.261-4.249C26.564,21.325,27.772,21,28.993,21c2.497,0,4.822,1.342,6.068,3.501
+ C35.996,26.12,36.244,28.006,35.76,29.812z"/>
+<path style="fill:#C7CAC7;" d="M26,46.5h-2.207c-0.016,0-0.029,0.008-0.044,0.009c-0.12-1.705-0.556-3.408-1.341-5.023
+ c0.012-0.007,0.026-0.009,0.038-0.016l1.911-1.104c0.479-0.276,0.642-0.888,0.366-1.366c-0.277-0.479-0.89-0.643-1.366-0.366
+ l-1.911,1.104c-0.015,0.009-0.024,0.024-0.038,0.034c-1.006-1.488-2.259-2.719-3.675-3.677c0.009-0.014,0.022-0.025,0.03-0.039
+ l1.104-1.911c0.276-0.479,0.112-1.09-0.366-1.366c-0.48-0.276-1.09-0.113-1.366,0.366l-1.104,1.911
+ c-0.006,0.011-0.006,0.024-0.012,0.035c-1.574-0.762-3.282-1.219-5.026-1.347c0-0.013,0.007-0.023,0.007-0.036V31.5
+ c0-0.553-0.448-1-1-1s-1,0.447-1,1v2.207c0,0.017,0.009,0.031,0.01,0.049c-2.018,0.144-4.036,0.719-5.906,1.799
+ c-0.718,0.415-1.374,0.893-1.987,1.408c0.85,2.98,2.167,5.762,3.862,8.267c0.459-1.017,1.223-1.908,2.264-2.509
+ c2.639-1.524,6.013-0.619,7.537,2.02s0.619,6.013-2.019,7.537c-0.204,0.118-0.413,0.216-0.625,0.305
+ c2.462,1.765,5.208,3.157,8.162,4.086c2.039-2.29,3.227-5.181,3.449-8.179c0.017,0.001,0.031,0.01,0.048,0.01H26
+ c0.552,0,1-0.447,1-1S26.552,46.5,26,46.5z"/>
+<path style="fill:#ED7161;" d="M48.99,33.257c0.001-0.017,0.01-0.032,0.01-0.05V31c0-0.553-0.448-1-1-1s-1,0.447-1,1v2.207
+ c0,0.016,0.008,0.028,0.009,0.044c-1.705,0.12-3.41,0.557-5.026,1.342c-0.006-0.012-0.006-0.026-0.013-0.038l-1.104-1.911
+ C40.59,32.164,39.978,32,39.5,32.277c-0.479,0.276-0.642,0.888-0.366,1.366l1.104,1.911c0.009,0.015,0.022,0.026,0.031,0.04
+ c-1.488,1.007-2.719,2.26-3.676,3.676c-0.014-0.009-0.022-0.024-0.037-0.033l-1.911-1.104c-0.481-0.277-1.089-0.113-1.366,0.366
+ c-0.276,0.479-0.112,1.09,0.366,1.366l1.911,1.104c0.011,0.006,0.023,0.008,0.034,0.014c-0.761,1.573-1.218,3.28-1.346,5.024
+ C34.23,46.007,34.22,46,34.207,46H32c-0.552,0-1,0.447-1,1s0.448,1,1,1h2.207c0.017,0,0.032-0.009,0.049-0.01
+ c0.144,2.018,0.719,4.036,1.799,5.906c0.57,0.987,1.253,1.864,2.009,2.651c2.998-0.986,5.775-2.454,8.252-4.302
+ c-1.259-0.404-2.38-1.252-3.093-2.487c-1.524-2.639-0.619-6.013,2.019-7.537s6.013-0.619,7.537,2.02
+ c0.149,0.258,0.268,0.525,0.371,0.795c1.709-2.568,3.026-5.419,3.849-8.476C54.736,34.612,51.914,33.474,48.99,33.257z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/settings-2.svg b/img/icons/essential-collection/svg/settings-2.svg
new file mode 100644
index 00000000..14154fdb
--- /dev/null
+++ b/img/icons/essential-collection/svg/settings-2.svg
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<rect style="fill:#424A60;" width="60" height="60"/>
+<g>
+ <path style="fill:#373E49;" d="M55.01,35.725l-0.469-0.111c0.12,0.643,0.36,1.219,0.687,1.725c0.209-0.116,0.376-0.306,0.435-0.557
+ C55.776,36.311,55.483,35.837,55.01,35.725z"/>
+ <path style="fill:#373E49;" d="M44.001,53.025c0.288-0.281,0.367-0.723,0.147-1.08l-0.057-0.092C44.037,52.229,44,52.609,44,53
+ C44,53.008,44.001,53.016,44.001,53.025z"/>
+ <path style="fill:#373E49;" d="M36.464,49.191l-3.871-12.889c1.426-0.666,2.551-1.86,3.13-3.323l13.297,3.139
+ c0.006-0.03,0.017-0.057,0.023-0.087l0.315-1.639l-13.232-3.125c0.021-0.239,0.032-0.481,0.025-0.727
+ c-0.041-1.379-0.541-2.635-1.342-3.639l10.274-10.908c3.572,3.654,5.839,8.602,6.004,14.1c0.03,0.986-0.019,1.955-0.124,2.908
+ h1.771c0.068-0.686,0.108-1.38,0.114-2.082l2.658-0.08c0.485-0.015,0.867-0.419,0.852-0.905c-0.015-0.486-0.42-0.867-0.905-0.852
+ l-2.658,0.08c-0.097-1.429-0.327-2.82-0.674-4.164l2.546-0.764c0.465-0.139,0.729-0.63,0.589-1.095
+ c-0.14-0.465-0.629-0.732-1.095-0.589l-2.54,0.763c-0.461-1.343-1.047-2.627-1.738-3.843l2.264-1.399
+ c0.413-0.256,0.541-0.797,0.286-1.21c-0.256-0.413-0.798-0.542-1.21-0.286l-2.268,1.402c-0.789-1.17-1.682-2.263-2.667-3.264
+ l1.829-1.942c0.333-0.354,0.316-0.91-0.037-1.242c-0.353-0.333-0.909-0.316-1.242,0.037l-1.829,1.942
+ c-1.059-0.924-2.203-1.749-3.418-2.467l1.263-2.347c0.23-0.427,0.07-0.96-0.358-1.19c-0.428-0.231-0.961-0.07-1.191,0.358
+ l-1.261,2.344c-1.255-0.617-2.571-1.125-3.94-1.505l0.609-2.581c0.112-0.472-0.181-0.946-0.653-1.057
+ c-0.475-0.111-0.946,0.181-1.057,0.653L34.391,8.3c-1.362-0.267-2.764-0.412-4.196-0.424l-0.08-2.658
+ c-0.015-0.486-0.42-0.867-0.905-0.852c-0.485,0.015-0.867,0.419-0.852,0.905l0.08,2.658c-1.429,0.097-2.82,0.327-4.163,0.675
+ L23.51,6.057c-0.139-0.465-0.63-0.73-1.095-0.589c-0.465,0.139-0.729,0.63-0.589,1.094l0.763,2.54
+ c-1.343,0.461-2.627,1.047-3.843,1.739l-1.399-2.264c-0.256-0.413-0.798-0.542-1.21-0.286c-0.413,0.255-0.541,0.797-0.286,1.21
+ l1.401,2.267c-1.17,0.789-2.263,1.682-3.264,2.667l-1.942-1.829c-0.353-0.333-0.909-0.316-1.242,0.037
+ c-0.333,0.354-0.316,0.91,0.037,1.242l1.942,1.829c-0.924,1.059-1.749,2.203-2.467,3.418l-2.348-1.263
+ c-0.429-0.231-0.961-0.07-1.191,0.358c-0.23,0.427-0.07,0.96,0.358,1.191L9.48,20.68c-0.617,1.255-1.125,2.572-1.505,3.94
+ l-2.581-0.609c-0.475-0.116-0.946,0.181-1.057,0.653c-0.112,0.472,0.181,0.946,0.653,1.057l2.587,0.611
+ c-0.267,1.362-0.412,2.764-0.424,4.196l-2.658,0.08c-0.485,0.015-0.867,0.419-0.852,0.905c0.015,0.486,0.42,0.867,0.905,0.852
+ l2.658-0.08C7.222,32.527,7.263,32.761,7.287,33h1.755c-0.059-0.544-0.112-1.089-0.128-1.645c-0.047-1.581,0.087-3.126,0.374-4.619
+ l14.587,3.444c-0.021,0.24-0.032,0.481-0.025,0.728c0.041,1.379,0.541,2.635,1.342,3.639l-3.428,3.64l1.244,1.243l3.464-3.678
+ c1.05,0.739,2.334,1.163,3.713,1.121c0.246-0.007,0.487-0.033,0.725-0.069l3.973,13.229C35.479,49.849,36.009,49.558,36.464,49.191
+ z M29.368,9.637c5.498-0.165,10.573,1.802,14.434,5.149L33.529,25.695c-1.05-0.739-2.334-1.163-3.713-1.121
+ c-0.246,0.007-0.487,0.033-0.725,0.068L24.78,10.287C26.253,9.911,27.787,9.685,29.368,9.637z M24.277,28.469L9.688,25.024
+ c1.864-6.629,6.902-11.978,13.408-14.236l4.312,14.357C25.981,25.811,24.856,27.006,24.277,28.469z M30.132,35.116
+ c-2.422,0.073-4.452-1.839-4.525-4.261c-0.073-2.422,1.839-4.452,4.261-4.525s4.452,1.839,4.525,4.261
+ C34.466,33.014,32.554,35.044,30.132,35.116z"/>
+</g>
+<path style="fill:#EFCE4A;" d="M59,32c0.552,0,1-0.447,1-1s-0.448-1-1-1h-3.025c-0.062-1.629-0.276-3.218-0.625-4.758l2.921-0.782
+ c0.534-0.143,0.85-0.691,0.707-1.225c-0.143-0.534-0.69-0.854-1.225-0.707l-2.915,0.781c-0.479-1.543-1.102-3.023-1.846-4.429
+ l2.622-1.514c0.479-0.276,0.642-0.888,0.366-1.366c-0.277-0.479-0.889-0.644-1.366-0.366l-2.627,1.517
+ c-0.858-1.357-1.835-2.63-2.922-3.803l2.146-2.146c0.391-0.391,0.391-1.023,0-1.414s-1.023-0.391-1.414,0l-2.146,2.146
+ c-1.172-1.086-2.446-2.064-3.803-2.922l1.516-2.626C45.642,5.907,45.479,5.296,45,5.02c-0.479-0.277-1.09-0.112-1.366,0.366
+ L42.12,8.008c-1.406-0.744-2.886-1.367-4.429-1.846l0.781-2.915c0.143-0.533-0.173-1.082-0.707-1.225
+ c-0.536-0.143-1.082,0.174-1.225,0.707L35.757,5.65C34.218,5.301,32.629,5.087,31,5.025V2c0-0.553-0.448-1-1-1s-1,0.447-1,1v3.025
+ c-1.629,0.062-3.218,0.275-4.757,0.625L23.46,2.729c-0.143-0.533-0.691-0.852-1.225-0.707c-0.534,0.143-0.85,0.691-0.707,1.225
+ l0.781,2.915c-1.543,0.479-3.023,1.102-4.429,1.846l-1.514-2.622C16.089,4.907,15.478,4.742,15,5.02
+ c-0.479,0.276-0.642,0.888-0.366,1.366l1.516,2.626c-1.357,0.858-2.63,1.835-3.803,2.922l-2.146-2.146
+ c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l2.146,2.146C9.847,14.52,8.87,15.793,8.012,17.15l-2.627-1.517
+ C4.906,15.356,4.295,15.521,4.019,16s-0.112,1.09,0.366,1.366l2.622,1.514c-0.744,1.406-1.367,2.886-1.846,4.429l-2.915-0.781
+ c-0.536-0.147-1.082,0.174-1.225,0.707s0.173,1.082,0.707,1.225l2.921,0.782C4.301,26.782,4.087,28.371,4.025,30H1
+ c-0.552,0-1,0.447-1,1s0.448,1,1,1h3.025c0.062,1.629,0.276,3.218,0.625,4.758L1.729,37.54c-0.534,0.143-0.85,0.691-0.707,1.225
+ c0.12,0.447,0.523,0.741,0.965,0.741c0.085,0,0.172-0.011,0.259-0.034l2.915-0.781c0.479,1.543,1.102,3.023,1.846,4.429
+ l-2.622,1.514C3.907,44.91,3.743,45.521,4.019,46c0.186,0.321,0.521,0.5,0.867,0.5c0.169,0,0.342-0.043,0.499-0.134l2.627-1.517
+ c0.533,0.843,1.127,1.64,1.75,2.414c1.897,0.582,3.393,2.078,3.975,3.975c0.774,0.623,1.571,1.217,2.414,1.75l-1.516,2.626
+ c-0.276,0.479-0.112,1.09,0.366,1.366c0.157,0.091,0.33,0.134,0.499,0.134c0.346,0,0.682-0.179,0.867-0.5l1.514-2.622
+ c1.406,0.744,2.886,1.367,4.429,1.846l-0.781,2.915c-0.022,0.083-0.015,0.165-0.016,0.247h2.02l0.71-2.65
+ c1.539,0.35,3.129,0.563,4.757,0.625V59h2v-2.025c1.629-0.062,3.218-0.275,4.757-0.625l0.71,2.65h2.02
+ c-0.001-0.082,0.007-0.164-0.016-0.247l-0.781-2.915c1.543-0.479,3.023-1.102,4.429-1.846l1.514,2.622
+ c0.186,0.321,0.521,0.5,0.867,0.5c0.169,0,0.342-0.043,0.499-0.134c0.479-0.276,0.642-0.888,0.366-1.366l-1.516-2.626
+ c0.843-0.533,1.64-1.127,2.414-1.75c0.582-1.897,2.078-3.393,3.975-3.975c0.623-0.774,1.217-1.572,1.75-2.414l2.627,1.517
+ c0.157,0.091,0.33,0.134,0.499,0.134c0.346,0,0.682-0.179,0.867-0.5c0.276-0.479,0.112-1.09-0.366-1.366l-2.622-1.514
+ c0.744-1.406,1.367-2.886,1.846-4.429l2.915,0.781c0.087,0.023,0.174,0.034,0.259,0.034c0.442,0,0.846-0.295,0.965-0.741
+ c0.143-0.533-0.173-1.082-0.707-1.225l-2.921-0.782c0.349-1.539,0.563-3.129,0.625-4.758H59z M30,7
+ c6.258,0,11.962,2.41,16.239,6.347L34.184,25.402C33.015,24.526,31.57,24,30,24c-0.28,0-0.555,0.021-0.826,0.053L24.76,7.583
+ C26.448,7.206,28.2,7,30,7z M35,31c0,2.757-2.243,5-5,5s-5-2.243-5-5s2.243-5,5-5S35,28.243,35,31z M22.827,8.096l4.414,16.473
+ c-1.645,0.708-2.965,2.029-3.673,3.673L7.096,23.827C9.442,16.353,15.353,10.441,22.827,8.096z M6,31c0-1.8,0.206-3.552,0.583-5.24
+ l16.47,4.414C23.021,30.445,23,30.72,23,31c0,1.57,0.526,3.015,1.402,4.184L12.347,47.239C8.41,42.962,6,37.258,6,31z M30,55
+ c-6.258,0-11.962-2.41-16.239-6.347l12.054-12.054C26.985,37.474,28.43,38,30,38c0.28,0,0.555-0.021,0.826-0.053l4.413,16.47
+ C33.552,54.794,31.8,55,30,55z M37.173,53.904l-4.414-16.473c1.645-0.708,2.965-2.029,3.673-3.673l16.473,4.414
+ C50.558,45.647,44.647,51.559,37.173,53.904z M53.417,36.24l-16.47-4.414C36.979,31.555,37,31.28,37,31
+ c0-1.57-0.526-3.015-1.402-4.184l12.054-12.054C51.59,19.038,54,24.742,54,31C54,32.8,53.794,34.552,53.417,36.24z"/>
+<g>
+ <path style="fill:#7383BF;" d="M59,59v-2.13c-0.447,0.807-1.033,1.525-1.721,2.13H59z"/>
+ <path style="fill:#7383BF;" d="M54.504,35.462L54.125,33h-4.5l-0.583,3.03c-0.655,3.405-4.579,5.031-7.45,3.086l-2.555-1.731
+ l-3.182,3.182l1.473,2.009c2.097,2.859,0.5,6.928-2.982,7.597L32,50.625v4.5l2.462,0.379C36.473,55.813,37.9,57.265,38.38,59h8.34
+ C45.056,57.534,44,55.393,44,53c0-4.418,3.582-8,8-8c3.014,0,5.636,1.668,7,4.13v-9.581C56.849,39.419,54.871,37.85,54.504,35.462z
+ "/>
+</g>
+<g>
+ <path style="fill:#7383BF;" d="M1,59h1.721C2.033,58.395,1.447,57.677,1,56.87V59z"/>
+ <path style="fill:#7383BF;" d="M25.654,50.174c-3.482-0.67-5.079-4.738-2.982-7.597l1.473-2.009l-3.182-3.182l-2.555,1.731
+ c-2.871,1.945-6.795,0.319-7.45-3.086L10.375,33h-4.5l-0.379,2.462C5.129,37.85,3.151,39.419,1,39.549v9.581
+ C2.364,46.668,4.986,45,8,45c4.418,0,8,3.582,8,8c0,2.393-1.056,4.534-2.721,6h8.34c0.48-1.735,1.908-3.187,3.918-3.496L28,55.125
+ v-4.5L25.654,50.174z"/>
+</g>
+<path style="fill:#FFFFFF;" d="M8,45c-3.014,0-5.636,1.668-7,4.13v7.74c0.447,0.807,1.033,1.525,1.721,2.13h10.558
+ C14.944,57.534,16,55.393,16,53C16,48.582,12.418,45,8,45z M8,57c-2.209,0-4-1.791-4-4c0-2.209,1.791-4,4-4s4,1.791,4,4
+ C12,55.209,10.209,57,8,57z"/>
+<path style="fill:#FFFFFF;" d="M59,49.13C57.636,46.668,55.014,45,52,45c-4.418,0-8,3.582-8,8c0,2.393,1.056,4.534,2.721,6h10.558
+ c0.688-0.605,1.273-1.323,1.721-2.13V49.13z M52,57c-2.209,0-4-1.791-4-4c0-2.209,1.791-4,4-4s4,1.791,4,4
+ C56,55.209,54.209,57,52,57z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/settings-3.svg b/img/icons/essential-collection/svg/settings-3.svg
new file mode 100644
index 00000000..fb1a239f
--- /dev/null
+++ b/img/icons/essential-collection/svg/settings-3.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<g>
+ <path style="fill:#ED8A19;" d="M59,16H56.95c-0.221-3.108-1.455-5.934-3.381-8.154l1.139-1.139c0.391-0.391,0.391-1.023,0-1.414
+ s-1.023-0.391-1.414,0l-1.139,1.139c-2.22-1.926-5.047-3.16-8.154-3.381V1c0-0.553-0.448-1-1-1s-1,0.447-1,1v2.051
+ c-3.108,0.221-5.934,1.455-8.154,3.381l-1.139-1.139c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l1.139,1.139
+ c-1.926,2.22-3.16,5.047-3.381,8.154H27c-0.552,0-1,0.447-1,1s0.448,1,1,1h2.051c0.221,3.108,1.455,5.934,3.381,8.154l-1.139,1.139
+ c-0.391,0.391-0.391,1.023,0,1.414C31.489,28.903,31.744,29,32,29s0.512-0.098,0.707-0.293l1.139-1.139
+ c2.22,1.926,5.047,3.16,8.154,3.381V33c0,0.553,0.448,1,1,1s1-0.447,1-1v-2.051c3.108-0.221,5.934-1.455,8.154-3.381l1.198,1.198
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414l-1.198-1.198
+ c1.926-2.22,3.16-5.047,3.381-8.154H59c0.552,0,1-0.447,1-1S59.553,16,59,16z M43,29c-6.617,0-12-5.383-12-12S36.384,5,43,5
+ s12,5.383,12,12S49.617,29,43,29z"/>
+ <path style="fill:#ED8A19;" d="M43,13c-2.206,0-4,1.794-4,4s1.794,4,4,4s4-1.794,4-4S45.206,13,43,13z M43,19c-1.103,0-2-0.897-2-2
+ s0.897-2,2-2s2,0.897,2,2S44.103,19,43,19z"/>
+</g>
+<path style="fill:#424A60;" d="M37.407,48.086l-1.595-0.708C36.568,45.392,37,43.248,37,41c0-1.948-0.321-3.821-0.896-5.579
+ l1.258-0.489c0.515-0.2,0.77-0.779,0.57-1.294c-0.199-0.515-0.775-0.772-1.294-0.569l-1.267,0.492
+ c-1.684-3.69-4.571-6.711-8.165-8.562l0.708-1.593c0.224-0.505-0.003-1.096-0.508-1.32c-0.506-0.223-1.095,0.004-1.32,0.508
+ l-0.709,1.595C23.392,23.433,21.248,23,19,23c-1.948,0-3.82,0.321-5.579,0.896l-0.489-1.258c-0.2-0.515-0.781-0.771-1.294-0.569
+ c-0.515,0.199-0.77,0.779-0.57,1.294l0.492,1.267c-3.69,1.684-6.71,4.571-8.561,8.165l-1.593-0.708
+ c-0.505-0.223-1.095,0.004-1.32,0.508c-0.224,0.505,0.003,1.096,0.508,1.32l1.595,0.708C1.433,36.609,1,38.753,1,41
+ c0,1.948,0.321,3.821,0.896,5.579l-1.258,0.489c-0.515,0.2-0.77,0.779-0.57,1.294C0.222,48.758,0.6,49,1.001,49
+ c0.12,0,0.243-0.021,0.362-0.068l1.267-0.492c1.684,3.69,4.571,6.711,8.165,8.562l-0.708,1.593c-0.224,0.505,0.003,1.096,0.508,1.32
+ C10.726,59.973,10.864,60,11,60c0.383,0,0.749-0.222,0.915-0.594l0.709-1.595C14.609,58.568,16.753,59,19,59
+ c1.948,0,3.82-0.321,5.579-0.896l0.489,1.258C25.222,59.758,25.6,60,26,60c0.121,0,0.243-0.021,0.362-0.068
+ c0.515-0.199,0.77-0.779,0.57-1.294l-0.492-1.267c3.69-1.684,6.71-4.571,8.561-8.165l1.593,0.708C36.726,49.973,36.864,50,37,50
+ c0.383,0,0.749-0.222,0.915-0.594C38.139,48.902,37.911,48.311,37.407,48.086z M19,25c1.959,0,3.828,0.371,5.565,1.018l-4.91,11.048
+ C19.441,37.031,19.224,37,19,37c-2.206,0-4,1.794-4,4c0,0.159,0.029,0.31,0.047,0.465l-11.289,4.39C3.269,44.323,3,42.693,3,41
+ C3,32.178,10.178,25,19,25z M17.144,41.732c-0.001-0.003,0-0.006-0.002-0.009c-0.001-0.001-0.002-0.002-0.003-0.004
+ C17.053,41.495,17,41.254,17,41c0-1.103,0.897-2,2-2c0.279,0,0.544,0.058,0.786,0.162c0.009,0.004,0.015,0.013,0.024,0.017
+ c0.004,0.002,0.008,0.001,0.012,0.002C20.515,39.496,21,40.191,21,41c0,1.103-0.897,2-2,2C18.156,43,17.437,42.473,17.144,41.732z
+ M4.497,47.713l11.267-4.382C16.491,44.338,17.667,45,19,45c0.159,0,0.31-0.029,0.465-0.047l4.39,11.289
+ C22.323,56.731,20.693,57,19,57C12.577,57,7.041,53.187,4.497,47.713z M25.714,55.504l-4.382-11.267C22.338,43.509,23,42.334,23,41
+ c0-1.265-0.602-2.381-1.521-3.115l4.916-11.06C31.502,29.501,35,34.846,35,41C35,47.423,31.188,52.959,25.714,55.504z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/settings-4.svg b/img/icons/essential-collection/svg/settings-4.svg
new file mode 100644
index 00000000..1c019fa6
--- /dev/null
+++ b/img/icons/essential-collection/svg/settings-4.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve">
+<path style="fill:#C7CAC7;" d="M48.872,22.898c-4.643-0.893-6.772-6.318-3.976-10.13l1.964-2.678l-4.243-4.243l-2.638,1.787
+ c-3.914,2.652-9.256,0.321-9.974-4.351L29.5,0h-6l-0.777,4.041c-0.873,4.54-6.105,6.708-9.933,4.115L9.383,5.847L5.14,10.09
+ l1.964,2.678c2.796,3.812,0.666,9.237-3.976,10.13L0,23.5v6l3.283,0.505c4.673,0.719,7.003,6.061,4.351,9.975l-1.787,2.637
+ l4.243,4.243l2.678-1.964c3.812-2.796,9.237-0.667,10.13,3.976L23.5,52h6l0.355-2.309c0.735-4.776,6.274-7.071,10.171-4.213
+ l1.884,1.382l4.243-4.243l-1.787-2.637c-2.651-3.914-0.321-9.256,4.351-9.975L52,29.5v-6L48.872,22.898z M26.5,31
+ c-2.485,0-4.5-2.015-4.5-4.5s2.015-4.5,4.5-4.5s4.5,2.015,4.5,4.5S28.985,31,26.5,31z"/>
+<path style="fill:#556080;" d="M26.5,17c-5.247,0-9.5,4.253-9.5,9.5s4.253,9.5,9.5,9.5s9.5-4.253,9.5-9.5S31.747,17,26.5,17z
+ M26.5,31c-2.485,0-4.5-2.015-4.5-4.5s2.015-4.5,4.5-4.5s4.5,2.015,4.5,4.5S28.985,31,26.5,31z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/settings-5.svg b/img/icons/essential-collection/svg/settings-5.svg
new file mode 100644
index 00000000..7ccc8e87
--- /dev/null
+++ b/img/icons/essential-collection/svg/settings-5.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M50.219,21h-5.051c-2.619,0-3.93-3.167-2.079-5.018l3.572-3.572c0.695-0.695,0.695-1.823,0-2.518
+ l-4.553-4.553c-0.695-0.695-1.823-0.695-2.518,0l-3.572,3.572C34.166,10.762,31,9.451,31,6.832V1.781C31,0.797,30.203,0,29.219,0
+ h-6.439C21.797,0,21,0.797,21,1.781v5.052c0,2.619-3.166,3.93-5.018,2.079L12.41,5.339c-0.695-0.695-1.823-0.695-2.518,0
+ L5.339,9.892c-0.695,0.695-0.695,1.823,0,2.518l3.572,3.572C10.763,17.833,9.451,21,6.832,21H1.781C0.797,21,0,21.797,0,22.781
+ v6.439C0,30.203,0.797,31,1.781,31h5.051c2.619,0,3.93,3.167,2.079,5.018L5.339,39.59c-0.695,0.696-0.695,1.823,0,2.518l4.553,4.553
+ c0.695,0.695,1.823,0.695,2.518,0l3.572-3.572C17.834,41.237,21,42.549,21,45.168v5.051C21,51.203,21.797,52,22.781,52h6.439
+ C30.203,52,31,51.203,31,50.219v-5.051c0-2.619,3.166-3.931,5.018-2.079l3.572,3.572c0.695,0.695,1.823,0.695,2.518,0l4.553-4.553
+ c0.695-0.695,0.695-1.823,0-2.518l-3.572-3.572C41.237,34.167,42.549,31,45.168,31h5.051C51.203,31,52,30.203,52,29.219v-6.439
+ C52,21.797,51.203,21,50.219,21z M26,34c-4.418,0-8-3.582-8-8s3.582-8,8-8s8,3.582,8,8S30.418,34,26,34z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/settings-6.svg b/img/icons/essential-collection/svg/settings-6.svg
new file mode 100644
index 00000000..6f770146
--- /dev/null
+++ b/img/icons/essential-collection/svg/settings-6.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M50.219,21h-2.797c-0.552-2.375-1.486-4.602-2.739-6.613l1.978-1.978
+ c0.695-0.695,0.695-1.823,0-2.518l-4.553-4.553c-0.695-0.695-1.823-0.695-2.518,0l-1.978,1.978C35.602,6.064,33.375,5.13,31,4.578
+ V1.781C31,0.797,30.203,0,29.219,0h-6.439C21.797,0,21,0.797,21,1.781v2.797c-2.375,0.552-4.602,1.486-6.613,2.739L12.41,5.339
+ c-0.695-0.695-1.823-0.695-2.518,0L5.339,9.892c-0.695,0.695-0.695,1.823,0,2.518l1.978,1.978C6.064,16.398,5.13,18.625,4.578,21
+ H1.781C0.797,21,0,21.797,0,22.781v6.439C0,30.203,0.797,31,1.781,31h2.797c0.552,2.375,1.486,4.602,2.739,6.613L5.339,39.59
+ c-0.695,0.696-0.695,1.823,0,2.518l4.553,4.553c0.695,0.695,1.823,0.695,2.518,0l1.978-1.978c2.011,1.252,4.238,2.187,6.613,2.739
+ v2.797C21,51.203,21.797,52,22.781,52h6.439C30.203,52,31,51.203,31,50.219v-2.797c2.375-0.552,4.602-1.486,6.613-2.739l1.978,1.978
+ c0.695,0.695,1.823,0.695,2.518,0l4.553-4.553c0.695-0.695,0.695-1.823,0-2.518l-1.978-1.978c1.252-2.01,2.186-4.238,2.739-6.613
+ h2.797C51.203,31,52,30.203,52,29.219v-6.439C52,21.797,51.203,21,50.219,21z M26,35c-4.971,0-9-4.03-9-9c0-4.971,4.029-9,9-9
+ s9,4.029,9,9C35,30.97,30.971,35,26,35z"/>
+<path style="fill:#C7CAC7;" d="M26,13c-7.18,0-13,5.82-13,13s5.82,13,13,13s13-5.82,13-13S33.18,13,26,13z M26,35
+ c-4.971,0-9-4.03-9-9c0-4.971,4.029-9,9-9s9,4.029,9,9C35,30.97,30.971,35,26,35z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/settings-7.svg b/img/icons/essential-collection/svg/settings-7.svg
new file mode 100644
index 00000000..3973533b
--- /dev/null
+++ b/img/icons/essential-collection/svg/settings-7.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="28" y1="5" x2="28" y2="1"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="28" y1="55" x2="28" y2="51"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="51" y1="28" x2="55" y2="28"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="1" y1="28" x2="5" y2="28"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="44.263" y1="11.737" x2="47.092" y2="8.908"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="8.908" y1="47.092" x2="11.737" y2="44.263"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="44.263" y1="44.263" x2="47.092" y2="47.092"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="8.908" y1="8.908" x2="11.737" y2="11.737"/>
+<path style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M28,5
+ C15.297,5,5,15.297,5,28s10.297,23,23,23s23-10.297,23-23S40.703,5,28,5z M28,32c-2.209,0-4-1.791-4-4c0-2.209,1.791-4,4-4
+ s4,1.791,4,4C32,30.209,30.209,32,28,32z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/settings-8.svg b/img/icons/essential-collection/svg/settings-8.svg
new file mode 100644
index 00000000..d6333c2d
--- /dev/null
+++ b/img/icons/essential-collection/svg/settings-8.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#556080;" d="M59,31c0.553,0,1-0.447,1-1s-0.447-1-1-1h-3.04c-0.063-1.627-0.267-3.218-0.618-4.755l2.928-0.785
+ c0.533-0.143,0.85-0.691,0.707-1.225c-0.142-0.533-0.69-0.848-1.225-0.707l-2.93,0.785c-0.034-0.109-0.058-0.222-0.094-0.331
+ c-0.002-0.006,0-0.011-0.002-0.017c-0.002-0.006-0.007-0.01-0.01-0.017c-0.461-1.413-1.05-2.767-1.736-4.063l2.632-1.52
+ c0.479-0.276,0.643-0.888,0.366-1.366c-0.277-0.479-0.891-0.644-1.366-0.366l-2.634,1.521c-0.857-1.356-1.841-2.622-2.927-3.794
+ l2.159-2.159c0.391-0.391,0.391-1.023,0-1.414s-1.023-0.391-1.414,0l-2.159,2.159c-1.172-1.086-2.433-2.076-3.79-2.935l1.516-2.626
+ C45.643,4.907,45.479,4.296,45,4.02c-0.478-0.276-1.09-0.114-1.366,0.366l-1.515,2.623c-1.405-0.744-2.89-1.352-4.433-1.831
+ l0.785-2.93c0.143-0.533-0.174-1.082-0.707-1.225c-0.531-0.141-1.082,0.174-1.225,0.707l-0.785,2.929
+ C34.217,4.309,32.628,4.103,31,4.041V1c0-0.553-0.447-1-1-1s-1,0.447-1,1v3.041c-1.628,0.062-3.217,0.268-4.755,0.618L23.46,1.729
+ c-0.143-0.534-0.69-0.849-1.225-0.707c-0.533,0.143-0.85,0.691-0.707,1.225l0.785,2.93c-1.542,0.479-3.027,1.087-4.433,1.831
+ l-1.515-2.623C16.089,3.905,15.476,3.743,15,4.02c-0.479,0.276-0.643,0.888-0.366,1.366l1.516,2.626
+ c-1.356,0.858-2.618,1.848-3.79,2.934l-2.159-2.159c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l2.159,2.159
+ c-1.085,1.172-2.07,2.438-2.927,3.794l-2.634-1.521C4.908,14.356,4.296,14.521,4.02,15c-0.276,0.479-0.112,1.09,0.366,1.366
+ l2.632,1.52c-0.686,1.296-1.274,2.65-1.736,4.063c-0.002,0.006-0.007,0.01-0.01,0.017c-0.002,0.006,0,0.011-0.002,0.017
+ c-0.035,0.108-0.06,0.221-0.094,0.331l-2.93-0.785c-0.531-0.14-1.082,0.174-1.225,0.707s0.174,1.082,0.707,1.225l2.928,0.785
+ C4.307,25.782,4.103,27.373,4.04,29H1c-0.553,0-1,0.447-1,1s0.447,1,1,1h3.031c0.062,1.628,0.273,3.218,0.623,4.757L1.729,36.54
+ c-0.533,0.143-0.85,0.691-0.707,1.225c0.119,0.447,0.523,0.741,0.965,0.741c0.086,0,0.173-0.011,0.26-0.034l2.916-0.781
+ c0.479,1.543,1.102,3.023,1.846,4.428l-2.624,1.515C3.907,43.91,3.743,44.521,4.02,45c0.186,0.321,0.521,0.5,0.867,0.5
+ c0.17,0,0.342-0.043,0.499-0.134l2.632-1.52c0.858,1.356,1.836,2.627,2.922,3.8l-2.153,2.153c-0.391,0.391-0.391,1.023,0,1.414
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293l2.147-2.146c0.736,0.682,1.511,1.322,2.322,1.916
+ c0.018,0.015,0.028,0.037,0.048,0.052c0.028,0.02,0.06,0.028,0.089,0.045c0.438,0.316,0.892,0.61,1.349,0.899l-1.522,2.635
+ c-0.276,0.479-0.112,1.09,0.366,1.366c0.157,0.091,0.329,0.134,0.499,0.134c0.346,0,0.682-0.179,0.867-0.5l1.52-2.632
+ c1.405,0.744,2.885,1.361,4.428,1.84l-0.785,2.93c-0.143,0.533,0.174,1.082,0.707,1.225c0.087,0.023,0.174,0.034,0.26,0.034
+ c0.441,0,0.846-0.294,0.965-0.741l0.785-2.928c1.538,0.35,3.128,0.555,4.755,0.617V59c0,0.553,0.447,1,1,1s1-0.447,1-1v-3.04
+ c1.628-0.062,3.218-0.267,4.756-0.617l0.784,2.928c0.119,0.447,0.523,0.741,0.965,0.741c0.086,0,0.173-0.011,0.26-0.034
+ c0.533-0.143,0.85-0.691,0.707-1.225l-0.785-2.93c1.542-0.48,3.023-1.096,4.428-1.84l1.519,2.631c0.186,0.321,0.521,0.5,0.867,0.5
+ c0.17,0,0.342-0.043,0.499-0.134c0.479-0.276,0.643-0.888,0.366-1.366l-1.522-2.635c0.457-0.29,0.912-0.583,1.349-0.9
+ c0.029-0.017,0.061-0.025,0.088-0.045c0.02-0.014,0.029-0.036,0.048-0.052c0.811-0.594,1.586-1.234,2.322-1.916l2.147,2.146
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414l-2.153-2.153
+ c1.086-1.172,2.064-2.443,2.922-3.8l2.632,1.52c0.157,0.091,0.329,0.134,0.499,0.134c0.346,0,0.682-0.179,0.867-0.5
+ c0.276-0.479,0.112-1.09-0.366-1.366l-2.624-1.515c0.745-1.406,1.367-2.885,1.846-4.428l2.916,0.781
+ c0.087,0.023,0.174,0.034,0.26,0.034c0.441,0,0.846-0.294,0.965-0.741c0.143-0.533-0.174-1.082-0.707-1.225l-2.924-0.783
+ c0.35-1.539,0.561-3.128,0.623-4.757H59z M30,54c-4.907,0-9.474-1.483-13.279-4.021l7.658-10.541C26.026,40.423,27.945,41,30,41
+ s3.974-0.577,5.622-1.562l7.658,10.541C39.474,52.517,34.907,54,30,54z M30,28c1.103,0,2,0.897,2,2s-0.897,2-2,2s-2-0.897-2-2
+ S28.897,28,30,28z M31,19.051V6.025c9.861,0.407,18.204,6.788,21.495,15.614l-12.388,4.026C38.546,22.042,35.094,19.422,31,19.051z
+ M29,19.051c-4.094,0.371-7.546,2.991-9.107,6.614L7.505,21.639C10.796,12.813,19.139,6.432,29,6.025V19.051z M6,30
+ c0-2.237,0.314-4.401,0.89-6.458l12.39,4.026C19.102,28.352,19,29.164,19,30c0,3.293,1.462,6.244,3.761,8.262l-7.655,10.537
+ C9.564,44.399,6,37.61,6,30z M44.893,48.799l-7.655-10.537C39.538,36.244,41,33.293,41,30c0-0.836-0.102-1.648-0.28-2.431
+ l12.39-4.026C53.686,25.599,54,27.763,54,30C54,37.61,50.436,44.399,44.893,48.799z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/settings-9.svg b/img/icons/essential-collection/svg/settings-9.svg
new file mode 100644
index 00000000..454712c9
--- /dev/null
+++ b/img/icons/essential-collection/svg/settings-9.svg
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#556080;" d="M30.023,56.004c-9.272,0-17.909-4.982-22.54-13.004C0.315,30.584,4.584,14.651,17,7.483
+ c3.952-2.281,8.438-3.487,12.977-3.487c9.272,0,17.909,4.982,22.54,13.004C59.685,29.416,55.416,45.349,43,52.517
+ C39.048,54.798,34.562,56.004,30.023,56.004z M29.977,5.996c-4.188,0-8.328,1.113-11.977,3.22
+ c-5.552,3.205-9.522,8.381-11.182,14.572C5.159,29.98,6.011,36.448,9.216,42c4.274,7.404,12.248,12.004,20.808,12.004
+ c4.188,0,8.328-1.113,11.977-3.22c5.552-3.205,9.522-8.381,11.182-14.572c1.659-6.192,0.808-12.66-2.397-18.212
+ C46.51,10.596,38.536,5.996,29.977,5.996z"/>
+<g>
+ <path style="fill:#556080;" d="M23.46,1.729c-0.142-0.534-0.689-0.849-1.225-0.707c-0.533,0.143-0.85,0.691-0.707,1.225
+ l1.035,3.863c0.119,0.447,0.523,0.741,0.965,0.741c0.086,0,0.173-0.011,0.26-0.034c0.533-0.143,0.85-0.691,0.707-1.225L23.46,1.729
+ z"/>
+ <path style="fill:#556080;" d="M37.437,53.89c-0.143-0.534-0.691-0.85-1.225-0.707s-0.85,0.691-0.707,1.225l1.035,3.863
+ c0.119,0.447,0.523,0.741,0.965,0.741c0.086,0,0.173-0.011,0.26-0.034c0.533-0.143,0.85-0.691,0.707-1.225L37.437,53.89z"/>
+ <path style="fill:#556080;" d="M59,29h-4c-0.553,0-1,0.447-1,1s0.447,1,1,1h4c0.553,0,1-0.447,1-1S59.553,29,59,29z"/>
+ <path style="fill:#556080;" d="M5,31c0.553,0,1-0.447,1-1s-0.447-1-1-1H1c-0.553,0-1,0.447-1,1s0.447,1,1,1H5z"/>
+ <path style="fill:#556080;" d="M48.385,46.971c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l2.828,2.828
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L48.385,46.971z"/>
+ <path style="fill:#556080;" d="M10.201,8.787c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l2.828,2.828
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L10.201,8.787z"/>
+ <path style="fill:#556080;" d="M47.678,13.322c0.256,0,0.512-0.098,0.707-0.293l2.828-2.828c0.391-0.391,0.391-1.023,0-1.414
+ s-1.023-0.391-1.414,0l-2.828,2.828c-0.391,0.391-0.391,1.023,0,1.414C47.166,13.225,47.422,13.322,47.678,13.322z"/>
+ <path style="fill:#556080;" d="M11.615,46.971l-2.828,2.828c-0.391,0.391-0.391,1.023,0,1.414c0.195,0.195,0.451,0.293,0.707,0.293
+ s0.512-0.098,0.707-0.293l2.828-2.828c0.391-0.391,0.391-1.023,0-1.414S12.006,46.58,11.615,46.971z"/>
+ <path style="fill:#556080;" d="M16.366,4.386C16.089,3.905,15.476,3.743,15,4.02c-0.479,0.276-0.643,0.888-0.366,1.366l2,3.464
+ c0.186,0.321,0.521,0.5,0.867,0.5c0.17,0,0.342-0.043,0.499-0.134c0.479-0.276,0.643-0.888,0.366-1.366L16.366,4.386z"/>
+ <path style="fill:#556080;" d="M43.366,51.15c-0.276-0.48-0.89-0.644-1.366-0.366c-0.479,0.276-0.643,0.888-0.366,1.366l2,3.464
+ c0.186,0.321,0.521,0.5,0.867,0.5c0.17,0,0.342-0.043,0.499-0.134c0.479-0.276,0.643-0.888,0.366-1.366L43.366,51.15z"/>
+ <path style="fill:#556080;" d="M30,54c-0.553,0-1,0.447-1,1v4c0,0.553,0.447,1,1,1s1-0.447,1-1v-4C31,54.447,30.553,54,30,54z"/>
+ <path style="fill:#556080;" d="M30,0c-0.553,0-1,0.447-1,1v4c0,0.553,0.447,1,1,1s1-0.447,1-1V1C31,0.447,30.553,0,30,0z"/>
+ <path style="fill:#556080;" d="M4.386,16.366l3.464,2C8.007,18.457,8.179,18.5,8.349,18.5c0.346,0,0.682-0.179,0.867-0.5
+ c0.276-0.479,0.112-1.09-0.366-1.366l-3.464-2C4.908,14.356,4.296,14.521,4.02,15C3.743,15.479,3.907,16.09,4.386,16.366z"/>
+ <path style="fill:#556080;" d="M55.614,43.634l-3.464-2c-0.479-0.276-1.09-0.114-1.366,0.366c-0.276,0.479-0.112,1.09,0.366,1.366
+ l3.464,2c0.157,0.091,0.329,0.134,0.499,0.134c0.346,0,0.682-0.179,0.867-0.5C56.257,44.521,56.093,43.91,55.614,43.634z"/>
+ <path style="fill:#556080;" d="M1.729,23.46l3.863,1.035c0.087,0.023,0.174,0.034,0.26,0.034c0.441,0,0.846-0.294,0.965-0.741
+ c0.143-0.533-0.174-1.082-0.707-1.225l-3.863-1.035c-0.531-0.14-1.082,0.174-1.225,0.707S1.196,23.317,1.729,23.46z"/>
+ <path style="fill:#556080;" d="M58.271,36.54l-3.863-1.035c-0.532-0.142-1.082,0.173-1.225,0.707
+ c-0.143,0.533,0.174,1.082,0.707,1.225l3.863,1.035c0.087,0.023,0.174,0.034,0.26,0.034c0.441,0,0.846-0.294,0.965-0.741
+ C59.12,37.231,58.804,36.683,58.271,36.54z"/>
+ <path style="fill:#556080;" d="M6.817,36.212c-0.143-0.534-0.691-0.85-1.225-0.707L1.729,36.54
+ c-0.533,0.143-0.85,0.691-0.707,1.225c0.119,0.447,0.523,0.741,0.965,0.741c0.086,0,0.173-0.011,0.26-0.034l3.863-1.035
+ C6.644,37.294,6.96,36.745,6.817,36.212z"/>
+ <path style="fill:#556080;" d="M53.183,23.788c0.119,0.447,0.523,0.741,0.965,0.741c0.086,0,0.173-0.011,0.26-0.034l3.863-1.035
+ c0.533-0.143,0.85-0.691,0.707-1.225s-0.689-0.848-1.225-0.707l-3.863,1.035C53.356,22.706,53.04,23.255,53.183,23.788z"/>
+ <path style="fill:#556080;" d="M9.216,42c-0.277-0.48-0.891-0.643-1.366-0.366l-3.464,2C3.907,43.91,3.743,44.521,4.02,45
+ c0.186,0.321,0.521,0.5,0.867,0.5c0.17,0,0.342-0.043,0.499-0.134l3.464-2C9.328,43.09,9.492,42.479,9.216,42z"/>
+ <path style="fill:#556080;" d="M50.784,18c0.186,0.321,0.521,0.5,0.867,0.5c0.17,0,0.342-0.043,0.499-0.134l3.464-2
+ c0.479-0.276,0.643-0.888,0.366-1.366c-0.277-0.479-0.891-0.644-1.366-0.366l-3.464,2C50.672,16.91,50.508,17.521,50.784,18z"/>
+ <path style="fill:#556080;" d="M45,4.02c-0.478-0.276-1.09-0.114-1.366,0.366l-2,3.464C41.357,8.328,41.521,8.939,42,9.216
+ c0.157,0.091,0.329,0.134,0.499,0.134c0.346,0,0.682-0.179,0.867-0.5l2-3.464C45.643,4.907,45.479,4.296,45,4.02z"/>
+ <path style="fill:#556080;" d="M18,50.784c-0.478-0.277-1.09-0.114-1.366,0.366l-2,3.464c-0.276,0.479-0.112,1.09,0.366,1.366
+ c0.157,0.091,0.329,0.134,0.499,0.134c0.346,0,0.682-0.179,0.867-0.5l2-3.464C18.643,51.672,18.479,51.061,18,50.784z"/>
+ <path style="fill:#556080;" d="M37.765,1.022c-0.53-0.141-1.082,0.174-1.225,0.707l-1.035,3.863
+ c-0.143,0.533,0.174,1.082,0.707,1.225c0.087,0.023,0.174,0.034,0.26,0.034c0.441,0,0.846-0.294,0.965-0.741l1.035-3.863
+ C38.614,1.714,38.298,1.165,37.765,1.022z"/>
+ <path style="fill:#556080;" d="M23.788,53.183c-0.531-0.142-1.082,0.173-1.225,0.707l-1.035,3.863
+ c-0.143,0.533,0.174,1.082,0.707,1.225c0.087,0.023,0.174,0.034,0.26,0.034c0.441,0,0.846-0.294,0.965-0.741l1.035-3.863
+ C24.638,53.874,24.321,53.325,23.788,53.183z"/>
+</g>
+<path style="fill:#556080;" d="M38.659,25.001c-2.761-4.782-8.876-6.421-13.658-3.659c-4.782,2.761-6.421,8.876-3.66,13.658
+ c2.761,4.782,8.876,6.421,13.658,3.66C39.781,35.898,41.42,29.783,38.659,25.001z M32.5,34.329c-2.391,1.381-5.448,0.561-6.829-1.83
+ c-1.381-2.391-0.561-5.448,1.83-6.829c2.391-1.381,5.448-0.561,6.829,1.83C35.71,29.892,34.891,32.949,32.5,34.329z"/>
+<path style="fill:#556080;" d="M55.614,43.634L37.5,33.268c-0.479-0.276-1.09-0.114-1.366,0.366
+ c-0.276,0.479-0.112,1.09,0.366,1.366l18.114,10.366c0.157,0.091,0.329,0.134,0.499,0.134c0.346,0,0.682-0.179,0.867-0.5
+ C56.257,44.521,56.093,43.91,55.614,43.634z"/>
+<path style="fill:#556080;" d="M23.866,33.634c-0.276-0.48-0.888-0.643-1.366-0.366L4.386,43.634l1,1.732L23.5,35
+ C23.978,34.724,24.142,34.112,23.866,33.634z"/>
+<rect x="29" y="5" style="fill:#556080;" width="2" height="17"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/settings.svg b/img/icons/essential-collection/svg/settings.svg
new file mode 100644
index 00000000..e6481328
--- /dev/null
+++ b/img/icons/essential-collection/svg/settings.svg
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#556080;" cx="29" cy="29" r="29"/>
+<g>
+ <path style="fill:#26B99A;" d="M25.556,5.568c-2.143-0.412-3.125-2.916-1.835-4.675l0.342-0.466
+ c-2.879,0.494-5.61,1.417-8.133,2.692C17.688,3.541,19,5.112,19,7c0,2.209-1.791,4-4,4s-4-1.791-4-4
+ c0-0.271,0.028-0.536,0.08-0.792c1.11-0.874-2.167,1.598-4.375,4.249c0.457,0.91,0.465,2.041-0.182,2.994l-0.825,1.217l1.958,1.958
+ l1.236-0.906c1.76-1.29,4.263-0.308,4.675,1.835L13.846,19h2.769l0.164-1.066c0.339-2.204,2.896-3.263,4.694-1.944l0.869,0.637
+ l1.958-1.958l-0.825-1.217c-1.224-1.807-0.148-4.272,2.008-4.604L27,8.615V5.846L25.556,5.568z"/>
+</g>
+<g>
+ <path style="fill:#424A60;" d="M49,44.5c0-3.038,2.462-5.5,5.5-5.5c0.565,0,1.109,0.086,1.622,0.244
+ c0.62-1.642,1.102-3.353,1.418-5.122c-0.628-0.545-1.087-1.305-1.229-2.228L56.019,30h-3.462l-0.448,2.331
+ c-0.504,2.619-3.522,3.87-5.731,2.374l-1.965-1.331l-2.448,2.448l1.133,1.545c1.613,2.199,0.385,5.329-2.294,5.844L39,43.558v3.462
+ l1.894,0.291c2.696,0.415,4.04,3.497,2.51,5.755l-1.031,1.521l0.095,0.095c3.072-1.615,5.811-3.77,8.108-6.33
+ C49.602,47.359,49,46,49,44.5z"/>
+</g>
+<path style="fill:#E7ECED;" d="M52.899,23.485c-0.011-0.011-0.026-0.014-0.038-0.025c1.393-1.623,2.395-3.591,2.854-5.761
+ c-2.935-6.929-8.486-12.48-15.415-15.415c-2.17,0.458-4.138,1.461-5.761,2.854c-0.01-0.011-0.014-0.026-0.025-0.038l-1.414-1.414
+ c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l1.414,1.414c0.012,0.012,0.029,0.016,0.041,0.027
+ c-1.752,2.039-2.883,4.623-3.098,7.467C30.028,14.008,30.015,14,30,14h-2c-0.552,0-1,0.447-1,1s0.448,1,1,1h2
+ c0.018,0,0.032-0.009,0.05-0.01c0.215,2.844,1.339,5.429,3.091,7.469c-0.012,0.011-0.028,0.015-0.04,0.027l-1.414,1.414
+ c-0.391,0.391-0.391,1.023,0,1.414c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293l1.414-1.414
+ c0.012-0.012,0.016-0.028,0.027-0.04c2.039,1.751,4.625,2.876,7.469,3.091C42.009,27.968,42,27.982,42,28v2c0,0.553,0.448,1,1,1
+ s1-0.447,1-1v-2c0-0.016-0.008-0.028-0.009-0.044c2.844-0.215,5.428-1.346,7.467-3.098c0.011,0.012,0.015,0.029,0.027,0.041
+ l1.414,1.414c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L52.899,23.485z M43,18
+ c-1.657,0-3-1.343-3-3s1.343-3,3-3s3,1.343,3,3S44.657,18,43,18z"/>
+<circle style="fill:#E7ECED;" cx="18" cy="40" r="3"/>
+<path style="fill:#EBBA16;" d="M36.406,47.086l-2.473-1.099c-0.007-0.003-0.014-0.002-0.02-0.004C34.615,44.123,35,42.107,35,40
+ c0-1.823-0.294-3.576-0.825-5.222c0.007-0.002,0.013-0.001,0.02-0.004l2.167-0.843c0.515-0.2,0.77-0.779,0.57-1.294
+ c-0.2-0.515-0.777-0.772-1.294-0.569l-2.167,0.843c-0.01,0.004-0.016,0.012-0.026,0.016c-1.584-3.453-4.283-6.281-7.646-8.022
+ c0.005-0.01,0.012-0.016,0.017-0.026l1.099-2.473c0.224-0.505-0.003-1.096-0.508-1.32c-0.505-0.223-1.095,0.004-1.32,0.508
+ l-1.099,2.473c-0.005,0.012-0.003,0.024-0.008,0.036C22.117,23.401,20.108,23,18,23c-1.825,0-3.574,0.303-5.22,0.835
+ c-0.003-0.01-0.001-0.02-0.005-0.03l-0.843-2.168c-0.2-0.515-0.781-0.771-1.294-0.569c-0.515,0.199-0.77,0.779-0.57,1.294
+ l0.843,2.168c0.003,0.009,0.01,0.015,0.014,0.024c-3.468,1.596-6.297,4.326-8.031,7.717c-0.015-0.007-0.024-0.021-0.04-0.028
+ l-2.129-0.937c-0.207-0.091-0.424-0.089-0.629-0.041c0.053,0.689,0.124,1.373,0.225,2.048l1.727,0.76
+ c0.014,0.006,0.03,0.004,0.044,0.009c-0.389,1.047-0.688,2.137-0.866,3.27l0,0.001c0.343,1.142,0.756,2.253,1.231,3.331
+ c0.022,0.049,0.044,0.097,0.066,0.146c0.217,0.486,0.448,0.964,0.691,1.436c0.026,0.05,0.051,0.101,0.077,0.151
+ c0.804,1.538,1.743,2.995,2.8,4.355c0.041,0.052,0.082,0.105,0.124,0.157c0.329,0.417,0.668,0.826,1.019,1.224
+ c0.024,0.027,0.047,0.055,0.071,0.082c0.769,0.867,1.59,1.688,2.457,2.457c0.027,0.024,0.055,0.047,0.082,0.071
+ c0.398,0.351,0.807,0.69,1.224,1.019c0.052,0.042,0.105,0.083,0.157,0.124c1.36,1.057,2.817,1.996,4.355,2.8
+ c0.05,0.026,0.101,0.052,0.151,0.078c0.471,0.243,0.95,0.473,1.435,0.69c0.049,0.022,0.097,0.044,0.146,0.066
+ c1.078,0.475,2.189,0.888,3.331,1.231l0.002,0c0.862-0.135,1.696-0.348,2.51-0.607c0.006,0.017,0.002,0.035,0.009,0.052l0.493,1.282
+ c0.748,0.139,1.505,0.256,2.272,0.336L25.033,55.5c-0.005-0.012-0.015-0.02-0.02-0.032c3.482-1.577,6.326-4.296,8.079-7.674
+ c0.011,0.006,0.018,0.016,0.029,0.021l2.473,1.099C35.726,48.973,35.864,49,36,49c0.383,0,0.749-0.222,0.915-0.594
+ C37.138,47.901,36.911,47.311,36.406,47.086z M18,47c-3.866,0-7-3.134-7-7s3.134-7,7-7s7,3.134,7,7S21.866,47,18,47z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/share-1.svg b/img/icons/essential-collection/svg/share-1.svg
new file mode 100644
index 00000000..ddcfc69e
--- /dev/null
+++ b/img/icons/essential-collection/svg/share-1.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57 57" style="enable-background:new 0 0 57 57;" xml:space="preserve">
+<circle style="fill:#7383BF;" cx="11" cy="28.456" r="9"/>
+<circle style="fill:#7383BF;" cx="46" cy="48" r="9"/>
+<circle style="fill:#7383BF;" cx="46" cy="9" r="9"/>
+<g>
+ <path style="fill:#424A60;" d="M19.017,25.36c0.176,0,0.354-0.046,0.515-0.144l18.908-11.388c0.473-0.285,0.625-0.899,0.34-1.372
+ c-0.285-0.474-0.899-0.627-1.373-0.341L18.5,23.504c-0.473,0.285-0.625,0.899-0.34,1.372C18.347,25.188,18.677,25.36,19.017,25.36z
+ "/>
+ <path style="fill:#424A60;" d="M38.442,43.171L19.535,31.694c-0.472-0.287-1.087-0.138-1.374,0.336
+ c-0.287,0.472-0.136,1.087,0.336,1.373L37.404,44.88c0.162,0.099,0.341,0.146,0.518,0.146c0.338,0,0.667-0.171,0.856-0.481
+ C39.065,44.072,38.915,43.457,38.442,43.171z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/share-2.svg b/img/icons/essential-collection/svg/share-2.svg
new file mode 100644
index 00000000..1d652587
--- /dev/null
+++ b/img/icons/essential-collection/svg/share-2.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57 57" style="enable-background:new 0 0 57 57;" xml:space="preserve">
+<g>
+ <path style="fill:#424A60;" d="M42.111,8.847c-0.473-0.29-1.087-0.143-1.376,0.327c-0.29,0.471-0.143,1.086,0.327,1.376
+ C48.224,14.96,52.5,22.604,52.5,31c0,2.067-0.271,4.137-0.805,6.152c-0.141,0.533,0.177,1.081,0.711,1.223
+ c0.085,0.022,0.172,0.033,0.256,0.033c0.443,0,0.848-0.296,0.966-0.744C54.207,35.482,54.5,33.24,54.5,31
+ C54.5,21.905,49.869,13.623,42.111,8.847z"/>
+ <path style="fill:#424A60;" d="M37.671,53.182C34.756,54.388,31.671,55,28.5,55c-6.728,0-13.189-2.854-17.728-7.832
+ c-0.372-0.408-1.003-0.437-1.413-0.065c-0.408,0.372-0.437,1.005-0.065,1.413C14.211,53.907,21.211,57,28.5,57
+ c3.435,0,6.778-0.663,9.936-1.971c0.51-0.211,0.753-0.796,0.542-1.307C38.767,53.213,38.181,52.971,37.671,53.182z"/>
+ <path style="fill:#424A60;" d="M22.784,7.687c0.537-0.132,0.865-0.673,0.734-1.209c-0.13-0.536-0.674-0.862-1.208-0.734
+ C11.302,8.434,3.371,17.838,2.573,29.146c-0.039,0.551,0.376,1.029,0.927,1.067c0.024,0.002,0.048,0.003,0.071,0.003
+ c0.521,0,0.959-0.402,0.997-0.93C5.305,18.85,12.625,10.169,22.784,7.687z"/>
+</g>
+<circle style="fill:#EBBA16;" cx="28.5" cy="6" r="6"/>
+<circle style="fill:#7383BF;" cx="6.5" cy="43" r="6"/>
+<circle style="fill:#43B05C;" cx="50.5" cy="43" r="6"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/share.svg b/img/icons/essential-collection/svg/share.svg
new file mode 100644
index 00000000..7b552885
--- /dev/null
+++ b/img/icons/essential-collection/svg/share.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#4B6DAA;" cx="29" cy="29" r="29"/>
+<path style="fill:#424A60;" d="M32.999,44c-0.205,0-0.412-0.063-0.59-0.193l-15-11c-0.445-0.327-0.542-0.953-0.215-1.398
+ c0.327-0.443,0.952-0.542,1.398-0.215l15,11c0.445,0.327,0.542,0.953,0.215,1.398C33.61,43.858,33.307,44,32.999,44z"/>
+<path style="fill:#424A60;" d="M18.001,25c-0.308,0-0.611-0.142-0.808-0.408c-0.326-0.445-0.23-1.071,0.215-1.398l15-11
+ c0.446-0.327,1.071-0.229,1.398,0.215c0.326,0.445,0.23,1.071-0.215,1.398l-15,11C18.413,24.938,18.206,25,18.001,25z"/>
+<circle style="fill:#A4E869;" cx="15" cy="28" r="5"/>
+<circle style="fill:#FFFFFF;" cx="38" cy="13" r="5"/>
+<circle style="fill:#FFFFFF;" cx="38" cy="43" r="5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/shuffle-1.svg b/img/icons/essential-collection/svg/shuffle-1.svg
new file mode 100644
index 00000000..a4859c6c
--- /dev/null
+++ b/img/icons/essential-collection/svg/shuffle-1.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#F76363;" cx="29" cy="29" r="29"/>
+<path style="fill:#FFFFFF;" d="M12,43c-1.104,0-2-0.896-2-2s0.896-2,2-2c5.514,0,10-4.486,10-10c0-1.104,0.896-2,2-2s2,0.896,2,2
+ C26,36.72,19.72,43,12,43z"/>
+<path style="fill:#FFFFFF;" d="M24,31c-1.104,0-2-0.896-2-2c0-7.72,6.28-14,14-14h10c1.104,0,2,0.896,2,2s-0.896,2-2,2H36
+ c-5.514,0-10,4.486-10,10C26,30.104,25.104,31,24,31z"/>
+<path style="fill:#FFFFFF;" d="M46,43H36c-3.416,0-6.706-1.242-9.263-3.498c-0.828-0.731-0.907-1.995-0.177-2.823
+ s1.996-0.907,2.823-0.177C31.209,38.113,33.56,39,36,39h10c1.104,0,2,0.896,2,2S47.104,43,46,43z"/>
+<path style="fill:#FFFFFF;" d="M20.002,22.054c-0.475,0-0.951-0.168-1.333-0.51C16.836,19.903,14.467,19,12,19h-2
+ c-1.104,0-2-0.896-2-2s0.896-2,2-2h2c3.452,0,6.769,1.266,9.337,3.563c0.822,0.736,0.893,2.001,0.156,2.824
+ C21.099,21.829,20.552,22.054,20.002,22.054z"/>
+<path style="fill:#FFFFFF;" d="M12,43h-2c-1.104,0-2-0.896-2-2s0.896-2,2-2h2c1.104,0,2,0.896,2,2S13.104,43,12,43z"/>
+<path style="fill:#FFFFFF;" d="M36.002,27c-0.618,0-1.228-0.285-1.619-0.823c-0.65-0.894-0.452-2.145,0.44-2.794L43.6,17
+ l-8.776-6.383c-0.893-0.649-1.091-1.9-0.44-2.794c0.648-0.892,1.899-1.092,2.794-0.44L50.4,17l-13.224,9.617
+ C36.821,26.876,36.409,27,36.002,27z"/>
+<path style="fill:#FFFFFF;" d="M36.002,51c-0.618,0-1.228-0.285-1.619-0.823c-0.65-0.894-0.452-2.145,0.44-2.794L43.6,41
+ l-8.776-6.383c-0.893-0.649-1.091-1.9-0.44-2.794c0.648-0.893,1.899-1.091,2.794-0.44L50.4,41l-13.224,9.617
+ C36.821,50.876,36.409,51,36.002,51z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/shuffle.svg b/img/icons/essential-collection/svg/shuffle.svg
new file mode 100644
index 00000000..52f69487
--- /dev/null
+++ b/img/icons/essential-collection/svg/shuffle.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
+<g>
+ <path style="fill:#EBBA16;" d="M27,13h10v7l11-8L37,4v7H27c-7.168,0-13,5.832-13,13c0,6.065-4.935,11-11,11H1c-0.553,0-1,0.447-1,1
+ s0.447,1,1,1h2c7.168,0,13-5.832,13-13C16,17.935,20.935,13,27,13z"/>
+ <path style="fill:#EBBA16;" d="M1,13h2c2.713,0,5.318,0.994,7.336,2.799c0.191,0.171,0.43,0.255,0.667,0.255
+ c0.274,0,0.548-0.112,0.745-0.333c0.368-0.412,0.333-1.044-0.078-1.412C9.285,12.175,6.206,11,3,11H1c-0.553,0-1,0.447-1,1
+ S0.447,13,1,13z"/>
+ <path style="fill:#EBBA16;" d="M37,35H27c-2.685,0-5.27-0.976-7.278-2.748c-0.411-0.365-1.044-0.327-1.411,0.089
+ c-0.365,0.414-0.326,1.046,0.089,1.411C20.773,35.847,23.828,37,27,37h10v7l11-8l-11-8V35z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/shutdown.svg b/img/icons/essential-collection/svg/shutdown.svg
new file mode 100644
index 00000000..65fd1a60
--- /dev/null
+++ b/img/icons/essential-collection/svg/shutdown.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve">
+<circle style="fill:#E7ECED;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="26" cy="26" r="25"/>
+<path style="fill:#38454F;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M6,41
+ c4.561,6.072,11.822,10,20,10s15.439-3.928,20-10H6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/sign-1.svg b/img/icons/essential-collection/svg/sign-1.svg
new file mode 100644
index 00000000..86f79614
--- /dev/null
+++ b/img/icons/essential-collection/svg/sign-1.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<line style="fill:none;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="28.664" y1="4" x2="28.664" y2="1"/>
+<line style="fill:none;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="28.664" y1="59" x2="28.664" y2="40"/>
+<line style="fill:none;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="28.664" y1="20" x2="28.664" y2="24"/>
+<path style="fill:#23A24D;" d="M48.553,20H10.061c-1.324,0-2.397-1.073-2.397-2.397V6.397C7.664,5.073,8.737,4,10.061,4h38.492
+ l8.711,7.84c0.095,0.085,0.095,0.234,0,0.319L48.553,20z"/>
+<path style="fill:#EBBA16;" d="M11.447,40h38.821c1.324,0,2.397-1.073,2.397-2.397V26.397c0-1.324-1.073-2.397-2.397-2.397H11.447
+ l-8.711,7.84c-0.095,0.085-0.095,0.234,0,0.319L11.447,40z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/sign.svg b/img/icons/essential-collection/svg/sign.svg
new file mode 100644
index 00000000..452f47a6
--- /dev/null
+++ b/img/icons/essential-collection/svg/sign.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<line style="fill:none;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="24.06" y1="6" x2="24.06" y2="1"/>
+<line style="fill:none;stroke:#38454F;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="24.06" y1="55" x2="24.06" y2="24"/>
+<path style="fill:#14A085;" d="M46.06,24h-46V6h46l9.8,8.82c0.107,0.096,0.107,0.263,0,0.359L46.06,24z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/skip.svg b/img/icons/essential-collection/svg/skip.svg
new file mode 100644
index 00000000..932088d3
--- /dev/null
+++ b/img/icons/essential-collection/svg/skip.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#3083C9;" cx="29" cy="29" r="29"/>
+<g>
+ <polygon style="fill:#FFFFFF;" points="36,29 14,44 14,29.273 14,14 "/>
+ <path style="fill:#FFFFFF;" d="M14,45c-0.16,0-0.321-0.038-0.467-0.116C13.205,44.711,13,44.371,13,44V14
+ c0-0.371,0.205-0.711,0.533-0.884c0.327-0.174,0.724-0.15,1.031,0.058l22,15C36.836,28.36,37,28.669,37,29s-0.164,0.64-0.437,0.826
+ l-22,15C14.394,44.941,14.197,45,14,45z M15,15.893v26.215L34.225,29L15,15.893z"/>
+</g>
+<g>
+ <rect x="40" y="14" style="fill:#FFFFFF;" width="5" height="30"/>
+ <path style="fill:#FFFFFF;" d="M46,45h-7V13h7V45z M41,43h3V15h-3V43z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/smartphone-1.svg b/img/icons/essential-collection/svg/smartphone-1.svg
new file mode 100644
index 00000000..6f5f103d
--- /dev/null
+++ b/img/icons/essential-collection/svg/smartphone-1.svg
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#424A60;" d="M41.595,58H16.405C14.525,58,13,56.475,13,54.595V3.405C13,1.525,14.525,0,16.405,0h25.189
+ C43.475,0,45,1.525,45,3.405v51.189C45,56.475,43.475,58,41.595,58z"/>
+<rect x="13" y="6" style="fill:#E7ECED;" width="32" height="40"/>
+<circle style="fill:#262B35;" cx="29" cy="52" r="3"/>
+<path style="fill:#262B35;" d="M29,4h-4c-0.553,0-1-0.447-1-1s0.447-1,1-1h4c0.553,0,1,0.447,1,1S29.553,4,29,4z"/>
+<path style="fill:#262B35;" d="M33,4h-1c-0.553,0-1-0.447-1-1s0.447-1,1-1h1c0.553,0,1,0.447,1,1S33.553,4,33,4z"/>
+<path style="fill:#3083C9;" d="M30.962,17.019h-3.924c-0.573,0-1.038-0.465-1.038-1.038v-3.924c0-0.573,0.465-1.038,1.038-1.038
+ h3.924c0.573,0,1.038,0.465,1.038,1.038v3.924C32,16.554,31.535,17.019,30.962,17.019z"/>
+<path style="fill:#88C057;" d="M21.962,17.019h-3.924c-0.573,0-1.038-0.465-1.038-1.038v-3.924c0-0.573,0.465-1.038,1.038-1.038
+ h3.924c0.573,0,1.038,0.465,1.038,1.038v3.924C23,16.554,22.535,17.019,21.962,17.019z"/>
+<path style="fill:#DC691D;" d="M39.962,17.019h-3.924c-0.573,0-1.038-0.465-1.038-1.038v-3.924c0-0.573,0.465-1.038,1.038-1.038
+ h3.924c0.573,0,1.038,0.465,1.038,1.038v3.924C41,16.554,40.535,17.019,39.962,17.019z"/>
+<path style="fill:#EBBA16;" d="M30.962,26h-3.924C26.465,26,26,25.535,26,24.962v-3.924C26,20.465,26.465,20,27.038,20h3.924
+ C31.535,20,32,20.465,32,21.038v3.924C32,25.535,31.535,26,30.962,26z"/>
+<path style="fill:#7383BF;" d="M21.962,26h-3.924C17.465,26,17,25.535,17,24.962v-3.924C17,20.465,17.465,20,18.038,20h3.924
+ C22.535,20,23,20.465,23,21.038v3.924C23,25.535,22.535,26,21.962,26z"/>
+<path style="fill:#DD352E;" d="M39.962,26h-3.924C35.465,26,35,25.535,35,24.962v-3.924C35,20.465,35.465,20,36.038,20h3.924
+ C40.535,20,41,20.465,41,21.038v3.924C41,25.535,40.535,26,39.962,26z"/>
+<path style="fill:#A485BE;" d="M30.962,35h-3.924C26.465,35,26,34.535,26,33.962v-3.924C26,29.465,26.465,29,27.038,29h3.924
+ C31.535,29,32,29.465,32,30.038v3.924C32,34.535,31.535,35,30.962,35z"/>
+<path style="fill:#EA6248;" d="M21.962,35h-3.924C17.465,35,17,34.535,17,33.962v-3.924C17,29.465,17.465,29,18.038,29h3.924
+ C22.535,29,23,29.465,23,30.038v3.924C23,34.535,22.535,35,21.962,35z"/>
+<path style="fill:#25AE88;" d="M39.962,35h-3.924C35.465,35,35,34.535,35,33.962v-3.924C35,29.465,35.465,29,36.038,29h3.924
+ C40.535,29,41,29.465,41,30.038v3.924C41,34.535,40.535,35,39.962,35z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/smartphone-10.svg b/img/icons/essential-collection/svg/smartphone-10.svg
new file mode 100644
index 00000000..a004087d
--- /dev/null
+++ b/img/icons/essential-collection/svg/smartphone-10.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#424A60;" d="M32.595,58H7.405C5.525,58,4,56.475,4,54.595V3.405C4,1.525,5.525,0,7.405,0h25.189
+ C34.475,0,36,1.525,36,3.405v51.189C36,56.475,34.475,58,32.595,58z"/>
+<rect x="4" y="6" style="fill:#E7ECED;" width="32" height="40"/>
+<circle style="fill:#262B35;" cx="20" cy="52" r="3"/>
+<path style="fill:#262B35;" d="M20,4h-4c-0.553,0-1-0.447-1-1s0.447-1,1-1h4c0.553,0,1,0.447,1,1S20.553,4,20,4z"/>
+<path style="fill:#262B35;" d="M24,4h-1c-0.553,0-1-0.447-1-1s0.447-1,1-1h1c0.553,0,1,0.447,1,1S24.553,4,24,4z"/>
+<polygon style="fill:#25AE88;" points="54,12 18,12 18,31 22,31 22,37 30,31 54,31 "/>
+<g>
+ <path style="fill:#57D8AB;" d="M24,20h10c0.552,0,1-0.447,1-1s-0.448-1-1-1H24c-0.552,0-1,0.447-1,1S23.448,20,24,20z"/>
+ <path style="fill:#57D8AB;" d="M48,23H24c-0.552,0-1,0.447-1,1s0.448,1,1,1h24c0.552,0,1-0.447,1-1S48.552,23,48,23z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/smartphone-11.svg b/img/icons/essential-collection/svg/smartphone-11.svg
new file mode 100644
index 00000000..510b7768
--- /dev/null
+++ b/img/icons/essential-collection/svg/smartphone-11.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#424A60;" d="M53.595,58H28.405C26.525,58,25,56.475,25,54.595V3.405C25,1.525,26.525,0,28.405,0h25.189
+ C55.475,0,57,1.525,57,3.405v51.189C57,56.475,55.475,58,53.595,58z"/>
+<rect x="25" y="6" style="fill:#E7ECED;" width="32" height="40"/>
+<circle style="fill:#262B35;" cx="41" cy="52" r="3"/>
+<path style="fill:#262B35;" d="M41,4h-4c-0.553,0-1-0.447-1-1s0.447-1,1-1h4c0.553,0,1,0.447,1,1S41.553,4,41,4z"/>
+<path style="fill:#262B35;" d="M45,4h-1c-0.553,0-1-0.447-1-1s0.447-1,1-1h1c0.553,0,1,0.447,1,1S45.553,4,45,4z"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="19.366" y1="34.727" x2="2" y2="51"/>
+<circle style="fill:#7FABDA;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="29" cy="26" r="13"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/smartphone-2.svg b/img/icons/essential-collection/svg/smartphone-2.svg
new file mode 100644
index 00000000..aa53f87b
--- /dev/null
+++ b/img/icons/essential-collection/svg/smartphone-2.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#7FABDA;" d="M54.595,27H32v27.594C32,56.475,30.475,58,28.595,58h26C56.475,58,58,56.475,58,54.594V30.405
+ C58,28.525,56.475,27,54.595,27z"/>
+<path style="fill:none;stroke:#88C057;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M51,14
+ c0-6.633-5.367-12-12-12"/>
+<line style="fill:none;stroke:#88C057;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="45" y1="13" x2="51" y2="19"/>
+<line style="fill:none;stroke:#88C057;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="51" y1="19" x2="57" y2="13"/>
+<line style="fill:none;stroke:#88C057;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="51" y1="19" x2="51" y2="14"/>
+<path style="fill:#E7ECED;" d="M28.595,58H3.405C1.525,58,0,56.475,0,54.595V3.405C0,1.525,1.525,0,3.405,0h25.189
+ C30.475,0,32,1.525,32,3.405v51.189C32,56.475,30.475,58,28.595,58z"/>
+<circle style="fill:#FFFFFF;" cx="16" cy="53" r="3"/>
+<path style="fill:#424A60;" d="M16,4h-4c-0.553,0-1-0.447-1-1s0.447-1,1-1h4c0.553,0,1,0.447,1,1S16.553,4,16,4z"/>
+<path style="fill:#424A60;" d="M20,4h-1c-0.553,0-1-0.447-1-1s0.447-1,1-1h1c0.553,0,1,0.447,1,1S20.553,4,20,4z"/>
+<rect x="0" y="6" style="fill:#424A60;" width="32" height="42"/>
+<path style="fill:#E7ECED;" d="M54.595,27H52v31h2.595C56.475,58,58,56.476,58,54.595V30.405C58,28.524,56.475,27,54.595,27z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/smartphone-3.svg b/img/icons/essential-collection/svg/smartphone-3.svg
new file mode 100644
index 00000000..acdacd70
--- /dev/null
+++ b/img/icons/essential-collection/svg/smartphone-3.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#7FABDA;" d="M27,3.405V26h27.594C56.475,26,58,27.525,58,29.405v-26C58,1.525,56.475,0,54.594,0L30.405,0
+ C28.525,0,27,1.525,27,3.405z"/>
+<path style="fill:none;stroke:#88C057;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M14,7C7.367,7,2,12.367,2,19"
+ />
+<line style="fill:none;stroke:#88C057;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="13" y1="13" x2="19" y2="7"/>
+<line style="fill:none;stroke:#88C057;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="19" y1="7" x2="13" y2="1"/>
+<line style="fill:none;stroke:#88C057;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="19" y1="7" x2="14" y2="7"/>
+<path style="fill:#E7ECED;" d="M58,29.405v25.189C58,56.475,56.475,58,54.595,58H3.405C1.525,58,0,56.475,0,54.595l0-25.189
+ C0,27.525,1.525,26,3.405,26h51.189C56.475,26,58,27.525,58,29.405z"/>
+<circle style="fill:#FFFFFF;" cx="53" cy="42" r="3"/>
+<path style="fill:#424A60;" d="M4,42v4c0,0.553-0.447,1-1,1s-1-0.447-1-1v-4c0-0.553,0.447-1,1-1S4,41.447,4,42z"/>
+<path style="fill:#424A60;" d="M4,38v1c0,0.553-0.447,1-1,1s-1-0.447-1-1v-1c0-0.553,0.447-1,1-1S4,37.447,4,38z"/>
+<rect x="6" y="26" style="fill:#424A60;" width="42" height="32"/>
+<path style="fill:#E7ECED;" d="M27,3.405V6h31V3.405C58,1.525,56.476,0,54.595,0L30.405,0C28.524,0,27,1.525,27,3.405z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/smartphone-4.svg b/img/icons/essential-collection/svg/smartphone-4.svg
new file mode 100644
index 00000000..4abcfdba
--- /dev/null
+++ b/img/icons/essential-collection/svg/smartphone-4.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M30.595,58H5.405C3.525,58,2,56.475,2,54.595V3.405C2,1.525,3.525,0,5.405,0h25.189
+ C32.475,0,34,1.525,34,3.405v51.189C34,56.475,32.475,58,30.595,58z"/>
+<circle style="fill:#FFFFFF;" cx="18" cy="53" r="3"/>
+<path style="fill:#424A60;" d="M18,4h-4c-0.553,0-1-0.447-1-1s0.447-1,1-1h4c0.553,0,1,0.447,1,1S18.553,4,18,4z"/>
+<path style="fill:#424A60;" d="M22,4h-1c-0.553,0-1-0.447-1-1s0.447-1,1-1h1c0.553,0,1,0.447,1,1S22.553,4,22,4z"/>
+<rect x="2" y="6" style="fill:#424A60;" width="32" height="42"/>
+<line style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="17" y1="26" x2="55" y2="26"/>
+<line style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="43" y1="14" x2="55" y2="26"/>
+<line style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="43" y1="38" x2="55" y2="26"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/smartphone-5.svg b/img/icons/essential-collection/svg/smartphone-5.svg
new file mode 100644
index 00000000..030fd115
--- /dev/null
+++ b/img/icons/essential-collection/svg/smartphone-5.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M30.595,58H5.405C3.525,58,2,56.475,2,54.595V3.405C2,1.525,3.525,0,5.405,0h25.189
+ C32.475,0,34,1.525,34,3.405v51.189C34,56.475,32.475,58,30.595,58z"/>
+<circle style="fill:#FFFFFF;" cx="18" cy="53" r="3"/>
+<path style="fill:#424A60;" d="M18,4h-4c-0.553,0-1-0.447-1-1s0.447-1,1-1h4c0.553,0,1,0.447,1,1S18.553,4,18,4z"/>
+<path style="fill:#424A60;" d="M22,4h-1c-0.553,0-1-0.447-1-1s0.447-1,1-1h1c0.553,0,1,0.447,1,1S22.553,4,22,4z"/>
+<rect x="2" y="6" style="fill:#424A60;" width="32" height="42"/>
+<line style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="55" y1="26" x2="17" y2="26"/>
+<line style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="29" y1="38" x2="17" y2="26"/>
+<line style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="29" y1="14" x2="17" y2="26"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/smartphone-6.svg b/img/icons/essential-collection/svg/smartphone-6.svg
new file mode 100644
index 00000000..5be0a16a
--- /dev/null
+++ b/img/icons/essential-collection/svg/smartphone-6.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59.998 59.998" style="enable-background:new 0 0 59.998 59.998;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M42.594,58.999H17.404c-1.881,0-3.405-1.525-3.405-3.405V4.404c0-1.881,1.525-3.405,3.405-3.405
+ h25.189c1.881,0,3.405,1.525,3.405,3.405v51.189C45.999,57.474,44.474,58.999,42.594,58.999z"/>
+<circle style="fill:#FFFFFF;" cx="29.999" cy="53.999" r="3"/>
+<path style="fill:#424A60;" d="M29.999,4.999h-4c-0.553,0-1-0.447-1-1s0.447-1,1-1h4c0.553,0,1,0.447,1,1S30.552,4.999,29.999,4.999
+ z"/>
+<path style="fill:#424A60;" d="M33.999,4.999h-1c-0.553,0-1-0.447-1-1s0.447-1,1-1h1c0.553,0,1,0.447,1,1S34.552,4.999,33.999,4.999
+ z"/>
+<path style="fill:#7383BF;" d="M55.904,21.241c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414
+ c3.736-3.736,3.736-9.815,0-13.552c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0c4.516,4.516,4.516,11.864,0,16.38
+ C56.416,21.144,56.16,21.241,55.904,21.241z"/>
+<path style="fill:#7383BF;" d="M51.693,19.241c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414
+ c1.237-1.236,1.918-2.884,1.918-4.638s-0.681-3.401-1.918-4.639c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0
+ c1.615,1.614,2.504,3.765,2.504,6.053s-0.889,4.438-2.504,6.052C52.205,19.144,51.949,19.241,51.693,19.241z"/>
+<path style="fill:#7383BF;" d="M4.094,21.241c-0.256,0-0.512-0.098-0.707-0.293c-4.516-4.516-4.516-11.864,0-16.38
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414c-3.736,3.736-3.736,9.815,0,13.552c0.391,0.391,0.391,1.023,0,1.414
+ C4.605,21.144,4.35,21.241,4.094,21.241z"/>
+<path style="fill:#7383BF;" d="M8.305,18.966c-0.256,0-0.512-0.098-0.707-0.293c-1.615-1.614-2.504-3.765-2.504-6.053
+ s0.889-4.438,2.504-6.052c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414c-1.237,1.236-1.918,2.884-1.918,4.638
+ s0.681,3.401,1.918,4.639c0.391,0.391,0.391,1.023,0,1.414C8.816,18.868,8.561,18.966,8.305,18.966z"/>
+<rect x="13.999" y="6.999" style="fill:#424A60;" width="32" height="42"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/smartphone-7.svg b/img/icons/essential-collection/svg/smartphone-7.svg
new file mode 100644
index 00000000..fc246404
--- /dev/null
+++ b/img/icons/essential-collection/svg/smartphone-7.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="25.677" y="47" style="fill:#C8D2D6;" width="24" height="11"/>
+<path style="fill:#E7ECED;" d="M41.677,58h-16V47h9.426c3.631,0,6.574,2.943,6.574,6.574V58z"/>
+<circle style="fill:#7383BF;" cx="35.177" cy="52.5" r="2.5"/>
+<path style="fill:#FBCE9D;" d="M33.581,10.702c1.233-0.542,2.096-1.77,2.096-3.202c0-1.933-1.567-3.5-3.5-3.5
+ c-1.433,0-2.661,0.863-3.202,2.096L33.581,10.702z"/>
+<path style="fill:#FBCE9D;" d="M38.581,15.702c1.233-0.542,2.096-1.77,2.096-3.202c0-1.933-1.567-3.5-3.5-3.5
+ c-1.433,0-2.661,0.863-3.202,2.096L38.581,15.702z"/>
+<path style="fill:#FBCE9D;" d="M43.581,20.702c1.233-0.542,2.096-1.77,2.096-3.202c0-1.933-1.567-3.5-3.5-3.5
+ c-1.433,0-2.661,0.863-3.202,2.096L43.581,20.702z"/>
+<path style="fill:#FBCE9D;" d="M48.581,25.702c1.233-0.542,2.096-1.77,2.096-3.202c0-1.933-1.567-3.5-3.5-3.5
+ c-1.433,0-2.661,0.863-3.202,2.096L48.581,25.702z"/>
+<path style="fill:#FBCE9D;" d="M28.177,33h-10c-1.925,0-3.5-1.575-3.5-3.5v0c0-1.925,1.575-3.5,3.5-3.5h10
+ c1.925,0,3.5,1.575,3.5,3.5v0C31.677,31.425,30.102,33,28.177,33z"/>
+<g>
+ <path style="fill:#F7B563;" d="M48.813,31.563l-11.12,11.12c-0.896,0.896-2.349,0.896-3.244,0L24.767,33h-6.589
+ c-0.578,0.283-2.155-0.738-1.55-0.219l10.812,10.77c0.074,0.074,0.16,0.127,0.238,0.194V47h20v-4.51c1.819-1.369,3-3.538,3-5.99
+ C50.677,34.607,49.97,32.883,48.813,31.563z"/>
+</g>
+<path style="fill:#424A60;" d="M25.769,2.889L10.212,18.446l7.592,7.592C17.929,26.025,18.05,26,18.177,26h10
+ c1.925,0,3.5,1.575,3.5,3.5s-1.575,3.5-3.5,3.5h-3.411l6.355,6.355l15.556-15.557L25.769,2.889z"/>
+<g>
+ <path style="fill:#E7ECED;" d="M25.769,2.889l-2.217-2.217c-0.896-0.896-2.349-0.896-3.244,0L7.995,12.984
+ c-0.896,0.896-0.896,2.349,0,3.245l2.217,2.217L25.769,2.889z"/>
+ <path style="fill:#E7ECED;" d="M50.005,27.126l-3.328-3.328L31.121,39.355l3.327,3.327c0.896,0.896,2.349,0.896,3.244,0
+ l12.312-12.312C50.901,29.475,50.901,28.022,50.005,27.126z"/>
+</g>
+<circle style="fill:#FFFFFF;" cx="41.177" cy="33.5" r="2"/>
+<path style="fill:#424A60;" d="M15.677,11c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414l2-2
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414l-2,2C16.189,10.902,15.933,11,15.677,11z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/smartphone-8.svg b/img/icons/essential-collection/svg/smartphone-8.svg
new file mode 100644
index 00000000..ef8bb544
--- /dev/null
+++ b/img/icons/essential-collection/svg/smartphone-8.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#424A60;" d="M41.595,58H16.405C14.525,58,13,56.475,13,54.595V3.405C13,1.525,14.525,0,16.405,0h25.189
+ C43.475,0,45,1.525,45,3.405v51.189C45,56.475,43.475,58,41.595,58z"/>
+<rect x="13" y="6" style="fill:#E7ECED;" width="32" height="40"/>
+<circle style="fill:#262B35;" cx="29" cy="52" r="3"/>
+<path style="fill:#262B35;" d="M29,4h-4c-0.553,0-1-0.447-1-1s0.447-1,1-1h4c0.553,0,1,0.447,1,1S29.553,4,29,4z"/>
+<path style="fill:#262B35;" d="M33,4h-1c-0.553,0-1-0.447-1-1s0.447-1,1-1h1c0.553,0,1,0.447,1,1S33.553,4,33,4z"/>
+<circle style="fill:#7383BF;" cx="29" cy="21" r="12"/>
+<path style="fill:#424A60;" d="M31.932,28.567c-0.447-0.224-0.73-0.681-0.73-1.181v-1.358c0.097-0.111,0.209-0.253,0.327-0.421
+ c0.472-0.666,0.828-1.399,1.076-2.168c0.444-0.137,0.771-0.547,0.771-1.034v-1.449c0-0.319-0.142-0.604-0.362-0.803v-2.096
+ c0,0,0.43-3.261-3.986-3.261s-3.986,3.261-3.986,3.261v2.096c-0.221,0.199-0.362,0.484-0.362,0.803v1.449
+ c0,0.382,0.201,0.718,0.501,0.912c0.362,1.577,1.311,2.711,1.311,2.711v1.325c0,0.483-0.264,0.928-0.688,1.159l-3.233,1.763
+ c-0.221,0.12-0.418,0.271-0.597,0.439C23.951,32.146,26.373,33,29,33c2.623,0,5.041-0.851,7.016-2.278
+ c-0.186-0.165-0.393-0.309-0.622-0.424L31.932,28.567z"/>
+<rect x="16" y="37" style="fill:#AFB6BB;" width="26" height="6"/>
+<rect x="16" y="37" style="fill:#61B872;" width="6" height="6"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/smartphone-9.svg b/img/icons/essential-collection/svg/smartphone-9.svg
new file mode 100644
index 00000000..200092cb
--- /dev/null
+++ b/img/icons/essential-collection/svg/smartphone-9.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#424A60;" d="M41.595,58H16.405C14.525,58,13,56.475,13,54.595V3.405C13,1.525,14.525,0,16.405,0h25.189
+ C43.475,0,45,1.525,45,3.405v51.189C45,56.475,43.475,58,41.595,58z"/>
+<rect x="13" y="6" style="fill:#E7ECED;" width="32" height="40"/>
+<circle style="fill:#262B35;" cx="29" cy="52" r="3"/>
+<path style="fill:#262B35;" d="M29,4h-4c-0.553,0-1-0.447-1-1s0.447-1,1-1h4c0.553,0,1,0.447,1,1S29.553,4,29,4z"/>
+<path style="fill:#262B35;" d="M33,4h-1c-0.553,0-1-0.447-1-1s0.447-1,1-1h1c0.553,0,1,0.447,1,1S33.553,4,33,4z"/>
+<path style="fill:#48A0DC;" d="M37,11H21c-2.209,0-4,1.791-4,4v2v2v4l4-4h16c2.209,0,4-1.791,4-4v0C41,12.791,39.209,11,37,11z"/>
+<path style="fill:#61B872;" d="M21,28h16c2.209,0,4,1.791,4,4v2v2v4l-4-4H21c-2.209,0-4-1.791-4-4v0C17,29.791,18.791,28,21,28z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/smartphone.svg b/img/icons/essential-collection/svg/smartphone.svg
new file mode 100644
index 00000000..86c88051
--- /dev/null
+++ b/img/icons/essential-collection/svg/smartphone.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<g>
+ <path style="fill:#E7ECED;" d="M13,3.843C13,3.163,13.205,2.532,13.549,2L3.525,4.686C1.708,5.173,0.63,7.04,1.117,8.857
+ l11.81,44.075C12.938,52.974,13,52.966,13,52.922V3.843z"/>
+</g>
+<g>
+ <path style="fill:#E7ECED;" d="M45,2.843C45,2.163,44.795,1.532,44.451,1l10.024,2.686c1.817,0.487,2.895,2.354,2.408,4.171
+ l-11.81,44.075C45.062,51.974,45,51.966,45,51.922V2.843z"/>
+</g>
+<path style="fill:#424A60;" d="M41.595,58H16.406C14.525,58,13,56.475,13,54.595V3.405C13,1.525,14.525,0,16.406,0h25.189
+ C43.476,0,45,1.525,45,3.405v51.189C45,56.475,43.476,58,41.595,58z"/>
+<rect x="13" y="6" style="fill:#A4E869;" width="32" height="40"/>
+<circle style="fill:#262B35;" cx="29" cy="52" r="3"/>
+<path style="fill:#262B35;" d="M29,4h-4c-0.553,0-1-0.447-1-1s0.447-1,1-1h4c0.553,0,1,0.447,1,1S29.553,4,29,4z"/>
+<path style="fill:#262B35;" d="M33,4h-1c-0.553,0-1-0.447-1-1s0.447-1,1-1h1c0.553,0,1,0.447,1,1S33.553,4,33,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/speaker-1.svg b/img/icons/essential-collection/svg/speaker-1.svg
new file mode 100644
index 00000000..81feb8e0
--- /dev/null
+++ b/img/icons/essential-collection/svg/speaker-1.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#38454F;" cx="29" cy="29" r="29"/>
+<path style="fill:#7383BF;" d="M16.427,20H8.104C6.942,20,6,20.942,6,22.104v12.793C6,36.058,6.942,37,8.104,37h8.323
+ c0.375,0,0.743,0.1,1.067,0.29L30.83,49.706C32.232,50.531,34,49.52,34,47.893V9.107c0-1.627-1.768-2.638-3.17-1.813L17.494,19.71
+ C17.17,19.9,16.802,20,16.427,20z"/>
+<path style="fill:#EFCE4A;" d="M41.541,42.042c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414
+ c6.238-6.238,6.238-16.39,0-22.628c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0c7.018,7.019,7.018,18.438,0,25.456
+ C42.052,41.944,41.796,42.042,41.541,42.042z"/>
+<path style="fill:#EFCE4A;" d="M38,38c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414
+ c4.297-4.297,4.297-11.289,0-15.586c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0c5.077,5.077,5.077,13.337,0,18.414
+ C38.512,37.902,38.256,38,38,38z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/speaker-2.svg b/img/icons/essential-collection/svg/speaker-2.svg
new file mode 100644
index 00000000..89995f7f
--- /dev/null
+++ b/img/icons/essential-collection/svg/speaker-2.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#38454F;" cx="29" cy="29" r="29"/>
+<path style="fill:#7383BF;" d="M16.427,20H8.104C6.942,20,6,20.942,6,22.104v12.793C6,36.058,6.942,37,8.104,37h8.323
+ c0.375,0,0.743,0.1,1.067,0.29L30.83,49.706C32.232,50.531,34,49.52,34,47.893V9.107c0-1.627-1.768-2.638-3.17-1.813L17.494,19.71
+ C17.17,19.9,16.802,20,16.427,20z"/>
+<path style="fill:#EFCE4A;" d="M41.541,42.042c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414
+ c6.238-6.238,6.238-16.39,0-22.628c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0c7.018,7.019,7.018,18.438,0,25.456
+ C42.052,41.944,41.796,42.042,41.541,42.042z"/>
+<path style="fill:#EFCE4A;" d="M38,38c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414
+ c4.297-4.297,4.297-11.289,0-15.586c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0c5.077,5.077,5.077,13.337,0,18.414
+ C38.512,37.902,38.256,38,38,38z"/>
+<path style="fill:#EFCE4A;" d="M44.476,47c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414
+ c4.356-4.355,6.755-10.142,6.755-16.293s-2.399-11.938-6.755-16.293c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0
+ c4.734,4.733,7.341,11.021,7.341,17.707s-2.607,12.974-7.341,17.707C44.988,46.902,44.732,47,44.476,47z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/speaker-3.svg b/img/icons/essential-collection/svg/speaker-3.svg
new file mode 100644
index 00000000..ddedc738
--- /dev/null
+++ b/img/icons/essential-collection/svg/speaker-3.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#38454F;" cx="29" cy="29" r="29"/>
+<path style="fill:#7383BF;" d="M22.427,20h-8.323C12.942,20,12,20.942,12,22.104v12.793C12,36.058,12.942,37,14.104,37h8.323
+ c0.375,0,0.743,0.1,1.067,0.29L36.83,49.706C38.232,50.531,40,49.52,40,47.893V9.107c0-1.627-1.768-2.638-3.17-1.813L23.494,19.71
+ C23.17,19.9,22.802,20,22.427,20z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/speaker-4.svg b/img/icons/essential-collection/svg/speaker-4.svg
new file mode 100644
index 00000000..785969ac
--- /dev/null
+++ b/img/icons/essential-collection/svg/speaker-4.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="
+ M1,20.358v19l11-0.005l13.83,12.705c1.402,0.844,3.17-0.191,3.17-1.855V10.514c0-1.665-1.768-2.7-3.17-1.855L12,20.358H1z"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="12" y1="20.358" x2="12" y2="25.358"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="12" y1="34.358" x2="12" y2="39.358"/>
+<path style="fill:none;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="
+ M38.501,47.358c7.284-2.484,12.526-9.375,12.526-17.5c0-8.133-5.255-15.022-12.551-17.5"/>
+<path style="fill:none;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="
+ M43.347,52.705C52.504,49.156,59,40.268,59,29.858c0-10.138-6.158-18.837-14.937-22.563"/>
+<path style="fill:none;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="
+ M33,41.859c5.212-1.506,9.027-6.304,9.027-12.001S38.212,19.364,33,17.857"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/speaker-5.svg b/img/icons/essential-collection/svg/speaker-5.svg
new file mode 100644
index 00000000..af1381b5
--- /dev/null
+++ b/img/icons/essential-collection/svg/speaker-5.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52.027 52.027" style="enable-background:new 0 0 52.027 52.027;" xml:space="preserve">
+<path style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="
+ M1,16.013v19l11-0.005l13.83,12.705c1.402,0.844,3.17-0.191,3.17-1.855V6.169c0-1.665-1.768-2.7-3.17-1.855L12,16.013H1z"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="12" y1="16.013" x2="12" y2="21.013"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="12" y1="30.013" x2="12" y2="35.013"/>
+<path style="fill:none;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="
+ M38.501,43.014c7.284-2.484,12.526-9.375,12.526-17.5c0-8.133-5.255-15.022-12.551-17.5"/>
+<path style="fill:none;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="
+ M33,37.514c5.212-1.506,9.027-6.304,9.027-12.001S38.212,15.019,33,13.513"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/speaker-6.svg b/img/icons/essential-collection/svg/speaker-6.svg
new file mode 100644
index 00000000..6b940da1
--- /dev/null
+++ b/img/icons/essential-collection/svg/speaker-6.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 46 46" style="enable-background:new 0 0 46 46;" xml:space="preserve">
+<path style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="
+ M2.487,13v19l11-0.005L27.316,44.7c1.402,0.844,3.17-0.191,3.17-1.855V3.156c0-1.665-1.768-2.7-3.17-1.855L13.487,13H2.487z"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="13.487" y1="13" x2="13.487" y2="18"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="13.487" y1="27" x2="13.487" y2="32"/>
+<path style="fill:none;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="
+ M34.487,34.501c5.212-1.506,9.027-6.304,9.027-12.001s-3.815-10.494-9.027-12.001"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/speaker-7.svg b/img/icons/essential-collection/svg/speaker-7.svg
new file mode 100644
index 00000000..cc1a0a17
--- /dev/null
+++ b/img/icons/essential-collection/svg/speaker-7.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 46 46" style="enable-background:new 0 0 46 46;" xml:space="preserve">
+<path style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="
+ M9,13v19l11-0.005L33.83,44.7c1.402,0.844,3.17-0.191,3.17-1.855V3.156c0-1.665-1.768-2.7-3.17-1.855L20,13H9z"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="20" y1="13" x2="20" y2="18"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="20" y1="27" x2="20" y2="32"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/speaker-8.svg b/img/icons/essential-collection/svg/speaker-8.svg
new file mode 100644
index 00000000..830e5b33
--- /dev/null
+++ b/img/icons/essential-collection/svg/speaker-8.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<line style="fill:none;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="37" y1="18" x2="53" y2="34"/>
+<line style="fill:none;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="37" y1="34" x2="53" y2="18"/>
+<path style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="
+ M1,17v19l11-0.005L25.83,48.7c1.402,0.844,3.17-0.191,3.17-1.855V7.156c0-1.665-1.768-2.7-3.17-1.855L12,17H1z"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="12" y1="17" x2="12" y2="22"/>
+<line style="fill:#E7ECED;stroke:#C7CAC7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="12" y1="31" x2="12" y2="36"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/speaker.svg b/img/icons/essential-collection/svg/speaker.svg
new file mode 100644
index 00000000..15eb87a8
--- /dev/null
+++ b/img/icons/essential-collection/svg/speaker.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#38454F;" cx="29" cy="29" r="29"/>
+<path style="fill:#7383BF;" d="M18.427,20h-8.323C8.942,20,8,20.942,8,22.104v12.793C8,36.058,8.942,37,10.104,37h8.323
+ c0.375,0,0.743,0.1,1.067,0.29L32.83,49.706C34.232,50.531,36,49.52,36,47.893V9.107c0-1.627-1.768-2.638-3.17-1.813L19.494,19.71
+ C19.17,19.9,18.802,20,18.427,20z"/>
+<path style="fill:#EFCE4A;" d="M40,38c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414
+ c4.297-4.297,4.297-11.289,0-15.586c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0c5.077,5.077,5.077,13.337,0,18.414
+ C40.512,37.902,40.256,38,40,38z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/spotlight.svg b/img/icons/essential-collection/svg/spotlight.svg
new file mode 100644
index 00000000..cb56d9fd
--- /dev/null
+++ b/img/icons/essential-collection/svg/spotlight.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<ellipse style="fill:#7383BF;" cx="12.5" cy="5.5" rx="12.5" ry="5.5"/>
+<ellipse style="fill:#7383BF;" cx="45.5" cy="5.5" rx="12.5" ry="5.5"/>
+<g>
+ <path style="fill:#556080;" d="M45.5,11C38.596,11,33,8.538,33,5.5c0-0.169,0.024-0.335,0.057-0.5H33L0,58L57,8l0.188-0.564
+ C55.406,9.517,50.852,11,45.5,11z"/>
+</g>
+<g>
+ <g>
+ <path style="fill:#424A60;" d="M20.488,25.095L29,11.424L25,5h-0.057C24.976,5.165,25,5.331,25,5.5c0,3.038-5.596,5.5-12.5,5.5
+ C7.148,11,2.594,9.517,0.812,7.436L1,8L20.488,25.095z"/>
+ <polygon style="fill:#424A60;" points="29,32.562 58,58 37.512,25.095 "/>
+ </g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/star-1.svg b/img/icons/essential-collection/svg/star-1.svg
new file mode 100644
index 00000000..844d5888
--- /dev/null
+++ b/img/icons/essential-collection/svg/star-1.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53.867 53.867" style="enable-background:new 0 0 53.867 53.867;" xml:space="preserve">
+<polygon style="fill:#EFCE4A;" points="26.934,1.318 35.256,18.182 53.867,20.887 40.4,34.013 43.579,52.549 26.934,43.798
+ 10.288,52.549 13.467,34.013 0,20.887 18.611,18.182 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/star.svg b/img/icons/essential-collection/svg/star.svg
new file mode 100644
index 00000000..e27f2f97
--- /dev/null
+++ b/img/icons/essential-collection/svg/star.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 47.94 47.94" style="enable-background:new 0 0 47.94 47.94;" xml:space="preserve">
+<path style="fill:#ED8A19;" d="M26.285,2.486l5.407,10.956c0.376,0.762,1.103,1.29,1.944,1.412l12.091,1.757
+ c2.118,0.308,2.963,2.91,1.431,4.403l-8.749,8.528c-0.608,0.593-0.886,1.448-0.742,2.285l2.065,12.042
+ c0.362,2.109-1.852,3.717-3.746,2.722l-10.814-5.685c-0.752-0.395-1.651-0.395-2.403,0l-10.814,5.685
+ c-1.894,0.996-4.108-0.613-3.746-2.722l2.065-12.042c0.144-0.837-0.134-1.692-0.742-2.285l-8.749-8.528
+ c-1.532-1.494-0.687-4.096,1.431-4.403l12.091-1.757c0.841-0.122,1.568-0.65,1.944-1.412l5.407-10.956
+ C22.602,0.567,25.338,0.567,26.285,2.486z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/stop-1.svg b/img/icons/essential-collection/svg/stop-1.svg
new file mode 100644
index 00000000..6e419fd2
--- /dev/null
+++ b/img/icons/essential-collection/svg/stop-1.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#D75A4A;" cx="29" cy="29" r="29"/>
+<g>
+ <rect x="16" y="16" style="fill:#FFFFFF;" width="26" height="26"/>
+ <path style="fill:#FFFFFF;" d="M43,43H15V15h28V43z M17,41h24V17H17V41z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/stop.svg b/img/icons/essential-collection/svg/stop.svg
new file mode 100644
index 00000000..fab9eeb9
--- /dev/null
+++ b/img/icons/essential-collection/svg/stop.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 40 40" style="enable-background:new 0 0 40 40;" xml:space="preserve">
+<path style="fill:#424A60;" d="M40,40H0V0h40V40z M6,34h28V6H6V34z"/>
+<rect x="6" y="6" style="fill:#D75A4A;" width="28" height="28"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/stopwatch-1.svg b/img/icons/essential-collection/svg/stopwatch-1.svg
new file mode 100644
index 00000000..7ee4dac8
--- /dev/null
+++ b/img/icons/essential-collection/svg/stopwatch-1.svg
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<path style="fill:#556080;" d="M11.115,14.615c-0.256,0-0.512-0.098-0.707-0.293l-3.535-3.535c-0.391-0.391-0.391-1.023,0-1.414
+ s1.023-0.391,1.414,0l3.535,3.535c0.391,0.391,0.391,1.023,0,1.414C11.627,14.517,11.371,14.615,11.115,14.615z"/>
+<path style="fill:#556080;" d="M47.885,14.615c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414l3.535-3.535
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414l-3.535,3.535C48.396,14.517,48.141,14.615,47.885,14.615z"/>
+<circle style="fill:#FFFFFF;" cx="29.5" cy="32" r="26"/>
+<path style="fill:#424A60;" d="M31.5,5.082V3H34c0.828,0,1.5-0.672,1.5-1.5l0,0C35.5,0.672,34.828,0,34,0h-9
+ c-0.828,0-1.5,0.672-1.5,1.5l0,0C23.5,2.328,24.171,3,25,3h2.5v2.082C13.544,6.11,2.5,17.785,2.5,32c0,14.888,12.112,27,27,27
+ s27-12.112,27-27C56.5,17.785,45.456,6.11,31.5,5.082z M29.5,57c-13.785,0-25-11.215-25-25s11.215-25,25-25s25,11.215,25,25
+ S43.285,57,29.5,57z"/>
+<rect x="3.165" y="5.666" transform="matrix(0.707 -0.7072 0.7072 0.707 -4.3218 6.8985)" style="fill:#DC691D;" width="6" height="5.999"/>
+<rect x="49.834" y="5.665" transform="matrix(0.7071 -0.7071 0.7071 0.7071 9.3477 39.8979)" style="fill:#14A085;" width="6.001" height="6"/>
+<g>
+ <path style="fill:#424A60;" d="M29.5,5c-0.553,0-1,0.447-1,1v3c0,0.553,0.447,1,1,1s1-0.447,1-1V6C30.5,5.447,30.053,5,29.5,5z"/>
+ <path style="fill:#424A60;" d="M29.5,54c-0.553,0-1,0.447-1,1v3c0,0.553,0.447,1,1,1s1-0.447,1-1v-3C30.5,54.447,30.053,54,29.5,54
+ z"/>
+ <path style="fill:#424A60;" d="M55.5,31h-3c-0.553,0-1,0.447-1,1s0.447,1,1,1h3c0.553,0,1-0.447,1-1S56.053,31,55.5,31z"/>
+ <path style="fill:#424A60;" d="M6.5,33c0.553,0,1-0.447,1-1s-0.447-1-1-1h-3c-0.553,0-1,0.447-1,1s0.447,1,1,1H6.5z"/>
+ <path style="fill:#424A60;" d="M45.764,16.736c0.256,0,0.512-0.098,0.707-0.293l2.121-2.121c0.391-0.391,0.391-1.023,0-1.414
+ s-1.023-0.391-1.414,0l-2.121,2.121c-0.391,0.391-0.391,1.023,0,1.414C45.252,16.638,45.508,16.736,45.764,16.736z"/>
+ <path style="fill:#424A60;" d="M12.529,47.556l-2.121,2.121c-0.391,0.391-0.391,1.023,0,1.414c0.195,0.195,0.451,0.293,0.707,0.293
+ s0.512-0.098,0.707-0.293l2.121-2.121c0.391-0.391,0.391-1.023,0-1.414S12.92,47.166,12.529,47.556z"/>
+ <path style="fill:#424A60;" d="M46.471,47.556c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l2.121,2.121
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L46.471,47.556z"/>
+ <path style="fill:#424A60;" d="M11.822,12.908c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l2.121,2.121
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L11.822,12.908z"/>
+ <path style="fill:#424A60;" d="M23.736,6.627c-0.143-0.533-0.689-0.85-1.225-0.707c-0.533,0.143-0.85,0.691-0.707,1.225
+ l0.776,2.898c0.119,0.446,0.523,0.741,0.965,0.741c0.086,0,0.173-0.011,0.26-0.034c0.533-0.143,0.85-0.691,0.707-1.225
+ L23.736,6.627z"/>
+ <path style="fill:#424A60;" d="M36.419,53.958c-0.143-0.534-0.691-0.852-1.225-0.707c-0.533,0.143-0.85,0.691-0.707,1.225
+ l0.776,2.897c0.119,0.447,0.523,0.741,0.965,0.741c0.086,0,0.173-0.011,0.26-0.034c0.533-0.143,0.85-0.691,0.707-1.225
+ L36.419,53.958z"/>
+ <path style="fill:#424A60;" d="M50.75,26.306c0.12,0.447,0.523,0.741,0.965,0.741c0.086,0,0.173-0.011,0.26-0.034l2.898-0.777
+ c0.533-0.143,0.851-0.691,0.707-1.225c-0.144-0.534-0.691-0.849-1.225-0.707l-2.898,0.777
+ C50.924,25.224,50.606,25.773,50.75,26.306z"/>
+ <path style="fill:#424A60;" d="M8.25,37.694c-0.142-0.534-0.69-0.852-1.225-0.707l-2.898,0.776
+ c-0.533,0.143-0.85,0.691-0.707,1.225c0.119,0.447,0.523,0.741,0.965,0.741c0.086,0,0.173-0.011,0.26-0.034l2.898-0.776
+ C8.076,38.776,8.392,38.227,8.25,37.694z"/>
+ <path style="fill:#424A60;" d="M43,8.617c-0.478-0.277-1.09-0.112-1.366,0.366l-1.5,2.599c-0.276,0.479-0.112,1.09,0.366,1.366
+ c0.157,0.091,0.329,0.134,0.499,0.134c0.346,0,0.682-0.18,0.867-0.5l1.5-2.599C43.642,9.505,43.478,8.893,43,8.617z"/>
+ <path style="fill:#424A60;" d="M18.5,51.052c-0.478-0.277-1.09-0.114-1.366,0.366l-1.5,2.598c-0.276,0.479-0.112,1.09,0.366,1.366
+ c0.157,0.091,0.329,0.134,0.499,0.134c0.346,0,0.682-0.179,0.867-0.5l1.5-2.598C19.142,51.94,18.978,51.329,18.5,51.052z"/>
+ <path style="fill:#424A60;" d="M52.516,44.134l-2.598-1.5c-0.478-0.277-1.09-0.114-1.366,0.366
+ c-0.276,0.479-0.112,1.09,0.366,1.366l2.598,1.5C51.674,45.957,51.846,46,52.016,46c0.346,0,0.682-0.179,0.867-0.5
+ C53.159,45.021,52.995,44.41,52.516,44.134z"/>
+ <path style="fill:#424A60;" d="M6.483,19.866l2.598,1.5C9.238,21.457,9.41,21.5,9.58,21.5c0.346,0,0.682-0.179,0.867-0.5
+ c0.276-0.479,0.112-1.09-0.366-1.366l-2.598-1.5c-0.478-0.277-1.09-0.113-1.366,0.366C5.841,18.978,6.005,19.59,6.483,19.866z"/>
+ <path style="fill:#424A60;" d="M17.366,8.983C17.089,8.505,16.475,8.34,16,8.617c-0.479,0.276-0.643,0.888-0.366,1.366l1.5,2.599
+ c0.186,0.32,0.521,0.5,0.867,0.5c0.17,0,0.342-0.043,0.499-0.134c0.479-0.276,0.643-0.888,0.366-1.366L17.366,8.983z"/>
+ <path style="fill:#424A60;" d="M41.866,51.419c-0.277-0.48-0.89-0.644-1.366-0.366c-0.479,0.276-0.643,0.888-0.366,1.366l1.5,2.598
+ c0.186,0.321,0.521,0.5,0.867,0.5c0.17,0,0.342-0.043,0.499-0.134c0.479-0.276,0.643-0.888,0.366-1.366L41.866,51.419z"/>
+ <path style="fill:#424A60;" d="M48.553,21c0.186,0.321,0.521,0.5,0.867,0.5c0.17,0,0.342-0.043,0.499-0.134l2.598-1.5
+ c0.479-0.276,0.643-0.888,0.366-1.366c-0.277-0.479-0.89-0.644-1.366-0.366l-2.598,1.5C48.44,19.91,48.276,20.521,48.553,21z"/>
+ <path style="fill:#424A60;" d="M10.447,43c-0.277-0.48-0.89-0.644-1.366-0.366l-2.598,1.5C6.005,44.41,5.841,45.021,6.117,45.5
+ C6.303,45.821,6.639,46,6.984,46c0.17,0,0.342-0.043,0.499-0.134l2.598-1.5C10.559,44.09,10.724,43.478,10.447,43z"/>
+ <path style="fill:#424A60;" d="M36.488,5.92c-0.532-0.142-1.082,0.174-1.225,0.707l-0.776,2.898
+ c-0.143,0.533,0.174,1.082,0.707,1.225c0.087,0.023,0.174,0.034,0.26,0.034c0.441,0,0.846-0.295,0.965-0.741l0.776-2.898
+ C37.338,6.611,37.021,6.062,36.488,5.92z"/>
+ <path style="fill:#424A60;" d="M23.806,53.251c-0.533-0.144-1.082,0.173-1.225,0.707l-0.776,2.897
+ c-0.143,0.533,0.174,1.082,0.707,1.225c0.087,0.023,0.174,0.034,0.26,0.034c0.441,0,0.846-0.294,0.965-0.741l0.776-2.897
+ C24.655,53.942,24.339,53.393,23.806,53.251z"/>
+ <path style="fill:#424A60;" d="M54.873,37.763l-2.898-0.776c-0.531-0.144-1.082,0.174-1.225,0.707s0.174,1.082,0.707,1.225
+ l2.898,0.776c0.087,0.023,0.174,0.034,0.26,0.034c0.441,0,0.846-0.295,0.965-0.741C55.723,38.455,55.406,37.906,54.873,37.763z"/>
+ <path style="fill:#424A60;" d="M4.127,26.236l2.898,0.777c0.087,0.023,0.174,0.034,0.26,0.034c0.441,0,0.845-0.294,0.965-0.741
+ c0.144-0.533-0.174-1.082-0.707-1.225l-2.898-0.777c-0.533-0.141-1.081,0.173-1.225,0.707C3.276,25.545,3.594,26.094,4.127,26.236z
+ "/>
+</g>
+<path style="fill:#48A0DC;" d="M18.5,21L18.5,21l12.944,9.363c1.274,0.926,1.419,2.772,0.305,3.886l0,0
+ c-1.114,1.114-2.959,0.969-3.886-0.305L18.5,21z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/stopwatch-2.svg b/img/icons/essential-collection/svg/stopwatch-2.svg
new file mode 100644
index 00000000..5d36b50f
--- /dev/null
+++ b/img/icons/essential-collection/svg/stopwatch-2.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<circle style="fill:#3083C9;" cx="30" cy="29" r="29"/>
+<path style="fill:#A1C8EC;" d="M30,60C13.458,60,0,46.542,0,30c0-7.993,3.107-15.514,8.749-21.176
+ c0.779-0.785,2.047-0.785,2.828-0.006c0.783,0.78,0.785,2.046,0.006,2.828C6.693,16.555,4,23.072,4,30c0,14.337,11.663,26,26,26
+ s26-11.663,26-26C56,16.337,45.405,5.101,32,4.076v10.757c0,1.104-0.896,2-2,2s-2-0.896-2-2V2c0-1.104,0.896-2,2-2
+ c16.542,0,30,13.458,30,30S46.542,60,30,60z"/>
+<path style="fill:#A1C8EC;" d="M20,20.121L20,20.121l12.944,9.363c1.274,0.926,1.419,2.772,0.305,3.886l0,0
+ c-1.114,1.114-2.959,0.969-3.886-0.305L20,20.121z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/stopwatch-3.svg b/img/icons/essential-collection/svg/stopwatch-3.svg
new file mode 100644
index 00000000..b9430818
--- /dev/null
+++ b/img/icons/essential-collection/svg/stopwatch-3.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<g>
+ <path style="fill:#556080;" d="M29,0C12.984,0,0,12.984,0,29c0,8.629,3.778,16.366,9.761,21.677C15.033,46.501,21.692,44,28.939,44
+ c7.281,0,13.967,2.524,19.251,6.734C54.203,45.42,58,37.656,58,29C58,12.984,45.016,0,29,0z"/>
+</g>
+<g>
+ <path style="fill:#7383BF;" d="M29,3c-0.553,0-1,0.447-1,1v2c0,0.553,0.447,1,1,1s1-0.447,1-1V4C30,3.447,29.553,3,29,3z"/>
+ <path style="fill:#7383BF;" d="M54.5,28h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2c0.553,0,1-0.447,1-1S55.053,28,54.5,28z"/>
+ <path style="fill:#7383BF;" d="M6.5,29c0-0.553-0.447-1-1-1h-2c-0.553,0-1,0.447-1,1s0.447,1,1,1h2C6.053,30,6.5,29.552,6.5,29z"/>
+ <path style="fill:#7383BF;" d="M42.25,6.551c-0.479-0.276-1.09-0.113-1.366,0.366l-1,1.731c-0.276,0.479-0.112,1.09,0.366,1.366
+ c0.157,0.091,0.329,0.134,0.499,0.134c0.346,0,0.682-0.179,0.867-0.5l1-1.731C42.893,7.438,42.729,6.827,42.25,6.551z"/>
+ <path style="fill:#7383BF;" d="M51.584,41.384l-1.732-1c-0.478-0.276-1.091-0.112-1.366,0.366c-0.276,0.479-0.112,1.09,0.366,1.366
+ l1.732,1c0.157,0.091,0.329,0.134,0.499,0.134c0.346,0,0.682-0.18,0.867-0.5C52.227,42.271,52.063,41.66,51.584,41.384z"/>
+ <path style="fill:#7383BF;" d="M9.148,16.884l-1.732-1c-0.478-0.276-1.09-0.112-1.366,0.366s-0.112,1.09,0.366,1.366l1.732,1
+ c0.157,0.091,0.329,0.134,0.499,0.134c0.346,0,0.682-0.18,0.867-0.5C9.791,17.771,9.627,17.16,9.148,16.884z"/>
+ <path style="fill:#7383BF;" d="M17.111,6.883c-0.276-0.479-0.89-0.643-1.366-0.366c-0.479,0.276-0.643,0.888-0.366,1.366l1,1.732
+ c0.186,0.32,0.521,0.5,0.867,0.5c0.17,0,0.342-0.043,0.499-0.134c0.479-0.276,0.643-0.888,0.366-1.366L17.111,6.883z"/>
+ <path style="fill:#7383BF;" d="M49.099,18.284c0.17,0,0.342-0.043,0.499-0.134l1.731-1c0.479-0.276,0.643-0.888,0.366-1.366
+ c-0.277-0.479-0.89-0.644-1.366-0.366l-1.731,1c-0.479,0.276-0.643,0.888-0.366,1.366C48.417,18.105,48.753,18.284,49.099,18.284z"
+ />
+ <path style="fill:#7383BF;" d="M7.894,39.918l-1.731,1c-0.479,0.276-0.643,0.888-0.366,1.366c0.186,0.321,0.521,0.5,0.867,0.5
+ c0.17,0,0.342-0.043,0.499-0.134l1.731-1c0.479-0.276,0.643-0.888,0.366-1.366C8.982,39.804,8.37,39.641,7.894,39.918z"/>
+</g>
+<path style="fill:#38454F;" d="M9.752,50.683C14.873,55.232,21.612,58,29,58c7.361,0,14.076-2.748,19.19-7.266
+ C42.906,46.524,36.22,44,28.939,44C21.688,44,15.025,46.504,9.752,50.683z"/>
+<path style="fill:#404960;" d="M42.021,17.172c-0.391-0.391-1.023-0.391-1.414,0l-8.387,8.388c-1.537-0.997-3.725-0.833-5.048,0.491
+ C26.416,26.805,26,27.81,26,28.879s0.416,2.073,1.172,2.828c0.755,0.756,1.76,1.172,2.828,1.172s2.073-0.416,2.828-1.172
+ C33.584,30.952,34,29.947,34,28.879c0-0.645-0.168-1.259-0.455-1.816l8.476-8.477C42.411,18.195,42.411,17.562,42.021,17.172z
+ M31.414,30.293c-0.756,0.756-2.072,0.756-2.828,0C28.208,29.915,28,29.413,28,28.879s0.208-1.036,0.586-1.414
+ s0.88-0.586,1.414-0.586s1.036,0.208,1.414,0.586S32,28.344,32,28.879S31.792,29.915,31.414,30.293z"/>
+<path style="fill:#FFFFFF;" d="M41.021,16.172c-0.391-0.391-1.023-0.391-1.414,0l-8.387,8.388c-1.537-0.997-3.725-0.833-5.048,0.491
+ C25.416,25.805,25,26.81,25,27.879s0.416,2.073,1.172,2.828c0.755,0.756,1.76,1.172,2.828,1.172s2.073-0.416,2.828-1.172
+ C32.584,29.952,33,28.947,33,27.879c0-0.645-0.168-1.259-0.455-1.816l8.476-8.477C41.411,17.195,41.411,16.562,41.021,16.172z
+ M30.414,29.293c-0.756,0.756-2.072,0.756-2.828,0C27.208,28.915,27,28.413,27,27.879s0.208-1.036,0.586-1.414
+ s0.88-0.586,1.414-0.586s1.036,0.208,1.414,0.586S31,27.344,31,27.879S30.792,28.915,30.414,29.293z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/stopwatch-4.svg b/img/icons/essential-collection/svg/stopwatch-4.svg
new file mode 100644
index 00000000..4b5f78b9
--- /dev/null
+++ b/img/icons/essential-collection/svg/stopwatch-4.svg
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="48.515" y1="13.615" x2="52.05" y2="10.08"/>
+<rect x="50.464" y="5.665" transform="matrix(0.7071 -0.7071 0.7071 0.7071 9.5322 40.3433)" style="fill:#AFB6BB;" width="6.001" height="6"/>
+<path style="fill:#3083C9;" d="M30.13,6c-2.008,0-3.96,0.235-5.837,0.666V13h-8c-0.553,0-1,0.447-1,1s0.447,1,1,1h8v5h-13
+ c-0.553,0-1,0.447-1,1s0.447,1,1,1h13v5h-18c-0.553,0-1,0.447-1,1s0.447,1,1,1h18v5h-22c-0.553,0-1,0.447-1,1s0.447,1,1,1h22v5h-16
+ c-0.553,0-1,0.447-1,1s0.447,1,1,1h16v5h-10c-0.553,0-1,0.447-1,1s0.447,1,1,1h10v7.334C26.17,57.765,28.122,58,30.13,58
+ c14.359,0,26-11.641,26-26S44.489,6,30.13,6z"/>
+<path style="fill:#2B77AA;" d="M44,23.172c-0.348-0.346-0.896-0.39-1.293-0.104L29.76,32.433c-0.844,0.614-1.375,1.563-1.456,2.604
+ s0.296,2.06,1.033,2.797c0.673,0.673,1.567,1.044,2.518,1.044c1.138,0,2.216-0.549,2.886-1.47l9.363-12.944
+ C44.391,24.067,44.348,23.519,44,23.172z"/>
+<path style="fill:#EFCE4A;" d="M43,21.293c-0.348-0.346-0.896-0.39-1.293-0.104L28.76,30.554c-0.844,0.614-1.375,1.563-1.456,2.604
+ s0.296,2.06,1.033,2.797C29.01,36.629,29.904,37,30.854,37c1.138,0,2.216-0.549,2.886-1.47l9.363-12.944
+ C43.391,22.188,43.348,21.64,43,21.293z"/>
+<path style="fill:#424A60;" d="M28.293,6.084C28.954,6.034,29.619,6,30.293,6s1.339,0.034,2,0.084V3h2.5c0.828,0,1.5-0.672,1.5-1.5
+ v0c0-0.828-0.672-1.5-1.5-1.5h-9c-0.828,0-1.5,0.672-1.5,1.5v0c0,0.828,0.672,1.5,1.5,1.5h2.5V6.084z"/>
+<g>
+ <path style="fill:#A1C8EC;" d="M30.293,5c-0.553,0-1,0.447-1,1v3c0,0.553,0.447,1,1,1s1-0.447,1-1V6
+ C31.293,5.447,30.846,5,30.293,5z"/>
+ <path style="fill:#A1C8EC;" d="M30.293,54c-0.553,0-1,0.447-1,1v3c0,0.553,0.447,1,1,1s1-0.447,1-1v-3
+ C31.293,54.447,30.846,54,30.293,54z"/>
+ <path style="fill:#A1C8EC;" d="M56.13,31h-3c-0.553,0-1,0.447-1,1s0.447,1,1,1h3c0.553,0,1-0.447,1-1S56.683,31,56.13,31z"/>
+ <path style="fill:#A1C8EC;" d="M43.63,8.617c-0.479-0.277-1.09-0.112-1.366,0.366l-1.5,2.599c-0.276,0.479-0.112,1.09,0.366,1.366
+ c0.157,0.091,0.329,0.134,0.499,0.134c0.346,0,0.682-0.18,0.867-0.5l1.5-2.599C44.272,9.505,44.108,8.893,43.63,8.617z"/>
+ <path style="fill:#A1C8EC;" d="M53.146,44.134l-2.598-1.5c-0.478-0.277-1.09-0.114-1.366,0.366
+ c-0.276,0.479-0.112,1.09,0.366,1.366l2.598,1.5C52.304,45.957,52.475,46,52.645,46c0.346,0,0.682-0.179,0.867-0.5
+ C53.789,45.021,53.625,44.41,53.146,44.134z"/>
+ <path style="fill:#A1C8EC;" d="M42.496,51.419c-0.277-0.48-0.89-0.644-1.366-0.366c-0.479,0.276-0.643,0.888-0.366,1.366l1.5,2.598
+ c0.186,0.321,0.521,0.5,0.867,0.5c0.17,0,0.342-0.043,0.499-0.134c0.479-0.276,0.643-0.888,0.366-1.366L42.496,51.419z"/>
+ <path style="fill:#A1C8EC;" d="M50.05,21.5c0.17,0,0.342-0.043,0.499-0.134l2.598-1.5c0.479-0.276,0.643-0.888,0.366-1.366
+ c-0.276-0.479-0.89-0.644-1.366-0.366l-2.598,1.5C49.07,19.91,48.906,20.521,49.183,21C49.368,21.321,49.704,21.5,50.05,21.5z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/stopwatch.svg b/img/icons/essential-collection/svg/stopwatch.svg
new file mode 100644
index 00000000..d4be50e3
--- /dev/null
+++ b/img/icons/essential-collection/svg/stopwatch.svg
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<circle style="fill:#7383BF;" cx="30" cy="30" r="29"/>
+<path style="fill:#556080;" d="M58.978,37.765c0.001-0.003,0-0.007,0.001-0.01C59.641,35.28,60,32.681,60,30
+ s-0.359-5.28-1.022-7.755c-0.001-0.003,0-0.007,0-0.007c-0.002-0.007-0.005-0.01-0.006-0.014c-0.681-2.533-1.687-4.933-2.969-7.156
+ c-0.011-0.022-0.011-0.047-0.023-0.069c-0.012-0.021-0.034-0.033-0.047-0.054c-1.298-2.228-2.869-4.277-4.677-6.094
+ c-0.017-0.02-0.024-0.046-0.043-0.065s-0.045-0.026-0.065-0.043c-1.817-1.808-3.866-3.379-6.094-4.677
+ C45.034,4.053,45.022,4.032,45,4.02c-0.022-0.013-0.047-0.013-0.07-0.023c-2.223-1.281-4.622-2.288-7.155-2.969
+ c-0.004-0.001-0.007-0.004-0.01-0.005c-0.003-0.001-0.007,0-0.01,0C35.28,0.359,32.681,0,30,0s-5.28,0.359-7.755,1.022
+ c-0.003,0.001-0.007,0-0.01,0c-0.004,0.001-0.007,0.004-0.01,0.005c-2.533,0.68-4.932,1.687-7.155,2.968
+ C15.047,4.007,15.022,4.007,15,4.02c-0.022,0.012-0.034,0.034-0.054,0.047c-2.228,1.298-4.277,2.869-6.094,4.677
+ c-0.02,0.017-0.046,0.024-0.065,0.043S8.761,8.832,8.744,8.852c-1.807,1.817-3.379,3.866-4.677,6.094
+ C4.053,14.967,4.032,14.979,4.02,15c-0.013,0.022-0.012,0.046-0.023,0.069c-1.282,2.223-2.288,4.623-2.969,7.156
+ c-0.001,0.004-0.004,0.006-0.005,0.01c0,0,0,0.007-0.001,0.01C0.359,24.72,0,27.319,0,30s0.359,5.28,1.022,7.755
+ c0.001,0.003,0,0.007,0.001,0.01c0.001,0.005,0.005,0.008,0.006,0.013c0.681,2.532,1.687,4.931,2.968,7.154
+ C4.007,44.954,4.007,44.978,4.02,45c0.018,0.031,0.044,0.055,0.065,0.083c1.295,2.216,2.86,4.256,4.66,6.064
+ c0.017,0.02,0.024,0.046,0.043,0.065s0.045,0.026,0.065,0.043c1.816,1.807,3.864,3.377,6.091,4.675
+ c0.021,0.015,0.034,0.037,0.057,0.05c0.034,0.02,0.071,0.029,0.107,0.044c2.213,1.271,4.599,2.27,7.118,2.947
+ c0.004,0.001,0.007,0.004,0.01,0.005c0.005,0.001,0.01,0.001,0.015,0.002C24.724,59.642,27.32,60,30,60s5.276-0.358,7.75-1.021
+ c0.005-0.001,0.01-0.001,0.015-0.002c0.004-0.001,0.007-0.004,0.01-0.005c2.519-0.677,4.905-1.676,7.118-2.947
+ c0.036-0.015,0.073-0.024,0.107-0.044c0.023-0.013,0.036-0.036,0.057-0.05c2.226-1.298,4.275-2.868,6.091-4.675
+ c0.02-0.017,0.046-0.024,0.065-0.043s0.026-0.045,0.043-0.065c1.799-1.809,3.365-3.848,4.66-6.064
+ c0.021-0.029,0.047-0.052,0.065-0.083c0.013-0.022,0.012-0.046,0.023-0.069c1.281-2.222,2.287-4.621,2.968-7.154
+ C58.973,37.773,58.976,37.77,58.978,37.765z M54.855,37.695l1.915,0.513c-0.526,1.713-1.215,3.356-2.044,4.912l-1.709-0.987
+ c-0.478-0.276-1.09-0.113-1.366,0.366c-0.276,0.479-0.112,1.09,0.366,1.366l1.704,0.984c-0.947,1.508-2.033,2.919-3.241,4.216
+ l-1.388-1.388c-0.391-0.391-1.023-0.391-1.414,0s-0.391,1.023,0,1.414l1.388,1.388c-1.297,1.208-2.708,2.294-4.216,3.241
+ l-0.984-1.705c-0.277-0.479-0.89-0.643-1.366-0.366c-0.479,0.276-0.643,0.888-0.366,1.366l0.987,1.709
+ c-1.557,0.829-3.199,1.518-4.912,2.044l-0.513-1.915c-0.143-0.534-0.689-0.851-1.225-0.707c-0.533,0.143-0.85,0.691-0.707,1.225
+ l0.512,1.909c-1.705,0.392-3.468,0.628-5.275,0.692V54c0-0.553-0.447-1-1-1s-1,0.447-1,1v3.975c-1.807-0.064-3.57-0.3-5.275-0.692
+ l0.512-1.909c0.143-0.533-0.174-1.082-0.707-1.225c-0.533-0.143-1.082,0.173-1.225,0.707l-0.513,1.915
+ c-1.713-0.526-3.355-1.215-4.912-2.044l0.987-1.709c0.276-0.479,0.112-1.09-0.366-1.366s-1.089-0.112-1.366,0.366l-0.984,1.705
+ c-1.508-0.947-2.919-2.033-4.216-3.241l1.388-1.388c0.391-0.391,0.391-1.023,0-1.414s-1.023-0.391-1.414,0L9.52,49.066
+ c-1.208-1.297-2.294-2.708-3.241-4.216l1.704-0.984C8.462,43.59,8.626,42.979,8.35,42.5c-0.277-0.479-0.889-0.643-1.366-0.366
+ l-1.709,0.987c-0.829-1.557-1.518-3.199-2.044-4.912l1.915-0.513c0.533-0.143,0.85-0.691,0.707-1.225
+ c-0.142-0.534-0.69-0.852-1.225-0.707l-1.909,0.511C2.326,34.57,2.089,32.807,2.025,31H6c0.553,0,1-0.447,1-1s-0.447-1-1-1H2.025
+ c0.064-1.807,0.3-3.57,0.692-5.275l1.909,0.511c0.087,0.023,0.174,0.034,0.26,0.034c0.441,0,0.846-0.294,0.965-0.741
+ c0.143-0.533-0.174-1.082-0.707-1.225L3.23,21.792c0.526-1.713,1.215-3.356,2.044-4.912l1.709,0.987C7.141,17.957,7.312,18,7.482,18
+ c0.346,0,0.682-0.179,0.867-0.5c0.276-0.479,0.112-1.09-0.366-1.366L6.279,15.15c0.947-1.508,2.033-2.919,3.241-4.216l1.388,1.388
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293c0.391-0.391,0.391-1.023,0-1.414L10.934,9.52
+ c1.297-1.208,2.708-2.294,4.216-3.241l0.984,1.704c0.186,0.321,0.521,0.5,0.867,0.5c0.17,0,0.342-0.043,0.499-0.134
+ c0.479-0.276,0.643-0.888,0.366-1.366l-0.987-1.709c1.557-0.829,3.199-1.518,4.912-2.044l0.513,1.915
+ c0.119,0.447,0.523,0.741,0.965,0.741c0.086,0,0.173-0.011,0.26-0.034c0.533-0.143,0.85-0.691,0.707-1.225l-0.512-1.909
+ C25.43,2.326,27.193,2.089,29,2.025V6c0,0.553,0.447,1,1,1s1-0.447,1-1V2.025c1.807,0.064,3.57,0.3,5.275,0.692l-0.512,1.909
+ c-0.143,0.533,0.174,1.082,0.707,1.225c0.087,0.023,0.174,0.034,0.26,0.034c0.441,0,0.846-0.294,0.965-0.741l0.513-1.915
+ c1.713,0.526,3.356,1.215,4.912,2.044l-0.987,1.709c-0.276,0.479-0.112,1.09,0.366,1.366c0.157,0.091,0.329,0.134,0.499,0.134
+ c0.346,0,0.682-0.179,0.867-0.5l0.984-1.704c1.508,0.947,2.919,2.033,4.216,3.241l-1.388,1.388c-0.391,0.391-0.391,1.023,0,1.414
+ c0.195,0.195,0.451,0.293,0.707,0.293s0.512-0.098,0.707-0.293l1.388-1.388c1.208,1.297,2.294,2.708,3.241,4.216l-1.704,0.984
+ c-0.479,0.276-0.643,0.888-0.366,1.366c0.186,0.321,0.521,0.5,0.867,0.5c0.17,0,0.342-0.043,0.499-0.134l1.709-0.987
+ c0.829,1.557,1.518,3.199,2.044,4.912l-1.915,0.513c-0.533,0.143-0.85,0.691-0.707,1.225c0.119,0.447,0.523,0.741,0.965,0.741
+ c0.086,0,0.173-0.011,0.26-0.034l1.909-0.511c0.392,1.705,0.629,3.468,0.692,5.275H54c-0.553,0-1,0.447-1,1s0.447,1,1,1h3.975
+ c-0.064,1.807-0.3,3.57-0.692,5.275l-1.909-0.511c-0.532-0.143-1.082,0.173-1.225,0.707C54.006,37.004,54.322,37.553,54.855,37.695z
+ "/>
+<path style="fill:#FFFFFF;" d="M41,29h-7.142c-0.364-1.399-1.459-2.495-2.858-2.858V13c0-0.553-0.447-1-1-1s-1,0.447-1,1v13.142
+ c-1.721,0.447-3,1.999-3,3.858c0,2.206,1.794,4,4,4c1.859,0,3.411-1.28,3.858-3H41c0.553,0,1-0.447,1-1S41.553,29,41,29z M30,32
+ c-1.103,0-2-0.897-2-2s0.897-2,2-2s2,0.897,2,2S31.103,32,30,32z"/>
+<circle style="fill:#556080;" cx="30" cy="43" r="7"/>
+<path style="fill:#FFFFFF;" d="M30,44c-0.256,0-0.512-0.098-0.707-0.293l-3-3c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0
+ l3,3c0.391,0.391,0.391,1.023,0,1.414C30.512,43.902,30.256,44,30,44z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/street-1.svg b/img/icons/essential-collection/svg/street-1.svg
new file mode 100644
index 00000000..4af1ea56
--- /dev/null
+++ b/img/icons/essential-collection/svg/street-1.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<line style="fill:none;stroke:#949493;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="28.5" y1="50" x2="28.5" y2="27"/>
+<rect x="20.5" y="54" style="fill:#949493;" width="16" height="4"/>
+<rect x="23.5" y="50" style="fill:#C7CAC7;" width="10" height="4"/>
+<path style="fill:#23A24D;" d="M13.5,27h24.859c1.183,0,2.141-0.959,2.141-2.141v-5.718c0-1.183-0.959-2.141-2.141-2.141H13.5l-5,5
+ L13.5,27z"/>
+<line style="fill:none;stroke:#949493;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="28.5" y1="11" x2="28.5" y2="8"/>
+<path style="fill:#43B05C;" d="M44.5,11H19.641c-1.183,0-2.141,0.959-2.141,2.141V17h20.859c1.183,0,2.141,0.959,2.141,2.141V21h4
+ l5-5L44.5,11z"/>
+<circle style="fill:#C7CAC7;" cx="28.5" cy="4" r="4"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/street.svg b/img/icons/essential-collection/svg/street.svg
new file mode 100644
index 00000000..e5dbca74
--- /dev/null
+++ b/img/icons/essential-collection/svg/street.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#556080;" d="M29,51c-0.552,0-1-0.447-1-1V24c0-0.553,0.448-1,1-1s1,0.447,1,1v26C30,50.553,29.552,51,29,51z"/>
+<rect x="21" y="54" style="fill:#556080;" width="16" height="4"/>
+<rect x="24" y="50" style="fill:#7383BF;" width="10" height="4"/>
+<path style="fill:#556080;" d="M29,13c-0.552,0-1-0.447-1-1V8c0-0.553,0.448-1,1-1s1,0.447,1,1v4C30,12.553,29.552,13,29,13z"/>
+<circle style="fill:#7383BF;" cx="29" cy="4" r="4"/>
+<path style="fill:#556080;" d="M42,24H16c-3.3,0-6-2.7-6-6v0c0-3.3,2.7-6,6-6h26c3.3,0,6,2.7,6,6v0C48,21.3,45.3,24,42,24z"/>
+<path style="fill:#FFFFFF;" d="M34,17H24c-0.552,0-1-0.447-1-1s0.448-1,1-1h10c0.552,0,1,0.447,1,1S34.552,17,34,17z"/>
+<path style="fill:#FFFFFF;" d="M43,21H16c-0.552,0-1-0.447-1-1s0.448-1,1-1h27c0.552,0,1,0.447,1,1S43.552,21,43,21z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/substract-1.svg b/img/icons/essential-collection/svg/substract-1.svg
new file mode 100644
index 00000000..da39dc49
--- /dev/null
+++ b/img/icons/essential-collection/svg/substract-1.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect style="fill:#E7ECED;" width="58" height="58"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" x1="50" y1="29" x2="8" y2="29"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/substract.svg b/img/icons/essential-collection/svg/substract.svg
new file mode 100644
index 00000000..f5dc4b0b
--- /dev/null
+++ b/img/icons/essential-collection/svg/substract.svg
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 42 42" style="enable-background:new 0 0 42 42;" xml:space="preserve">
+<line style="fill:none;stroke:#ED8A19;stroke-width:2;stroke-miterlimit:10;" x1="42" y1="21" x2="0" y2="21"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/success.svg b/img/icons/essential-collection/svg/success.svg
new file mode 100644
index 00000000..ad77e8a7
--- /dev/null
+++ b/img/icons/essential-collection/svg/success.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<circle style="fill:#25AE88;" cx="25" cy="25" r="25"/>
+<polyline style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" points="
+ 38,15 22,33 12,25 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/switch-1.svg b/img/icons/essential-collection/svg/switch-1.svg
new file mode 100644
index 00000000..2fe42777
--- /dev/null
+++ b/img/icons/essential-collection/svg/switch-1.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#839594;" d="M6,23h27.474C32.537,24.796,32,26.834,32,29s0.537,4.204,1.474,6H6c-3.314,0-6-2.686-6-6
+ C0,25.686,2.686,23,6,23z"/>
+<circle style="fill:#61B872;" cx="45" cy="29" r="13"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/switch-2.svg b/img/icons/essential-collection/svg/switch-2.svg
new file mode 100644
index 00000000..d3f6e22b
--- /dev/null
+++ b/img/icons/essential-collection/svg/switch-2.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<path style="fill:#C7CAC7;" d="M56.008,44.5H3.992C2.34,44.5,1,43.16,1,41.508V17.492C1,15.84,2.34,14.5,3.992,14.5h52.016
+ C57.66,14.5,59,15.84,59,17.492v24.016C59,43.16,57.66,44.5,56.008,44.5z"/>
+<path style="fill:#FFFFFF;stroke:#E7ECED;stroke-width:2;stroke-miterlimit:10;" d="M28.008,44.5H3.992C2.34,44.5,1,43.16,1,41.508
+ V17.492C1,15.84,2.34,14.5,3.992,14.5h24.016C29.66,14.5,31,15.84,31,17.492v24.016C31,43.16,29.66,44.5,28.008,44.5z"/>
+<line style="fill:none;stroke:#AFB6BB;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="13" y1="26.5" x2="13" y2="32.5"/>
+<line style="fill:none;stroke:#AFB6BB;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="16" y1="26.5" x2="16" y2="32.5"/>
+<line style="fill:none;stroke:#AFB6BB;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="19" y1="26.5" x2="19" y2="32.5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/switch-3.svg b/img/icons/essential-collection/svg/switch-3.svg
new file mode 100644
index 00000000..ff4f09a5
--- /dev/null
+++ b/img/icons/essential-collection/svg/switch-3.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<path style="fill:#61B872;" d="M2.992,14.5h52.016C56.66,14.5,58,15.84,58,17.492v24.016c0,1.652-1.34,2.992-2.992,2.992H2.992
+ C1.34,44.5,0,43.16,0,41.508l0-24.016C0,15.84,1.34,14.5,2.992,14.5z"/>
+<path style="fill:#FFFFFF;stroke:#E7ECED;stroke-width:2;stroke-miterlimit:10;" d="M30.992,14.5h24.016
+ C56.66,14.5,58,15.84,58,17.492v24.016c0,1.652-1.34,2.992-2.992,2.992H30.992C29.34,44.5,28,43.16,28,41.508V17.492
+ C28,15.84,29.34,14.5,30.992,14.5z"/>
+<line style="fill:none;stroke:#AFB6BB;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="46" y1="32.5" x2="46" y2="26.5"/>
+<line style="fill:none;stroke:#AFB6BB;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="43" y1="32.5" x2="43" y2="26.5"/>
+<line style="fill:none;stroke:#AFB6BB;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="40" y1="32.5" x2="40" y2="26.5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/switch-4.svg b/img/icons/essential-collection/svg/switch-4.svg
new file mode 100644
index 00000000..9b3e6331
--- /dev/null
+++ b/img/icons/essential-collection/svg/switch-4.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M45,26H13C5.85,26,0,20.15,0,13v0C0,5.85,5.85,0,13,0h32c7.15,0,13,5.85,13,13v0
+ C58,20.15,52.15,26,45,26z"/>
+<path style="fill:#E7ECED;" d="M13,58h32c7.15,0,13-5.85,13-13v0c0-7.15-5.85-13-13-13H13C5.85,32,0,37.85,0,45v0
+ C0,52.15,5.85,58,13,58z"/>
+<circle style="fill:#88C057;stroke:#659C35;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="45" cy="13" r="9"/>
+<circle style="fill:#ED7161;stroke:#D75A4A;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="13" cy="45" r="9"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/switch-5.svg b/img/icons/essential-collection/svg/switch-5.svg
new file mode 100644
index 00000000..9b7a9f74
--- /dev/null
+++ b/img/icons/essential-collection/svg/switch-5.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#556080;" d="M51.471,58H6.529C2.923,58,0,55.077,0,51.471V6.529C0,2.923,2.923,0,6.529,0h44.943
+ C55.077,0,58,2.923,58,6.529v44.943C58,55.077,55.077,58,51.471,58z"/>
+<path style="fill:#A4E869;stroke:#434D68;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M43,26H15
+ C9.5,26,5,21.5,5,16v0C5,10.5,9.5,6,15,6h28c5.5,0,10,4.5,10,10v0C53,21.5,48.5,26,43,26z"/>
+<path style="fill:#D75A4A;stroke:#434D68;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M15,52h28
+ c5.5,0,10-4.5,10-10v0c0-5.5-4.5-10-10-10H15C9.5,32,5,36.5,5,42v0C5,47.5,9.5,52,15,52z"/>
+<circle style="fill:#E7ECED;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="43" cy="16" r="10"/>
+<circle style="fill:#E7ECED;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" cx="15" cy="42" r="10"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/switch-6.svg b/img/icons/essential-collection/svg/switch-6.svg
new file mode 100644
index 00000000..4282c21c
--- /dev/null
+++ b/img/icons/essential-collection/svg/switch-6.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#38454F;" d="M17,12h24c9.35,0,17,7.65,17,17v0c0,9.35-7.65,17-17,17H17C7.65,46,0,38.35,0,29v0
+ C0,19.65,7.65,12,17,12z"/>
+<circle style="fill:#E0E1E2;" cx="41" cy="29" r="12"/>
+<line style="fill:none;stroke:#ED7161;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="16" y1="21" x2="16" y2="37"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/switch-7.svg b/img/icons/essential-collection/svg/switch-7.svg
new file mode 100644
index 00000000..a3819b96
--- /dev/null
+++ b/img/icons/essential-collection/svg/switch-7.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#38454F;" d="M41,46H17C7.65,46,0,38.35,0,29v0c0-9.35,7.65-17,17-17h24c9.35,0,17,7.65,17,17v0
+ C58,38.35,50.35,46,41,46z"/>
+<circle style="fill:#E0E1E2;" cx="17" cy="29" r="12"/>
+<line style="fill:none;stroke:#61B872;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="36" y1="29" x2="40" y2="33"/>
+<line style="fill:none;stroke:#61B872;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="40" y1="33" x2="48" y2="25"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/switch.svg b/img/icons/essential-collection/svg/switch.svg
new file mode 100644
index 00000000..e23b35b1
--- /dev/null
+++ b/img/icons/essential-collection/svg/switch.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#839594;" d="M52,23H24.526C25.463,24.796,26,26.834,26,29s-0.537,4.204-1.474,6H52c3.314,0,6-2.686,6-6
+ S55.314,23,52,23z"/>
+<circle style="fill:#C7CAC7;" cx="13" cy="29" r="13"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/tabs-1.svg b/img/icons/essential-collection/svg/tabs-1.svg
new file mode 100644
index 00000000..374e1572
--- /dev/null
+++ b/img/icons/essential-collection/svg/tabs-1.svg
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<rect y="15" style="fill:#694F87;" width="54" height="37"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="2" y1="11" x2="52" y2="11"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="5" y1="7" x2="49" y2="7"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="8" y1="3" x2="46" y2="3"/>
+<g>
+ <circle style="fill:#BF4D90;" cx="45" cy="18" r="1"/>
+ <circle style="fill:#BF4D90;" cx="45" cy="24" r="1"/>
+ <circle style="fill:#BF4D90;" cx="48" cy="21" r="1"/>
+ <circle style="fill:#BF4D90;" cx="48" cy="27" r="1"/>
+ <circle style="fill:#BF4D90;" cx="51" cy="18" r="1"/>
+ <circle style="fill:#BF4D90;" cx="51" cy="24" r="1"/>
+ <circle style="fill:#BF4D90;" cx="45" cy="30" r="1"/>
+ <circle style="fill:#BF4D90;" cx="45" cy="36" r="1"/>
+ <circle style="fill:#BF4D90;" cx="48" cy="33" r="1"/>
+ <circle style="fill:#BF4D90;" cx="48" cy="39" r="1"/>
+ <circle style="fill:#BF4D90;" cx="51" cy="30" r="1"/>
+ <circle style="fill:#BF4D90;" cx="51" cy="36" r="1"/>
+ <circle style="fill:#BF4D90;" cx="45" cy="42" r="1"/>
+ <circle style="fill:#BF4D90;" cx="45" cy="48" r="1"/>
+ <circle style="fill:#BF4D90;" cx="48" cy="45" r="1"/>
+ <circle style="fill:#BF4D90;" cx="48" cy="51" r="1"/>
+ <circle style="fill:#BF4D90;" cx="51" cy="42" r="1"/>
+ <circle style="fill:#BF4D90;" cx="51" cy="48" r="1"/>
+ <circle style="fill:#BF4D90;" cx="27" cy="18" r="1"/>
+ <circle style="fill:#BF4D90;" cx="27" cy="24" r="1"/>
+ <circle style="fill:#BF4D90;" cx="30" cy="21" r="1"/>
+ <circle style="fill:#BF4D90;" cx="30" cy="27" r="1"/>
+ <circle style="fill:#BF4D90;" cx="33" cy="18" r="1"/>
+ <circle style="fill:#BF4D90;" cx="39" cy="18" r="1"/>
+ <circle style="fill:#BF4D90;" cx="33" cy="24" r="1"/>
+ <circle style="fill:#BF4D90;" cx="39" cy="24" r="1"/>
+ <circle style="fill:#BF4D90;" cx="36" cy="21" r="1"/>
+ <circle style="fill:#BF4D90;" cx="42" cy="21" r="1"/>
+ <circle style="fill:#BF4D90;" cx="36" cy="27" r="1"/>
+ <circle style="fill:#BF4D90;" cx="42" cy="27" r="1"/>
+ <circle style="fill:#BF4D90;" cx="27" cy="30" r="1"/>
+ <circle style="fill:#BF4D90;" cx="27" cy="36" r="1"/>
+ <circle style="fill:#BF4D90;" cx="30" cy="33" r="1"/>
+ <circle style="fill:#BF4D90;" cx="30" cy="39" r="1"/>
+ <circle style="fill:#BF4D90;" cx="33" cy="30" r="1"/>
+ <circle style="fill:#BF4D90;" cx="39" cy="30" r="1"/>
+ <circle style="fill:#BF4D90;" cx="33" cy="36" r="1"/>
+ <circle style="fill:#BF4D90;" cx="39" cy="36" r="1"/>
+ <circle style="fill:#BF4D90;" cx="36" cy="33" r="1"/>
+ <circle style="fill:#BF4D90;" cx="42" cy="33" r="1"/>
+ <circle style="fill:#BF4D90;" cx="36" cy="39" r="1"/>
+ <circle style="fill:#BF4D90;" cx="42" cy="39" r="1"/>
+ <circle style="fill:#BF4D90;" cx="27" cy="42" r="1"/>
+ <circle style="fill:#BF4D90;" cx="27" cy="48" r="1"/>
+ <circle style="fill:#BF4D90;" cx="30" cy="45" r="1"/>
+ <circle style="fill:#BF4D90;" cx="30" cy="51" r="1"/>
+ <circle style="fill:#BF4D90;" cx="33" cy="42" r="1"/>
+ <circle style="fill:#BF4D90;" cx="39" cy="42" r="1"/>
+ <circle style="fill:#BF4D90;" cx="33" cy="48" r="1"/>
+ <circle style="fill:#BF4D90;" cx="39" cy="48" r="1"/>
+ <circle style="fill:#BF4D90;" cx="36" cy="45" r="1"/>
+ <circle style="fill:#BF4D90;" cx="42" cy="45" r="1"/>
+ <circle style="fill:#BF4D90;" cx="36" cy="51" r="1"/>
+ <circle style="fill:#BF4D90;" cx="42" cy="51" r="1"/>
+ <circle style="fill:#BF4D90;" cx="21" cy="18" r="1"/>
+ <circle style="fill:#BF4D90;" cx="21" cy="24" r="1"/>
+ <circle style="fill:#BF4D90;" cx="24" cy="21" r="1"/>
+ <circle style="fill:#BF4D90;" cx="24" cy="27" r="1"/>
+ <circle style="fill:#BF4D90;" cx="21" cy="30" r="1"/>
+ <circle style="fill:#BF4D90;" cx="21" cy="36" r="1"/>
+ <circle style="fill:#BF4D90;" cx="24" cy="33" r="1"/>
+ <circle style="fill:#BF4D90;" cx="24" cy="39" r="1"/>
+ <circle style="fill:#BF4D90;" cx="21" cy="42" r="1"/>
+ <circle style="fill:#BF4D90;" cx="21" cy="48" r="1"/>
+ <circle style="fill:#BF4D90;" cx="24" cy="45" r="1"/>
+ <circle style="fill:#BF4D90;" cx="24" cy="51" r="1"/>
+ <circle style="fill:#BF4D90;" cx="3" cy="18" r="1"/>
+ <circle style="fill:#BF4D90;" cx="3" cy="24" r="1"/>
+ <circle style="fill:#BF4D90;" cx="6" cy="21" r="1"/>
+ <circle style="fill:#BF4D90;" cx="6" cy="27" r="1"/>
+ <circle style="fill:#BF4D90;" cx="9" cy="18" r="1"/>
+ <circle style="fill:#BF4D90;" cx="15" cy="18" r="1"/>
+ <circle style="fill:#BF4D90;" cx="9" cy="24" r="1"/>
+ <circle style="fill:#BF4D90;" cx="15" cy="24" r="1"/>
+ <circle style="fill:#BF4D90;" cx="12" cy="21" r="1"/>
+ <circle style="fill:#BF4D90;" cx="18" cy="21" r="1"/>
+ <circle style="fill:#BF4D90;" cx="12" cy="27" r="1"/>
+ <circle style="fill:#BF4D90;" cx="18" cy="27" r="1"/>
+ <circle style="fill:#BF4D90;" cx="3" cy="30" r="1"/>
+ <circle style="fill:#BF4D90;" cx="3" cy="36" r="1"/>
+ <circle style="fill:#BF4D90;" cx="6" cy="33" r="1"/>
+ <circle style="fill:#BF4D90;" cx="6" cy="39" r="1"/>
+ <circle style="fill:#BF4D90;" cx="9" cy="30" r="1"/>
+ <circle style="fill:#BF4D90;" cx="15" cy="30" r="1"/>
+ <circle style="fill:#BF4D90;" cx="9" cy="36" r="1"/>
+ <circle style="fill:#BF4D90;" cx="15" cy="36" r="1"/>
+ <circle style="fill:#BF4D90;" cx="12" cy="33" r="1"/>
+ <circle style="fill:#BF4D90;" cx="18" cy="33" r="1"/>
+ <circle style="fill:#BF4D90;" cx="12" cy="39" r="1"/>
+ <circle style="fill:#BF4D90;" cx="18" cy="39" r="1"/>
+ <circle style="fill:#BF4D90;" cx="3" cy="42" r="1"/>
+ <circle style="fill:#BF4D90;" cx="3" cy="48" r="1"/>
+ <circle style="fill:#BF4D90;" cx="6" cy="45" r="1"/>
+ <circle style="fill:#BF4D90;" cx="6" cy="51" r="1"/>
+ <circle style="fill:#BF4D90;" cx="9" cy="42" r="1"/>
+ <circle style="fill:#BF4D90;" cx="15" cy="42" r="1"/>
+ <circle style="fill:#BF4D90;" cx="9" cy="48" r="1"/>
+ <circle style="fill:#BF4D90;" cx="15" cy="48" r="1"/>
+ <circle style="fill:#BF4D90;" cx="12" cy="45" r="1"/>
+ <circle style="fill:#BF4D90;" cx="18" cy="45" r="1"/>
+ <circle style="fill:#BF4D90;" cx="12" cy="51" r="1"/>
+ <circle style="fill:#BF4D90;" cx="18" cy="51" r="1"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/tabs.svg b/img/icons/essential-collection/svg/tabs.svg
new file mode 100644
index 00000000..6fc7e87f
--- /dev/null
+++ b/img/icons/essential-collection/svg/tabs.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<rect y="15" style="fill:#EB7937;" width="54" height="37"/>
+<line style="fill:none;stroke:#DD352E;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="2" y1="11" x2="52" y2="11"/>
+<line style="fill:none;stroke:#B02721;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="5" y1="7" x2="49" y2="7"/>
+<line style="fill:none;stroke:#871B1B;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="8" y1="3" x2="46" y2="3"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/target.svg b/img/icons/essential-collection/svg/target.svg
new file mode 100644
index 00000000..857c512c
--- /dev/null
+++ b/img/icons/essential-collection/svg/target.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<circle style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" cx="30" cy="30" r="26"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="1" y1="30" x2="7" y2="30"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="53" y1="30" x2="59" y2="30"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="36" y1="30" x2="42" y2="30"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="18" y1="30" x2="24" y2="30"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="30" y1="59" x2="30" y2="53"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="30" y1="7" x2="30" y2="1"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="30" y1="24" x2="30" y2="18"/>
+<line style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="30" y1="42" x2="30" y2="36"/>
+<circle style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" cx="30" cy="30" r="6"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/television-1.svg b/img/icons/essential-collection/svg/television-1.svg
new file mode 100644
index 00000000..c3d197f6
--- /dev/null
+++ b/img/icons/essential-collection/svg/television-1.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect y="6" style="fill:#556080;" width="58" height="38"/>
+<rect x="49" y="10" style="fill:#61B872;" width="4" height="4"/>
+<path style="fill:#FBCE9D;" d="M39.326,34.814c0.162-0.11,0.329-0.211,0.488-0.325c-0.289-0.255-0.609-0.479-0.964-0.656
+ l-4.664-3.018c-0.693-0.346-2-0.225-2-1V27.71c0.151-0.171,1.323-0.885,1.507-1.145c0.731-1.032,1.476-2.168,1.86-3.359
+ c0.688-0.212,1.633-0.847,1.633-1.602v-2.246c0-0.195-0.102-0.382-0.248-0.556c-0.464-0.556-0.752-1.237-0.752-1.961v-1.027
+ c0,0-0.158-6-7-6s-7,6-7,6v1.027c0,0.724-0.288,1.406-0.752,1.961c-0.145,0.174-0.248,0.361-0.248,0.556v2.246
+ c0,0.592,0.75,1.112,1.215,1.413c0.561,2.443,3.785,4.201,3.785,4.201v2.052c0,0.748-1.838,1.437-2.495,1.796l-4.707,2.732
+ c-0.342,0.187-0.648,0.42-0.925,0.68c0.163,0.118,0.337,0.224,0.504,0.337H39.326z"/>
+<rect x="5" y="34" style="fill:#EBBA16;" width="5" height="5"/>
+<polygon style="fill:#424A60;" points="31,49 31,44 27,44 27,49 22,49 22,52 36,52 36,49 "/>
+<rect x="14" y="34" style="fill:#D75A4A;" width="39" height="5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/television.svg b/img/icons/essential-collection/svg/television.svg
new file mode 100644
index 00000000..801ec166
--- /dev/null
+++ b/img/icons/essential-collection/svg/television.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#424A60;" points="0,4.5 0,42.5 21,42.5 37,42.5 58,42.5 58,4.5 "/>
+<polygon style="fill:#EBBA16;" points="19,53.5 29,37.5 39,53.5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/time.svg b/img/icons/essential-collection/svg/time.svg
new file mode 100644
index 00000000..3872ef9c
--- /dev/null
+++ b/img/icons/essential-collection/svg/time.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#48A0DC;" cx="29" cy="29" r="29"/>
+<path style="fill:#EFCE4A;" d="M0,29c0,0.295,0.013,0.586,0.022,0.879H29V0C12.984,0,0,12.984,0,29z"/>
+<path style="fill:#4393BF;" d="M29,6.879c-0.552,0-1,0.447-1,1v23H13c-0.552,0-1,0.447-1,1s0.448,1,1,1h16c0.552,0,1-0.447,1-1v-24
+ C30,7.326,29.552,6.879,29,6.879z"/>
+<path style="fill:#424A60;" d="M29,5c-0.552,0-1,0.447-1,1v23H13c-0.552,0-1,0.447-1,1s0.448,1,1,1h16c0.552,0,1-0.447,1-1V6
+ C30,5.447,29.552,5,29,5z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/trash.svg b/img/icons/essential-collection/svg/trash.svg
new file mode 100644
index 00000000..3873e751
--- /dev/null
+++ b/img/icons/essential-collection/svg/trash.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:none;stroke:#DC691D;stroke-width:2;stroke-miterlimit:10;" d="M36.999,7c0,0,0.156-6-4-6h-5.061h0.122H23
+ c-4.156,0-4,6-4,6"/>
+<line style="fill:none;stroke:#DC691D;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="6" y1="7" x2="52" y2="7"/>
+<path style="fill:#DC691D;" d="M9.167,11l1.789,43c0,0,0.085,4,3.908,4h13.617h0.059h14.596c3.823,0,3.908-4,3.908-4l1.789-43H9.167
+ z"/>
+<line style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="17" y1="53" x2="41" y2="53"/>
+<line style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="17" y1="48" x2="41" y2="48"/>
+<line style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="17" y1="43" x2="41" y2="43"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/umbrella.svg b/img/icons/essential-collection/svg/umbrella.svg
new file mode 100644
index 00000000..56fdc51e
--- /dev/null
+++ b/img/icons/essential-collection/svg/umbrella.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M30,1v54c0,2.209-1.791,4-4,4
+ s-4-1.791-4-4"/>
+<path style="fill:#7383BF;" d="M30,28c3.316-4,8.684-4,12,0c3.316-4,8.684-4,12,0C54,14.745,43.255,4,30,4S6,14.745,6,28
+ c3.316-4,8.684-4,12,0C21.316,24,26.684,24,30,28z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/unlink.svg b/img/icons/essential-collection/svg/unlink.svg
new file mode 100644
index 00000000..8c18b6a1
--- /dev/null
+++ b/img/icons/essential-collection/svg/unlink.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52.965 52.965" style="enable-background:new 0 0 52.965 52.965;" xml:space="preserve">
+<path style="fill:none;stroke:#EA6248;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M24.008,13.401L33.2,4.208
+ c4.278-4.278,11.278-4.278,15.556,0l0,0c4.278,4.278,4.278,11.278,0,15.556L36.735,31.786c-4.278,4.278-11.278,4.278-15.556,0l0,0"
+ />
+<path style="fill:none;stroke:#EA6248;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M27.543,40.978l-7.778,7.778
+ c-4.278,4.278-11.278,4.278-15.556,0l0,0c-4.278-4.278-4.278-11.278,0-15.556l11.314-11.314c4.278-4.278,11.278-4.278,15.556,0l0,0"
+ />
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/unlocked-1.svg b/img/icons/essential-collection/svg/unlocked-1.svg
new file mode 100644
index 00000000..41191d69
--- /dev/null
+++ b/img/icons/essential-collection/svg/unlocked-1.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54 54" style="enable-background:new 0 0 54 54;" xml:space="preserve">
+<path style="fill:#C7CAC7;" d="M41.771,54H12.229C8.789,54,6,51.211,6,47.771V28.229C6,24.789,8.789,22,12.229,22h29.542
+ C45.211,22,48,24.789,48,28.229v19.542C48,51.211,45.211,54,41.771,54z"/>
+<path style="fill:#E7ECED;" d="M41.771,22H27v32h14.771C45.211,54,48,51.211,48,47.771V28.229C48,24.789,45.211,22,41.771,22z"/>
+<path style="fill:#4C4C4F;" d="M27,42L27,42c-1.65,0-3-1.35-3-3v-6c0-1.65,1.35-3,3-3h0c1.65,0,3,1.35,3,3v6
+ C30,40.65,28.65,42,27,42z"/>
+<path style="fill:#546A79;" d="M12,17.5c1.104,0,2-0.896,2-2C14,9.159,19.832,4,27,4s13,5.159,13,11.5V22h1.771
+ c0.771,0,1.507,0.147,2.188,0.403C43.986,22.273,44,22.138,44,22v-6.5C44,6.953,36.374,0,27,0S10,6.953,10,15.5
+ C10,16.604,10.896,17.5,12,17.5z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/unlocked-2.svg b/img/icons/essential-collection/svg/unlocked-2.svg
new file mode 100644
index 00000000..44dfb506
--- /dev/null
+++ b/img/icons/essential-collection/svg/unlocked-2.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:none;stroke:#D8A852;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="
+ M38,22.866V11.219C38,6.149,33.5,2,28,2s-10,4.149-10,9.219"/>
+<circle style="fill:#E7ECED;" cx="29" cy="39" r="19"/>
+<path style="fill:#C7CAC7;" d="M48,39c0-10.493-8.507-19-19-19v38C39.493,58,48,49.493,48,39z"/>
+<path style="fill:#424A60;" d="M29,44L29,44c-1.65,0-3-1.35-3-3v-6c0-1.65,1.35-3,3-3h0c1.65,0,3,1.35,3,3v6
+ C32,42.65,30.65,44,29,44z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/unlocked.svg b/img/icons/essential-collection/svg/unlocked.svg
new file mode 100644
index 00000000..58e53f31
--- /dev/null
+++ b/img/icons/essential-collection/svg/unlocked.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:none;stroke:#FBD490;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="M39,24
+ V11.219C39,6.149,34.5,2,29,2s-10,4.149-10,9.219"/>
+<circle style="fill:#7383BF;" cx="29" cy="39" r="19"/>
+<path style="fill:#556080;" d="M48,39c0-10.493-8.507-19-19-19v38C39.493,58,48,49.493,48,39z"/>
+<circle style="fill:#424A60;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" cx="29" cy="39" r="8"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="29" y1="31" x2="29" y2="27"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="29" y1="51" x2="29" y2="47"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="34.657" y1="44.657" x2="37.485" y2="47.485"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="20.515" y1="47.485" x2="23.343" y2="44.657"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="34.657" y1="33.343" x2="37.485" y2="30.515"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="20.515" y1="30.515" x2="23.343" y2="33.343"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="37" y1="39" x2="41" y2="39"/>
+<line style="fill:none;stroke:#D8A852;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="17" y1="39" x2="21" y2="39"/>
+<circle style="fill:#556080;" cx="29" cy="39" r="4"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/upload.svg b/img/icons/essential-collection/svg/upload.svg
new file mode 100644
index 00000000..6b0ba87f
--- /dev/null
+++ b/img/icons/essential-collection/svg/upload.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<polygon style="fill:#3083C9;" points="36,17 22,17 8,17 8,58 50,58 50,17 "/>
+<polyline style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" points="
+ 18.979,11.021 29,1 38.979,10.979 "/>
+<line style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" x1="29" y1="1" x2="29" y2="39"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/user-1.svg b/img/icons/essential-collection/svg/user-1.svg
new file mode 100644
index 00000000..e945fe4f
--- /dev/null
+++ b/img/icons/essential-collection/svg/user-1.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#9777A8;" d="M51,50.957c0-3.038-1.717-5.816-4.434-7.174l-11.027-4.776c-0.603-0.302-1.095-0.943-1.441-1.64
+ C33.787,36.739,34.253,36,34.954,36h7.766c0,0,2.848,0.273,5.044-0.67c1.286-0.553,1.73-2.167,0.925-3.313
+ c-2.353-3.349-7.215-11.234-7.373-19.379c0,0-0.27-12.536-12.638-12.638c-7.215,0.06-10.623,4.306-12.21,7.835
+ c-0.885,1.969-1.265,4.115-1.407,6.269c-0.513,7.763-4.466,15.092-6.308,18.126c-0.625,1.029-0.323,2.4,0.711,3.017
+ C11.158,36.26,13.231,36,13.231,36h7.949c0.775,0,1.117,0.979,0.509,1.459c-0.496,0.391-0.969,0.745-1.225,0.884L11.18,43.72
+ C8.603,45.125,7,47.826,7,50.761V52c0,0,0,0.657,0,1c0,2.761,9.85,5,22,5s22-2.239,22-5c0-0.343,0-1,0-1V50.957z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/user-2.svg b/img/icons/essential-collection/svg/user-2.svg
new file mode 100644
index 00000000..2532cb55
--- /dev/null
+++ b/img/icons/essential-collection/svg/user-2.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53 53" style="enable-background:new 0 0 53 53;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M11.487,44.641l9.113-3.908c0.494-0.247,0.896-1.045,1.179-1.614c0.255-0.514-0.126-1.119-0.7-1.119
+ h-6.445c0,0-2.33-0.228-4.127-1c-1.053-0.452-1.415-1.049-0.757-1.986c1.925-2.74,5.904-9.192,6.033-15.855
+ c0,0,0.221-10.257,10.34-10.34c5.903,0.049,8.691,3.523,9.99,6.41c0.724,1.611,1.035,3.367,1.151,5.129
+ c0.42,6.351,3.654,12.16,5.161,14.642c0.511,0.842,0.264,1.963-0.581,2.469C40.458,38.298,38.761,38,38.761,38h-6.488
+ c-0.634,0-0.914,0.886-0.416,1.279c0.406,0.32,0.793,0.609,1.002,0.723l7.58,4.587c1.094,0.597,1.967,1.483,2.561,2.529
+ C38.451,50.795,32.664,53,26.359,53c-6.574,0-12.585-2.399-17.216-6.363C9.748,45.812,10.537,45.116,11.487,44.641z"/>
+<g>
+ <path style="fill:#556080;" d="M26.5,0C11.864,0,0,11.865,0,26.5c0,8.022,3.57,15.206,9.202,20.066
+ c0.598-0.793,1.364-1.464,2.286-1.925l9.113-3.908c0.494-0.247,0.896-1.045,1.179-1.614c0.255-0.514-0.126-1.119-0.7-1.119h-6.445
+ c0,0-2.33-0.228-4.127-1c-1.053-0.452-1.415-1.049-0.757-1.986c1.925-2.74,5.904-9.192,6.033-15.855c0,0,0.221-10.257,10.34-10.34
+ c5.903,0.049,8.691,3.523,9.99,6.41c0.724,1.611,1.035,3.367,1.151,5.129c0.42,6.351,3.654,12.16,5.161,14.642
+ c0.511,0.842,0.264,1.963-0.581,2.469C40.458,38.298,38.761,38,38.761,38h-6.488c-0.634,0-0.914,0.886-0.416,1.279
+ c0.406,0.32,0.793,0.609,1.002,0.723l7.58,4.587c1.086,0.592,1.952,1.469,2.545,2.505c0.026,0.025,0.055,0.048,0.08,0.075
+ C49.117,42.313,53,34.864,53,26.5C53,11.865,41.136,0,26.5,0z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/user-3.svg b/img/icons/essential-collection/svg/user-3.svg
new file mode 100644
index 00000000..5b13d362
--- /dev/null
+++ b/img/icons/essential-collection/svg/user-3.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53 53" style="enable-background:new 0 0 53 53;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M18.613,41.552l-7.907,4.313c-0.464,0.253-0.881,0.564-1.269,0.903C14.047,50.655,19.998,53,26.5,53
+ c6.454,0,12.367-2.31,16.964-6.144c-0.424-0.358-0.884-0.68-1.394-0.934l-8.467-4.233c-1.094-0.547-1.785-1.665-1.785-2.888v-3.322
+ c0.238-0.271,0.51-0.619,0.801-1.03c1.154-1.63,2.027-3.423,2.632-5.304c1.086-0.335,1.886-1.338,1.886-2.53v-3.546
+ c0-0.78-0.347-1.477-0.886-1.965v-5.126c0,0,1.053-7.977-9.75-7.977s-9.75,7.977-9.75,7.977v5.126
+ c-0.54,0.488-0.886,1.185-0.886,1.965v3.546c0,0.934,0.491,1.756,1.226,2.231c0.886,3.857,3.206,6.633,3.206,6.633v3.24
+ C20.296,39.899,19.65,40.986,18.613,41.552z"/>
+<g>
+ <path style="fill:#556080;" d="M26.953,0.004C12.32-0.246,0.254,11.414,0.004,26.047C-0.138,34.344,3.56,41.801,9.448,46.76
+ c0.385-0.336,0.798-0.644,1.257-0.894l7.907-4.313c1.037-0.566,1.683-1.653,1.683-2.835v-3.24c0,0-2.321-2.776-3.206-6.633
+ c-0.734-0.475-1.226-1.296-1.226-2.231v-3.546c0-0.78,0.347-1.477,0.886-1.965v-5.126c0,0-1.053-7.977,9.75-7.977
+ s9.75,7.977,9.75,7.977v5.126c0.54,0.488,0.886,1.185,0.886,1.965v3.546c0,1.192-0.8,2.195-1.886,2.53
+ c-0.605,1.881-1.478,3.674-2.632,5.304c-0.291,0.411-0.563,0.759-0.801,1.03V38.8c0,1.223,0.691,2.342,1.785,2.888l8.467,4.233
+ c0.508,0.254,0.967,0.575,1.39,0.932c5.71-4.762,9.399-11.882,9.536-19.9C53.246,12.32,41.587,0.254,26.953,0.004z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/user-4.svg b/img/icons/essential-collection/svg/user-4.svg
new file mode 100644
index 00000000..00f879a1
--- /dev/null
+++ b/img/icons/essential-collection/svg/user-4.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#25AE88;" cx="29" cy="29" r="29"/>
+<path style="fill:#FBCE9D;" d="M52.932,45.376C52.275,38.985,46.876,34,40.311,34h-5.946C33.611,34,33,33.389,33,32.635V31.99
+ c0-0.583,0.379-1.082,0.925-1.287c5.804-2.182,9.778-11.704,8.971-18.433C42.134,5.919,36.97,0.801,30.614,0.09
+ c-0.517-0.058-1.029-0.086-1.535-0.088c-0.016,0-0.032-0.001-0.048-0.001C21.285-0.016,15,6.258,15,14
+ c0,6.024,3.807,14.755,9.145,16.729C24.668,30.922,25,31.442,25,32v0.635C25,33.389,24.389,34,23.635,34h-5.946
+ c-6.565,0-11.964,4.985-12.621,11.376C10.293,52.998,19.061,58,29,58S47.707,52.998,52.932,45.376z"/>
+<path style="fill:#6B5B4B;" d="M33.492,6.61c3.715,1.021,7.213,3.306,9.453,6.322c-0.016-0.221-0.023-0.447-0.049-0.663
+ C42.134,5.919,36.97,0.801,30.614,0.09c-0.517-0.058-1.029-0.086-1.535-0.088c-0.016,0-0.032-0.001-0.048-0.001
+ c-6.92-0.015-12.66,4.995-13.808,11.583l0.005,0c0.179,0.252,0.354,0.507,0.545,0.75c0.07-0.087,0.141-0.173,0.213-0.258
+ c2-2.38,5.341-2.931,8.183-1.671C25.034,10.787,25.992,11,27,11C29.942,11,32.456,9.182,33.492,6.61z"/>
+<path style="fill:#556080;" d="M52.932,45.376C52.275,38.985,46.876,34,40.311,34H37l-8,8l-8-8h-3.311
+ c-6.565,0-11.964,4.985-12.621,11.376C10.293,52.998,19.061,58,29,58S47.707,52.998,52.932,45.376z"/>
+<path style="fill:#424A60;" d="M43,54.392c0.685-0.379,1.35-0.789,2-1.22V47h-2V54.392z"/>
+<path style="fill:#424A60;" d="M15,54.392V47h-2v6.172C13.65,53.603,14.315,54.013,15,54.392z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/user-5.svg b/img/icons/essential-collection/svg/user-5.svg
new file mode 100644
index 00000000..477dcb70
--- /dev/null
+++ b/img/icons/essential-collection/svg/user-5.svg
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#F76363;" cx="29" cy="29" r="29"/>
+<path style="fill:#F7B563;" d="M52.932,45.376C52.275,38.985,46.876,34,40.311,34h-5.946C33.611,34,33,33.389,33,32.635V31.99
+ c0-0.583,0.379-1.082,0.925-1.287c5.804-2.182,9.778-11.704,8.971-18.433C42.134,5.919,36.97,0.801,30.614,0.09
+ c-0.517-0.058-1.029-0.086-1.535-0.088c-0.016,0-0.032-0.001-0.048-0.001C21.285-0.016,15,6.258,15,14
+ c0,6.024,3.807,14.755,9.145,16.729C24.668,30.922,25,31.442,25,32v0.635C25,33.389,24.389,34,23.635,34h-5.946
+ c-6.565,0-11.964,4.985-12.621,11.376C10.293,52.998,19.061,58,29,58S47.707,52.998,52.932,45.376z"/>
+<path style="fill:#F7E714;" d="M33.492,6.61c3.715,1.021,7.213,3.306,9.453,6.322c-0.016-0.221-0.023-0.447-0.049-0.663
+ C42.134,5.919,36.97,0.801,30.614,0.09c-0.517-0.058-1.029-0.086-1.535-0.088c-0.016,0-0.032-0.001-0.048-0.001
+ c-6.92-0.015-12.66,4.995-13.808,11.583l0.005,0c0.179,0.252,0.354,0.507,0.545,0.75c0.07-0.087,0.141-0.173,0.213-0.258
+ c2-2.38,5.341-2.931,8.183-1.671C25.034,10.787,25.992,11,27,11C29.942,11,32.456,9.182,33.492,6.61z"/>
+<g>
+ <path style="fill:#F7E714;" d="M33.925,30.703C33.379,30.908,33,31.407,33,31.99v0.645C33,33.389,33.611,34,34.365,34h5.946
+ c0.923,0,1.822,0.104,2.689,0.292V14h-0.012C43.002,20.24,39.236,28.706,33.925,30.703z"/>
+ <path style="fill:#F7E714;" d="M17.689,34h5.946C24.389,34,25,33.389,25,32.635V32c0-0.558-0.332-1.078-0.855-1.271
+ C18.807,28.755,15,20.024,15,14v20.292C15.867,34.104,16.766,34,17.689,34z"/>
+</g>
+<path style="fill:#D39450;" d="M38,40c-3.961,0-7.382,2.322-9,5.67C27.382,42.322,23.961,40,20,40c-0.553,0-1,0.447-1,1s0.447,1,1,1
+ c4.411,0,8,3.589,8,8v3h2v-3c0-4.411,3.589-8,8-8c0.553,0,1-0.447,1-1S38.553,40,38,40z"/>
+<path style="fill:#25AE88;" d="M52.932,45.376c-0.383-3.726-2.385-6.965-5.283-9.026L29,53L10.35,36.35
+ c-2.898,2.061-4.899,5.3-5.283,9.026C10.293,52.998,19.061,58,29,58S47.707,52.998,52.932,45.376z"/>
+<g>
+ <path style="fill:#229974;" d="M43,47v7.392c0.685-0.379,1.35-0.789,2-1.22V47H43z"/>
+ <path style="fill:#229974;" d="M13,53.172c0.65,0.431,1.315,0.841,2,1.22V47h-2V53.172z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/user-6.svg b/img/icons/essential-collection/svg/user-6.svg
new file mode 100644
index 00000000..acf04b2a
--- /dev/null
+++ b/img/icons/essential-collection/svg/user-6.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#424A60;" cx="29" cy="29" r="29"/>
+<path style="fill:#FBCE9D;" d="M52.932,45.376C52.275,38.985,46.876,34,40.311,34h-5.946C33.611,34,33,33.389,33,32.635V31.99
+ c0-0.583,0.379-1.082,0.925-1.287c5.804-2.182,9.778-11.704,8.971-18.433C42.134,5.919,36.97,0.801,30.614,0.09
+ c-0.517-0.058-1.029-0.086-1.535-0.088c-0.016,0-0.032-0.001-0.048-0.001C21.285-0.016,15,6.258,15,14
+ c0,6.024,3.807,14.755,9.145,16.729C24.668,30.922,25,31.442,25,32v0.635C25,33.389,24.389,34,23.635,34h-5.946
+ c-6.565,0-11.964,4.985-12.621,11.376C10.293,52.998,19.061,58,29,58S47.707,52.998,52.932,45.376z"/>
+<path style="fill:#6C797A;" d="M33.492,6.61c3.715,1.021,7.213,3.306,9.453,6.322c-0.016-0.221-0.023-0.447-0.049-0.663
+ C42.134,5.919,36.97,0.801,30.614,0.09c-0.517-0.058-1.029-0.086-1.535-0.088c-0.016,0-0.032-0.001-0.048-0.001
+ c-6.92-0.015-12.66,4.995-13.808,11.583l0.005,0c0.179,0.252,0.354,0.507,0.545,0.75c0.07-0.087,0.141-0.173,0.213-0.258
+ c2-2.38,5.341-2.931,8.183-1.671C25.034,10.787,25.992,11,27,11C29.942,11,32.456,9.182,33.492,6.61z"/>
+<path style="fill:#E7ECED;" d="M52.932,45.376C52.275,38.985,46.875,34,40.311,34H39l-6,6h-8l-3-2l-3.429-4h-0.882
+ c-6.564,0-11.964,4.985-12.621,11.376C10.293,52.998,19.061,58,29,58S47.707,52.998,52.932,45.376z"/>
+<path style="fill:#CCD5D6;" d="M43,54.392c0.685-0.379,1.35-0.789,2-1.22V47h-2V54.392z"/>
+<path style="fill:#CCD5D6;" d="M15,54.392V47h-2v6.172C13.65,53.603,14.315,54.013,15,54.392z"/>
+<rect x="26" y="38" style="fill:#38454F;" width="6" height="6"/>
+<path style="fill:#546A79;" d="M24.961,57.714C26.281,57.898,27.629,58,29,58c1.382,0,2.739-0.103,4.069-0.29L31,44h-4
+ L24.961,57.714z"/>
+<path style="fill:#FFFFFF;" d="M26,38.8L22,34h-4.856c-0.069,0-0.116,0.07-0.091,0.134L21,44l5-3.333V38.8z"/>
+<path style="fill:#FFFFFF;" d="M40.856,34H36l-4,4.8v1.867L37,44l3.946-9.866C40.972,34.07,40.925,34,40.856,34z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/user-7.svg b/img/icons/essential-collection/svg/user-7.svg
new file mode 100644
index 00000000..1d0d00b9
--- /dev/null
+++ b/img/icons/essential-collection/svg/user-7.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#88C057;" cx="29" cy="29" r="29"/>
+<path style="fill:#FBCE9D;" d="M52.932,45.376C52.275,38.985,46.876,34,40.311,34h-5.946C33.611,34,33,33.389,33,32.635V31.99
+ c0-0.583,0.379-1.082,0.925-1.287c5.804-2.182,9.778-11.704,8.971-18.433C42.134,5.919,36.97,0.801,30.614,0.09
+ c-0.517-0.058-1.029-0.086-1.535-0.088c-0.016,0-0.032-0.001-0.048-0.001C21.285-0.016,15,6.258,15,14
+ c0,6.024,3.807,14.755,9.145,16.729C24.668,30.922,25,31.442,25,32v0.635C25,33.389,24.389,34,23.635,34h-5.946
+ c-6.565,0-11.964,4.985-12.621,11.376C10.293,52.998,19.061,58,29,58S47.707,52.998,52.932,45.376z"/>
+<path style="fill:#C5411E;" d="M33.492,6.61c3.715,1.021,7.213,3.306,9.453,6.322c-0.016-0.221-0.023-0.447-0.049-0.663
+ C42.134,5.919,36.97,0.801,30.614,0.09c-0.517-0.058-1.029-0.086-1.535-0.088c-0.016,0-0.032-0.001-0.048-0.001
+ c-6.92-0.015-12.66,4.995-13.808,11.583l0.005,0c0.179,0.252,0.354,0.507,0.545,0.75c0.07-0.087,0.141-0.173,0.213-0.258
+ c2-2.38,5.341-2.931,8.183-1.671C25.034,10.787,25.992,11,27,11C29.942,11,32.456,9.182,33.492,6.61z"/>
+<rect x="18" y="34" style="fill:#424A60;" width="4" height="8"/>
+<rect x="36" y="34" style="fill:#424A60;" width="4" height="8"/>
+<path style="fill:#556080;" d="M14,50.383v3.44C18.377,56.474,23.51,58,29,58s10.623-1.526,15-4.177v-3.44V42H14V50.383z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/user.svg b/img/icons/essential-collection/svg/user.svg
new file mode 100644
index 00000000..2c9055d9
--- /dev/null
+++ b/img/icons/essential-collection/svg/user.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#88C057;" d="M51,49.957c0-3.038-1.717-5.816-4.434-7.174l-9.552-4.776C35.78,37.39,35,36.128,35,34.748V31
+ c0.268-0.305,0.576-0.698,0.904-1.162c1.302-1.838,2.286-3.861,2.969-5.984C40.098,23.477,41,22.345,41,21v-4
+ c0-0.88-0.391-1.667-1-2.217V9c0,0,1.187-9-11-9C16.812,0,18,9,18,9v5.783c-0.609,0.55-1,1.337-1,2.217v4
+ c0,1.054,0.554,1.981,1.383,2.517C19.382,27.869,22,31,22,31v3.655c0,1.333-0.728,2.56-1.899,3.198L11.18,42.72
+ C8.603,44.125,7,46.826,7,49.761V52c0,0,0,0.657,0,1c0,2.761,9.85,5,22,5s22-2.239,22-5c0-0.343,0-1,0-1V49.957z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/users-1.svg b/img/icons/essential-collection/svg/users-1.svg
new file mode 100644
index 00000000..7f299817
--- /dev/null
+++ b/img/icons/essential-collection/svg/users-1.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#3083C9;" d="M39.566,45.283l-9.552-4.776C28.78,39.89,28,38.628,28,37.248V33.5
+ c0.268-0.305,0.576-0.698,0.904-1.162c1.302-1.838,2.286-3.861,2.969-5.984C33.098,25.977,34,24.845,34,23.5v-4
+ c0-0.88-0.391-1.667-1-2.217V11.5c0,0,1.187-9-11-9c-12.188,0-11,9-11,9v5.783c-0.609,0.55-1,1.337-1,2.217v4
+ c0,1.054,0.554,1.981,1.383,2.517C12.382,30.369,15,33.5,15,33.5v3.655c0,1.333-0.728,2.56-1.899,3.198L4.18,45.22
+ C1.603,46.625,0,49.326,0,52.261V55.5h44v-3.043C44,49.419,42.283,46.642,39.566,45.283z"/>
+<path style="fill:#CB465F;" d="M54.07,46.444l-9.774-4.233c-0.535-0.267-0.971-0.836-1.277-1.453
+ c-0.277-0.557,0.136-1.212,0.758-1.212h6.883c0,0,2.524,0.242,4.471-0.594c1.14-0.49,1.533-1.921,0.82-2.936
+ c-2.085-2.969-6.396-9.958-6.535-17.177c0,0-0.239-11.112-11.202-11.202c-2.187,0.018-3.97,0.476-5.438,1.188
+ C33.152,10.324,33,11.5,33,11.5v5.783c0.609,0.55,1,1.337,1,2.217v4c0,1.345-0.902,2.477-2.127,2.854
+ c-0.683,2.122-1.667,4.145-2.969,5.984C28.576,32.802,28.268,33.195,28,33.5v3.748c0,0.853,0.299,1.659,0.818,2.297h2.751
+ c0.687,0,0.99,0.868,0.451,1.293c-0.186,0.147-0.364,0.283-0.53,0.406l8.077,4.038C42.283,46.642,44,49.419,44,52.457V55.5h14
+ v-2.697C58,50.11,56.479,47.648,54.07,46.444z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/users.svg b/img/icons/essential-collection/svg/users.svg
new file mode 100644
index 00000000..3af8f6c5
--- /dev/null
+++ b/img/icons/essential-collection/svg/users.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<path style="fill:#7383BF;" d="M53.566,45.283l-9.552-4.776C42.78,39.89,42,38.628,42,37.248V33.5
+ c0.268-0.305,0.576-0.698,0.904-1.162c1.302-1.838,2.286-3.861,2.969-5.984C47.098,25.977,48,24.845,48,23.5v-4
+ c0-0.88-0.391-1.667-1-2.217V11.5c0,0,1.187-9-11-9c-12.188,0-11,9-11,9v5.783c-0.609,0.55-1,1.337-1,2.217v4
+ c0,1.054,0.554,1.981,1.383,2.517C26.382,30.369,29,33.5,29,33.5v3.655c0,1.333-0.728,2.56-1.899,3.198L18.18,45.22
+ C15.603,46.625,14,49.326,14,52.261V55.5h44v-3.043C58,49.419,56.283,46.642,53.566,45.283z"/>
+<path style="fill:#556080;" d="M18.18,45.22l5.946-3.243c-0.034-0.033-0.005-0.043,0.065-0.036l2.91-1.587
+ C28.272,39.715,29,38.489,29,37.155V33.5c0,0-1.062-1.275-2.092-3.323h0c0-0.001-0.001-0.002-0.001-0.003
+ c-0.135-0.268-0.268-0.551-0.399-0.844c-0.018-0.041-0.036-0.08-0.054-0.121c-0.133-0.303-0.263-0.616-0.386-0.944
+ c-0.008-0.021-0.015-0.044-0.023-0.065c-0.108-0.29-0.209-0.589-0.306-0.896c-0.026-0.084-0.052-0.167-0.077-0.251
+ c-0.101-0.338-0.196-0.682-0.278-1.038C24.554,25.481,24,24.554,24,23.5v-4c0-0.88,0.391-1.667,1-2.217v-5.648
+ C23.587,10.539,21.397,9.5,18,9.5c-9.563,0-10,8-10,8v4.995c-0.526,0.475-1,1.154-1,1.914v3.455c0,0.911,0.479,1.711,1.194,2.174
+ c0.863,3.758,3.76,6.463,3.76,6.463v3.157c0,1.151-0.629,2.211-1.64,2.762L3.61,46.622C1.385,47.836,0,50.168,0,52.703V55.5h14
+ v-3.239C14,49.326,15.603,46.625,18.18,45.22z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/video-camera-1.svg b/img/icons/essential-collection/svg/video-camera-1.svg
new file mode 100644
index 00000000..b82d88ba
--- /dev/null
+++ b/img/icons/essential-collection/svg/video-camera-1.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53 53" style="enable-background:new 0 0 53 53;" xml:space="preserve">
+<line style="fill:none;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="20.132" y1="33.5" x2="12.711" y2="49.5"/>
+<line style="fill:none;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="20.132" y1="33.5" x2="27.553" y2="49.5"/>
+<path style="fill:#EFCE4A;" d="M50.02,31.428L37.511,19.474c-0.696-0.703-0.679-1.847,0.038-2.528L50.058,5.4
+ C51.172,4.342,53,5.139,53,6.683V18.19v11.993C53,31.752,51.12,32.537,50.02,31.428z"/>
+<path style="fill:#363E4B;" d="M34.827,33.5H3.791C1.697,33.5,0,31.803,0,29.709V6.444C0,4.275,1.775,2.5,3.944,2.5h31.112
+ C37.234,2.5,39,4.266,39,6.444v22.883C39,31.622,37.122,33.5,34.827,33.5z"/>
+<circle style="fill:#EFCE4A;" cx="11.5" cy="14" r="5.5"/>
+<line style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="13" y1="14.5" x2="18" y2="19.5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/video-camera.svg b/img/icons/essential-collection/svg/video-camera.svg
new file mode 100644
index 00000000..6b14f80a
--- /dev/null
+++ b/img/icons/essential-collection/svg/video-camera.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<path style="fill:#424A60;" d="M40.693,47.277H3.307C2.033,47.277,1,46.244,1,44.97V19.584c0-1.274,1.033-2.307,2.307-2.307h37.386
+ c1.274,0,2.307,1.033,2.307,2.307V44.97C43,46.244,41.967,47.277,40.693,47.277z"/>
+<path style="fill:#556080;" d="M52.074,47.465L43,43.277v-22l9.074-4.188C53.907,16.243,56,17.582,56,19.601v25.352
+ C56,46.972,53.907,48.311,52.074,47.465z"/>
+<path style="fill:none;stroke:#424A60;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M1,9.277h32c1.1,0,2,0.9,2,2
+ v6"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/video-player-1.svg b/img/icons/essential-collection/svg/video-player-1.svg
new file mode 100644
index 00000000..65a81179
--- /dev/null
+++ b/img/icons/essential-collection/svg/video-player-1.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<rect x="10" y="6" style="fill:#424A60;" width="36" height="44"/>
+<path style="fill:#343B49;" d="M46,29H10c-0.552,0-1-0.447-1-1s0.448-1,1-1h36c0.552,0,1,0.447,1,1S46.552,29,46,29z"/>
+<path style="fill:#343B49;" d="M46,8H10C9.448,8,9,7.553,9,7s0.448-1,1-1h36c0.552,0,1,0.447,1,1S46.552,8,46,8z"/>
+<path style="fill:#343B49;" d="M46,50H10c-0.552,0-1-0.447-1-1s0.448-1,1-1h36c0.552,0,1,0.447,1,1S46.552,50,46,50z"/>
+<path style="fill:#556080;" d="M46,39v11h10V39H46z M53,47h-4v-5h4V47z"/>
+<path style="fill:#38454F;" d="M46,28v11h10V28H46z M53,36h-4v-5h4V36z"/>
+<path style="fill:#556080;" d="M46,17v11h10V17H46z M53,25h-4v-5h4V25z"/>
+<path style="fill:#38454F;" d="M46,6v11h10V6H46z M53,14h-4V9h4V14z"/>
+<path style="fill:#556080;" d="M0,39v11h10V39H0z M7,47H3v-5h4V47z"/>
+<path style="fill:#38454F;" d="M0,28v11h10V28H0z M7,36H3v-5h4V36z"/>
+<path style="fill:#556080;" d="M0,17v11h10V17H0z M7,25H3v-5h4V25z"/>
+<path style="fill:#38454F;" d="M0,6v11h10V6H0z M7,14H3V9h4V14z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/video-player-2.svg b/img/icons/essential-collection/svg/video-player-2.svg
new file mode 100644
index 00000000..dd52d3d2
--- /dev/null
+++ b/img/icons/essential-collection/svg/video-player-2.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 53 53" style="enable-background:new 0 0 53 53;" xml:space="preserve">
+<rect x="0.5" style="fill:#556080;" width="52" height="53"/>
+<polygon style="fill:#FFFFFF;" points="23.5,25 23.5,17.954 23.5,11 34.5,18 "/>
+<rect x="0.5" y="34.941" style="fill:#424A60;" width="52" height="18.059"/>
+<path style="fill:#2A303D;" d="M46.5,45h-30c-0.553,0-1-0.447-1-1s0.447-1,1-1h30c0.553,0,1,0.447,1,1S47.053,45,46.5,45z"/>
+<path style="fill:#FFFFFF;" d="M6.5,48c-0.553,0-1-0.447-1-1v-6c0-0.553,0.447-1,1-1s1,0.447,1,1v6C7.5,47.553,7.053,48,6.5,48z"/>
+<path style="fill:#FFFFFF;" d="M10.5,48c-0.553,0-1-0.447-1-1v-6c0-0.553,0.447-1,1-1s1,0.447,1,1v6C11.5,47.553,11.053,48,10.5,48z
+ "/>
+<path style="fill:#DD352E;" d="M21.5,43h-5c-0.553,0-1,0.447-1,1s0.447,1,1,1h5V43z"/>
+<path style="fill:#FFFFFF;" d="M21.5,48c-0.553,0-1-0.447-1-1v-6c0-0.553,0.447-1,1-1s1,0.447,1,1v6C22.5,47.553,22.053,48,21.5,48z
+ "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/video-player.svg b/img/icons/essential-collection/svg/video-player.svg
new file mode 100644
index 00000000..08dd001a
--- /dev/null
+++ b/img/icons/essential-collection/svg/video-player.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="1" y="7" style="fill:#7383BF;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" width="56" height="44"/>
+<polygon style="fill:#FFFFFF;" points="25,36 25,28.954 25,22 36,29 "/>
+<rect x="1" y="7" style="fill:#556080;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" width="10" height="11"/>
+<rect x="1" y="18" style="fill:#556080;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" width="10" height="11"/>
+<rect x="1" y="29" style="fill:#556080;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" width="10" height="11"/>
+<rect x="1" y="40" style="fill:#556080;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" width="10" height="11"/>
+<rect x="47" y="7" style="fill:#556080;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" width="10" height="11"/>
+<rect x="47" y="18" style="fill:#556080;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" width="10" height="11"/>
+<rect x="47" y="29" style="fill:#556080;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" width="10" height="11"/>
+<rect x="47" y="40" style="fill:#556080;stroke:#424A60;stroke-width:2;stroke-miterlimit:10;" width="10" height="11"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/view-1.svg b/img/icons/essential-collection/svg/view-1.svg
new file mode 100644
index 00000000..e2856faa
--- /dev/null
+++ b/img/icons/essential-collection/svg/view-1.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57.945 57.945" style="enable-background:new 0 0 57.945 57.945;" xml:space="preserve">
+<circle style="fill:#25AE88;" cx="29" cy="29.472" r="12"/>
+<path style="fill:#A4E869;" d="M23,30.472c-0.552,0-1-0.448-1-1c0-3.86,3.14-7,7-7c0.552,0,1,0.448,1,1s-0.448,1-1,1
+ c-2.757,0-5,2.243-5,5C24,30.025,23.552,30.472,23,30.472z"/>
+<path style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M1,29.309l0.23-0.232
+ c15.349-15.473,40.366-15.473,55.715,0l0,0"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/view-2.svg b/img/icons/essential-collection/svg/view-2.svg
new file mode 100644
index 00000000..6c1ad226
--- /dev/null
+++ b/img/icons/essential-collection/svg/view-2.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 57.945 57.945" style="enable-background:new 0 0 57.945 57.945;" xml:space="preserve">
+<circle style="fill:#3083C9;" cx="28.973" cy="29.472" r="12"/>
+<path style="fill:none;stroke:#C6E2F7;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M36,29.472
+ c0,3.866-3.134,7-7,7s-7-3.134-7-7s3.134-7,7-7"/>
+<path style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M1,29.309l0.23-0.232
+ c15.349-15.473,40.366-15.473,55.715,0l0,0"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/view.svg b/img/icons/essential-collection/svg/view.svg
new file mode 100644
index 00000000..c5af7e82
--- /dev/null
+++ b/img/icons/essential-collection/svg/view.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56.372 56.372" style="enable-background:new 0 0 56.372 56.372;" xml:space="preserve">
+<path style="fill:#E7ECED;" d="M56.372,28.284l-7.234,7.234c-11.517,11.517-30.19,11.517-41.707,0L0,28.087l7.234-7.234
+ c11.517-11.517,30.19-11.517,41.707,0L56.372,28.284z"/>
+<circle style="fill:#3083C9;" cx="28.158" cy="28.156" r="12"/>
+<path style="fill:#FFFFFF;" d="M21.158,28.156c-0.552,0-1-0.448-1-1c0-3.86,3.14-7,7-7c0.552,0,1,0.448,1,1s-0.448,1-1,1
+ c-2.757,0-5,2.243-5,5C22.158,27.708,21.711,28.156,21.158,28.156z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/volume-control-1.svg b/img/icons/essential-collection/svg/volume-control-1.svg
new file mode 100644
index 00000000..58fe0044
--- /dev/null
+++ b/img/icons/essential-collection/svg/volume-control-1.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 51.497 51.497" style="enable-background:new 0 0 51.497 51.497;" xml:space="preserve">
+<circle style="fill:#C7CAC7;stroke:#949493;stroke-width:2;stroke-miterlimit:10;" cx="25.749" cy="34.249" r="16"/>
+<line style="fill:none;stroke:#949493;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="37.062" y1="22.935" x2="25.749" y2="34.249"/>
+<line style="fill:none;stroke:#EFCE4A;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="25.749" y1="1.249" x2="25.749" y2="7.249"/>
+<line style="fill:none;stroke:#D75A4A;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="50.497" y1="11.5" x2="46.255" y2="15.743"/>
+<line style="fill:none;stroke:#659C35;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="5.243" y1="15.743" x2="1" y2="11.5"/>
+<line style="fill:none;stroke:#ED8A19;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="34.807" y1="2.441" x2="33.254" y2="8.237"/>
+<line style="fill:none;stroke:#A4E869;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="16.69" y1="2.441" x2="18.243" y2="8.237"/>
+<line style="fill:none;stroke:#A4E869;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="18.243" y1="8.237" x2="16.69" y2="2.441"/>
+<line style="fill:none;stroke:#DC691D;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="43.249" y1="5.938" x2="40.249" y2="11.134"/>
+<line style="fill:none;stroke:#88C057;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="11.249" y1="11.134" x2="8.249" y2="5.938"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/volume-control.svg b/img/icons/essential-collection/svg/volume-control.svg
new file mode 100644
index 00000000..f60a76a6
--- /dev/null
+++ b/img/icons/essential-collection/svg/volume-control.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<path style="fill:none;stroke:#659C35;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M1,36.5
+ c0-16.016,12.984-29,29-29s29,12.984,29,29"/>
+<circle style="fill:#556080;" cx="30" cy="37.5" r="16"/>
+<line style="fill:none;stroke:#7383BF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="41.314" y1="26.186" x2="30" y2="37.5"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/warning.svg b/img/icons/essential-collection/svg/warning.svg
new file mode 100644
index 00000000..666e30d3
--- /dev/null
+++ b/img/icons/essential-collection/svg/warning.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<circle style="fill:#EFCE4A;" cx="25" cy="25" r="25"/>
+<line style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="25" y1="10" x2="25" y2="32"/>
+<line style="fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="25" y1="37" x2="25" y2="39"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/wifi-1.svg b/img/icons/essential-collection/svg/wifi-1.svg
new file mode 100644
index 00000000..3019cc5f
--- /dev/null
+++ b/img/icons/essential-collection/svg/wifi-1.svg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 59 59" style="enable-background:new 0 0 59 59;" xml:space="preserve">
+<path style="fill:#ED8A19;" d="M9.7,41.598c-0.256,0-0.512-0.098-0.707-0.293C-2.313,29.998-2.313,11.6,8.993,0.293
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414c-10.527,10.527-10.527,27.656,0,38.184c0.391,0.391,0.391,1.023,0,1.414
+ C10.212,41.5,9.956,41.598,9.7,41.598z"/>
+<path style="fill:#ED8A19;" d="M49.298,41.598c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414
+ c5.092-5.091,7.896-11.871,7.896-19.092S53.683,6.798,48.591,1.707c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0
+ c5.47,5.469,8.481,12.751,8.481,20.506s-3.012,15.037-8.481,20.506C49.81,41.5,49.554,41.598,49.298,41.598z"/>
+<path style="fill:#EBBA16;" d="M13.944,37.355c-0.256,0-0.512-0.098-0.707-0.293c-8.968-8.968-8.968-23.56,0-32.527
+ c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414c-8.188,8.188-8.188,21.511,0,29.699c0.391,0.391,0.391,1.023,0,1.414
+ C14.455,37.258,14.199,37.355,13.944,37.355z"/>
+<path style="fill:#EBBA16;" d="M45.056,37.355c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414
+ c8.188-8.188,8.188-21.511,0-29.699c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0c8.968,8.968,8.968,23.56,0,32.527
+ C45.568,37.258,45.312,37.355,45.056,37.355z"/>
+<path style="fill:#EFCE4A;" d="M18.186,33.112c-0.256,0-0.512-0.098-0.707-0.293c-3.206-3.206-4.972-7.475-4.972-12.021
+ s1.766-8.814,4.972-12.021c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414c-5.849,5.849-5.849,15.364,0,21.213
+ c0.391,0.391,0.391,1.023,0,1.414C18.698,33.015,18.442,33.112,18.186,33.112z"/>
+<path style="fill:#EFCE4A;" d="M40.814,33.112c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414
+ c5.849-5.849,5.849-15.364,0-21.213c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0c3.206,3.206,4.972,7.475,4.972,12.021
+ s-1.766,8.814-4.972,12.021C41.325,33.015,41.07,33.112,40.814,33.112z"/>
+<path style="fill:#DC691D;" d="M35.5,21c0-3.314-2.686-6-6-6s-6,2.686-6,6c0,2.978,2.172,5.443,5.017,5.913
+ c-0.003,0.03-0.018,0.056-0.018,0.087v31c0,0.553,0.447,1,1,1s1-0.447,1-1V27c0-0.031-0.015-0.057-0.018-0.087
+ C33.327,26.443,35.5,23.979,35.5,21z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/wifi.svg b/img/icons/essential-collection/svg/wifi.svg
new file mode 100644
index 00000000..e58d1410
--- /dev/null
+++ b/img/icons/essential-collection/svg/wifi.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 54.908 54.908" style="enable-background:new 0 0 54.908 54.908;" xml:space="preserve">
+<path style="fill:#424A60;" d="M53.908,20.83c-0.256,0-0.512-0.098-0.707-0.293C46.335,13.67,37.191,9.889,27.454,9.889
+ S8.573,13.67,1.707,20.537c-0.391,0.391-1.023,0.391-1.414,0s-0.391-1.023,0-1.414c7.244-7.244,16.89-11.233,27.161-11.233
+ s19.918,3.989,27.161,11.233c0.391,0.391,0.391,1.023,0,1.414C54.42,20.732,54.164,20.83,53.908,20.83z"/>
+<path style="fill:#9777A8;" d="M6.878,26.708c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414
+ c11.736-11.736,30.831-11.734,42.565,0c0.391,0.391,0.391,1.023,0,1.414s-1.023,0.391-1.414,0
+ c-10.956-10.956-28.782-10.956-39.737,0C7.39,26.61,7.134,26.708,6.878,26.708z"/>
+<path style="fill:#7FABDA;" d="M42.151,32.586c-0.256,0-0.512-0.098-0.707-0.293c-3.73-3.73-8.699-5.785-13.99-5.785
+ c-5.291,0-10.259,2.055-13.99,5.785c-0.391,0.391-1.023,0.391-1.414,0s-0.391-1.023,0-1.414c4.108-4.108,9.579-6.371,15.404-6.371
+ c5.825,0,11.295,2.263,15.404,6.371c0.391,0.391,0.391,1.023,0,1.414C42.663,32.489,42.407,32.586,42.151,32.586z"/>
+<path style="fill:#7FABDA;" d="M27.454,33.916c-3.612,0-6.551,2.939-6.551,6.552s2.939,6.552,6.551,6.552
+ c3.613,0,6.552-2.939,6.552-6.552S31.067,33.916,27.454,33.916z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/windows-1.svg b/img/icons/essential-collection/svg/windows-1.svg
new file mode 100644
index 00000000..67c443c7
--- /dev/null
+++ b/img/icons/essential-collection/svg/windows-1.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="14" y="20" style="fill:#7383BF;" width="44" height="32"/>
+<polygon style="fill:#3B4256;" points="7,13 7,38 0,38 0,6 44,6 44,13 "/>
+<polygon style="fill:#556080;" points="14,20 14,45 7,45 7,13 51,13 51,20 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/windows-2.svg b/img/icons/essential-collection/svg/windows-2.svg
new file mode 100644
index 00000000..dc111b3f
--- /dev/null
+++ b/img/icons/essential-collection/svg/windows-2.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 56 56" style="enable-background:new 0 0 56 56;" xml:space="preserve">
+<rect x="8" y="5" style="fill:#FC3952;" width="40" height="46"/>
+<g>
+ <rect x="48" y="9" style="fill:#26B99A;" width="4" height="38"/>
+ <rect x="4" y="9" style="fill:#26B99A;" width="4" height="38"/>
+</g>
+<g>
+ <rect x="52" y="13" style="fill:#EFCE4A;" width="4" height="30"/>
+ <rect y="13" style="fill:#EFCE4A;" width="4" height="30"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/windows-3.svg b/img/icons/essential-collection/svg/windows-3.svg
new file mode 100644
index 00000000..91410ef9
--- /dev/null
+++ b/img/icons/essential-collection/svg/windows-3.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="14" y="6" style="fill:#71C3A9;" width="44" height="32"/>
+<polygon style="fill:#14A085;" points="7,45 7,20 0,20 0,52 44,52 44,45 "/>
+<polygon style="fill:#26B99A;" points="14,38 14,13 7,13 7,45 51,45 51,38 "/>
+<g>
+ <circle style="fill:#39EAAF;" cx="33" cy="43" r="1"/>
+ <circle style="fill:#39EAAF;" cx="36" cy="40" r="1"/>
+ <circle style="fill:#39EAAF;" cx="39" cy="43" r="1"/>
+ <circle style="fill:#39EAAF;" cx="45" cy="43" r="1"/>
+ <circle style="fill:#39EAAF;" cx="42" cy="40" r="1"/>
+ <circle style="fill:#39EAAF;" cx="48" cy="40" r="1"/>
+ <circle style="fill:#39EAAF;" cx="27" cy="43" r="1"/>
+ <circle style="fill:#39EAAF;" cx="30" cy="40" r="1"/>
+ <circle style="fill:#39EAAF;" cx="9" cy="43" r="1"/>
+ <circle style="fill:#39EAAF;" cx="9" cy="37" r="1"/>
+ <circle style="fill:#39EAAF;" cx="12" cy="40" r="1"/>
+ <circle style="fill:#39EAAF;" cx="12" cy="34" r="1"/>
+ <circle style="fill:#39EAAF;" cx="15" cy="43" r="1"/>
+ <circle style="fill:#39EAAF;" cx="21" cy="43" r="1"/>
+ <circle style="fill:#39EAAF;" cx="18" cy="40" r="1"/>
+ <circle style="fill:#39EAAF;" cx="24" cy="40" r="1"/>
+ <circle style="fill:#39EAAF;" cx="9" cy="31" r="1"/>
+ <circle style="fill:#39EAAF;" cx="9" cy="25" r="1"/>
+ <circle style="fill:#39EAAF;" cx="12" cy="28" r="1"/>
+ <circle style="fill:#39EAAF;" cx="12" cy="22" r="1"/>
+ <circle style="fill:#39EAAF;" cx="9" cy="19" r="1"/>
+ <circle style="fill:#39EAAF;" cx="12" cy="16" r="1"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/windows-4.svg b/img/icons/essential-collection/svg/windows-4.svg
new file mode 100644
index 00000000..ce847d8e
--- /dev/null
+++ b/img/icons/essential-collection/svg/windows-4.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="14" y="20" style="fill:#EBBA16;" width="44" height="32"/>
+<polygon style="fill:#DC691D;" points="7,13 7,38 0,38 0,6 44,6 44,13 "/>
+<polygon style="fill:#ED8A19;" points="14,20 14,45 7,45 7,13 51,13 51,20 "/>
+<g>
+ <circle style="fill:#EFCE4A;" cx="33" cy="15" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="36" cy="18" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="39" cy="15" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="45" cy="15" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="42" cy="18" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="48" cy="18" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="27" cy="15" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="30" cy="18" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="9" cy="15" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="9" cy="21" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="12" cy="18" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="12" cy="24" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="15" cy="15" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="21" cy="15" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="18" cy="18" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="24" cy="18" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="9" cy="27" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="9" cy="33" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="12" cy="30" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="12" cy="36" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="9" cy="39" r="1"/>
+ <circle style="fill:#EFCE4A;" cx="12" cy="42" r="1"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/windows.svg b/img/icons/essential-collection/svg/windows.svg
new file mode 100644
index 00000000..4eb5a52d
--- /dev/null
+++ b/img/icons/essential-collection/svg/windows.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<rect x="14" y="6" style="fill:#48A0DC;" width="44" height="32"/>
+<polygon style="fill:#2F6584;" points="7,45 7,20 0,20 0,52 44,52 44,45 "/>
+<polygon style="fill:#3E87AF;" points="14,38 14,13 7,13 7,45 51,45 51,38 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/wireless-internet.svg b/img/icons/essential-collection/svg/wireless-internet.svg
new file mode 100644
index 00000000..769bd211
--- /dev/null
+++ b/img/icons/essential-collection/svg/wireless-internet.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve">
+<circle style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-miterlimit:10;" cx="30" cy="32.007" r="3"/>
+<path style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M34.055,38.891
+ C36.411,37.498,38,34.937,38,32.007c0-4.411-3.589-8-8-8s-8,3.589-8,8c0,2.93,1.589,5.491,3.945,6.884"/>
+<path style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M44.717,56.993
+ C53.263,51.948,59,42.65,59,32.007c0-16.016-12.984-29-29-29s-29,12.984-29,29C1,42.65,6.737,51.948,15.283,56.993"/>
+<path style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M41.16,50.955
+ C47.641,47.123,52,40.066,52,32.007c0-12.131-9.869-22-22-22s-22,9.869-22,22c0,8.059,4.359,15.116,10.84,18.948"/>
+<path style="fill:none;stroke:#EBBA16;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" d="M37.603,44.915
+ C42.021,42.302,45,37.502,45,32.007c0-8.271-6.729-15-15-15s-15,6.729-15,15c0,5.495,2.979,10.295,7.397,12.908"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/worldwide-1.svg b/img/icons/essential-collection/svg/worldwide-1.svg
new file mode 100644
index 00000000..ace324cd
--- /dev/null
+++ b/img/icons/essential-collection/svg/worldwide-1.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#A1C8EC;" cx="31.494" cy="20" r="20"/>
+<path style="fill:#556080;" d="M49.879,36.971l-3.535-3.535L44.93,34.85l2.105,2.105c-9.013,8.271-23.073,8.038-31.804-0.691
+ C10.894,31.927,8.506,26.151,8.506,20c0-5.815,2.135-11.296,6.033-15.541l2.106,2.105l1.414-1.414l-3.535-3.535l-0.707,0.707
+ C9.102,7.037,6.506,13.314,6.506,20s2.597,12.963,7.312,17.678c4.481,4.481,10.375,7.044,16.688,7.288V55c0,0.553,0.447,1,1,1
+ s1-0.447,1-1V44.965c6.304-0.249,12.19-2.811,16.666-7.287L49.879,36.971z"/>
+<rect x="21.506" y="55" style="fill:#556080;" width="20" height="3"/>
+<path style="fill:#23A24D;" d="M20.266,3.45c-0.006,0.341-0.017,0.696-0.037,1.081c-0.01,0.185,0.023,0.37,0.101,0.538
+ c1.356,2.922,3.101,7.882,6.081,9.024c1.449,0.556,2.788,0.346,4.161,1.019c0.147,0.072,0.361,0.239,0.453,0.374
+ c0.698,1.021,0.296,2.517,0.988,2.883c0.548,0.29,0.859,0.881,0.625,1.455c-0.955,2.343-0.129,5.023,2.092,6.863
+ c1.563,1.294,0.262,4.295-1.053,6.65c-0.47,0.842,0.368,1.815,1.277,1.493c1.437-0.511,2.627-1.252,4.004-2.438
+ c1.997-1.718,2.429-3.589,4.409-5.047c0.022-0.016,0.038-0.036,0.047-0.062c0.506-1.483,2.078-4.722,0.492-5.547
+ c-1.481-0.769-2.035-2.997-3.48-4.515c-0.166-0.174-0.402-0.261-0.641-0.292c-1.771-0.228-2.569-1.576-3.76-0.68
+ c-0.893,0.671-1.896,0.262-2.208-0.811c-0.102-0.35-0.28-0.662-0.923-0.86c-0.488-0.15-0.726-0.704-0.55-1.183
+ c0.003-0.007,0.005-0.014,0.008-0.021c0.235-0.641-1.089-0.543-1.763-0.431c-0.189,0.031,0.452-0.73,0.241-0.606
+ c-0.828,0.489-1.856-0.355-1.812-1.315c0.045-0.974,0.227-0.928,1.897-1.12c1.798-0.837,2.668-0.227,2.61,1.829
+ c1.111,0.165,1.5-0.327,1.165-1.473c-0.098-0.335-0.019-0.709,0.193-0.985c2.047-2.664,3.758-3.825,6.893-4.901
+ c0.465-0.16,0.727-0.625,0.666-1.1C39.297,1.21,35.539,0,31.494,0C27.331,0,23.467,1.274,20.266,3.45z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/worldwide.svg b/img/icons/essential-collection/svg/worldwide.svg
new file mode 100644
index 00000000..9a93c9a2
--- /dev/null
+++ b/img/icons/essential-collection/svg/worldwide.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" xml:space="preserve">
+<circle style="fill:#7FABDA;" cx="29" cy="29" r="29"/>
+<path style="fill:#1A9172;" d="M43.887,4.486c0.121-0.042,0.219-0.112,0.32-0.179C39.785,1.578,34.578,0,29,0
+ c-6.134,0-11.819,1.909-16.504,5.159c0.025,0.116,0.057,0.231,0.108,0.341c1.978,4.262,4.523,11.496,8.869,13.163
+ c2.113,0.81,4.066,0.505,6.069,1.486c0.214,0.104,0.527,0.348,0.661,0.545c1.018,1.489,0.432,3.671,1.442,4.205
+ c0.799,0.422,1.253,1.285,0.912,2.122c-1.393,3.418-0.188,7.327,3.052,10.01c2.28,1.888,0.382,6.264-1.536,9.7
+ c-0.686,1.229,0.537,2.648,1.862,2.177c2.096-0.746,3.831-1.827,5.84-3.555c2.913-2.505,3.543-5.235,6.43-7.362
+ c0.032-0.023,0.056-0.052,0.069-0.09c0.738-2.164,3.031-6.887,0.717-8.09c-2.16-1.122-2.968-4.371-5.076-6.585
+ c-0.242-0.254-0.586-0.38-0.934-0.425c-2.584-0.333-3.746-2.298-5.485-0.991c-1.302,0.979-2.766,0.383-3.22-1.182
+ c-0.148-0.51-0.409-0.965-1.346-1.254c-0.712-0.219-1.058-1.026-0.802-1.725c0.004-0.01,0.007-0.021,0.011-0.031
+ c0.343-0.934-1.589-0.792-2.571-0.628c-0.275,0.046,0.659-1.065,0.352-0.885c-1.208,0.713-2.707-0.518-2.643-1.919
+ c0.066-1.421,0.331-1.353,2.767-1.633c2.622-1.221,3.891-0.331,3.807,2.668c1.621,0.24,2.187-0.476,1.699-2.149
+ c-0.143-0.489-0.028-1.034,0.282-1.437C36.82,7.749,39.315,6.055,43.887,4.486z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/zoom-in.svg b/img/icons/essential-collection/svg/zoom-in.svg
new file mode 100644
index 00000000..669554f3
--- /dev/null
+++ b/img/icons/essential-collection/svg/zoom-in.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52.966 52.966" style="enable-background:new 0 0 52.966 52.966;" xml:space="preserve">
+<circle style="fill:#7383BF;stroke:#556080;stroke-width:2;stroke-miterlimit:10;" cx="21.983" cy="21" r="20"/>
+<path style="fill:#FFFFFF;" d="M28.983,22h-14c-0.552,0-1-0.448-1-1s0.448-1,1-1h14c0.552,0,1,0.448,1,1S29.535,22,28.983,22z"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="35.437" y1="35.798" x2="50.983" y2="51.966"/>
+<path style="fill:#FFFFFF;" d="M21.983,29c-0.552,0-1-0.448-1-1V14c0-0.552,0.448-1,1-1s1,0.448,1,1v14
+ C22.983,28.552,22.535,29,21.983,29z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/essential-collection/svg/zoom-out.svg b/img/icons/essential-collection/svg/zoom-out.svg
new file mode 100644
index 00000000..0969f255
--- /dev/null
+++ b/img/icons/essential-collection/svg/zoom-out.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 52.966 52.966" style="enable-background:new 0 0 52.966 52.966;" xml:space="preserve">
+<circle style="fill:#7383BF;stroke:#556080;stroke-width:2;stroke-miterlimit:10;" cx="21.983" cy="21" r="20"/>
+<path style="fill:#FFFFFF;" d="M28.983,22h-14c-0.552,0-1-0.448-1-1s0.448-1,1-1h14c0.552,0,1,0.448,1,1S29.535,22,28.983,22z"/>
+<line style="fill:none;stroke:#556080;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;" x1="35.437" y1="35.798" x2="50.983" y2="51.966"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/img/icons/font-awesome/500px.svg b/img/icons/font-awesome/500px.svg
new file mode 100644
index 00000000..9d0fc4af
--- /dev/null
+++ b/img/icons/font-awesome/500px.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1529 1547l-6 6q-113 113-259 175-154 64-317 64-165 0-317-64-148-63-259-175-113-112-175-258-42-103-54-189-4-28 48-36 51-8 56 20 1 1 1 4 18 90 46 159 50 124 152 226 98 98 226 152 132 56 276 56 143 0 276-56 128-55 225-152l6-6q10-10 25-6 12 3 33 22 36 37 17 58zm-472-615l-66 66 63 63q21 21-7 49-17 17-32 17-10 0-19-10l-62-61-66 66q-5 5-15 5-15 0-31-16l-2-2q-18-15-18-29 0-7 8-17l66-65-66-66q-16-16 14-45 18-18 31-18 6 0 13 5l65 66 65-65q18-17 48 13 27 27 11 44zm471 57q0 118-46 228-45 105-126 186-80 80-187 126t-228 46-228-46-187-126q-82-82-125-186-15-33-15-40h-1q-9-27 43-44 50-16 60 12 37 99 97 167h1v-341q3-136 102-232 105-103 253-103 147 0 251 103t104 249q0 147-104.5 251t-250.5 104q-58 0-112-16-28-11-13-61 16-51 44-43l14 3q14 3 33 6t30 3q104 0 176-71.5t72-174.5q0-101-72-171-71-71-175-71-107 0-178 80-64 72-64 160v413q110 67 242 67 96 0 185-36.5t156-103.5 103.5-155 36.5-183q0-198-141-339-140-140-339-140-200 0-340 140-53 53-77 87l-2 2q-8 11-13 15.5t-21.5 9.5-38.5-3q-21-5-36.5-16.5t-15.5-26.5v-680q0-15 10.5-26.5t27.5-11.5h877q30 0 30 55t-30 55h-811v483h1q40-42 102-84t108-61q109-46 231-46 121 0 228 46t187 126q81 81 126 186 46 112 46 229zm-31-581q9 8 9 18t-5.5 18-16.5 21q-26 26-39 26-9 0-16-7-106-91-207-133-128-56-276-56-133 0-262 49-27 10-45-37-9-25-8-38 3-16 16-20 130-57 299-57 164 0 316 64 137 58 235 152z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/address-book-o.svg b/img/icons/font-awesome/address-book-o.svg
new file mode 100644
index 00000000..2fdbd3dd
--- /dev/null
+++ b/img/icons/font-awesome/address-book-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1092 644q0 107-76.5 183t-183.5 76-183.5-76-76.5-183q0-108 76.5-184t183.5-76 183.5 76 76.5 184zm-48 220q46 0 82.5 17t60 47.5 39.5 67 24 81 11.5 82.5 3.5 79q0 67-39.5 118.5t-105.5 51.5h-576q-66 0-105.5-51.5t-39.5-118.5q0-48 4.5-93.5t18.5-98.5 36.5-91.5 63-64.5 93.5-26h5q7 4 32 19.5t35.5 21 33 17 37 16 35 9 39.5 4.5 39.5-4.5 35-9 37-16 33-17 35.5-21 32-19.5zm684-256q0 13-9.5 22.5t-22.5 9.5h-96v128h96q13 0 22.5 9.5t9.5 22.5v192q0 13-9.5 22.5t-22.5 9.5h-96v128h96q13 0 22.5 9.5t9.5 22.5v192q0 13-9.5 22.5t-22.5 9.5h-96v224q0 66-47 113t-113 47h-1216q-66 0-113-47t-47-113v-1472q0-66 47-113t113-47h1216q66 0 113 47t47 113v224h96q13 0 22.5 9.5t9.5 22.5v192zm-256 1024v-1472q0-13-9.5-22.5t-22.5-9.5h-1216q-13 0-22.5 9.5t-9.5 22.5v1472q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5-9.5t9.5-22.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/address-book.svg b/img/icons/font-awesome/address-book.svg
new file mode 100644
index 00000000..61744158
--- /dev/null
+++ b/img/icons/font-awesome/address-book.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1265 1238q0-57-5.5-107t-21-100.5-39.5-86-64-58-91-22.5q-6 4-33.5 20.5t-42.5 24.5-40.5 20-49 17-46.5 5-46.5-5-49-17-40.5-20-42.5-24.5-33.5-20.5q-51 0-91 22.5t-64 58-39.5 86-21 100.5-5.5 107q0 73 42 121.5t103 48.5h576q61 0 103-48.5t42-121.5zm-173-594q0-108-76.5-184t-183.5-76-183.5 76-76.5 184q0 107 76.5 183t183.5 76 183.5-76 76.5-183zm636 540v192q0 14-9 23t-23 9h-96v224q0 66-47 113t-113 47h-1216q-66 0-113-47t-47-113v-1472q0-66 47-113t113-47h1216q66 0 113 47t47 113v224h96q14 0 23 9t9 23v192q0 14-9 23t-23 9h-96v128h96q14 0 23 9t9 23v192q0 14-9 23t-23 9h-96v128h96q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/address-card-o.svg b/img/icons/font-awesome/address-card-o.svg
new file mode 100644
index 00000000..4d9ad682
--- /dev/null
+++ b/img/icons/font-awesome/address-card-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1131q0 64-37 106.5t-91 42.5h-512q-54 0-91-42.5t-37-106.5 9-117.5 29.5-103 60.5-78 97-28.5q6 4 30 18t37.5 21.5 35.5 17.5 43 14.5 42 4.5 42-4.5 43-14.5 35.5-17.5 37.5-21.5 30-18q57 0 97 28.5t60.5 78 29.5 103 9 117.5zm-157-520q0 94-66.5 160.5t-160.5 66.5-160.5-66.5-66.5-160.5 66.5-160.5 160.5-66.5 160.5 66.5 66.5 160.5zm925 445v64q0 14-9 23t-23 9h-576q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h576q14 0 23 9t9 23zm0-252v56q0 15-10.5 25.5t-25.5 10.5h-568q-15 0-25.5-10.5t-10.5-25.5v-56q0-15 10.5-25.5t25.5-10.5h568q15 0 25.5 10.5t10.5 25.5zm0-260v64q0 14-9 23t-23 9h-576q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h576q14 0 23 9t9 23zm128 960v-1216q0-13-9.5-22.5t-22.5-9.5h-1728q-13 0-22.5 9.5t-9.5 22.5v1216q0 13 9.5 22.5t22.5 9.5h352v-96q0-14 9-23t23-9h64q14 0 23 9t9 23v96h768v-96q0-14 9-23t23-9h64q14 0 23 9t9 23v96h352q13 0 22.5-9.5t9.5-22.5zm128-1216v1216q0 66-47 113t-113 47h-1728q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1728q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/address-card.svg b/img/icons/font-awesome/address-card.svg
new file mode 100644
index 00000000..8565bc82
--- /dev/null
+++ b/img/icons/font-awesome/address-card.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1131q0-64-9-117.5t-29.5-103-60.5-78-97-28.5q-6 4-30 18t-37.5 21.5-35.5 17.5-43 14.5-42 4.5-42-4.5-43-14.5-35.5-17.5-37.5-21.5-30-18q-57 0-97 28.5t-60.5 78-29.5 103-9 117.5 37 106.5 91 42.5h512q54 0 91-42.5t37-106.5zm-157-520q0-94-66.5-160.5t-160.5-66.5-160.5 66.5-66.5 160.5 66.5 160.5 160.5 66.5 160.5-66.5 66.5-160.5zm925 509v-64q0-14-9-23t-23-9h-576q-14 0-23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23-9t9-23zm0-260v-56q0-15-10.5-25.5t-25.5-10.5h-568q-15 0-25.5 10.5t-10.5 25.5v56q0 15 10.5 25.5t25.5 10.5h568q15 0 25.5-10.5t10.5-25.5zm0-252v-64q0-14-9-23t-23-9h-576q-14 0-23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23-9t9-23zm256-320v1216q0 66-47 113t-113 47h-352v-96q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v96h-768v-96q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v96h-352q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1728q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/adjust.svg b/img/icons/font-awesome/adjust.svg
new file mode 100644
index 00000000..d2b8d87b
--- /dev/null
+++ b/img/icons/font-awesome/adjust.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 1440v-1088q-148 0-273 73t-198 198-73 273 73 273 198 198 273 73zm768-544q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/adn.svg b/img/icons/font-awesome/adn.svg
new file mode 100644
index 00000000..1cb76141
--- /dev/null
+++ b/img/icons/font-awesome/adn.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 622l201 306h-402zm365 530h94l-459-691-459 691h94l104-160h522zm403-256q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/align-center.svg b/img/icons/font-awesome/align-center.svg
new file mode 100644
index 00000000..9eaf6ddd
--- /dev/null
+++ b/img/icons/font-awesome/align-center.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 1344v128q0 26-19 45t-45 19h-1664q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1664q26 0 45 19t19 45zm-384-384v128q0 26-19 45t-45 19h-896q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h896q26 0 45 19t19 45zm256-384v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45zm-384-384v128q0 26-19 45t-45 19h-640q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h640q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/align-justify.svg b/img/icons/font-awesome/align-justify.svg
new file mode 100644
index 00000000..8e8ce569
--- /dev/null
+++ b/img/icons/font-awesome/align-justify.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 1344v128q0 26-19 45t-45 19h-1664q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1664q26 0 45 19t19 45zm0-384v128q0 26-19 45t-45 19h-1664q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1664q26 0 45 19t19 45zm0-384v128q0 26-19 45t-45 19h-1664q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1664q26 0 45 19t19 45zm0-384v128q0 26-19 45t-45 19h-1664q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1664q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/align-left.svg b/img/icons/font-awesome/align-left.svg
new file mode 100644
index 00000000..0d6e3fcc
--- /dev/null
+++ b/img/icons/font-awesome/align-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 1344v128q0 26-19 45t-45 19h-1664q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1664q26 0 45 19t19 45zm-384-384v128q0 26-19 45t-45 19h-1280q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1280q26 0 45 19t19 45zm256-384v128q0 26-19 45t-45 19h-1536q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1536q26 0 45 19t19 45zm-384-384v128q0 26-19 45t-45 19h-1152q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1152q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/align-right.svg b/img/icons/font-awesome/align-right.svg
new file mode 100644
index 00000000..1ae8ca83
--- /dev/null
+++ b/img/icons/font-awesome/align-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 1344v128q0 26-19 45t-45 19h-1664q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1664q26 0 45 19t19 45zm0-384v128q0 26-19 45t-45 19h-1280q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1280q26 0 45 19t19 45zm0-384v128q0 26-19 45t-45 19h-1536q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1536q26 0 45 19t19 45zm0-384v128q0 26-19 45t-45 19h-1152q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1152q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/amazon.svg b/img/icons/font-awesome/amazon.svg
new file mode 100644
index 00000000..ff1d58ee
--- /dev/null
+++ b/img/icons/font-awesome/amazon.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1551 1476q15-6 26-3t11 17.5-15 33.5q-13 16-44 43.5t-95.5 68-141 74-188 58-229.5 24.5q-119 0-238-31t-209-76.5-172.5-104-132.5-105-84-87.5q-8-9-10-16.5t1-12 8-7 11.5-2 11.5 4.5q192 117 300 166 389 176 799 90 190-40 391-135zm207-115q11 16 2.5 69.5t-28.5 102.5q-34 83-85 124-17 14-26 9t0-24q21-45 44.5-121.5t6.5-98.5q-5-7-15.5-11.5t-27-6-29.5-2.5-35 0-31.5 2-31 3-22.5 2q-6 1-13 1.5t-11 1-8.5 1-7 .5h-10l-3-.5-2-1.5-1.5-3q-6-16 47-40t103-30q46-7 108-1t76 24zm-394-443q0 31 13.5 64t32 58 37.5 46 33 32l13 11-227 224q-40-37-79-75.5t-58-58.5l-19-20q-11-11-25-33-38 59-97.5 102.5t-127.5 63.5-140 23-137.5-21-117.5-65.5-83-113-31-162.5q0-84 28-154t72-116.5 106.5-83 122.5-57 130-34.5 119.5-18.5 99.5-6.5v-127q0-65-21-97-34-53-121-53-6 0-16.5 1t-40.5 12-56 29.5-56 59.5-48 96l-294-27q0-60 22-119t67-113 108-95 151.5-65.5 190.5-24.5q100 0 181 25t129.5 61.5 81 83 45 86 12.5 73.5v589zm-672 21q0 86 70 133 66 44 139 22 84-25 114-123 14-45 14-101v-162q-59 2-111 12t-106.5 33.5-87 71-32.5 114.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/ambulance.svg b/img/icons/font-awesome/ambulance.svg
new file mode 100644
index 00000000..2b744ecb
--- /dev/null
+++ b/img/icons/font-awesome/ambulance.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 1408q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm-384-512h384v-256h-158q-14 2-22 9l-195 195q-7 12-9 22v30zm1280 512q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm128-672v-192q0-14-9-23t-23-9h-224v-224q0-14-9-23t-23-9h-192q-14 0-23 9t-9 23v224h-224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23-9t9-23v-224h224q14 0 23-9t9-23zm256-544v1152q0 26-19 45t-45 19h-192q0 106-75 181t-181 75-181-75-75-181h-384q0 106-75 181t-181 75-181-75-75-181h-128q-26 0-45-19t-19-45 19-45 45-19v-416q0-26 13-58t32-51l198-198q19-19 51-32t58-13h160v-320q0-26 19-45t45-19h1152q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/american-sign-language-interpreting.svg b/img/icons/font-awesome/american-sign-language-interpreting.svg
new file mode 100644
index 00000000..241cf1a2
--- /dev/null
+++ b/img/icons/font-awesome/american-sign-language-interpreting.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1032 960q-59-2-84-55-17-34-48-53.5t-68-19.5q-53 0-90.5 37.5t-37.5 90.5q0 56 36 89l10 8q34 31 82 31 37 0 68-19.5t48-53.5q25-53 84-55zm568-128q0-56-36-89l-10-8q-34-31-82-31-37 0-68 19.5t-48 53.5q-25 53-84 55 59 2 84 55 17 34 48 53.5t68 19.5q53 0 90.5-37.5t37.5-90.5zm-426-221q-17 35-55 48t-73-4q-62-31-134-31-51 0-99 17 3 0 9.5-.5t9.5-.5q92 0 170.5 50t118.5 133q17 36 3.5 73.5t-49.5 54.5q-18 9-39 9 21 0 39 9 36 17 49.5 54.5t-3.5 73.5q-40 83-118.5 133t-170.5 50h-6q-16-2-44-4l-290-27-239 120q-14 7-29 7-40 0-57-35l-160-320q-11-23-4-47.5t29-37.5l209-119 148-267q17-155 91.5-291.5t195.5-236.5q31-25 70.5-21.5t64.5 34.5 21.5 70-34.5 65q-70 59-117 128 123-84 267-101 40-5 71.5 19t35.5 64q5 40-19 71.5t-64 35.5q-84 10-159 55 46-10 99-10 115 0 218 50 36 18 49 55.5t-5 73.5zm963-160l160 320q11 23 4 47.5t-29 37.5l-209 119-148 267q-17 155-91.5 291.5t-195.5 236.5q-26 22-61 22-45 0-74-35-25-31-21.5-70t34.5-65q70-59 117-128-123 84-267 101-4 1-12 1-36 0-63.5-24t-31.5-60q-5-40 19-71.5t64-35.5q84-10 159-55-46 10-99 10-115 0-218-50-36-18-49-55.5t5-73.5q17-35 55-48t73 4q62 31 134 31 51 0 99-17-3 0-9.5.5t-9.5.5q-92 0-170.5-50t-118.5-133q-17-36-3.5-73.5t49.5-54.5q18-9 39-9-21 0-39-9-36-17-49.5-54.5t3.5-73.5q40-83 118.5-133t170.5-50h7q14 2 42 4l291 27 239-120q14-7 29-7 40 0 57 35z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/anchor.svg b/img/icons/font-awesome/anchor.svg
new file mode 100644
index 00000000..a0cc4ed9
--- /dev/null
+++ b/img/icons/font-awesome/anchor.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M960 256q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm832 928v352q0 22-20 30-8 2-12 2-12 0-23-9l-93-93q-119 143-318.5 226.5t-429.5 83.5-429.5-83.5-318.5-226.5l-93 93q-9 9-23 9-4 0-12-2-20-8-20-30v-352q0-14 9-23t23-9h352q22 0 30 20 8 19-7 35l-100 100q67 91 189.5 153.5t271.5 82.5v-647h-192q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h192v-163q-58-34-93-92.5t-35-128.5q0-106 75-181t181-75 181 75 75 181q0 70-35 128.5t-93 92.5v163h192q26 0 45 19t19 45v128q0 26-19 45t-45 19h-192v647q149-20 271.5-82.5t189.5-153.5l-100-100q-15-16-7-35 8-20 30-20h352q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/android.svg b/img/icons/font-awesome/android.svg
new file mode 100644
index 00000000..3544acbb
--- /dev/null
+++ b/img/icons/font-awesome/android.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M685 483q16 0 27.5-11.5t11.5-27.5-11.5-27.5-27.5-11.5-27 11.5-11 27.5 11 27.5 27 11.5zm422 0q16 0 27-11.5t11-27.5-11-27.5-27-11.5-27.5 11.5-11.5 27.5 11.5 27.5 27.5 11.5zm-812 184q42 0 72 30t30 72v430q0 43-29.5 73t-72.5 30-73-30-30-73v-430q0-42 30-72t73-30zm1060 19v666q0 46-32 78t-77 32h-75v227q0 43-30 73t-73 30-73-30-30-73v-227h-138v227q0 43-30 73t-73 30q-42 0-72-30t-30-73l-1-227h-74q-46 0-78-32t-32-78v-666h918zm-232-405q107 55 171 153.5t64 215.5h-925q0-117 64-215.5t172-153.5l-71-131q-7-13 5-20 13-6 20 6l72 132q95-42 201-42t201 42l72-132q7-12 20-6 12 7 5 20zm477 488v430q0 43-30 73t-73 30q-42 0-72-30t-30-73v-430q0-43 30-72.5t72-29.5q43 0 73 29.5t30 72.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/angellist.svg b/img/icons/font-awesome/angellist.svg
new file mode 100644
index 00000000..68258cbf
--- /dev/null
+++ b/img/icons/font-awesome/angellist.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1209 378l-114 328 117 21q165-451 165-518 0-56-38-56-57 0-130 225zm-299 687l33 88q37-42 71-67l-33-5.5-38.5-7-32.5-8.5zm-292-896q0 98 159 521 17-10 49-10 15 0 75 5l-121-351q-75-220-123-220-19 0-29 17.5t-10 37.5zm-79 759q0 36 51.5 119t117.5 153 100 70q14 0 25.5-13t11.5-27q0-24-32-102-13-32-32-72t-47.5-89-61.5-81-62-32q-20 0-45.5 27t-25.5 47zm-158 335q0 41 25 104 59 145 183.5 227t281.5 82q227 0 382-170 152-169 152-427 0-43-1-67t-11.5-62-30.5-56q-56-49-211.5-75.5t-270.5-26.5q-37 0-49 11-12 5-12 35 0 34 21.5 60t55.5 40 77.5 23.5 87.5 11.5 85 4 70 0h23q24 0 40 19 15 19 19 55-28 28-96 54-61 22-93 46-64 46-108.5 114t-44.5 137q0 31 18.5 88.5t18.5 87.5l-3 12q-4 12-4 14-137-10-146-216-8 2-41 2 2 7 2 21 0 53-40.5 89.5t-94.5 36.5q-82 0-166.5-78t-84.5-159q0-34 33-67 52 64 60 76 77 104 133 104 12 0 26.5-8.5t14.5-20.5q0-34-87.5-145t-116.5-111q-43 0-70 44.5t-27 90.5zm-114 9q0-101 42.5-163t136.5-88q-28-74-28-104 0-62 61-123t122-61q29 0 70 15-163-462-163-567 0-80 41-130.5t119-50.5q131 0 325 581 6 17 8 23 6-16 29-79.5t43.5-118.5 54-127.5 64.5-123 70.5-86.5 76.5-36q71 0 112 49t41 122q0 108-159 550 61 15 100.5 46t58.5 78 26 93.5 7 110.5q0 150-47 280t-132 225-211 150-278 55q-111 0-223-42-149-57-258-191.5t-109-286.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/angle-double-down.svg b/img/icons/font-awesome/angle-double-down.svg
new file mode 100644
index 00000000..ed8e6a9d
--- /dev/null
+++ b/img/icons/font-awesome/angle-double-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1395 864q0 13-10 23l-466 466q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l393 393 393-393q10-10 23-10t23 10l50 50q10 10 10 23zm0-384q0 13-10 23l-466 466q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l393 393 393-393q10-10 23-10t23 10l50 50q10 10 10 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/angle-double-left.svg b/img/icons/font-awesome/angle-double-left.svg
new file mode 100644
index 00000000..569b3c3f
--- /dev/null
+++ b/img/icons/font-awesome/angle-double-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1011 1376q0 13-10 23l-50 50q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l466-466q10-10 23-10t23 10l50 50q10 10 10 23t-10 23l-393 393 393 393q10 10 10 23zm384 0q0 13-10 23l-50 50q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l466-466q10-10 23-10t23 10l50 50q10 10 10 23t-10 23l-393 393 393 393q10 10 10 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/angle-double-right.svg b/img/icons/font-awesome/angle-double-right.svg
new file mode 100644
index 00000000..4534e07f
--- /dev/null
+++ b/img/icons/font-awesome/angle-double-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M979 960q0 13-10 23l-466 466q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l393-393-393-393q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l466 466q10 10 10 23zm384 0q0 13-10 23l-466 466q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l393-393-393-393q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l466 466q10 10 10 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/angle-double-up.svg b/img/icons/font-awesome/angle-double-up.svg
new file mode 100644
index 00000000..74579529
--- /dev/null
+++ b/img/icons/font-awesome/angle-double-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1395 1312q0 13-10 23l-50 50q-10 10-23 10t-23-10l-393-393-393 393q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l466-466q10-10 23-10t23 10l466 466q10 10 10 23zm0-384q0 13-10 23l-50 50q-10 10-23 10t-23-10l-393-393-393 393q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l466-466q10-10 23-10t23 10l466 466q10 10 10 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/angle-down.svg b/img/icons/font-awesome/angle-down.svg
new file mode 100644
index 00000000..373fac35
--- /dev/null
+++ b/img/icons/font-awesome/angle-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1395 736q0 13-10 23l-466 466q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l393 393 393-393q10-10 23-10t23 10l50 50q10 10 10 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/angle-left.svg b/img/icons/font-awesome/angle-left.svg
new file mode 100644
index 00000000..11ead697
--- /dev/null
+++ b/img/icons/font-awesome/angle-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1203 544q0 13-10 23l-393 393 393 393q10 10 10 23t-10 23l-50 50q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l466-466q10-10 23-10t23 10l50 50q10 10 10 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/angle-right.svg b/img/icons/font-awesome/angle-right.svg
new file mode 100644
index 00000000..02aad6e5
--- /dev/null
+++ b/img/icons/font-awesome/angle-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1171 960q0 13-10 23l-466 466q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l393-393-393-393q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l466 466q10 10 10 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/angle-up.svg b/img/icons/font-awesome/angle-up.svg
new file mode 100644
index 00000000..6ae24d47
--- /dev/null
+++ b/img/icons/font-awesome/angle-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1395 1184q0 13-10 23l-50 50q-10 10-23 10t-23-10l-393-393-393 393q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l466-466q10-10 23-10t23 10l466 466q10 10 10 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/apple.svg b/img/icons/font-awesome/apple.svg
new file mode 100644
index 00000000..78f77298
--- /dev/null
+++ b/img/icons/font-awesome/apple.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1585 1215q-39 125-123 250-129 196-257 196-49 0-140-32-86-32-151-32-61 0-142 33-81 34-132 34-152 0-301-259-147-261-147-503 0-228 113-374 113-144 284-144 72 0 177 30 104 30 138 30 45 0 143-34 102-34 173-34 119 0 213 65 52 36 104 100-79 67-114 118-65 94-65 207 0 124 69 223t158 126zm-376-1173q0 61-29 136-30 75-93 138-54 54-108 72-37 11-104 17 3-149 78-257 74-107 250-148 1 3 2.5 11t2.5 11q0 4 .5 10t.5 10z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/archive.svg b/img/icons/font-awesome/archive.svg
new file mode 100644
index 00000000..235415e1
--- /dev/null
+++ b/img/icons/font-awesome/archive.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1088 832q0-26-19-45t-45-19h-256q-26 0-45 19t-19 45 19 45 45 19h256q26 0 45-19t19-45zm576-192v960q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-960q0-26 19-45t45-19h1408q26 0 45 19t19 45zm64-448v256q0 26-19 45t-45 19h-1536q-26 0-45-19t-19-45v-256q0-26 19-45t45-19h1536q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/area-chart.svg b/img/icons/font-awesome/area-chart.svg
new file mode 100644
index 00000000..83e3f376
--- /dev/null
+++ b/img/icons/font-awesome/area-chart.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M2048 1536v128h-2048v-1536h128v1408h1920zm-384-1024l256 896h-1664v-576l448-576 576 576z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrow-circle-down.svg b/img/icons/font-awesome/arrow-circle-down.svg
new file mode 100644
index 00000000..db1ddca5
--- /dev/null
+++ b/img/icons/font-awesome/arrow-circle-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1412 897q0-27-18-45l-91-91q-18-18-45-18t-45 18l-189 189v-502q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v502l-189-189q-19-19-45-19t-45 19l-91 91q-18 18-18 45t18 45l362 362 91 91q18 18 45 18t45-18l91-91 362-362q18-18 18-45zm252-1q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrow-circle-left.svg b/img/icons/font-awesome/arrow-circle-left.svg
new file mode 100644
index 00000000..34619352
--- /dev/null
+++ b/img/icons/font-awesome/arrow-circle-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 960v-128q0-26-19-45t-45-19h-502l189-189q19-19 19-45t-19-45l-91-91q-18-18-45-18t-45 18l-362 362-91 91q-18 18-18 45t18 45l91 91 362 362q18 18 45 18t45-18l91-91q18-18 18-45t-18-45l-189-189h502q26 0 45-19t19-45zm256-64q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrow-circle-o-down.svg b/img/icons/font-awesome/arrow-circle-o-down.svg
new file mode 100644
index 00000000..37151b30
--- /dev/null
+++ b/img/icons/font-awesome/arrow-circle-o-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1248 928q0 12-10 24l-319 319q-11 9-23 9t-23-9l-320-320q-15-16-7-35 8-20 30-20h192v-352q0-14 9-23t23-9h192q14 0 23 9t9 23v352h192q14 0 23 9t9 23zm-352-576q-148 0-273 73t-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273-73-273-198-198-273-73zm768 544q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrow-circle-o-left.svg b/img/icons/font-awesome/arrow-circle-o-left.svg
new file mode 100644
index 00000000..83c7e314
--- /dev/null
+++ b/img/icons/font-awesome/arrow-circle-o-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1280 800v192q0 13-9.5 22.5t-22.5 9.5h-352v192q0 14-9 23t-23 9q-12 0-24-10l-319-319q-9-9-9-23t9-23l320-320q9-9 23-9 13 0 22.5 9.5t9.5 22.5v192h352q13 0 22.5 9.5t9.5 22.5zm160 96q0-148-73-273t-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273zm224 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrow-circle-o-right.svg b/img/icons/font-awesome/arrow-circle-o-right.svg
new file mode 100644
index 00000000..ed5341b5
--- /dev/null
+++ b/img/icons/font-awesome/arrow-circle-o-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1280 896q0 14-9 23l-320 320q-9 9-23 9-13 0-22.5-9.5t-9.5-22.5v-192h-352q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h352v-192q0-14 9-23t23-9q12 0 24 10l319 319q9 9 9 23zm160 0q0-148-73-273t-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273zm224 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrow-circle-o-up.svg b/img/icons/font-awesome/arrow-circle-o-up.svg
new file mode 100644
index 00000000..cf2e8703
--- /dev/null
+++ b/img/icons/font-awesome/arrow-circle-o-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1246 876q-8 20-30 20h-192v352q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-352h-192q-14 0-23-9t-9-23q0-12 10-24l319-319q11-9 23-9t23 9l320 320q15 16 7 35zm-350-524q-148 0-273 73t-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273-73-273-198-198-273-73zm768 544q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrow-circle-right.svg b/img/icons/font-awesome/arrow-circle-right.svg
new file mode 100644
index 00000000..dc0594b5
--- /dev/null
+++ b/img/icons/font-awesome/arrow-circle-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1413 896q0-27-18-45l-91-91-362-362q-18-18-45-18t-45 18l-91 91q-18 18-18 45t18 45l189 189h-502q-26 0-45 19t-19 45v128q0 26 19 45t45 19h502l-189 189q-19 19-19 45t19 45l91 91q18 18 45 18t45-18l362-362 91-91q18-18 18-45zm251 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrow-circle-up.svg b/img/icons/font-awesome/arrow-circle-up.svg
new file mode 100644
index 00000000..bc4c01b5
--- /dev/null
+++ b/img/icons/font-awesome/arrow-circle-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1412 895q0-27-18-45l-362-362-91-91q-18-18-45-18t-45 18l-91 91-362 362q-18 18-18 45t18 45l91 91q18 18 45 18t45-18l189-189v502q0 26 19 45t45 19h128q26 0 45-19t19-45v-502l189 189q19 19 45 19t45-19l91-91q18-18 18-45zm252 1q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrow-down.svg b/img/icons/font-awesome/arrow-down.svg
new file mode 100644
index 00000000..cc6fbb25
--- /dev/null
+++ b/img/icons/font-awesome/arrow-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1675 832q0 53-37 90l-651 652q-39 37-91 37-53 0-90-37l-651-652q-38-36-38-90 0-53 38-91l74-75q39-37 91-37 53 0 90 37l294 294v-704q0-52 38-90t90-38h128q52 0 90 38t38 90v704l294-294q37-37 90-37 52 0 91 37l75 75q37 39 37 91z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrow-left.svg b/img/icons/font-awesome/arrow-left.svg
new file mode 100644
index 00000000..8963b3f3
--- /dev/null
+++ b/img/icons/font-awesome/arrow-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 896v128q0 53-32.5 90.5t-84.5 37.5h-704l293 294q38 36 38 90t-38 90l-75 76q-37 37-90 37-52 0-91-37l-651-652q-37-37-37-90 0-52 37-91l651-650q38-38 91-38 52 0 90 38l75 74q38 38 38 91t-38 91l-293 293h704q52 0 84.5 37.5t32.5 90.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrow-right.svg b/img/icons/font-awesome/arrow-right.svg
new file mode 100644
index 00000000..9853ecdb
--- /dev/null
+++ b/img/icons/font-awesome/arrow-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1600 960q0 54-37 91l-651 651q-39 37-91 37-51 0-90-37l-75-75q-38-38-38-91t38-91l293-293h-704q-52 0-84.5-37.5t-32.5-90.5v-128q0-53 32.5-90.5t84.5-37.5h704l-293-294q-38-36-38-90t38-90l75-75q38-38 90-38 53 0 91 38l651 651q37 35 37 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrow-up.svg b/img/icons/font-awesome/arrow-up.svg
new file mode 100644
index 00000000..5e21950a
--- /dev/null
+++ b/img/icons/font-awesome/arrow-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1675 971q0 51-37 90l-75 75q-38 38-91 38-54 0-90-38l-294-293v704q0 52-37.5 84.5t-90.5 32.5h-128q-53 0-90.5-32.5t-37.5-84.5v-704l-294 293q-36 38-90 38t-90-38l-75-75q-38-38-38-90 0-53 38-91l651-651q35-37 90-37 54 0 91 37l651 651q37 39 37 91z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrows-alt.svg b/img/icons/font-awesome/arrows-alt.svg
new file mode 100644
index 00000000..828741ed
--- /dev/null
+++ b/img/icons/font-awesome/arrows-alt.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1411 541l-355 355 355 355 144-144q29-31 70-14 39 17 39 59v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39 14-69l144-144-355-355-355 355 144 144q31 30 14 69-17 40-59 40h-448q-26 0-45-19t-19-45v-448q0-42 40-59 39-17 69 14l144 144 355-355-355-355-144 144q-19 19-45 19-12 0-24-5-40-17-40-59v-448q0-26 19-45t45-19h448q42 0 59 40 17 39-14 69l-144 144 355 355 355-355-144-144q-31-30-14-69 17-40 59-40h448q26 0 45 19t19 45v448q0 42-39 59-13 5-25 5-26 0-45-19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrows-h.svg b/img/icons/font-awesome/arrows-h.svg
new file mode 100644
index 00000000..880556d5
--- /dev/null
+++ b/img/icons/font-awesome/arrows-h.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 896q0 26-19 45l-256 256q-19 19-45 19t-45-19-19-45v-128h-1024v128q0 26-19 45t-45 19-45-19l-256-256q-19-19-19-45t19-45l256-256q19-19 45-19t45 19 19 45v128h1024v-128q0-26 19-45t45-19 45 19l256 256q19 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrows-v.svg b/img/icons/font-awesome/arrows-v.svg
new file mode 100644
index 00000000..20ab7ef2
--- /dev/null
+++ b/img/icons/font-awesome/arrows-v.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1216 320q0 26-19 45t-45 19h-128v1024h128q26 0 45 19t19 45-19 45l-256 256q-19 19-45 19t-45-19l-256-256q-19-19-19-45t19-45 45-19h128v-1024h-128q-26 0-45-19t-19-45 19-45l256-256q19-19 45-19t45 19l256 256q19 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/arrows.svg b/img/icons/font-awesome/arrows.svg
new file mode 100644
index 00000000..67a87911
--- /dev/null
+++ b/img/icons/font-awesome/arrows.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 896q0 26-19 45l-256 256q-19 19-45 19t-45-19-19-45v-128h-384v384h128q26 0 45 19t19 45-19 45l-256 256q-19 19-45 19t-45-19l-256-256q-19-19-19-45t19-45 45-19h128v-384h-384v128q0 26-19 45t-45 19-45-19l-256-256q-19-19-19-45t19-45l256-256q19-19 45-19t45 19 19 45v128h384v-384h-128q-26 0-45-19t-19-45 19-45l256-256q19-19 45-19t45 19l256 256q19 19 19 45t-19 45-45 19h-128v384h384v-128q0-26 19-45t45-19 45 19l256 256q19 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/asl-interpreting.svg b/img/icons/font-awesome/asl-interpreting.svg
new file mode 100644
index 00000000..241cf1a2
--- /dev/null
+++ b/img/icons/font-awesome/asl-interpreting.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1032 960q-59-2-84-55-17-34-48-53.5t-68-19.5q-53 0-90.5 37.5t-37.5 90.5q0 56 36 89l10 8q34 31 82 31 37 0 68-19.5t48-53.5q25-53 84-55zm568-128q0-56-36-89l-10-8q-34-31-82-31-37 0-68 19.5t-48 53.5q-25 53-84 55 59 2 84 55 17 34 48 53.5t68 19.5q53 0 90.5-37.5t37.5-90.5zm-426-221q-17 35-55 48t-73-4q-62-31-134-31-51 0-99 17 3 0 9.5-.5t9.5-.5q92 0 170.5 50t118.5 133q17 36 3.5 73.5t-49.5 54.5q-18 9-39 9 21 0 39 9 36 17 49.5 54.5t-3.5 73.5q-40 83-118.5 133t-170.5 50h-6q-16-2-44-4l-290-27-239 120q-14 7-29 7-40 0-57-35l-160-320q-11-23-4-47.5t29-37.5l209-119 148-267q17-155 91.5-291.5t195.5-236.5q31-25 70.5-21.5t64.5 34.5 21.5 70-34.5 65q-70 59-117 128 123-84 267-101 40-5 71.5 19t35.5 64q5 40-19 71.5t-64 35.5q-84 10-159 55 46-10 99-10 115 0 218 50 36 18 49 55.5t-5 73.5zm963-160l160 320q11 23 4 47.5t-29 37.5l-209 119-148 267q-17 155-91.5 291.5t-195.5 236.5q-26 22-61 22-45 0-74-35-25-31-21.5-70t34.5-65q70-59 117-128-123 84-267 101-4 1-12 1-36 0-63.5-24t-31.5-60q-5-40 19-71.5t64-35.5q84-10 159-55-46 10-99 10-115 0-218-50-36-18-49-55.5t5-73.5q17-35 55-48t73 4q62 31 134 31 51 0 99-17-3 0-9.5.5t-9.5.5q-92 0-170.5-50t-118.5-133q-17-36-3.5-73.5t49.5-54.5q18-9 39-9-21 0-39-9-36-17-49.5-54.5t3.5-73.5q40-83 118.5-133t170.5-50h7q14 2 42 4l291 27 239-120q14-7 29-7 40 0 57 35z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/assistive-listening-systems.svg b/img/icons/font-awesome/assistive-listening-systems.svg
new file mode 100644
index 00000000..2a076903
--- /dev/null
+++ b/img/icons/font-awesome/assistive-listening-systems.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M128 1728q0 26-19 45t-45 19-45-19-19-45 19-45 45-19 45 19 19 45zm192-192q0 26-19 45t-45 19-45-19-19-45 19-45 45-19 45 19 19 45zm45-365l256 256-90 90-256-256zm339-19q0 26-19 45t-45 19-45-19-19-45 19-45 45-19 45 19 19 45zm707-320q0 59-11.5 108.5t-37.5 93.5-44 67.5-53 64.5q-31 35-45.5 54t-33.5 50-26.5 64-7.5 74q0 159-112.5 271.5t-271.5 112.5q-26 0-45-19t-19-45 19-45 45-19q106 0 181-75t75-181q0-57 11.5-105.5t37-91 43.5-66.5 52-63q40-46 59.5-72t37.5-74.5 18-103.5q0-185-131.5-316.5t-316.5-131.5-316.5 131.5-131.5 316.5q0 26-19 45t-45 19-45-19-19-45q0-117 45.5-223.5t123-184 184-123 223.5-45.5 223.5 45.5 184 123 123 184 45.5 223.5zm-515 128q0 26-19 45t-45 19-45-19-19-45 19-45 45-19 45 19 19 45zm288-128q0 26-19 45t-45 19-45-19-19-45q0-93-65.5-158.5t-158.5-65.5q-92 0-158 65.5t-66 158.5q0 26-19 45t-45 19-45-19-19-45q0-146 103-249t249-103 249 103 103 249zm394-289q10 25-1 49t-36 34q-9 4-23 4-19 0-35.5-11t-23.5-30q-68-178-224-295-21-16-25-42t12-47q17-21 43-25t47 12q183 137 266 351zm210-81q9 25-1.5 49t-35.5 34q-11 4-23 4-44 0-60-41-92-238-297-393-22-16-25.5-42t12.5-47q16-22 42-25.5t47 12.5q235 175 341 449z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/asterisk.svg b/img/icons/font-awesome/asterisk.svg
new file mode 100644
index 00000000..bd270446
--- /dev/null
+++ b/img/icons/font-awesome/asterisk.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1546 1050q46 26 59.5 77.5t-12.5 97.5l-64 110q-26 46-77.5 59.5t-97.5-12.5l-266-153v307q0 52-38 90t-90 38h-128q-52 0-90-38t-38-90v-307l-266 153q-46 26-97.5 12.5t-77.5-59.5l-64-110q-26-46-12.5-97.5t59.5-77.5l266-154-266-154q-46-26-59.5-77.5t12.5-97.5l64-110q26-46 77.5-59.5t97.5 12.5l266 153v-307q0-52 38-90t90-38h128q52 0 90 38t38 90v307l266-153q46-26 97.5-12.5t77.5 59.5l64 110q26 46 12.5 97.5t-59.5 77.5l-266 154z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/at.svg b/img/icons/font-awesome/at.svg
new file mode 100644
index 00000000..8d543250
--- /dev/null
+++ b/img/icons/font-awesome/at.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1100 775q0-108-53.5-169t-147.5-61q-63 0-124 30.5t-110 84.5-79.5 137-30.5 180q0 112 53.5 173t150.5 61q96 0 176-66.5t122.5-166 42.5-203.5zm564 121q0 111-37 197t-98.5 135-131.5 74.5-145 27.5q-6 0-15.5.5t-16.5.5q-95 0-142-53-28-33-33-83-52 66-131.5 110t-173.5 44q-161 0-249.5-95.5t-88.5-269.5q0-157 66-290t179-210.5 246-77.5q87 0 155 35.5t106 99.5l2-19 11-56q1-6 5.5-12t9.5-6h118q5 0 13 11 5 5 3 16l-120 614q-5 24-5 48 0 39 12.5 52t44.5 13q28-1 57-5.5t73-24 77-50 57-89.5 24-137q0-292-174-466t-466-174q-130 0-248.5 51t-204 136.5-136.5 204-51 248.5 51 248.5 136.5 204 204 136.5 248.5 51q228 0 405-144 11-9 24-8t21 12l41 49q8 12 7 24-2 13-12 22-102 83-227.5 128t-258.5 45q-156 0-298-61t-245-164-164-245-61-298 61-298 164-245 245-164 298-61q344 0 556 212t212 556z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/audio-description.svg b/img/icons/font-awesome/audio-description.svg
new file mode 100644
index 00000000..f22c5328
--- /dev/null
+++ b/img/icons/font-awesome/audio-description.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M504 994h171l-1-265zm1026-99q0-87-50.5-140t-146.5-53h-54v388h52q91 0 145-57t54-138zm-574-377l1 756q0 14-9.5 24t-23.5 10h-216q-14 0-23.5-10t-9.5-24v-62h-291l-55 81q-10 15-28 15h-267q-21 0-30.5-18t3.5-35l556-757q9-14 27-14h332q14 0 24 10t10 24zm827 377q0 193-125.5 303t-324.5 110h-270q-14 0-24-10t-10-24v-756q0-14 10-24t24-10h268q200 0 326 109t126 302zm156 1q0 11-.5 29t-8 71.5-21.5 102-44.5 108-73.5 102.5h-51q38-45 66.5-104.5t41.5-112 21-98 9-72.5l1-27q0-8-.5-22.5t-7.5-60-20-91.5-41-111.5-66-124.5h43q41 47 72 107t45.5 111.5 23 96 10.5 70.5zm184 0q0 11-.5 29t-8 71.5-21.5 102-45 108-74 102.5h-51q38-45 66.5-104.5t41.5-112 21-98 9-72.5l1-27q0-8-.5-22.5t-7.5-60-19.5-91.5-40.5-111.5-66-124.5h43q41 47 72 107t45.5 111.5 23 96 10.5 70.5zm181 0q0 11-.5 29t-8 71.5-21.5 102-44.5 108-73.5 102.5h-51q38-45 66-104.5t41-112 21-98 9-72.5l1-27q0-8-.5-22.5t-7.5-60-19.5-91.5-40.5-111.5-66-124.5h43q41 47 72 107t45.5 111.5 23 96 9.5 70.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/automobile.svg b/img/icons/font-awesome/automobile.svg
new file mode 100644
index 00000000..11b8b791
--- /dev/null
+++ b/img/icons/font-awesome/automobile.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M480 1088q0-66-47-113t-113-47-113 47-47 113 47 113 113 47 113-47 47-113zm36-320h1016l-89-357q-2-8-14-17.5t-21-9.5h-768q-9 0-21 9.5t-14 17.5zm1372 320q0-66-47-113t-113-47-113 47-47 113 47 113 113 47 113-47 47-113zm160-96v384q0 14-9 23t-23 9h-96v128q0 80-56 136t-136 56-136-56-56-136v-128h-1024v128q0 80-56 136t-136 56-136-56-56-136v-128h-96q-14 0-23-9t-9-23v-384q0-93 65.5-158.5t158.5-65.5h28l105-419q23-94 104-157.5t179-63.5h768q98 0 179 63.5t104 157.5l105 419h28q93 0 158.5 65.5t65.5 158.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/backward.svg b/img/icons/font-awesome/backward.svg
new file mode 100644
index 00000000..10171158
--- /dev/null
+++ b/img/icons/font-awesome/backward.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1683 141q19-19 32-13t13 32v1472q0 26-13 32t-32-13l-710-710q-9-9-13-19v710q0 26-13 32t-32-13l-710-710q-19-19-19-45t19-45l710-710q19-19 32-13t13 32v710q4-10 13-19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/balance-scale.svg b/img/icons/font-awesome/balance-scale.svg
new file mode 100644
index 00000000..48642fe1
--- /dev/null
+++ b/img/icons/font-awesome/balance-scale.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1728 448l-384 704h768zm-1280 0l-384 704h768zm821-192q-14 40-45.5 71.5t-71.5 45.5v1291h608q14 0 23 9t9 23v64q0 14-9 23t-23 9h-1344q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h608v-1291q-40-14-71.5-45.5t-45.5-71.5h-491q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h491q21-57 70-92.5t111-35.5 111 35.5 70 92.5h491q14 0 23 9t9 23v64q0 14-9 23t-23 9h-491zm-181 16q33 0 56.5-23.5t23.5-56.5-23.5-56.5-56.5-23.5-56.5 23.5-23.5 56.5 23.5 56.5 56.5 23.5zm1088 880q0 73-46.5 131t-117.5 91-144.5 49.5-139.5 16.5-139.5-16.5-144.5-49.5-117.5-91-46.5-131q0-11 35-81t92-174.5 107-195.5 102-184 56-100q18-33 56-33t56 33q4 7 56 100t102 184 107 195.5 92 174.5 35 81zm-1280 0q0 73-46.5 131t-117.5 91-144.5 49.5-139.5 16.5-139.5-16.5-144.5-49.5-117.5-91-46.5-131q0-11 35-81t92-174.5 107-195.5 102-184 56-100q18-33 56-33t56 33q4 7 56 100t102 184 107 195.5 92 174.5 35 81z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/ban.svg b/img/icons/font-awesome/ban.svg
new file mode 100644
index 00000000..7b3c3df7
--- /dev/null
+++ b/img/icons/font-awesome/ban.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1440 893q0-161-87-295l-754 753q137 89 297 89 111 0 211.5-43.5t173.5-116.5 116-174.5 43-212.5zm-999 299l755-754q-135-91-300-91-148 0-273 73t-198 199-73 274q0 162 89 299zm1223-299q0 157-61 300t-163.5 246-245 164-298.5 61-298.5-61-245-164-163.5-246-61-300 61-299.5 163.5-245.5 245-164 298.5-61 298.5 61 245 164 163.5 245.5 61 299.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bandcamp.svg b/img/icons/font-awesome/bandcamp.svg
new file mode 100644
index 00000000..98ba0470
--- /dev/null
+++ b/img/icons/font-awesome/bandcamp.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1070 1178l306-564h-654l-306 564h654zm722-282q0 182-71 348t-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71 348 71 286 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bank.svg b/img/icons/font-awesome/bank.svg
new file mode 100644
index 00000000..4c514037
--- /dev/null
+++ b/img/icons/font-awesome/bank.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M960 0l960 384v128h-128q0 26-20.5 45t-48.5 19h-1526q-28 0-48.5-19t-20.5-45h-128v-128zm-704 640h256v768h128v-768h256v768h128v-768h256v768h128v-768h256v768h59q28 0 48.5 19t20.5 45v64h-1664v-64q0-26 20.5-45t48.5-19h59v-768zm1595 960q28 0 48.5 19t20.5 45v128h-1920v-128q0-26 20.5-45t48.5-19h1782z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bar-chart-o.svg b/img/icons/font-awesome/bar-chart-o.svg
new file mode 100644
index 00000000..9b0b9ffb
--- /dev/null
+++ b/img/icons/font-awesome/bar-chart-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M640 896v512h-256v-512h256zm384-512v1024h-256v-1024h256zm1024 1152v128h-2048v-1536h128v1408h1920zm-640-896v768h-256v-768h256zm384-384v1152h-256v-1152h256z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bar-chart.svg b/img/icons/font-awesome/bar-chart.svg
new file mode 100644
index 00000000..9b0b9ffb
--- /dev/null
+++ b/img/icons/font-awesome/bar-chart.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M640 896v512h-256v-512h256zm384-512v1024h-256v-1024h256zm1024 1152v128h-2048v-1536h128v1408h1920zm-640-896v768h-256v-768h256zm384-384v1152h-256v-1152h256z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/barcode.svg b/img/icons/font-awesome/barcode.svg
new file mode 100644
index 00000000..c1d4642f
--- /dev/null
+++ b/img/icons/font-awesome/barcode.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M63 1536h-63v-1408h63v1408zm63-1h-32v-1407h32v1407zm94 0h-31v-1407h31v1407zm157 0h-31v-1407h31v1407zm157 0h-62v-1407h62v1407zm126 0h-31v-1407h31v1407zm63 0h-31v-1407h31v1407zm63 0h-31v-1407h31v1407zm157 0h-63v-1407h63v1407zm157 0h-63v-1407h63v1407zm126 0h-63v-1407h63v1407zm126 0h-63v-1407h63v1407zm94 0h-63v-1407h63v1407zm189 0h-94v-1407h94v1407zm63 0h-32v-1407h32v1407zm94 1h-63v-1408h63v1408z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bars.svg b/img/icons/font-awesome/bars.svg
new file mode 100644
index 00000000..2d6eb980
--- /dev/null
+++ b/img/icons/font-awesome/bars.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 1344v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45zm0-512v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45zm0-512v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bath.svg b/img/icons/font-awesome/bath.svg
new file mode 100644
index 00000000..06384693
--- /dev/null
+++ b/img/icons/font-awesome/bath.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 1088v192q0 169-128 286v194q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-118q-63 22-128 22h-768q-65 0-128-22v110q0 17-9.5 28.5t-22.5 11.5h-64q-13 0-22.5-11.5t-9.5-28.5v-186q-128-117-128-286v-192h1536zm-960-416q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm128 0q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm1088 512v64q0 14-9 23t-23 9h-1728q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96v-640q0-106 75-181t181-75q108 0 184 78 46-19 98-12t93 39l22-22q11-11 22 0l42 42q11 11 0 22l-314 314q-11 11-22 0l-42-42q-11-11 0-22l22-22q-36-46-40.5-104t23.5-108q-37-35-88-35-53 0-90.5 37.5t-37.5 90.5v640h1504q14 0 23 9t9 23zm-896-448q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm192 64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm192 64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm128 0q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bathtub.svg b/img/icons/font-awesome/bathtub.svg
new file mode 100644
index 00000000..06384693
--- /dev/null
+++ b/img/icons/font-awesome/bathtub.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 1088v192q0 169-128 286v194q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-118q-63 22-128 22h-768q-65 0-128-22v110q0 17-9.5 28.5t-22.5 11.5h-64q-13 0-22.5-11.5t-9.5-28.5v-186q-128-117-128-286v-192h1536zm-960-416q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm128 0q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm1088 512v64q0 14-9 23t-23 9h-1728q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96v-640q0-106 75-181t181-75q108 0 184 78 46-19 98-12t93 39l22-22q11-11 22 0l42 42q11 11 0 22l-314 314q-11 11-22 0l-42-42q-11-11 0-22l22-22q-36-46-40.5-104t23.5-108q-37-35-88-35-53 0-90.5 37.5t-37.5 90.5v640h1504q14 0 23 9t9 23zm-896-448q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm192 64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm192 64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm128 0q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/battery-0.svg b/img/icons/font-awesome/battery-0.svg
new file mode 100644
index 00000000..918c9d05
--- /dev/null
+++ b/img/icons/font-awesome/battery-0.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M2176 576q53 0 90.5 37.5t37.5 90.5v384q0 53-37.5 90.5t-90.5 37.5v160q0 66-47 113t-113 47h-1856q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h1856q66 0 113 47t47 113v160zm0 512v-384h-128v-288q0-14-9-23t-23-9h-1856q-14 0-23 9t-9 23v960q0 14 9 23t23 9h1856q14 0 23-9t9-23v-288h128z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/battery-1.svg b/img/icons/font-awesome/battery-1.svg
new file mode 100644
index 00000000..2dd91af0
--- /dev/null
+++ b/img/icons/font-awesome/battery-1.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 1280v-768h512v768h-512zm1920-704q53 0 90.5 37.5t37.5 90.5v384q0 53-37.5 90.5t-90.5 37.5v160q0 66-47 113t-113 47h-1856q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h1856q66 0 113 47t47 113v160zm0 512v-384h-128v-288q0-14-9-23t-23-9h-1856q-14 0-23 9t-9 23v960q0 14 9 23t23 9h1856q14 0 23-9t9-23v-288h128z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/battery-2.svg b/img/icons/font-awesome/battery-2.svg
new file mode 100644
index 00000000..5ebe86b9
--- /dev/null
+++ b/img/icons/font-awesome/battery-2.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 1280v-768h896v768h-896zm1920-704q53 0 90.5 37.5t37.5 90.5v384q0 53-37.5 90.5t-90.5 37.5v160q0 66-47 113t-113 47h-1856q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h1856q66 0 113 47t47 113v160zm0 512v-384h-128v-288q0-14-9-23t-23-9h-1856q-14 0-23 9t-9 23v960q0 14 9 23t23 9h1856q14 0 23-9t9-23v-288h128z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/battery-3.svg b/img/icons/font-awesome/battery-3.svg
new file mode 100644
index 00000000..8304a050
--- /dev/null
+++ b/img/icons/font-awesome/battery-3.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 1280v-768h1280v768h-1280zm1920-704q53 0 90.5 37.5t37.5 90.5v384q0 53-37.5 90.5t-90.5 37.5v160q0 66-47 113t-113 47h-1856q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h1856q66 0 113 47t47 113v160zm0 512v-384h-128v-288q0-14-9-23t-23-9h-1856q-14 0-23 9t-9 23v960q0 14 9 23t23 9h1856q14 0 23-9t9-23v-288h128z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/battery-4.svg b/img/icons/font-awesome/battery-4.svg
new file mode 100644
index 00000000..0f89456d
--- /dev/null
+++ b/img/icons/font-awesome/battery-4.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1920 512v768h-1664v-768h1664zm128 576h128v-384h-128v-288q0-14-9-23t-23-9h-1856q-14 0-23 9t-9 23v960q0 14 9 23t23 9h1856q14 0 23-9t9-23v-288zm256-384v384q0 53-37.5 90.5t-90.5 37.5v160q0 66-47 113t-113 47h-1856q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h1856q66 0 113 47t47 113v160q53 0 90.5 37.5t37.5 90.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/battery-empty.svg b/img/icons/font-awesome/battery-empty.svg
new file mode 100644
index 00000000..918c9d05
--- /dev/null
+++ b/img/icons/font-awesome/battery-empty.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M2176 576q53 0 90.5 37.5t37.5 90.5v384q0 53-37.5 90.5t-90.5 37.5v160q0 66-47 113t-113 47h-1856q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h1856q66 0 113 47t47 113v160zm0 512v-384h-128v-288q0-14-9-23t-23-9h-1856q-14 0-23 9t-9 23v960q0 14 9 23t23 9h1856q14 0 23-9t9-23v-288h128z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/battery-full.svg b/img/icons/font-awesome/battery-full.svg
new file mode 100644
index 00000000..0f89456d
--- /dev/null
+++ b/img/icons/font-awesome/battery-full.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1920 512v768h-1664v-768h1664zm128 576h128v-384h-128v-288q0-14-9-23t-23-9h-1856q-14 0-23 9t-9 23v960q0 14 9 23t23 9h1856q14 0 23-9t9-23v-288zm256-384v384q0 53-37.5 90.5t-90.5 37.5v160q0 66-47 113t-113 47h-1856q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h1856q66 0 113 47t47 113v160q53 0 90.5 37.5t37.5 90.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/battery-half.svg b/img/icons/font-awesome/battery-half.svg
new file mode 100644
index 00000000..5ebe86b9
--- /dev/null
+++ b/img/icons/font-awesome/battery-half.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 1280v-768h896v768h-896zm1920-704q53 0 90.5 37.5t37.5 90.5v384q0 53-37.5 90.5t-90.5 37.5v160q0 66-47 113t-113 47h-1856q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h1856q66 0 113 47t47 113v160zm0 512v-384h-128v-288q0-14-9-23t-23-9h-1856q-14 0-23 9t-9 23v960q0 14 9 23t23 9h1856q14 0 23-9t9-23v-288h128z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/battery-quarter.svg b/img/icons/font-awesome/battery-quarter.svg
new file mode 100644
index 00000000..2dd91af0
--- /dev/null
+++ b/img/icons/font-awesome/battery-quarter.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 1280v-768h512v768h-512zm1920-704q53 0 90.5 37.5t37.5 90.5v384q0 53-37.5 90.5t-90.5 37.5v160q0 66-47 113t-113 47h-1856q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h1856q66 0 113 47t47 113v160zm0 512v-384h-128v-288q0-14-9-23t-23-9h-1856q-14 0-23 9t-9 23v960q0 14 9 23t23 9h1856q14 0 23-9t9-23v-288h128z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/battery-three-quarters.svg b/img/icons/font-awesome/battery-three-quarters.svg
new file mode 100644
index 00000000..8304a050
--- /dev/null
+++ b/img/icons/font-awesome/battery-three-quarters.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 1280v-768h1280v768h-1280zm1920-704q53 0 90.5 37.5t37.5 90.5v384q0 53-37.5 90.5t-90.5 37.5v160q0 66-47 113t-113 47h-1856q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h1856q66 0 113 47t47 113v160zm0 512v-384h-128v-288q0-14-9-23t-23-9h-1856q-14 0-23 9t-9 23v960q0 14 9 23t23 9h1856q14 0 23-9t9-23v-288h128z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/battery.svg b/img/icons/font-awesome/battery.svg
new file mode 100644
index 00000000..0f89456d
--- /dev/null
+++ b/img/icons/font-awesome/battery.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1920 512v768h-1664v-768h1664zm128 576h128v-384h-128v-288q0-14-9-23t-23-9h-1856q-14 0-23 9t-9 23v960q0 14 9 23t23 9h1856q14 0 23-9t9-23v-288zm256-384v384q0 53-37.5 90.5t-90.5 37.5v160q0 66-47 113t-113 47h-1856q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h1856q66 0 113 47t47 113v160q53 0 90.5 37.5t37.5 90.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bed.svg b/img/icons/font-awesome/bed.svg
new file mode 100644
index 00000000..c49828f0
--- /dev/null
+++ b/img/icons/font-awesome/bed.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 1024h1728q26 0 45 19t19 45v448h-256v-256h-1536v256h-256v-1216q0-26 19-45t45-19h128q26 0 45 19t19 45v704zm576-320q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm1216 256v-64q0-159-112.5-271.5t-271.5-112.5h-704q-26 0-45 19t-19 45v384h1152z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/beer.svg b/img/icons/font-awesome/beer.svg
new file mode 100644
index 00000000..417746c8
--- /dev/null
+++ b/img/icons/font-awesome/beer.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 896v-384h-256v256q0 53 37.5 90.5t90.5 37.5h128zm1024 448v192h-1152v-192l128-192h-128q-159 0-271.5-112.5t-112.5-271.5v-320l-64-64 32-128h480l32-128h960l32 192-64 32v800z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/behance-square.svg b/img/icons/font-awesome/behance-square.svg
new file mode 100644
index 00000000..37af787a
--- /dev/null
+++ b/img/icons/font-awesome/behance-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1376 128q119 0 203.5 84.5t84.5 203.5v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960zm-749 367h-371v787h382q117 0 197-57.5t80-170.5q0-158-143-200 107-52 107-164 0-57-19.5-96.5t-56.5-60.5-79-29.5-97-8.5zm-22 318h-176v-184h163q119 0 119 90 0 94-106 94zm9 335h-185v-217h189q124 0 124 113 0 104-128 104zm650 32q-68 0-104-38t-36-107h411q1-10 1-30 0-132-74.5-220.5t-203.5-88.5q-128 0-210 86t-82 216q0 135 79 217t213 82q205 0 267-191h-138q-11 34-47.5 54t-75.5 20zm-10-366q113 0 124 122h-254q4-56 39-89t91-33zm-162-266h319v77h-319v-77z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/behance.svg b/img/icons/font-awesome/behance.svg
new file mode 100644
index 00000000..099f946d
--- /dev/null
+++ b/img/icons/font-awesome/behance.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1848 339h-511v124h511v-124zm-252 426q-90 0-146 52.5t-62 142.5h408q-18-195-200-195zm16 585q63 0 122-32t76-87h221q-100 307-427 307-214 0-340.5-132t-126.5-347q0-208 130.5-345.5t336.5-137.5q138 0 240.5 68t153 179 50.5 248q0 17-2 47h-658q0 111 57.5 171.5t166.5 60.5zm-1335-50h296q205 0 205-167 0-180-199-180h-302v347zm0-537h281q78 0 123.5-36.5t45.5-113.5q0-144-190-144h-260v294zm-277-509h594q87 0 155 14t126.5 47.5 90 96.5 31.5 154q0 181-172 263 114 32 172 115t58 204q0 75-24.5 136.5t-66 103.5-98.5 71-121 42-134 13h-611v-1260z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bell-o.svg b/img/icons/font-awesome/bell-o.svg
new file mode 100644
index 00000000..fd59c84a
--- /dev/null
+++ b/img/icons/font-awesome/bell-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M912 1696q0-16-16-16-59 0-101.5-42.5t-42.5-101.5q0-16-16-16t-16 16q0 73 51.5 124.5t124.5 51.5q16 0 16-16zm-666-288h1300q-266-300-266-832 0-51-24-105t-69-103-121.5-80.5-169.5-31.5-169.5 31.5-121.5 80.5-69 103-24 105q0 532-266 832zm1482 0q0 52-38 90t-90 38h-448q0 106-75 181t-181 75-181-75-75-181h-448q-52 0-90-38t-38-90q50-42 91-88t85-119.5 74.5-158.5 50-206 19.5-260q0-152 117-282.5t307-158.5q-8-19-8-39 0-40 28-68t68-28 68 28 28 68q0 20-8 39 190 28 307 158.5t117 282.5q0 139 19.5 260t50 206 74.5 158.5 85 119.5 91 88z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bell-slash-o.svg b/img/icons/font-awesome/bell-slash-o.svg
new file mode 100644
index 00000000..934d828b
--- /dev/null
+++ b/img/icons/font-awesome/bell-slash-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1040 1696q0-16-16-16-59 0-101.5-42.5t-42.5-101.5q0-16-16-16t-16 16q0 73 51.5 124.5t124.5 51.5q16 0 16-16zm-537-475l877-760q-42-88-132.5-146.5t-223.5-58.5q-93 0-169.5 31.5t-121.5 80.5-69 103-24 105q0 384-137 645zm1353 187q0 52-38 90t-90 38h-448q0 106-75 181t-181 75-180.5-74.5-75.5-180.5l149-129h757q-166-187-227-459l111-97q61 356 298 556zm86-1392l84 96q8 10 7.5 23.5t-10.5 22.5l-1872 1622q-10 8-23.5 7t-21.5-11l-84-96q-8-10-7.5-23.5t10.5-21.5l186-161q-19-32-19-66 50-42 91-88t85-119.5 74.5-158.5 50-206 19.5-260q0-152 117-282.5t307-158.5q-8-19-8-39 0-40 28-68t68-28 68 28 28 68q0 20-8 39 124 18 219 82.5t148 157.5l418-363q10-8 23.5-7t21.5 11z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bell-slash.svg b/img/icons/font-awesome/bell-slash.svg
new file mode 100644
index 00000000..77c18054
--- /dev/null
+++ b/img/icons/font-awesome/bell-slash.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1558 852q61 356 298 556 0 52-38 90t-90 38h-448q0 106-75 181t-181 75-180.5-74.5-75.5-180.5zm-534 860q16 0 16-16t-16-16q-59 0-101.5-42.5t-42.5-101.5q0-16-16-16t-16 16q0 73 51.5 124.5t124.5 51.5zm1002-1600q8 10 7.5 23.5t-10.5 22.5l-1872 1622q-10 8-23.5 7t-21.5-11l-84-96q-8-10-7.5-23.5t10.5-21.5l186-161q-19-32-19-66 50-42 91-88t85-119.5 74.5-158.5 50-206 19.5-260q0-152 117-282.5t307-158.5q-8-19-8-39 0-40 28-68t68-28 68 28 28 68q0 20-8 39 124 18 219 82.5t148 157.5l418-363q10-8 23.5-7t21.5 11z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bell.svg b/img/icons/font-awesome/bell.svg
new file mode 100644
index 00000000..4858117e
--- /dev/null
+++ b/img/icons/font-awesome/bell.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M912 1696q0-16-16-16-59 0-101.5-42.5t-42.5-101.5q0-16-16-16t-16 16q0 73 51.5 124.5t124.5 51.5q16 0 16-16zm816-288q0 52-38 90t-90 38h-448q0 106-75 181t-181 75-181-75-75-181h-448q-52 0-90-38t-38-90q50-42 91-88t85-119.5 74.5-158.5 50-206 19.5-260q0-152 117-282.5t307-158.5q-8-19-8-39 0-40 28-68t68-28 68 28 28 68q0 20-8 39 190 28 307 158.5t117 282.5q0 139 19.5 260t50 206 74.5 158.5 85 119.5 91 88z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bicycle.svg b/img/icons/font-awesome/bicycle.svg
new file mode 100644
index 00000000..aa6d494f
--- /dev/null
+++ b/img/icons/font-awesome/bicycle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M762 1152h-314q-40 0-57.5-35t6.5-67l188-251q-65-31-137-31-132 0-226 94t-94 226 94 226 226 94q115 0 203-72.5t111-183.5zm-186-128h186q-18-85-75-148zm480 0l288-384h-480l-99 132q105 103 126 252h165zm1120 64q0-132-94-226t-226-94q-60 0-121 24l174 260q15 23 10 49t-27 40q-15 11-36 11-35 0-53-29l-174-260q-93 95-93 225 0 132 94 226t226 94 226-94 94-226zm128 0q0 185-131.5 316.5t-316.5 131.5-316.5-131.5-131.5-316.5q0-97 39.5-183.5t109.5-149.5l-65-98-353 469q-18 26-51 26h-197q-23 164-149 274t-294 110q-185 0-316.5-131.5t-131.5-316.5 131.5-316.5 316.5-131.5q114 0 215 55l137-183h-224q-26 0-45-19t-19-45 19-45 45-19h384v128h435l-85-128h-222q-26 0-45-19t-19-45 19-45 45-19h256q33 0 53 28l267 400q91-44 192-44 185 0 316.5 131.5t131.5 316.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/binoculars.svg b/img/icons/font-awesome/binoculars.svg
new file mode 100644
index 00000000..9de49bc0
--- /dev/null
+++ b/img/icons/font-awesome/binoculars.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 320v768q0 26-19 45t-45 19v576q0 26-19 45t-45 19h-512q-26 0-45-19t-19-45v-512l249-873q7-23 31-23h424zm320 0v704h-256v-704h256zm768 896v512q0 26-19 45t-45 19h-512q-26 0-45-19t-19-45v-576q-26 0-45-19t-19-45v-768h424q24 0 31 23zm-1056-1184v224h-352v-224q0-14 9-23t23-9h288q14 0 23 9t9 23zm672 0v224h-352v-224q0-14 9-23t23-9h288q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/birthday-cake.svg b/img/icons/font-awesome/birthday-cake.svg
new file mode 100644
index 00000000..d794d696
--- /dev/null
+++ b/img/icons/font-awesome/birthday-cake.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 1408v384h-1792v-384q45 0 85-14t59-27.5 47-37.5q30-27 51.5-38t56.5-11q24 0 44 7t31 15 33 27q29 25 47 38t58 27 86 14q45 0 85-14.5t58-27 48-37.5q21-19 32.5-27t31-15 43.5-7q35 0 56.5 11t51.5 38q28 24 47 37.5t59 27.5 85 14 85-14 59-27.5 47-37.5q30-27 51.5-38t56.5-11q34 0 55.5 11t51.5 38q28 24 47 37.5t59 27.5 85 14zm0-320v192q-24 0-44-7t-31-15-33-27q-29-25-47-38t-58-27-85-14q-46 0-86 14t-58 27-47 38q-22 19-33 27t-31 15-44 7q-35 0-56.5-11t-51.5-38q-29-25-47-38t-58-27-86-14q-45 0-85 14.5t-58 27-48 37.5q-21 19-32.5 27t-31 15-43.5 7q-35 0-56.5-11t-51.5-38q-28-24-47-37.5t-59-27.5-85-14q-46 0-86 14t-58 27-47 38q-30 27-51.5 38t-56.5 11v-192q0-80 56-136t136-56h64v-448h256v448h256v-448h256v448h256v-448h256v448h64q80 0 136 56t56 136zm-1280-864q0 77-36 118.5t-92 41.5q-53 0-90.5-37.5t-37.5-90.5q0-29 9.5-51t23.5-34 31-28 31-31.5 23.5-44.5 9.5-67q38 0 83 74t45 150zm512 0q0 77-36 118.5t-92 41.5q-53 0-90.5-37.5t-37.5-90.5q0-29 9.5-51t23.5-34 31-28 31-31.5 23.5-44.5 9.5-67q38 0 83 74t45 150zm512 0q0 77-36 118.5t-92 41.5q-53 0-90.5-37.5t-37.5-90.5q0-29 9.5-51t23.5-34 31-28 31-31.5 23.5-44.5 9.5-67q38 0 83 74t45 150z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bitbucket-square.svg b/img/icons/font-awesome/bitbucket-square.svg
new file mode 100644
index 00000000..145e5bf7
--- /dev/null
+++ b/img/icons/font-awesome/bitbucket-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M976 870q0-43-41-66t-77-1q-43 20-42.5 72.5t43.5 70.5q39 23 81-4t36-72zm80-16q8 66-36 121t-110 61-119-40-56-113q-2-49 25.5-93t72.5-64q70-31 141.5 10t81.5 118zm172-391q-20 21-53.5 34t-53 16-63.5 8q-155 20-324 0-44-6-63-9.5t-52.5-16-54.5-32.5q13-19 36-31t40-15.5 47-8.5q198-35 408-1 33 5 51 8.5t43 16 39 31.5zm42 746q0-7 5.5-26.5t3-32-17.5-16.5q-161 106-365 106t-366-106l-12 6-5 12q26 154 41 210 47 81 204 108 249 46 428-53 34-19 49-51.5t22.5-85.5 12.5-71zm130-693q9-53-8-75-43-55-155-88-216-63-487-36-132 12-226 46-38 15-59.5 25t-47 34-29.5 54q8 68 19 138t29 171 24 137q1 5 5 31t7 36 12 27 22 28q105 80 284 100 259 28 440-63 24-13 39.5-23t31-29 19.5-40q48-267 80-473zm264-100v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bitbucket.svg b/img/icons/font-awesome/bitbucket.svg
new file mode 100644
index 00000000..b79d9aec
--- /dev/null
+++ b/img/icons/font-awesome/bitbucket.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1007 859q8 63-50.5 101t-111.5 6q-39-17-53.5-58t-.5-82 52-58q36-18 72.5-12t64 35.5 27.5 67.5zm111-21q-14-107-113-164t-197-13q-63 28-100.5 88.5t-34.5 129.5q4 91 77.5 155t165.5 56q91-8 152-84t50-168zm239-542q-20-27-56-44.5t-58-22-71-12.5q-291-47-566 2-43 7-66 12t-55 22-50 43q30 28 76 45.5t73.5 22 87.5 11.5q228 29 448 1 63-8 89.5-12t72.5-21.5 75-46.5zm57 1035q-8 26-15.5 76.5t-14 84-28.5 70-58 56.5q-86 48-189.5 71.5t-202 22-201.5-18.5q-46-8-81.5-18t-76.5-27-73-43.5-52-61.5q-25-96-57-292l6-16 18-9q223 148 506.5 148t507.5-148q21 6 24 23t-5 45-8 37zm181-961q-26 167-111 655-5 30-27 56t-43.5 40-54.5 31q-252 126-610 88-248-27-394-139-15-12-25.5-26.5t-17-35-9-34-6-39.5-5.5-35q-9-50-26.5-150t-28-161.5-23.5-147.5-22-158q3-26 17.5-48.5t31.5-37.5 45-30 46-22.5 48-18.5q125-46 313-64 379-37 676 50 155 46 215 122 16 20 16.5 51t-5.5 54z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bitcoin.svg b/img/icons/font-awesome/bitcoin.svg
new file mode 100644
index 00000000..fc8fc5e2
--- /dev/null
+++ b/img/icons/font-awesome/bitcoin.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1423 640q18 182-131 258 117 28 175 103t45 214q-7 71-32.5 125t-64.5 89-97 58.5-121.5 34.5-145.5 15v255h-154v-251q-80 0-122-1v252h-154v-255q-18 0-54-.5t-55-.5h-200l31-183h111q50 0 58-51v-402h16q-6-1-16-1v-287q-13-68-89-68h-111v-164l212 1q64 0 97-1v-252h154v247q82-2 122-2v-245h154v252q79 7 140 22.5t113 45 82.5 78 36.5 114.5zm-215 545q0-36-15-64t-37-46-57.5-30.5-65.5-18.5-74-9-69-3-64.5 1-47.5 1v338q8 0 37 .5t48 .5 53-1.5 58.5-4 57-8.5 55.5-14 47.5-21 39.5-30 24.5-40 9.5-51zm-71-476q0-33-12.5-58.5t-30.5-42-48-28-55-16.5-61.5-8-58-2.5-54 1-39.5.5v307q5 0 34.5.5t46.5 0 50-2 55-5.5 51.5-11 48.5-18.5 37-27 27-38.5 9-51z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/black-tie.svg b/img/icons/font-awesome/black-tie.svg
new file mode 100644
index 00000000..948aabd9
--- /dev/null
+++ b/img/icons/font-awesome/black-tie.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M128 128h1536v1536h-1536v-1536zm1085 1115l-221-631 221-297h-634l221 297-221 631 317 304z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/blind.svg b/img/icons/font-awesome/blind.svg
new file mode 100644
index 00000000..bfdad8ca
--- /dev/null
+++ b/img/icons/font-awesome/blind.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M558 311q-64 0-110-45.5t-46-110.5q0-64 46-109.5t110-45.5 109.5 45.5 45.5 109.5q0 65-45.5 110.5t-109.5 45.5zm551 642q0 50-30 67.5t-63.5 6.5-47.5-34l-367-438q-7-12-14-15.5t-11-1.5l-3 3q-7 8 4 21l122 139 1 354-161 457q-67 192-92 234-15 26-28 32-50 26-103 1-29-13-41.5-43t-9.5-57q2-17 197-618l5-416-85 164 35 222q4 24-1 42t-14 27.5-19 16-17 7.5l-7 2q-19 3-34.5-3t-24-16-14-22-7.5-19.5-2-9.5l-46-299 211-381q23-34 113-34 75 0 107 40l424 521q7 5 14 17l3 3-1 1q7 13 7 29zm-403 150q43 113 88.5 225t69.5 168l24 55q36 93 42 125 11 70-36 97-35 22-66 16t-51-22-29-35h-1q-6-16-8-25l-124-351zm824 592q31 49 31 57 0 5-3 7-9 5-14.5-.5t-15.5-26-16-30.5q-114-172-423-661 3 1 7-1t7-4l3-2q11-9 11-17z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bluetooth-b.svg b/img/icons/font-awesome/bluetooth-b.svg
new file mode 100644
index 00000000..bc5b6083
--- /dev/null
+++ b/img/icons/font-awesome/bluetooth-b.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M980 1423l173-172-173-172v344zm0-710l173-172-173-172v344zm32 183l356 356-539 540v-711l-297 296-108-108 372-373-372-373 108-108 297 296v-711l539 540z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bluetooth.svg b/img/icons/font-awesome/bluetooth.svg
new file mode 100644
index 00000000..5f83b020
--- /dev/null
+++ b/img/icons/font-awesome/bluetooth.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M969 1053l148 148-149 149zm-1-611l149 149-148 148zm-130 1224l464-464-306-306 306-306-464-464v611l-255-255-93 93 320 321-320 321 93 93 255-255v611zm719-770q0 209-32 365.5t-87.5 257-140.5 162.5-181.5 86.5-219.5 24.5-219.5-24.5-181.5-86.5-140.5-162.5-87.5-257-32-365.5 32-365.5 87.5-257 140.5-162.5 181.5-86.5 219.5-24.5 219.5 24.5 181.5 86.5 140.5 162.5 87.5 257 32 365.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bold.svg b/img/icons/font-awesome/bold.svg
new file mode 100644
index 00000000..beaf678d
--- /dev/null
+++ b/img/icons/font-awesome/bold.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M747 1521q74 32 140 32 376 0 376-335 0-114-41-180-27-44-61.5-74t-67.5-46.5-80.5-25-84-10.5-94.5-2q-73 0-101 10 0 53-.5 159t-.5 158q0 8-1 67.5t-.5 96.5 4.5 83.5 12 66.5zm-14-746q42 7 109 7 82 0 143-13t110-44.5 74.5-89.5 25.5-142q0-70-29-122.5t-79-82-108-43.5-124-14q-50 0-130 13 0 50 4 151t4 152q0 27-.5 80t-.5 79q0 46 1 69zm-541 889l2-94q15-4 85-16t106-27q7-12 12.5-27t8.5-33.5 5.5-32.5 3-37.5.5-34v-65.5q0-982-22-1025-4-8-22-14.5t-44.5-11-49.5-7-48.5-4.5-30.5-3l-4-83q98-2 340-11.5t373-9.5q23 0 68 .5t68 .5q70 0 136.5 13t128.5 42 108 71 74 104.5 28 137.5q0 52-16.5 95.5t-39 72-64.5 57.5-73 45-84 40q154 35 256.5 134t102.5 248q0 100-35 179.5t-93.5 130.5-138 85.5-163.5 48.5-176 14q-44 0-132-3t-132-3q-106 0-307 11t-231 12z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bolt.svg b/img/icons/font-awesome/bolt.svg
new file mode 100644
index 00000000..084b178f
--- /dev/null
+++ b/img/icons/font-awesome/bolt.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1333 566q18 20 7 44l-540 1157q-13 25-42 25-4 0-14-2-17-5-25.5-19t-4.5-30l197-808-406 101q-4 1-12 1-18 0-31-11-18-15-13-39l201-825q4-14 16-23t28-9h328q19 0 32 12.5t13 29.5q0 8-5 18l-171 463 396-98q8-2 12-2 19 0 34 15z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bomb.svg b/img/icons/font-awesome/bomb.svg
new file mode 100644
index 00000000..3779fa12
--- /dev/null
+++ b/img/icons/font-awesome/bomb.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M571 589q-10-25-34-35t-49 0q-108 44-191 127t-127 191q-10 25 0 49t35 34q13 5 24 5 42 0 60-40 34-84 98.5-148.5t148.5-98.5q25-11 35-35t0-49zm942-356l46 46-244 243 68 68q19 19 19 45.5t-19 45.5l-64 64q89 161 89 343 0 143-55.5 273.5t-150 225-225 150-273.5 55.5-273.5-55.5-225-150-150-225-55.5-273.5 55.5-273.5 150-225 225-150 273.5-55.5q182 0 343 89l64-64q19-19 45.5-19t45.5 19l68 68zm8-56q-10 10-22 10-13 0-23-10l-91-90q-9-10-9-23t9-23q10-9 23-9t23 9l90 91q10 9 10 22.5t-10 22.5zm230 230q-11 9-23 9t-23-9l-90-91q-10-9-10-22.5t10-22.5q9-10 22.5-10t22.5 10l91 90q9 10 9 23t-9 23zm41-183q0 14-9 23t-23 9h-96q-14 0-23-9t-9-23 9-23 23-9h96q14 0 23 9t9 23zm-192-192v96q0 14-9 23t-23 9-23-9-9-23v-96q0-14 9-23t23-9 23 9 9 23zm151 55l-91 90q-10 10-22 10-13 0-23-10-10-9-10-22.5t10-22.5l90-91q10-9 23-9t23 9q9 10 9 23t-9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/book.svg b/img/icons/font-awesome/book.svg
new file mode 100644
index 00000000..6be6e4ab
--- /dev/null
+++ b/img/icons/font-awesome/book.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1703 478q40 57 18 129l-275 906q-19 64-76.5 107.5t-122.5 43.5h-923q-77 0-148.5-53.5t-99.5-131.5q-24-67-2-127 0-4 3-27t4-37q1-8-3-21.5t-3-19.5q2-11 8-21t16.5-23.5 16.5-23.5q23-38 45-91.5t30-91.5q3-10 .5-30t-.5-28q3-11 17-28t17-23q21-36 42-92t25-90q1-9-2.5-32t.5-28q4-13 22-30.5t22-22.5q19-26 42.5-84.5t27.5-96.5q1-8-3-25.5t-2-26.5q2-8 9-18t18-23 17-21q8-12 16.5-30.5t15-35 16-36 19.5-32 26.5-23.5 36-11.5 47.5 5.5l-1 3q38-9 51-9h761q74 0 114 56t18 130l-274 906q-36 119-71.5 153.5t-128.5 34.5h-869q-27 0-38 15-11 16-1 43 24 70 144 70h923q29 0 56-15.5t35-41.5l300-987q7-22 5-57 38 15 59 43zm-1064 2q-4 13 2 22.5t20 9.5h608q13 0 25.5-9.5t16.5-22.5l21-64q4-13-2-22.5t-20-9.5h-608q-13 0-25.5 9.5t-16.5 22.5zm-83 256q-4 13 2 22.5t20 9.5h608q13 0 25.5-9.5t16.5-22.5l21-64q4-13-2-22.5t-20-9.5h-608q-13 0-25.5 9.5t-16.5 22.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bookmark-o.svg b/img/icons/font-awesome/bookmark-o.svg
new file mode 100644
index 00000000..28a9973d
--- /dev/null
+++ b/img/icons/font-awesome/bookmark-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 256h-1024v1242l423-406 89-85 89 85 423 406v-1242zm12-128q23 0 44 9 33 13 52.5 41t19.5 62v1289q0 34-19.5 62t-52.5 41q-19 8-44 8-48 0-83-32l-441-424-441 424q-36 33-83 33-23 0-44-9-33-13-52.5-41t-19.5-62v-1289q0-34 19.5-62t52.5-41q21-9 44-9h1048z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bookmark.svg b/img/icons/font-awesome/bookmark.svg
new file mode 100644
index 00000000..a43e59ea
--- /dev/null
+++ b/img/icons/font-awesome/bookmark.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1420 128q23 0 44 9 33 13 52.5 41t19.5 62v1289q0 34-19.5 62t-52.5 41q-19 8-44 8-48 0-83-32l-441-424-441 424q-36 33-83 33-23 0-44-9-33-13-52.5-41t-19.5-62v-1289q0-34 19.5-62t52.5-41q21-9 44-9h1048z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/braille.svg b/img/icons/font-awesome/braille.svg
new file mode 100644
index 00000000..996cc6d4
--- /dev/null
+++ b/img/icons/font-awesome/braille.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 1184q-66 0-113 47t-47 113 47 113 113 47 113-47 47-113-47-113-113-47zm512 0q-66 0-113 47t-47 113 47 113 113 47 113-47 47-113-47-113-113-47zm0-512q-66 0-113 47t-47 113 47 113 113 47 113-47 47-113-47-113-113-47zm768 512q-66 0-113 47t-47 113 47 113 113 47 113-47 47-113-47-113-113-47zm512 0q-66 0-113 47t-47 113 47 113 113 47 113-47 47-113-47-113-113-47zm-512-512q-66 0-113 47t-47 113 47 113 113 47 113-47 47-113-47-113-113-47zm512 0q-66 0-113 47t-47 113 47 113 113 47 113-47 47-113-47-113-113-47zm0-512q-66 0-113 47t-47 113 47 113 113 47 113-47 47-113-47-113-113-47zm-1600 1184q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm512 0q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm-512-512q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm512 0q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm-512-512q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm1280 1024q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm-768-1024q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm1280 1024q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm-512-512q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm512 0q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm-512-512q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm512 0q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/briefcase.svg b/img/icons/font-awesome/briefcase.svg
new file mode 100644
index 00000000..b1ded854
--- /dev/null
+++ b/img/icons/font-awesome/briefcase.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M640 256h512v-128h-512v128zm1152 640v480q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-480h672v160q0 26 19 45t45 19h320q26 0 45-19t19-45v-160h672zm-768 0v128h-256v-128h256zm768-480v384h-1792v-384q0-66 47-113t113-47h352v-160q0-40 28-68t68-28h576q40 0 68 28t28 68v160h352q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/btc.svg b/img/icons/font-awesome/btc.svg
new file mode 100644
index 00000000..fc8fc5e2
--- /dev/null
+++ b/img/icons/font-awesome/btc.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1423 640q18 182-131 258 117 28 175 103t45 214q-7 71-32.5 125t-64.5 89-97 58.5-121.5 34.5-145.5 15v255h-154v-251q-80 0-122-1v252h-154v-255q-18 0-54-.5t-55-.5h-200l31-183h111q50 0 58-51v-402h16q-6-1-16-1v-287q-13-68-89-68h-111v-164l212 1q64 0 97-1v-252h154v247q82-2 122-2v-245h154v252q79 7 140 22.5t113 45 82.5 78 36.5 114.5zm-215 545q0-36-15-64t-37-46-57.5-30.5-65.5-18.5-74-9-69-3-64.5 1-47.5 1v338q8 0 37 .5t48 .5 53-1.5 58.5-4 57-8.5 55.5-14 47.5-21 39.5-30 24.5-40 9.5-51zm-71-476q0-33-12.5-58.5t-30.5-42-48-28-55-16.5-61.5-8-58-2.5-54 1-39.5.5v307q5 0 34.5.5t46.5 0 50-2 55-5.5 51.5-11 48.5-18.5 37-27 27-38.5 9-51z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bug.svg b/img/icons/font-awesome/bug.svg
new file mode 100644
index 00000000..99ddb4ac
--- /dev/null
+++ b/img/icons/font-awesome/bug.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1696 960q0 26-19 45t-45 19h-224q0 171-67 290l208 209q19 19 19 45t-19 45q-18 19-45 19t-45-19l-198-197q-5 5-15 13t-42 28.5-65 36.5-82 29-97 13v-896h-128v896q-51 0-101.5-13.5t-87-33-66-39-43.5-32.5l-15-14-183 207q-20 21-48 21-24 0-43-16-19-18-20.5-44.5t15.5-46.5l202-227q-58-114-58-274h-224q-26 0-45-19t-19-45 19-45 45-19h224v-294l-173-173q-19-19-19-45t19-45 45-19 45 19l173 173h844l173-173q19-19 45-19t45 19 19 45-19 45l-173 173v294h224q26 0 45 19t19 45zm-480-576h-640q0-133 93.5-226.5t226.5-93.5 226.5 93.5 93.5 226.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/building-o.svg b/img/icons/font-awesome/building-o.svg
new file mode 100644
index 00000000..b8939bf2
--- /dev/null
+++ b/img/icons/font-awesome/building-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M576 1312v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm0-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm256 0v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm768 512v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm768 512v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm768 512v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm512 256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm256 0v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256 1376h384v-1536h-1152v1536h384v-224q0-13 9.5-22.5t22.5-9.5h320q13 0 22.5 9.5t9.5 22.5v224zm512-1600v1664q0 26-19 45t-45 19h-1280q-26 0-45-19t-19-45v-1664q0-26 19-45t45-19h1280q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/building.svg b/img/icons/font-awesome/building.svg
new file mode 100644
index 00000000..857c3131
--- /dev/null
+++ b/img/icons/font-awesome/building.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1472 0q26 0 45 19t19 45v1664q0 26-19 45t-45 19h-1280q-26 0-45-19t-19-45v-1664q0-26 19-45t45-19h1280zm-832 288v64q0 14 9 23t23 9h64q14 0 23-9t9-23v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23zm0 256v64q0 14 9 23t23 9h64q14 0 23-9t9-23v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23zm0 256v64q0 14 9 23t23 9h64q14 0 23-9t9-23v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23zm0 256v64q0 14 9 23t23 9h64q14 0 23-9t9-23v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23zm-128 320v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v64q0 14 9 23t23 9h64q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v64q0 14 9 23t23 9h64q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v64q0 14 9 23t23 9h64q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v64q0 14 9 23t23 9h64q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v64q0 14 9 23t23 9h64q14 0 23-9t9-23zm512 1280v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-512v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v64q0 14 9 23t23 9h64q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v64q0 14 9 23t23 9h64q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v64q0 14 9 23t23 9h64q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v64q0 14 9 23t23 9h64q14 0 23-9t9-23zm256 1024v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v64q0 14 9 23t23 9h64q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v64q0 14 9 23t23 9h64q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v64q0 14 9 23t23 9h64q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v64q0 14 9 23t23 9h64q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v64q0 14 9 23t23 9h64q14 0 23-9t9-23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bullhorn.svg b/img/icons/font-awesome/bullhorn.svg
new file mode 100644
index 00000000..b98a4de5
--- /dev/null
+++ b/img/icons/font-awesome/bullhorn.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 640q53 0 90.5 37.5t37.5 90.5-37.5 90.5-90.5 37.5v384q0 52-38 90t-90 38q-417-347-812-380-58 19-91 66t-31 100.5 40 92.5q-20 33-23 65.5t6 58 33.5 55 48 50 61.5 50.5q-29 58-111.5 83t-168.5 11.5-132-55.5q-7-23-29.5-87.5t-32-94.5-23-89-15-101 3.5-98.5 22-110.5h-122q-66 0-113-47t-47-113v-192q0-66 47-113t113-47h480q435 0 896-384 52 0 90 38t38 90v384zm-128 604v-954q-394 302-768 343v270q377 42 768 341z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bullseye.svg b/img/icons/font-awesome/bullseye.svg
new file mode 100644
index 00000000..4a43dba2
--- /dev/null
+++ b/img/icons/font-awesome/bullseye.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 896q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75 75 181zm128 0q0-159-112.5-271.5t-271.5-112.5-271.5 112.5-112.5 271.5 112.5 271.5 271.5 112.5 271.5-112.5 112.5-271.5zm128 0q0 212-150 362t-362 150-362-150-150-362 150-362 362-150 362 150 150 362zm128 0q0-130-51-248.5t-136.5-204-204-136.5-248.5-51-248.5 51-204 136.5-136.5 204-51 248.5 51 248.5 136.5 204 204 136.5 248.5 51 248.5-51 204-136.5 136.5-204 51-248.5zm128 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/bus.svg b/img/icons/font-awesome/bus.svg
new file mode 100644
index 00000000..5a46db5e
--- /dev/null
+++ b/img/icons/font-awesome/bus.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M512 1216q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm1024 0q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm-46-396l-72-384q-5-23-22.5-37.5t-40.5-14.5h-918q-23 0-40.5 14.5t-22.5 37.5l-72 384q-5 30 14 53t49 23h1062q30 0 49-23t14-53zm-226-612q0-20-14-34t-34-14h-640q-20 0-34 14t-14 34 14 34 34 14h640q20 0 34-14t14-34zm400 725v603h-128v128q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5v-128h-768v128q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5v-128h-128v-603q0-112 25-223l103-454q9-78 97.5-137t230-89 312.5-30 312.5 30 230 89 97.5 137l105 454q23 102 23 223z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/buysellads.svg b/img/icons/font-awesome/buysellads.svg
new file mode 100644
index 00000000..89f88175
--- /dev/null
+++ b/img/icons/font-awesome/buysellads.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1043 1086h-294l147-551zm86 322h311l-324-1024h-440l-324 1024h311l383-314zm535-992v960q0 118-85 203t-203 85h-960q-118 0-203-85t-85-203v-960q0-118 85-203t203-85h960q118 0 203 85t85 203z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cab.svg b/img/icons/font-awesome/cab.svg
new file mode 100644
index 00000000..b610f52b
--- /dev/null
+++ b/img/icons/font-awesome/cab.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1824 896q93 0 158.5 65.5t65.5 158.5v384q0 14-9 23t-23 9h-96v64q0 80-56 136t-136 56-136-56-56-136v-64h-1024v64q0 80-56 136t-136 56-136-56-56-136v-64h-96q-14 0-23-9t-9-23v-384q0-93 65.5-158.5t158.5-65.5h28l105-419q23-94 104-157.5t179-63.5h128v-224q0-14 9-23t23-9h448q14 0 23 9t9 23v224h128q98 0 179 63.5t104 157.5l105 419h28zm-1504 480q66 0 113-47t47-113-47-113-113-47-113 47-47 113 47 113 113 47zm196-480h1016l-89-357q-2-8-14-17.5t-21-9.5h-768q-9 0-21 9.5t-14 17.5zm1212 480q66 0 113-47t47-113-47-113-113-47-113 47-47 113 47 113 113 47z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/calculator.svg b/img/icons/font-awesome/calculator.svg
new file mode 100644
index 00000000..89f3721c
--- /dev/null
+++ b/img/icons/font-awesome/calculator.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M384 1536q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm384 0q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm-384-384q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm768 384q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm-384-384q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm-384-384q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm768 384q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm-384-384q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm768 768v-384q0-52-38-90t-90-38-90 38-38 90v384q0 52 38 90t90 38 90-38 38-90zm-384-768q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm384-320v-256q0-26-19-45t-45-19h-1280q-26 0-45 19t-19 45v256q0 26 19 45t45 19h1280q26 0 45-19t19-45zm0 320q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm128-640v1536q0 52-38 90t-90 38h-1408q-52 0-90-38t-38-90v-1536q0-52 38-90t90-38h1408q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/calendar-check-o.svg b/img/icons/font-awesome/calendar-check-o.svg
new file mode 100644
index 00000000..69534776
--- /dev/null
+++ b/img/icons/font-awesome/calendar-check-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1303 964l-512 512q-10 9-23 9t-23-9l-288-288q-9-10-9-23t9-22l46-46q9-9 22-9t23 9l220 220 444-444q10-9 23-9t22 9l46 46q9 9 9 22t-9 23zm-1175 700h1408v-1024h-1408v1024zm384-1216v-288q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v288q0 14 9 23t23 9h64q14 0 23-9t9-23zm768 0v-288q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v288q0 14 9 23t23 9h64q14 0 23-9t9-23zm384-64v1280q0 52-38 90t-90 38h-1408q-52 0-90-38t-38-90v-1280q0-52 38-90t90-38h128v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h384v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h128q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/calendar-minus-o.svg b/img/icons/font-awesome/calendar-minus-o.svg
new file mode 100644
index 00000000..59f0d5e9
--- /dev/null
+++ b/img/icons/font-awesome/calendar-minus-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 1120v64q0 14-9 23t-23 9h-576q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h576q14 0 23 9t9 23zm-1024 544h1408v-1024h-1408v1024zm384-1216v-288q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v288q0 14 9 23t23 9h64q14 0 23-9t9-23zm768 0v-288q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v288q0 14 9 23t23 9h64q14 0 23-9t9-23zm384-64v1280q0 52-38 90t-90 38h-1408q-52 0-90-38t-38-90v-1280q0-52 38-90t90-38h128v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h384v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h128q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/calendar-o.svg b/img/icons/font-awesome/calendar-o.svg
new file mode 100644
index 00000000..9e6b530b
--- /dev/null
+++ b/img/icons/font-awesome/calendar-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M192 1664h1408v-1024h-1408v1024zm384-1216v-288q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v288q0 14 9 23t23 9h64q14 0 23-9t9-23zm768 0v-288q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v288q0 14 9 23t23 9h64q14 0 23-9t9-23zm384-64v1280q0 52-38 90t-90 38h-1408q-52 0-90-38t-38-90v-1280q0-52 38-90t90-38h128v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h384v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h128q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/calendar-plus-o.svg b/img/icons/font-awesome/calendar-plus-o.svg
new file mode 100644
index 00000000..19b9ef2d
--- /dev/null
+++ b/img/icons/font-awesome/calendar-plus-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1536 256q52 0 90 38t38 90v1280q0 52-38 90t-90 38h-1408q-52 0-90-38t-38-90v-1280q0-52 38-90t90-38h128v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h384v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h128zm-384-96v288q0 14 9 23t23 9h64q14 0 23-9t9-23v-288q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23zm-768 0v288q0 14 9 23t23 9h64q14 0 23-9t9-23v-288q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23zm1152 1504v-1024h-1408v1024h1408zm-640-576h224q14 0 23 9t9 23v64q0 14-9 23t-23 9h-224v224q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-224h-224q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h224v-224q0-14 9-23t23-9h64q14 0 23 9t9 23v224z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/calendar-times-o.svg b/img/icons/font-awesome/calendar-times-o.svg
new file mode 100644
index 00000000..1140d539
--- /dev/null
+++ b/img/icons/font-awesome/calendar-times-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1111 1385l-46 46q-9 9-22 9t-23-9l-188-189-188 189q-10 9-23 9t-22-9l-46-46q-9-9-9-22t9-23l189-188-189-188q-9-10-9-23t9-22l46-46q9-9 22-9t23 9l188 188 188-188q10-9 23-9t22 9l46 46q9 9 9 22t-9 23l-188 188 188 188q9 10 9 23t-9 22zm-983 279h1408v-1024h-1408v1024zm384-1216v-288q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v288q0 14 9 23t23 9h64q14 0 23-9t9-23zm768 0v-288q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v288q0 14 9 23t23 9h64q14 0 23-9t9-23zm384-64v1280q0 52-38 90t-90 38h-1408q-52 0-90-38t-38-90v-1280q0-52 38-90t90-38h128v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h384v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h128q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/calendar.svg b/img/icons/font-awesome/calendar.svg
new file mode 100644
index 00000000..3f7990b6
--- /dev/null
+++ b/img/icons/font-awesome/calendar.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M192 1664h288v-288h-288v288zm352 0h320v-288h-320v288zm-352-352h288v-320h-288v320zm352 0h320v-320h-320v320zm-352-384h288v-288h-288v288zm736 736h320v-288h-320v288zm-384-736h320v-288h-320v288zm768 736h288v-288h-288v288zm-384-352h320v-320h-320v320zm-352-864v-288q0-13-9.5-22.5t-22.5-9.5h-64q-13 0-22.5 9.5t-9.5 22.5v288q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5-9.5t9.5-22.5zm736 864h288v-320h-288v320zm-384-384h320v-288h-320v288zm384 0h288v-288h-288v288zm32-480v-288q0-13-9.5-22.5t-22.5-9.5h-64q-13 0-22.5 9.5t-9.5 22.5v288q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5-9.5t9.5-22.5zm384-64v1280q0 52-38 90t-90 38h-1408q-52 0-90-38t-38-90v-1280q0-52 38-90t90-38h128v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h384v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h128q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/camera-retro.svg b/img/icons/font-awesome/camera-retro.svg
new file mode 100644
index 00000000..73c05b07
--- /dev/null
+++ b/img/icons/font-awesome/camera-retro.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M928 832q0-14-9-23t-23-9q-66 0-113 47t-47 113q0 14 9 23t23 9 23-9 9-23q0-40 28-68t68-28q14 0 23-9t9-23zm224 130q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75 75 181zm-1024 574h1536v-128h-1536v128zm1152-574q0-159-112.5-271.5t-271.5-112.5-271.5 112.5-112.5 271.5 112.5 271.5 271.5 112.5 271.5-112.5 112.5-271.5zm-1024-642h384v-128h-384v128zm-128 192h1536v-256h-828l-64 128h-644v128zm1664-256v1280q0 53-37.5 90.5t-90.5 37.5h-1536q-53 0-90.5-37.5t-37.5-90.5v-1280q0-53 37.5-90.5t90.5-37.5h1536q53 0 90.5 37.5t37.5 90.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/camera.svg b/img/icons/font-awesome/camera.svg
new file mode 100644
index 00000000..52e9af96
--- /dev/null
+++ b/img/icons/font-awesome/camera.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 672q119 0 203.5 84.5t84.5 203.5-84.5 203.5-203.5 84.5-203.5-84.5-84.5-203.5 84.5-203.5 203.5-84.5zm704-416q106 0 181 75t75 181v896q0 106-75 181t-181 75h-1408q-106 0-181-75t-75-181v-896q0-106 75-181t181-75h224l51-136q19-49 69.5-84.5t103.5-35.5h512q53 0 103.5 35.5t69.5 84.5l51 136h224zm-704 1152q185 0 316.5-131.5t131.5-316.5-131.5-316.5-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/car.svg b/img/icons/font-awesome/car.svg
new file mode 100644
index 00000000..11b8b791
--- /dev/null
+++ b/img/icons/font-awesome/car.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M480 1088q0-66-47-113t-113-47-113 47-47 113 47 113 113 47 113-47 47-113zm36-320h1016l-89-357q-2-8-14-17.5t-21-9.5h-768q-9 0-21 9.5t-14 17.5zm1372 320q0-66-47-113t-113-47-113 47-47 113 47 113 113 47 113-47 47-113zm160-96v384q0 14-9 23t-23 9h-96v128q0 80-56 136t-136 56-136-56-56-136v-128h-1024v128q0 80-56 136t-136 56-136-56-56-136v-128h-96q-14 0-23-9t-9-23v-384q0-93 65.5-158.5t158.5-65.5h28l105-419q23-94 104-157.5t179-63.5h768q98 0 179 63.5t104 157.5l105 419h28q93 0 158.5 65.5t65.5 158.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/caret-down.svg b/img/icons/font-awesome/caret-down.svg
new file mode 100644
index 00000000..d11cf041
--- /dev/null
+++ b/img/icons/font-awesome/caret-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 704q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/caret-left.svg b/img/icons/font-awesome/caret-left.svg
new file mode 100644
index 00000000..58174e10
--- /dev/null
+++ b/img/icons/font-awesome/caret-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1216 448v896q0 26-19 45t-45 19-45-19l-448-448q-19-19-19-45t19-45l448-448q19-19 45-19t45 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/caret-right.svg b/img/icons/font-awesome/caret-right.svg
new file mode 100644
index 00000000..39410a97
--- /dev/null
+++ b/img/icons/font-awesome/caret-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 896q0 26-19 45l-448 448q-19 19-45 19t-45-19-19-45v-896q0-26 19-45t45-19 45 19l448 448q19 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/caret-square-o-down.svg b/img/icons/font-awesome/caret-square-o-down.svg
new file mode 100644
index 00000000..1a8ce92a
--- /dev/null
+++ b/img/icons/font-awesome/caret-square-o-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1273 675q18 35-5 66l-320 448q-19 27-52 27t-52-27l-320-448q-23-31-5-66 17-35 57-35h640q40 0 57 35zm135 701v-960q0-13-9.5-22.5t-22.5-9.5h-960q-13 0-22.5 9.5t-9.5 22.5v960q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5-9.5t9.5-22.5zm256-960v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/caret-square-o-left.svg b/img/icons/font-awesome/caret-square-o-left.svg
new file mode 100644
index 00000000..8431db28
--- /dev/null
+++ b/img/icons/font-awesome/caret-square-o-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 576v640q0 26-19 45t-45 19q-20 0-37-12l-448-320q-27-19-27-52t27-52l448-320q17-12 37-12 26 0 45 19t19 45zm256 800v-960q0-13-9.5-22.5t-22.5-9.5h-960q-13 0-22.5 9.5t-9.5 22.5v960q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5-9.5t9.5-22.5zm256-960v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/caret-square-o-right.svg b/img/icons/font-awesome/caret-square-o-right.svg
new file mode 100644
index 00000000..4a704fca
--- /dev/null
+++ b/img/icons/font-awesome/caret-square-o-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1216 896q0 33-27 52l-448 320q-31 23-66 5-35-17-35-57v-640q0-40 35-57 35-18 66 5l448 320q27 19 27 52zm192 480v-960q0-14-9-23t-23-9h-960q-14 0-23 9t-9 23v960q0 14 9 23t23 9h960q14 0 23-9t9-23zm256-960v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/caret-square-o-up.svg b/img/icons/font-awesome/caret-square-o-up.svg
new file mode 100644
index 00000000..c3e658f7
--- /dev/null
+++ b/img/icons/font-awesome/caret-square-o-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1273 1117q-17 35-57 35h-640q-40 0-57-35-18-35 5-66l320-448q19-27 52-27t52 27l320 448q23 31 5 66zm135 259v-960q0-13-9.5-22.5t-22.5-9.5h-960q-13 0-22.5 9.5t-9.5 22.5v960q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5-9.5t9.5-22.5zm256-960v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/caret-up.svg b/img/icons/font-awesome/caret-up.svg
new file mode 100644
index 00000000..9c8e7886
--- /dev/null
+++ b/img/icons/font-awesome/caret-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 1216q0 26-19 45t-45 19h-896q-26 0-45-19t-19-45 19-45l448-448q19-19 45-19t45 19l448 448q19 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cart-arrow-down.svg b/img/icons/font-awesome/cart-arrow-down.svg
new file mode 100644
index 00000000..0d01199e
--- /dev/null
+++ b/img/icons/font-awesome/cart-arrow-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1344 704q0-26-19-45t-45-19-45 19l-147 146v-293q0-26-19-45t-45-19-45 19-19 45v293l-147-146q-19-19-45-19t-45 19-19 45 19 45l256 256q19 19 45 19t45-19l256-256q19-19 19-45zm-640 832q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm896 0q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm128-1088v512q0 24-16 42.5t-41 21.5l-1044 122q1 7 4.5 21.5t6 26.5 2.5 22q0 16-24 64h920q26 0 45 19t19 45-19 45-45 19h-1024q-26 0-45-19t-19-45q0-14 11-39.5t29.5-59.5 20.5-38l-177-823h-204q-26 0-45-19t-19-45 19-45 45-19h256q16 0 28.5 6.5t20 15.5 13 24.5 7.5 26.5 5.5 29.5 4.5 25.5h1201q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cart-plus.svg b/img/icons/font-awesome/cart-plus.svg
new file mode 100644
index 00000000..dce671a5
--- /dev/null
+++ b/img/icons/font-awesome/cart-plus.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1280 704q0-26-19-45t-45-19h-128v-128q0-26-19-45t-45-19-45 19-19 45v128h-128q-26 0-45 19t-19 45 19 45 45 19h128v128q0 26 19 45t45 19 45-19 19-45v-128h128q26 0 45-19t19-45zm-576 832q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm896 0q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm128-1088v512q0 24-16 42.5t-41 21.5l-1044 122q1 7 4.5 21.5t6 26.5 2.5 22q0 16-24 64h920q26 0 45 19t19 45-19 45-45 19h-1024q-26 0-45-19t-19-45q0-14 11-39.5t29.5-59.5 20.5-38l-177-823h-204q-26 0-45-19t-19-45 19-45 45-19h256q16 0 28.5 6.5t20 15.5 13 24.5 7.5 26.5 5.5 29.5 4.5 25.5h1201q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cc-amex.svg b/img/icons/font-awesome/cc-amex.svg
new file mode 100644
index 00000000..6c7fc53d
--- /dev/null
+++ b/img/icons/font-awesome/cc-amex.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M119 682h89l-45-108zm621 526l74-79-70-79h-163v49h142v55h-142v54h159zm158-78l99 110v-217zm288-47q0-33-40-33h-84v69h83q41 0 41-36zm289-4q0-29-42-29h-82v61h81q43 0 43-32zm-278-466q0-29-42-29h-82v60h81q43 0 43-31zm459 69h89l-44-108zm-957-155v271h-66v-212l-94 212h-57l-94-212v212h-132l-25-60h-135l-25 60h-70l116-271h96l110 257v-257h106l85 184 77-184h108zm556 556q0 20-5.5 35t-14 25-22.5 16.5-26 10-31.5 4.5-31.5 1-32.5-.5-29.5-.5v91h-126l-80-90-83 90h-256v-271h260l80 89 82-89h207q109 0 109 89zm-291-341v56h-217v-271h217v57h-152v49h148v55h-148v54h152zm1340 559v229q0 55-38.5 94.5t-93.5 39.5h-2040q-55 0-93.5-39.5t-38.5-94.5v-678h111l25-61h55l25 61h218v-46l19 46h113l20-47v47h541v-99l10-1q10 0 10 14v86h279v-23q23 12 55 18t52.5 6.5 63-.5 51.5-1l25-61h56l25 61h227v-58l34 58h182v-378h-180v44l-25-44h-185v44l-23-44h-249q-69 0-109 22v-22h-172v22q-24-22-73-22h-628l-43 97-43-97h-198v44l-22-44h-169l-78 179v-391q0-55 38.5-94.5t93.5-39.5h2040q55 0 93.5 39.5t38.5 94.5v678h-120q-51 0-81 22v-22h-177q-55 0-78 22v-22h-316v22q-31-22-87-22h-209v22q-23-22-91-22h-234l-54 58-50-58h-349v378h343l55-59 52 59h211v-89h21q59 0 90-13v102h174v-99h8q8 0 10 2t2 10v87h529q57 0 88-24v24h168q60 0 95-17zm-758-234q0 23-12 43t-34 29q25 9 34 26t9 46v54h-65v-45q0-33-12-43.5t-46-10.5h-69v99h-65v-271h154q48 0 77 15t29 58zm-277-467q0 24-12.5 44t-33.5 29q26 9 34.5 25.5t8.5 46.5v53h-65q0-9 .5-26.5t0-25-3-18.5-8.5-16-17.5-8.5-29.5-3.5h-70v98h-64v-271l153 1q49 0 78 14.5t29 57.5zm529 609v56h-216v-271h216v56h-151v49h148v55h-148v54zm-426-682v271h-66v-271h66zm693 652q0 86-102 86h-126v-58h126q34 0 34-25 0-16-17-21t-41.5-5-49.5-3.5-42-22.5-17-55q0-39 26-60t66-21h130v57h-119q-36 0-36 25 0 16 17.5 20.5t42 4 49 2.5 42 21.5 17.5 54.5zm239-50v101q-24 35-88 35h-125v-58h125q33 0 33-25 0-13-12.5-19t-31-5.5-40-2-40-8-31-24-12.5-48.5q0-39 26.5-60t66.5-21h129v57h-118q-36 0-36 25 0 20 29 22t68.5 5 56.5 26zm-165-601v270h-92l-122-203v203h-132l-26-60h-134l-25 60h-75q-129 0-129-133 0-138 133-138h63v59q-7 0-28-1t-28.5-.5-23 2-21.5 6.5-14.5 13.5-11.5 23-3 33.5q0 38 13.5 58t49.5 20h29l92-213h97l109 256v-256h99l114 188v-188h66z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cc-diners-club.svg b/img/icons/font-awesome/cc-diners-club.svg
new file mode 100644
index 00000000..95bf3d32
--- /dev/null
+++ b/img/icons/font-awesome/cc-diners-club.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M858 1241v-693q-106 41-172 135.5t-66 211.5 66 211.5 172 134.5zm504-346q0-117-66-211.5t-172-135.5v694q106-41 172-135.5t66-211.5zm215 0q0 159-78.5 294t-213.5 213.5-294 78.5q-119 0-227.5-46.5t-187-125-125-187-46.5-227.5q0-159 78.5-294t213.5-213.5 294-78.5 294 78.5 213.5 213.5 78.5 294zm383 7q0-139-55.5-261.5t-147.5-205.5-213.5-131-252.5-48h-301q-176 0-323.5 81t-235 230-87.5 335q0 171 87 317.5t236 231.5 323 85h301q129 0 251.5-50.5t214.5-135 147.5-202.5 55.5-246zm344-646v1280q0 52-38 90t-90 38h-2048q-52 0-90-38t-38-90v-1280q0-52 38-90t90-38h2048q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cc-discover.svg b/img/icons/font-awesome/cc-discover.svg
new file mode 100644
index 00000000..4a627fb9
--- /dev/null
+++ b/img/icons/font-awesome/cc-discover.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M313 777q0 51-36 84-29 26-89 26h-17v-220h17q61 0 89 27 36 31 36 83zm1776-65q0 52-64 52h-19v-101h20q63 0 63 49zm-1709 65q0-74-50-120.5t-129-46.5h-95v333h95q74 0 119-38 60-51 60-128zm30 166h65v-333h-65v333zm320-101q0-40-20.5-62t-75.5-42q-29-10-39.5-19t-10.5-23q0-16 13.5-26.5t34.5-10.5q29 0 53 27l34-44q-41-37-98-37-44 0-74 27.5t-30 67.5q0 35 18 55.5t64 36.5q37 13 45 19 19 12 19 34 0 20-14 33.5t-36 13.5q-48 0-71-44l-42 40q44 64 115 64 51 0 83-30.5t32-79.5zm278 90v-77q-37 37-78 37-49 0-80.5-32.5t-31.5-82.5q0-48 31.5-81.5t77.5-33.5q43 0 81 38v-77q-40-20-80-20-74 0-125.5 50.5t-51.5 123.5 51 123.5 125 50.5q42 0 81-19zm1232 604v-527q-65 40-144.5 84t-237.5 117-329.5 137.5-417.5 134.5-504 118h1569q26 0 45-19t19-45zm-851-757q0-75-53-128t-128-53-128 53-53 128 53 128 128 53 128-53 53-128zm152 173l144-342h-71l-90 224-89-224h-71l142 342h35zm173-9h184v-56h-119v-90h115v-56h-115v-74h119v-57h-184v333zm391 0h80l-105-140q76-16 76-94 0-47-31-73t-87-26h-97v333h65v-133h9zm199-681v1268q0 56-38.5 95t-93.5 39h-2040q-55 0-93.5-39t-38.5-95v-1268q0-56 38.5-95t93.5-39h2040q55 0 93.5 39t38.5 95z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cc-jcb.svg b/img/icons/font-awesome/cc-jcb.svg
new file mode 100644
index 00000000..f042667d
--- /dev/null
+++ b/img/icons/font-awesome/cc-jcb.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1951 998q0 26-15.5 44.5t-38.5 23.5q-8 2-18 2h-153v-140h153q10 0 18 2 23 5 38.5 23.5t15.5 44.5zm-18-213q0 25-15 42t-38 21q-3 1-15 1h-139v-129h139q3 0 8.5.5t6.5.5q23 4 38 21.5t15 42.5zm-1205 164v-308h-228v308q0 58-38 94.5t-105 36.5q-108 0-229-59v112q53 15 121 23t109 9l42 1q328 0 328-217zm714 184v-113q-99 52-200 59-108 8-169-41t-61-142 61-142 169-41q101 7 200 58v-112q-48-12-100-19.5t-80-9.5l-28-2q-127-6-218.5 14t-140.5 60-71 88-22 106 22 106 71 88 140.5 60 218.5 14q101-4 208-31zm734-115q0-54-43-88.5t-109-39.5v-3q57-8 89-41.5t32-79.5q0-55-41-88t-107-36q-3 0-12-.5t-14-.5h-455v510h491q74 0 121.5-36.5t47.5-96.5zm128-762v1280q0 52-38 90t-90 38h-2048q-52 0-90-38t-38-90v-1280q0-52 38-90t90-38h2048q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cc-mastercard.svg b/img/icons/font-awesome/cc-mastercard.svg
new file mode 100644
index 00000000..480c0146
--- /dev/null
+++ b/img/icons/font-awesome/cc-mastercard.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1119 341q-128-85-281-85-103 0-197.5 40.5t-162.5 108.5-108.5 162-40.5 197q0 104 40.5 198t108.5 162 162 108.5 198 40.5q153 0 281-85-131-107-178-265.5t.5-316.5 177.5-265zm33 24q-126 99-172 249.5t-.5 300.5 172.5 249q127-99 172.5-249t-.5-300.5-172-249.5zm33-24q130 107 177.5 265.5t.5 317-178 264.5q128 85 281 85 104 0 198-40.5t162-108.5 108.5-162 40.5-198q0-103-40.5-197t-108.5-162-162.5-108.5-197.5-40.5q-153 0-281 85zm741 722h7v-3h-17v3h7v17h3v-17zm29 17h4v-20h-5l-6 13-6-13h-5v20h3v-15l6 13h4l5-13v15zm-8 440v2h-5v-3h5v1zm0 9h3l-4-5h2l1-1q1-1 1-3t-1-3l-1-1h-9v13h3v-5h1zm-1262-68q0-19 11-31t30-12q18 0 29 12.5t11 30.5q0 19-11 31t-29 12q-19 0-30-12t-11-31zm473-44q30 0 35 32h-70q5-32 35-32zm356 44q0-19 11-31t29-12 29.5 12.5 11.5 30.5q0 19-11 31t-30 12q-18 0-29-12t-11-31zm272 0q0-18 11.5-30.5t29.5-12.5 29.5 12.5 11.5 30.5q0 19-11.5 31t-29.5 12-29.5-12.5-11.5-30.5zm158 72q-2 0-4-1-1 0-3-2t-2-3q-1-2-1-4 0-3 1-4 0-2 2-4l1-1q2 0 2-1 2-1 4-1 3 0 4 1l4 2 2 4v1q1 2 1 3l-1 1v3l-1 1-1 2q-2 2-4 2-1 1-4 1zm-1345-4h30v-85q0-24-14.5-38.5t-39.5-15.5q-32 0-47 24-14-24-45-24-24 0-39 20v-16h-30v135h30v-75q0-36 33-36 30 0 30 36v75h29v-75q0-36 33-36 30 0 30 36v75zm166 0h29v-135h-29v16q-17-20-43-20-29 0-48 20t-19 51 19 51 48 20q28 0 43-20v17zm178-41q0-34-47-40l-14-2q-23-4-23-14 0-15 25-15 23 0 43 11l12-24q-22-14-55-14-26 0-41 12t-15 32q0 33 47 39l13 2q24 4 24 14 0 17-31 17-25 0-45-14l-13 23q25 17 58 17 29 0 45.5-12t16.5-32zm130 34l-8-25q-13 7-26 7-19 0-19-22v-61h48v-27h-48v-41h-30v41h-28v27h28v61q0 50 47 50 21 0 36-10zm86-132q-29 0-48 20t-19 51q0 32 19.5 51.5t49.5 19.5q33 0 55-19l-14-22q-18 15-39 15-34 0-41-33h101v-12q0-32-18-51.5t-46-19.5zm159 0q-23 0-35 20v-16h-30v135h30v-76q0-35 29-35 10 0 18 4l9-28q-9-4-21-4zm30 71q0 31 19.5 51t52.5 20q29 0 48-16l-14-24q-18 13-35 12-18 0-29.5-12t-11.5-31 11.5-31 29.5-12q19 0 35 12l14-24q-20-16-48-16-33 0-52.5 20t-19.5 51zm245 68h30v-135h-30v16q-15-20-42-20-29 0-48.5 20t-19.5 51 19.5 51 48.5 20q28 0 42-20v17zm133-139q-23 0-35 20v-16h-29v135h29v-76q0-35 29-35 10 0 18 4l9-28q-8-4-21-4zm140 139h29v-190h-29v71q-15-20-43-20t-47.5 20.5-19.5 50.5 19.5 50.5 47.5 20.5q29 0 43-20v17zm78-20l-2 1h-3q-2 1-4 3-3 1-3 4-1 2-1 6 0 3 1 5 0 2 3 4 2 2 4 3t5 1q4 0 6-1 0-1 2-2l2-1q1-1 3-4 1-2 1-5 0-4-1-6-1-1-3-4 0-1-2-2l-2-1q-1 0-3-.5t-3-.5zm360-1253v1280q0 52-38 90t-90 38h-2048q-52 0-90-38t-38-90v-1280q0-52 38-90t90-38h2048q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cc-paypal.svg b/img/icons/font-awesome/cc-paypal.svg
new file mode 100644
index 00000000..d2872c97
--- /dev/null
+++ b/img/icons/font-awesome/cc-paypal.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M745 906q0 37-25.5 61.5t-62.5 24.5q-29 0-46.5-16t-17.5-44q0-37 25-62.5t62-25.5q28 0 46.5 16.5t18.5 45.5zm785-149q0 42-22 57t-66 15l-32 1 17-107q2-11 13-11h18q22 0 35 2t25 12.5 12 30.5zm351 149q0 36-25.5 61t-61.5 25q-29 0-47-16t-18-44q0-37 25-62.5t62-25.5q28 0 46.5 16.5t18.5 45.5zm-1368-171q0-59-38.5-85.5t-100.5-26.5h-160q-19 0-21 19l-65 408q-1 6 3 11t10 5h76q20 0 22-19l18-110q1-8 7-13t15-6.5 17-1.5 19 1 14 1q86 0 135-48.5t49-134.5zm309 312l41-261q1-6-3-11t-10-5h-76q-14 0-17 33-27-40-95-40-72 0-122.5 54t-50.5 127q0 59 34.5 94t92.5 35q28 0 58-12t48-32q-4 12-4 21 0 16 13 16h69q19 0 22-19zm447-263q0-5-4-9.5t-9-4.5h-77q-11 0-18 10l-106 156-44-150q-5-16-22-16h-75q-5 0-9 4.5t-4 9.5q0 2 19.5 59t42 123 23.5 70q-82 112-82 120 0 13 13 13h77q11 0 18-10l255-368q2-2 2-7zm380-49q0-59-38.5-85.5t-100.5-26.5h-159q-20 0-22 19l-65 408q-1 6 3 11t10 5h82q12 0 16-13l18-116q1-8 7-13t15-6.5 17-1.5 19 1 14 1q86 0 135-48.5t49-134.5zm309 312l41-261q1-6-3-11t-10-5h-76q-14 0-17 33-26-40-95-40-72 0-122.5 54t-50.5 127q0 59 34.5 94t92.5 35q29 0 59-12t47-32q0 1-2 9t-2 12q0 16 13 16h69q19 0 22-19zm218-409v-1q0-14-13-14h-74q-11 0-13 11l-65 416-1 2q0 5 4 9.5t10 4.5h66q19 0 21-19zm-1784 134q-5 35-26 46t-60 11l-33 1 17-107q2-11 13-11h19q40 0 58 11.5t12 48.5zm1912-516v1280q0 52-38 90t-90 38h-2048q-52 0-90-38t-38-90v-1280q0-52 38-90t90-38h2048q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cc-stripe.svg b/img/icons/font-awesome/cc-stripe.svg
new file mode 100644
index 00000000..588c4487
--- /dev/null
+++ b/img/icons/font-awesome/cc-stripe.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1597 903q0 69-21 106-19 35-52 35-23 0-41-9v-224q29-30 57-30 57 0 57 122zm438-36h-110q6-98 56-98 51 0 54 98zm-1559 135q0-59-33-91.5t-101-57.5q-36-13-52-24t-16-25q0-26 38-26 58 0 124 33l18-112q-67-32-149-32-77 0-123 38-48 39-48 109 0 58 32.5 90.5t99.5 56.5q39 14 54.5 25.5t15.5 27.5q0 31-48 31-29 0-70-12.5t-72-30.5l-18 113q72 41 168 41 81 0 129-37 51-41 51-117zm295-215l19-111h-96v-135l-129 21-18 114-46 8-17 103h62v219q0 84 44 120 38 30 111 30 32 0 79-11v-118q-32 7-44 7-42 0-42-50v-197h77zm316 25v-139q-15-3-28-3-32 0-55.5 16t-33.5 46l-10-56h-131v471h150v-306q26-31 82-31 16 0 26 2zm37 335h150v-471h-150v471zm622-249q0-122-45-179-40-52-111-52-64 0-117 56l-8-47h-132v645l150-25v-151q36 11 68 11 83 0 134-56 61-65 61-202zm-468-348q0-33-23-56t-56-23-56 23-23 56 23 56.5 56 23.5 56-23.5 23-56.5zm898 357q0-113-48-176-50-64-144-64-96 0-151.5 66t-55.5 180q0 128 63 188 55 55 161 55 101 0 160-40l-16-103q-57 31-128 31-43 0-63-19-23-19-28-66h248q2-14 2-52zm128-651v1280q0 52-38 90t-90 38h-2048q-52 0-90-38t-38-90v-1280q0-52 38-90t90-38h2048q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cc-visa.svg b/img/icons/font-awesome/cc-visa.svg
new file mode 100644
index 00000000..f7017552
--- /dev/null
+++ b/img/icons/font-awesome/cc-visa.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1975 990h-138q14-37 66-179l3-9q4-10 10-26t9-26l12 55zm-1444-65l-58-295q-11-54-75-54h-268l-2 13q311 79 403 336zm179-349l-162 438-17-89q-26-70-85-129.5t-131-88.5l135 510h175l261-641h-176zm139 642h166l104-642h-166zm768-626q-69-27-149-27-123 0-201 59t-79 153q-1 102 145 174 48 23 67 41t19 39q0 30-30 46t-69 16q-86 0-156-33l-22-11-23 144q74 34 185 34 130 1 208.5-59t80.5-160q0-106-140-174-49-25-71-42t-22-38q0-22 24.5-38.5t70.5-16.5q70-1 124 24l15 8zm425-16h-128q-65 0-87 54l-246 588h174l35-96h212q5 22 20 96h154zm262-320v1280q0 52-38 90t-90 38h-2048q-52 0-90-38t-38-90v-1280q0-52 38-90t90-38h2048q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cc.svg b/img/icons/font-awesome/cc.svg
new file mode 100644
index 00000000..686a2ea9
--- /dev/null
+++ b/img/icons/font-awesome/cc.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M785 1008h207q-14 158-98.5 248.5t-214.5 90.5q-162 0-254.5-116t-92.5-316q0-194 93-311.5t233-117.5q148 0 232 87t97 247h-203q-5-64-35.5-99t-81.5-35q-57 0-88.5 60.5t-31.5 177.5q0 48 5 84t18 69.5 40 51.5 66 18q95 0 109-139zm712 0h206q-14 158-98 248.5t-214 90.5q-162 0-254.5-116t-92.5-316q0-194 93-311.5t233-117.5q148 0 232 87t97 247h-204q-4-64-35-99t-81-35q-57 0-88.5 60.5t-31.5 177.5q0 48 5 84t18 69.5 39.5 51.5 65.5 18q49 0 76.5-38t33.5-101zm359-119q0-207-15.5-307t-60.5-161q-6-8-13.5-14t-21.5-15-16-11q-86-63-697-63-625 0-710 63-5 4-17.5 11.5t-21 14-14.5 14.5q-45 60-60 159.5t-15 308.5q0 208 15 307.5t60 160.5q6 8 15 15t20.5 14 17.5 12q44 33 239.5 49t470.5 16q610 0 697-65 5-4 17-11t20.5-14 13.5-16q46-60 61-159t15-309zm192-761v1536h-2048v-1536h2048z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/certificate.svg b/img/icons/font-awesome/certificate.svg
new file mode 100644
index 00000000..c387e614
--- /dev/null
+++ b/img/icons/font-awesome/certificate.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1504 896l138 135q30 28 20 70-12 41-52 51l-188 48 53 186q12 41-19 70-29 31-70 19l-186-53-48 188q-10 40-51 52-12 2-19 2-31 0-51-22l-135-138-135 138q-28 30-70 20-41-11-51-52l-48-188-186 53q-41 12-70-19-31-29-19-70l53-186-188-48q-40-10-52-51-10-42 20-70l138-135-138-135q-30-28-20-70 12-41 52-51l188-48-53-186q-12-41 19-70 29-31 70-19l186 53 48-188q10-41 51-51 41-12 70 19l135 139 135-139q29-30 70-19 41 10 51 51l48 188 186-53q41-12 70 19 31 29 19 70l-53 186 188 48q40 10 52 51 10 42-20 70z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/chain-broken.svg b/img/icons/font-awesome/chain-broken.svg
new file mode 100644
index 00000000..4c6b9f4c
--- /dev/null
+++ b/img/icons/font-awesome/chain-broken.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M503 1271l-256 256q-11 9-23 9t-23-9q-9-10-9-23t9-23l256-256q10-9 23-9t23 9q9 10 9 23t-9 23zm169 41v320q0 14-9 23t-23 9-23-9-9-23v-320q0-14 9-23t23-9 23 9 9 23zm-224-224q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23 9-23 23-9h320q14 0 23 9t9 23zm1264 128q0 120-85 203l-147 146q-83 83-203 83-121 0-204-85l-334-335q-21-21-42-56l239-18 273 274q27 27 68 27.5t68-26.5l147-146q28-28 28-67 0-40-28-68l-274-275 18-239q35 21 56 42l336 336q84 86 84 204zm-617-724l-239 18-273-274q-28-28-68-28-39 0-68 27l-147 146q-28 28-28 67 0 40 28 68l274 274-18 240q-35-21-56-42l-336-336q-84-86-84-204 0-120 85-203l147-146q83-83 203-83 121 0 204 85l334 335q21 21 42 56zm633 84q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23 9-23 23-9h320q14 0 23 9t9 23zm-544-544v320q0 14-9 23t-23 9-23-9-9-23v-320q0-14 9-23t23-9 23 9 9 23zm407 151l-256 256q-11 9-23 9t-23-9q-9-10-9-23t9-23l256-256q10-9 23-9t23 9q9 10 9 23t-9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/chain.svg b/img/icons/font-awesome/chain.svg
new file mode 100644
index 00000000..f1a0088a
--- /dev/null
+++ b/img/icons/font-awesome/chain.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1520 1216q0-40-28-68l-208-208q-28-28-68-28-42 0-72 32 3 3 19 18.5t21.5 21.5 15 19 13 25.5 3.5 27.5q0 40-28 68t-68 28q-15 0-27.5-3.5t-25.5-13-19-15-21.5-21.5-18.5-19q-33 31-33 73 0 40 28 68l206 207q27 27 68 27 40 0 68-26l147-146q28-28 28-67zm-703-705q0-40-28-68l-206-207q-28-28-68-28-39 0-68 27l-147 146q-28 28-28 67 0 40 28 68l208 208q27 27 68 27 42 0 72-31-3-3-19-18.5t-21.5-21.5-15-19-13-25.5-3.5-27.5q0-40 28-68t68-28q15 0 27.5 3.5t25.5 13 19 15 21.5 21.5 18.5 19q33-31 33-73zm895 705q0 120-85 203l-147 146q-83 83-203 83-121 0-204-85l-206-207q-83-83-83-203 0-123 88-209l-88-88q-86 88-208 88-120 0-204-84l-208-208q-84-84-84-204t85-203l147-146q83-83 203-83 121 0 204 85l206 207q83 83 83 203 0 123-88 209l88 88q86-88 208-88 120 0 204 84l208 208q84 84 84 204z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/check-circle-o.svg b/img/icons/font-awesome/check-circle-o.svg
new file mode 100644
index 00000000..20d8a6a8
--- /dev/null
+++ b/img/icons/font-awesome/check-circle-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1299 813l-422 422q-19 19-45 19t-45-19l-294-294q-19-19-19-45t19-45l102-102q19-19 45-19t45 19l147 147 275-275q19-19 45-19t45 19l102 102q19 19 19 45t-19 45zm141 83q0-148-73-273t-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273zm224 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/check-circle.svg b/img/icons/font-awesome/check-circle.svg
new file mode 100644
index 00000000..e71f7a9c
--- /dev/null
+++ b/img/icons/font-awesome/check-circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1412 734q0-28-18-46l-91-90q-19-19-45-19t-45 19l-408 407-226-226q-19-19-45-19t-45 19l-91 90q-18 18-18 46 0 27 18 45l362 362q19 19 45 19 27 0 46-19l543-543q18-18 18-45zm252 162q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/check-square-o.svg b/img/icons/font-awesome/check-square-o.svg
new file mode 100644
index 00000000..0d07b95e
--- /dev/null
+++ b/img/icons/font-awesome/check-square-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1472 930v318q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q63 0 117 25 15 7 18 23 3 17-9 29l-49 49q-10 10-23 10-3 0-9-2-23-6-45-6h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113v-254q0-13 9-22l64-64q10-10 23-10 6 0 12 3 20 8 20 29zm231-489l-814 814q-24 24-57 24t-57-24l-430-430q-24-24-24-57t24-57l110-110q24-24 57-24t57 24l263 263 647-647q24-24 57-24t57 24l110 110q24 24 24 57t-24 57z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/check-square.svg b/img/icons/font-awesome/check-square.svg
new file mode 100644
index 00000000..6da396e4
--- /dev/null
+++ b/img/icons/font-awesome/check-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M813 1299l614-614q19-19 19-45t-19-45l-102-102q-19-19-45-19t-45 19l-467 467-211-211q-19-19-45-19t-45 19l-102 102q-19 19-19 45t19 45l358 358q19 19 45 19t45-19zm851-883v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/check.svg b/img/icons/font-awesome/check.svg
new file mode 100644
index 00000000..5af5a9d5
--- /dev/null
+++ b/img/icons/font-awesome/check.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/chevron-circle-down.svg b/img/icons/font-awesome/chevron-circle-down.svg
new file mode 100644
index 00000000..006d6487
--- /dev/null
+++ b/img/icons/font-awesome/chevron-circle-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M941 1299l454-454q19-19 19-45t-19-45l-102-102q-19-19-45-19t-45 19l-307 307-307-307q-19-19-45-19t-45 19l-102 102q-19 19-19 45t19 45l454 454q19 19 45 19t45-19zm723-403q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/chevron-circle-left.svg b/img/icons/font-awesome/chevron-circle-left.svg
new file mode 100644
index 00000000..c33f8787
--- /dev/null
+++ b/img/icons/font-awesome/chevron-circle-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1037 1395l102-102q19-19 19-45t-19-45l-307-307 307-307q19-19 19-45t-19-45l-102-102q-19-19-45-19t-45 19l-454 454q-19 19-19 45t19 45l454 454q19 19 45 19t45-19zm627-499q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/chevron-circle-right.svg b/img/icons/font-awesome/chevron-circle-right.svg
new file mode 100644
index 00000000..2d5ecb17
--- /dev/null
+++ b/img/icons/font-awesome/chevron-circle-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M845 1395l454-454q19-19 19-45t-19-45l-454-454q-19-19-45-19t-45 19l-102 102q-19 19-19 45t19 45l307 307-307 307q-19 19-19 45t19 45l102 102q19 19 45 19t45-19zm819-499q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/chevron-circle-up.svg b/img/icons/font-awesome/chevron-circle-up.svg
new file mode 100644
index 00000000..760c4560
--- /dev/null
+++ b/img/icons/font-awesome/chevron-circle-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1293 1139l102-102q19-19 19-45t-19-45l-454-454q-19-19-45-19t-45 19l-454 454q-19 19-19 45t19 45l102 102q19 19 45 19t45-19l307-307 307 307q19 19 45 19t45-19zm371-243q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/chevron-down.svg b/img/icons/font-awesome/chevron-down.svg
new file mode 100644
index 00000000..ebf21fc4
--- /dev/null
+++ b/img/icons/font-awesome/chevron-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1683 808l-742 741q-19 19-45 19t-45-19l-742-741q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/chevron-left.svg b/img/icons/font-awesome/chevron-left.svg
new file mode 100644
index 00000000..37106ffb
--- /dev/null
+++ b/img/icons/font-awesome/chevron-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1427 301l-531 531 531 531q19 19 19 45t-19 45l-166 166q-19 19-45 19t-45-19l-742-742q-19-19-19-45t19-45l742-742q19-19 45-19t45 19l166 166q19 19 19 45t-19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/chevron-right.svg b/img/icons/font-awesome/chevron-right.svg
new file mode 100644
index 00000000..28ce31c1
--- /dev/null
+++ b/img/icons/font-awesome/chevron-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1363 877l-742 742q-19 19-45 19t-45-19l-166-166q-19-19-19-45t19-45l531-531-531-531q-19-19-19-45t19-45l166-166q19-19 45-19t45 19l742 742q19 19 19 45t-19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/chevron-up.svg b/img/icons/font-awesome/chevron-up.svg
new file mode 100644
index 00000000..ec7d386c
--- /dev/null
+++ b/img/icons/font-awesome/chevron-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1683 1331l-166 165q-19 19-45 19t-45-19l-531-531-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/child.svg b/img/icons/font-awesome/child.svg
new file mode 100644
index 00000000..c45602a0
--- /dev/null
+++ b/img/icons/font-awesome/child.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1444 548l-292 292v824q0 46-33 79t-79 33-79-33-33-79v-384h-64v384q0 46-33 79t-79 33-79-33-33-79v-824l-292-292q-28-28-28-68t28-68q29-28 68.5-28t67.5 28l228 228h368l228-228q28-28 68-28t68 28q28 29 28 68.5t-28 67.5zm-324-164q0 93-65.5 158.5t-158.5 65.5-158.5-65.5-65.5-158.5 65.5-158.5 158.5-65.5 158.5 65.5 65.5 158.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/chrome.svg b/img/icons/font-awesome/chrome.svg
new file mode 100644
index 00000000..1c5cd1c5
--- /dev/null
+++ b/img/icons/font-awesome/chrome.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M893 0q240-2 451 120 232 134 352 372l-742-39q-160-9-294 74.5t-185 229.5l-276-424q128-159 311-245.5t383-87.5zm-747 405l337 663q72 143 211 217t293 45l-230 451q-212-33-385-157.5t-272.5-316-99.5-411.5q0-267 146-491zm1586 169q58 150 59.5 310.5t-48.5 306-153 272-246 209.5q-230 133-498 119l405-623q88-131 82.5-290.5t-106.5-277.5zm-836 20q125 0 213.5 88.5t88.5 213.5-88.5 213.5-213.5 88.5-213.5-88.5-88.5-213.5 88.5-213.5 213.5-88.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/circle-o-notch.svg b/img/icons/font-awesome/circle-o-notch.svg
new file mode 100644
index 00000000..2b9f6bd0
--- /dev/null
+++ b/img/icons/font-awesome/circle-o-notch.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1760 896q0 176-68.5 336t-184 275.5-275.5 184-336 68.5-336-68.5-275.5-184-184-275.5-68.5-336q0-213 97-398.5t265-305.5 374-151v228q-221 45-366.5 221t-145.5 406q0 130 51 248.5t136.5 204 204 136.5 248.5 51 248.5-51 204-136.5 136.5-204 51-248.5q0-230-145.5-406t-366.5-221v-228q206 31 374 151t265 305.5 97 398.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/circle-o.svg b/img/icons/font-awesome/circle-o.svg
new file mode 100644
index 00000000..3f1f6bf0
--- /dev/null
+++ b/img/icons/font-awesome/circle-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 352q-148 0-273 73t-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273-73-273-198-198-273-73zm768 544q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/circle-thin.svg b/img/icons/font-awesome/circle-thin.svg
new file mode 100644
index 00000000..25458d0c
--- /dev/null
+++ b/img/icons/font-awesome/circle-thin.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 256q-130 0-248.5 51t-204 136.5-136.5 204-51 248.5 51 248.5 136.5 204 204 136.5 248.5 51 248.5-51 204-136.5 136.5-204 51-248.5-51-248.5-136.5-204-204-136.5-248.5-51zm768 640q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/circle.svg b/img/icons/font-awesome/circle.svg
new file mode 100644
index 00000000..31c2fa07
--- /dev/null
+++ b/img/icons/font-awesome/circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 896q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/clipboard.svg b/img/icons/font-awesome/clipboard.svg
new file mode 100644
index 00000000..cba4cd59
--- /dev/null
+++ b/img/icons/font-awesome/clipboard.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M768 1664h896v-640h-416q-40 0-68-28t-28-68v-416h-384v1152zm256-1440v-64q0-13-9.5-22.5t-22.5-9.5h-704q-13 0-22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h704q13 0 22.5-9.5t9.5-22.5zm256 672h299l-299-299v299zm512 128v672q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-160h-544q-40 0-68-28t-28-68v-1344q0-40 28-68t68-28h1088q40 0 68 28t28 68v328q21 13 36 28l408 408q28 28 48 76t20 88z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/clock-o.svg b/img/icons/font-awesome/clock-o.svg
new file mode 100644
index 00000000..2f102fac
--- /dev/null
+++ b/img/icons/font-awesome/clock-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 544v448q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h224v-352q0-14 9-23t23-9h64q14 0 23 9t9 23zm416 352q0-148-73-273t-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273zm224 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/clone.svg b/img/icons/font-awesome/clone.svg
new file mode 100644
index 00000000..20b69983
--- /dev/null
+++ b/img/icons/font-awesome/clone.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 1632v-1088q0-13-9.5-22.5t-22.5-9.5h-1088q-13 0-22.5 9.5t-9.5 22.5v1088q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5-9.5t9.5-22.5zm128-1088v1088q0 66-47 113t-113 47h-1088q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1088q66 0 113 47t47 113zm-384-384v160h-128v-160q0-13-9.5-22.5t-22.5-9.5h-1088q-13 0-22.5 9.5t-9.5 22.5v1088q0 13 9.5 22.5t22.5 9.5h160v128h-160q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1088q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/close.svg b/img/icons/font-awesome/close.svg
new file mode 100644
index 00000000..3e9c0655
--- /dev/null
+++ b/img/icons/font-awesome/close.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1490 1322q0 40-28 68l-136 136q-28 28-68 28t-68-28l-294-294-294 294q-28 28-68 28t-68-28l-136-136q-28-28-28-68t28-68l294-294-294-294q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 294 294-294q28-28 68-28t68 28l136 136q28 28 28 68t-28 68l-294 294 294 294q28 28 28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cloud-download.svg b/img/icons/font-awesome/cloud-download.svg
new file mode 100644
index 00000000..b94b8d74
--- /dev/null
+++ b/img/icons/font-awesome/cloud-download.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1344 928q0-14-9-23t-23-9h-224v-352q0-13-9.5-22.5t-22.5-9.5h-192q-13 0-22.5 9.5t-9.5 22.5v352h-224q-13 0-22.5 9.5t-9.5 22.5q0 14 9 23l352 352q9 9 23 9t23-9l351-351q10-12 10-24zm640 224q0 159-112.5 271.5t-271.5 112.5h-1088q-185 0-316.5-131.5t-131.5-316.5q0-130 70-240t188-165q-2-30-2-43 0-212 150-362t362-150q156 0 285.5 87t188.5 231q71-62 166-62 106 0 181 75t75 181q0 76-41 138 130 31 213.5 135.5t83.5 238.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cloud-upload.svg b/img/icons/font-awesome/cloud-upload.svg
new file mode 100644
index 00000000..4e2efe2f
--- /dev/null
+++ b/img/icons/font-awesome/cloud-upload.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1344 864q0-14-9-23l-352-352q-9-9-23-9t-23 9l-351 351q-10 12-10 24 0 14 9 23t23 9h224v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5-9.5t9.5-22.5v-352h224q13 0 22.5-9.5t9.5-22.5zm640 288q0 159-112.5 271.5t-271.5 112.5h-1088q-185 0-316.5-131.5t-131.5-316.5q0-130 70-240t188-165q-2-30-2-43 0-212 150-362t362-150q156 0 285.5 87t188.5 231q71-62 166-62 106 0 181 75t75 181q0 76-41 138 130 31 213.5 135.5t83.5 238.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cloud.svg b/img/icons/font-awesome/cloud.svg
new file mode 100644
index 00000000..1fc638ae
--- /dev/null
+++ b/img/icons/font-awesome/cloud.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1984 1152q0 159-112.5 271.5t-271.5 112.5h-1088q-185 0-316.5-131.5t-131.5-316.5q0-132 71-241.5t187-163.5q-2-28-2-43 0-212 150-362t362-150q158 0 286.5 88t187.5 230q70-62 166-62 106 0 181 75t75 181q0 75-41 138 129 30 213 134.5t84 239.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cny.svg b/img/icons/font-awesome/cny.svg
new file mode 100644
index 00000000..a46b2afa
--- /dev/null
+++ b/img/icons/font-awesome/cny.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M985.5 1536h-172q-13 0-22.5-9t-9.5-23v-330h-288q-13 0-22.5-9t-9.5-23v-103q0-13 9.5-22.5t22.5-9.5h288v-85h-288q-13 0-22.5-9t-9.5-23v-104q0-13 9.5-22.5t22.5-9.5h214l-321-578q-8-16 0-32 10-16 28-16h194q19 0 29 18l215 425q19 38 56 125 10-24 30.5-68t27.5-61l191-420q8-19 29-19h191q17 0 27 16 9 14 1 31l-313 579h215q13 0 22.5 9.5t9.5 22.5v104q0 14-9.5 23t-22.5 9h-290v85h290q13 0 22.5 9.5t9.5 22.5v103q0 14-9.5 23t-22.5 9h-290v330q0 13-9.5 22.5t-22.5 9.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/code-fork.svg b/img/icons/font-awesome/code-fork.svg
new file mode 100644
index 00000000..3c730cdd
--- /dev/null
+++ b/img/icons/font-awesome/code-fork.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M672 1472q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm0-1152q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm640 128q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm96 0q0 52-26 96.5t-70 69.5q-2 287-226 414-67 38-203 81-128 40-169.5 71t-41.5 100v26q44 25 70 69.5t26 96.5q0 80-56 136t-136 56-136-56-56-136q0-52 26-96.5t70-69.5v-820q-44-25-70-69.5t-26-96.5q0-80 56-136t136-56 136 56 56 136q0 52-26 96.5t-70 69.5v497q54-26 154-57 55-17 87.5-29.5t70.5-31 59-39.5 40.5-51 28-69.5 8.5-91.5q-44-25-70-69.5t-26-96.5q0-80 56-136t136-56 136 56 56 136z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/code.svg b/img/icons/font-awesome/code.svg
new file mode 100644
index 00000000..1d7b80b0
--- /dev/null
+++ b/img/icons/font-awesome/code.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M681 1399l-50 50q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l466-466q10-10 23-10t23 10l50 50q10 10 10 23t-10 23l-393 393 393 393q10 10 10 23t-10 23zm591-1067l-373 1291q-4 13-15.5 19.5t-23.5 2.5l-62-17q-13-4-19.5-15.5t-2.5-24.5l373-1291q4-13 15.5-19.5t23.5-2.5l62 17q13 4 19.5 15.5t2.5 24.5zm657 651l-466 466q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l393-393-393-393q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l466 466q10 10 10 23t-10 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/codepen.svg b/img/icons/font-awesome/codepen.svg
new file mode 100644
index 00000000..b889d85d
--- /dev/null
+++ b/img/icons/font-awesome/codepen.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M216 1169l603 402v-359l-334-223zm-62-144l193-129-193-129v258zm819 546l603-402-269-180-334 223v359zm-77-493l272-182-272-182-272 182zm-411-275l334-223v-359l-603 402zm960 93l193 129v-258zm-138-93l269-180-603-402v359zm485-180v546q0 41-34 64l-819 546q-21 13-43 13t-43-13l-819-546q-34-23-34-64v-546q0-41 34-64l819-546q21-13 43-13t43 13l819 546q34 23 34 64z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/codiepie.svg b/img/icons/font-awesome/codiepie.svg
new file mode 100644
index 00000000..48efc6fb
--- /dev/null
+++ b/img/icons/font-awesome/codiepie.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1584 1290l-218-111q-74 120-196.5 189t-263.5 69q-147 0-271-72t-196-196-72-270q0-110 42.5-209.5t115-172 172-115 209.5-42.5q131 0 247.5 60.5t192.5 168.5l215-125q-110-169-286.5-265t-378.5-96q-161 0-308 63t-253 169-169 253-63 308 63 308 169 253 253 169 308 63q213 0 397.5-107t290.5-292zm-554-397l693 352q-116 253-334.5 400t-492.5 147q-182 0-348-71t-286-191-191-286-71-348 71-348 191-286 286-191 348-71q260 0 470.5 133.5t335.5 366.5zm513 3h-39v160h-96v-352h136q32 0 54.5 20t28.5 48 1 56-27.5 48-57.5 20z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/coffee.svg b/img/icons/font-awesome/coffee.svg
new file mode 100644
index 00000000..6b38ddf4
--- /dev/null
+++ b/img/icons/font-awesome/coffee.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1728 640q0-80-56-136t-136-56h-64v384h64q80 0 136-56t56-136zm-1664 768h1792q0 106-75 181t-181 75h-1280q-106 0-181-75t-75-181zm1856-768q0 159-112.5 271.5t-271.5 112.5h-64v32q0 92-66 158t-158 66h-704q-92 0-158-66t-66-158v-736q0-26 19-45t45-19h1152q159 0 271.5 112.5t112.5 271.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cog.svg b/img/icons/font-awesome/cog.svg
new file mode 100644
index 00000000..fd469a59
--- /dev/null
+++ b/img/icons/font-awesome/cog.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm512-109v222q0 12-8 23t-20 13l-185 28q-19 54-39 91 35 50 107 138 10 12 10 25t-9 23q-27 37-99 108t-94 71q-12 0-26-9l-138-108q-44 23-91 38-16 136-29 186-7 28-36 28h-222q-14 0-24.5-8.5t-11.5-21.5l-28-184q-49-16-90-37l-141 107q-10 9-25 9-14 0-25-11-126-114-165-168-7-10-7-23 0-12 8-23 15-21 51-66.5t54-70.5q-27-50-41-99l-183-27q-13-2-21-12.5t-8-23.5v-222q0-12 8-23t19-13l186-28q14-46 39-92-40-57-107-138-10-12-10-24 0-10 9-23 26-36 98.5-107.5t94.5-71.5q13 0 26 10l138 107q44-23 91-38 16-136 29-186 7-28 36-28h222q14 0 24.5 8.5t11.5 21.5l28 184q49 16 90 37l142-107q9-9 24-9 13 0 25 10 129 119 165 170 7 8 7 22 0 12-8 23-15 21-51 66.5t-54 70.5q26 50 41 98l183 28q13 2 21 12.5t8 23.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cogs.svg b/img/icons/font-awesome/cogs.svg
new file mode 100644
index 00000000..e3cbf2fc
--- /dev/null
+++ b/img/icons/font-awesome/cogs.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M960 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm768 512q0-52-38-90t-90-38-90 38-38 90q0 53 37.5 90.5t90.5 37.5 90.5-37.5 37.5-90.5zm0-1024q0-52-38-90t-90-38-90 38-38 90q0 53 37.5 90.5t90.5 37.5 90.5-37.5 37.5-90.5zm-384 421v185q0 10-7 19.5t-16 10.5l-155 24q-11 35-32 76 34 48 90 115 7 11 7 20 0 12-7 19-23 30-82.5 89.5t-78.5 59.5q-11 0-21-7l-115-90q-37 19-77 31-11 108-23 155-7 24-30 24h-186q-11 0-20-7.5t-10-17.5l-23-153q-34-10-75-31l-118 89q-7 7-20 7-11 0-21-8-144-133-144-160 0-9 7-19 10-14 41-53t47-61q-23-44-35-82l-152-24q-10-1-17-9.5t-7-19.5v-185q0-10 7-19.5t16-10.5l155-24q11-35 32-76-34-48-90-115-7-11-7-20 0-12 7-20 22-30 82-89t79-59q11 0 21 7l115 90q34-18 77-32 11-108 23-154 7-24 30-24h186q11 0 20 7.5t10 17.5l23 153q34 10 75 31l118-89q8-7 20-7 11 0 21 8 144 133 144 160 0 8-7 19-12 16-42 54t-45 60q23 48 34 82l152 23q10 2 17 10.5t7 19.5zm640 533v140q0 16-149 31-12 27-30 52 51 113 51 138 0 4-4 7-122 71-124 71-8 0-46-47t-52-68q-20 2-30 2t-30-2q-14 21-52 68t-46 47q-2 0-124-71-4-3-4-7 0-25 51-138-18-25-30-52-149-15-149-31v-140q0-16 149-31 13-29 30-52-51-113-51-138 0-4 4-7 4-2 35-20t59-34 30-16q8 0 46 46.5t52 67.5q20-2 30-2t30 2q51-71 92-112l6-2q4 0 124 70 4 3 4 7 0 25-51 138 17 23 30 52 149 15 149 31zm0-1024v140q0 16-149 31-12 27-30 52 51 113 51 138 0 4-4 7-122 71-124 71-8 0-46-47t-52-68q-20 2-30 2t-30-2q-14 21-52 68t-46 47q-2 0-124-71-4-3-4-7 0-25 51-138-18-25-30-52-149-15-149-31v-140q0-16 149-31 13-29 30-52-51-113-51-138 0-4 4-7 4-2 35-20t59-34 30-16q8 0 46 46.5t52 67.5q20-2 30-2t30 2q51-71 92-112l6-2q4 0 124 70 4 3 4 7 0 25-51 138 17 23 30 52 149 15 149 31z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/columns.svg b/img/icons/font-awesome/columns.svg
new file mode 100644
index 00000000..5af798b2
--- /dev/null
+++ b/img/icons/font-awesome/columns.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M224 1536h608v-1152h-640v1120q0 13 9.5 22.5t22.5 9.5zm1376-32v-1120h-640v1152h608q13 0 22.5-9.5t9.5-22.5zm128-1216v1216q0 66-47 113t-113 47h-1344q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1344q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/comment-o.svg b/img/icons/font-awesome/comment-o.svg
new file mode 100644
index 00000000..4e393b82
--- /dev/null
+++ b/img/icons/font-awesome/comment-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 384q-204 0-381.5 69.5t-282 187.5-104.5 255q0 112 71.5 213.5t201.5 175.5l87 50-27 96q-24 91-70 172 152-63 275-171l43-38 57 6q69 8 130 8 204 0 381.5-69.5t282-187.5 104.5-255-104.5-255-282-187.5-381.5-69.5zm896 512q0 174-120 321.5t-326 233-450 85.5q-70 0-145-8-198 175-460 242-49 14-114 22h-5q-15 0-27-10.5t-16-27.5v-1q-3-4-.5-12t2-10 4.5-9.5l6-9 7-8.5 8-9q7-8 31-34.5t34.5-38 31-39.5 32.5-51 27-59 26-76q-157-89-247.5-220t-90.5-281q0-174 120-321.5t326-233 450-85.5 450 85.5 326 233 120 321.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/comment.svg b/img/icons/font-awesome/comment.svg
new file mode 100644
index 00000000..e1c8d2ee
--- /dev/null
+++ b/img/icons/font-awesome/comment.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 896q0 174-120 321.5t-326 233-450 85.5q-70 0-145-8-198 175-460 242-49 14-114 22-17 2-30.5-9t-17.5-29v-1q-3-4-.5-12t2-10 4.5-9.5l6-9 7-8.5 8-9q7-8 31-34.5t34.5-38 31-39.5 32.5-51 27-59 26-76q-157-89-247.5-220t-90.5-281q0-130 71-248.5t191-204.5 286-136.5 348-50.5q244 0 450 85.5t326 233 120 321.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/commenting-o.svg b/img/icons/font-awesome/commenting-o.svg
new file mode 100644
index 00000000..47b26fa3
--- /dev/null
+++ b/img/icons/font-awesome/commenting-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M640 896q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm384 0q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm384 0q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm-512-512q-204 0-381.5 69.5t-282 187.5-104.5 255q0 112 71.5 213.5t201.5 175.5l87 50-27 96q-24 91-70 172 152-63 275-171l43-38 57 6q69 8 130 8 204 0 381.5-69.5t282-187.5 104.5-255-104.5-255-282-187.5-381.5-69.5zm896 512q0 174-120 321.5t-326 233-450 85.5q-70 0-145-8-198 175-460 242-49 14-114 22h-5q-15 0-27-10.5t-16-27.5v-1q-3-4-.5-12t2-10 4.5-9.5l6-9 7-8.5 8-9q7-8 31-34.5t34.5-38 31-39.5 32.5-51 27-59 26-76q-157-89-247.5-220t-90.5-281q0-130 71-248.5t191-204.5 286-136.5 348-50.5 348 50.5 286 136.5 191 204.5 71 248.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/commenting.svg b/img/icons/font-awesome/commenting.svg
new file mode 100644
index 00000000..c3201241
--- /dev/null
+++ b/img/icons/font-awesome/commenting.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M640 896q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm384 0q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm384 0q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm384 0q0 174-120 321.5t-326 233-450 85.5q-110 0-211-18-173 173-435 229-52 10-86 13-12 1-22-6t-13-18q-4-15 20-37 5-5 23.5-21.5t25.5-23.5 23.5-25.5 24-31.5 20.5-37 20-48 14.5-57.5 12.5-72.5q-146-90-229.5-216.5t-83.5-269.5q0-174 120-321.5t326-233 450-85.5 450 85.5 326 233 120 321.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/comments-o.svg b/img/icons/font-awesome/comments-o.svg
new file mode 100644
index 00000000..743f788f
--- /dev/null
+++ b/img/icons/font-awesome/comments-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 384q-153 0-286 52t-211.5 141-78.5 191q0 82 53 158t149 132l97 56-35 84q34-20 62-39l44-31 53 10q78 14 153 14 153 0 286-52t211.5-141 78.5-191-78.5-191-211.5-141-286-52zm0-128q191 0 353.5 68.5t256.5 186.5 94 257-94 257-256.5 186.5-353.5 68.5q-86 0-176-16-124 88-278 128-36 9-86 16h-3q-11 0-20.5-8t-11.5-21q-1-3-1-6.5t.5-6.5 2-6l2.5-5 3.5-5.5 4-5 4.5-5 4-4.5q5-6 23-25t26-29.5 22.5-29 25-38.5 20.5-44q-124-72-195-177t-71-224q0-139 94-257t256.5-186.5 353.5-68.5zm822 1169q10 24 20.5 44t25 38.5 22.5 29 26 29.5 23 25q1 1 4 4.5t4.5 5 4 5 3.5 5.5l2.5 5 2 6 .5 6.5-1 6.5q-3 14-13 22t-22 7q-50-7-86-16-154-40-278-128-90 16-176 16-271 0-472-132 58 4 88 4 161 0 309-45t264-129q125-92 192-212t67-254q0-77-23-152 129 71 204 178t75 230q0 120-71 224.5t-195 176.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/comments.svg b/img/icons/font-awesome/comments.svg
new file mode 100644
index 00000000..911703ce
--- /dev/null
+++ b/img/icons/font-awesome/comments.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 768q0 139-94 257t-256.5 186.5-353.5 68.5q-86 0-176-16-124 88-278 128-36 9-86 16h-3q-11 0-20.5-8t-11.5-21q-1-3-1-6.5t.5-6.5 2-6l2.5-5 3.5-5.5 4-5 4.5-5 4-4.5q5-6 23-25t26-29.5 22.5-29 25-38.5 20.5-44q-124-72-195-177t-71-224q0-139 94-257t256.5-186.5 353.5-68.5 353.5 68.5 256.5 186.5 94 257zm384 256q0 120-71 224.5t-195 176.5q10 24 20.5 44t25 38.5 22.5 29 26 29.5 23 25q1 1 4 4.5t4.5 5 4 5 3.5 5.5l2.5 5 2 6 .5 6.5-1 6.5q-3 14-13 22t-22 7q-50-7-86-16-154-40-278-128-90 16-176 16-271 0-472-132 58 4 88 4 161 0 309-45t264-129q125-92 192-212t67-254q0-77-23-152 129 71 204 178t75 230z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/compass.svg b/img/icons/font-awesome/compass.svg
new file mode 100644
index 00000000..612d9dec
--- /dev/null
+++ b/img/icons/font-awesome/compass.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M768 1088l256-128-256-128v256zm384-591v542l-512 256v-542zm288 399q0-148-73-273t-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273zm224 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/compress.svg b/img/icons/font-awesome/compress.svg
new file mode 100644
index 00000000..080b2485
--- /dev/null
+++ b/img/icons/font-awesome/compress.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 960v448q0 26-19 45t-45 19-45-19l-144-144-332 332q-10 10-23 10t-23-10l-114-114q-10-10-10-23t10-23l332-332-144-144q-19-19-19-45t19-45 45-19h448q26 0 45 19t19 45zm755-672q0 13-10 23l-332 332 144 144q19 19 19 45t-19 45-45 19h-448q-26 0-45-19t-19-45v-448q0-26 19-45t45-19 45 19l144 144 332-332q10-10 23-10t23 10l114 114q10 10 10 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/connectdevelop.svg b/img/icons/font-awesome/connectdevelop.svg
new file mode 100644
index 00000000..9c6001e8
--- /dev/null
+++ b/img/icons/font-awesome/connectdevelop.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M2048 895q0 21-13 36.5t-33 19.5l-205 356q3 9 3 18 0 20-12.5 35.5t-32.5 19.5l-193 337q3 8 3 16 0 23-16.5 40t-40.5 17q-25 0-41-18h-400q-17 20-43 20t-43-20h-399q-17 20-43 20-23 0-40-16.5t-17-40.5q0-8 4-20l-193-335q-20-4-32.5-19.5t-12.5-35.5q0-9 3-18l-206-356q-20-5-32.5-20.5t-12.5-35.5q0-21 13.5-36.5t33.5-19.5l199-344q0-1-.5-3t-.5-3q0-36 34-51l209-363q-4-10-4-18 0-24 17-40.5t40-16.5q26 0 44 21h396q16-21 43-21t43 21h398q18-21 44-21 23 0 40 16.5t17 40.5q0 6-4 18l207 358q23 1 39 17.5t16 38.5q0 13-7 27l187 324q19 4 31.5 19.5t12.5 35.5zm-985 799h389l-342-354h-143l-342 354h360q18-16 39-16t39 16zm-951-812q1 4 1 13 0 10-2 15l208 360 15 6 188-199v-347l-187-194q-13 8-29 10zm874-784h-388l190 200 554-200h-280q-16 16-38 16t-38-16zm703 1212q1-6 5-11l-64-68-17 79h76zm-106 0l22-105-252-266-296 307 63 64h463zm-88 368l16-28 65-310h-427l333 343q8-4 13-5zm-917 16h5l342-354h-373v335l4 6q14 5 22 13zm-26-384h402l64-66-309-321-157 166v221zm-193 0h163v-189l-168 177q4 8 5 12zm-1-825q0 1 .5 2t.5 2q0 16-8 29l171 177v-269zm194-70v311l153 157 297-314-223-236zm4-304l-4 8v264l205-74-191-201q-6 2-10 3zm891-13h-16l-621 224 213 225zm-424 492l-297 315 311 319 296-307zm-335 312l-136-141v284zm350 364l-42 44h85zm336-348l238 251 132-624-3-5-1-1zm344-400q-8-13-8-29v-2l-216-376q-5-1-13-5l-437 463 310 327zm-1196-124v-223l-163 282zm0 946h-163l163 283v-283zm1085 0l-48 227 130-227h-82zm122-70l207-361q-2-10-2-14 0-1 3-16l-171-296-129 612 77 82q5-3 15-7z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/contao.svg b/img/icons/font-awesome/contao.svg
new file mode 100644
index 00000000..9d91ec19
--- /dev/null
+++ b/img/icons/font-awesome/contao.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M138 128h197q-70 64-126 149-36 56-59 115t-30 125.5-8.5 120 10.5 132 21 126 28 136.5q4 19 6 28 51 238 81 329 57 171 152 275h-272q-48 0-82-34t-34-82v-1304q0-48 34-82t82-34zm1208 0h308q48 0 82 34t34 82v1304q0 48-34 82t-82 34h-178q212-210 196-565l-469 101q-2 45-12 82t-31 72-59.5 59.5-93.5 36.5q-123 26-199-40-32-27-53-61t-51.5-129-64.5-258q-35-163-45.5-263t-5.5-139 23-77q20-41 62.5-73t102.5-45q45-12 83.5-6.5t67 17 54 35 43 48 34.5 56.5l468-100q-68-175-180-287z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/copy.svg b/img/icons/font-awesome/copy.svg
new file mode 100644
index 00000000..3c8e5bc9
--- /dev/null
+++ b/img/icons/font-awesome/copy.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1696 384q40 0 68 28t28 68v1216q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-288h-544q-40 0-68-28t-28-68v-672q0-40 20-88t48-76l408-408q28-28 76-48t88-20h416q40 0 68 28t28 68v328q68-40 128-40h416zm-544 213l-299 299h299v-299zm-640-384l-299 299h299v-299zm196 647l316-316v-416h-384v416q0 40-28 68t-68 28h-416v640h512v-256q0-40 20-88t48-76zm956 804v-1152h-384v416q0 40-28 68t-68 28h-416v640h896z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/copyright.svg b/img/icons/font-awesome/copyright.svg
new file mode 100644
index 00000000..03e794f5
--- /dev/null
+++ b/img/icons/font-awesome/copyright.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1278 1074v109q0 50-36.5 89t-94 60.5-118 32.5-117.5 11q-205 0-342.5-139t-137.5-346q0-203 136-339t339-136q34 0 75.5 4.5t93 18 92.5 34 69 56.5 28 81v109q0 16-16 16h-118q-16 0-16-16v-70q0-43-65.5-67.5t-137.5-24.5q-140 0-228.5 91.5t-88.5 237.5q0 151 91.5 249.5t233.5 98.5q68 0 138-24t70-66v-70q0-7 4.5-11.5t10.5-4.5h119q6 0 11 4.5t5 11.5zm-382-818q-130 0-248.5 51t-204 136.5-136.5 204-51 248.5 51 248.5 136.5 204 204 136.5 248.5 51 248.5-51 204-136.5 136.5-204 51-248.5-51-248.5-136.5-204-204-136.5-248.5-51zm768 640q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/creative-commons.svg b/img/icons/font-awesome/creative-commons.svg
new file mode 100644
index 00000000..78e07dd8
--- /dev/null
+++ b/img/icons/font-awesome/creative-commons.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M605 1233q153 0 257-104 14-18 3-36l-45-82q-6-13-24-17-16-2-27 11l-4 3q-4 4-11.5 10t-17.5 13.5-23.5 14.5-28.5 13-33.5 9.5-37.5 3.5q-76 0-125-50t-49-127q0-76 48-125.5t122-49.5q37 0 71.5 14t50.5 28l16 14q11 11 26 10 16-2 24-14l53-78q13-20-2-39-3-4-11-12t-30-23.5-48.5-28-67.5-22.5-86-10q-148 0-246 96.5t-98 240.5q0 146 97 241.5t247 95.5zm630 0q153 0 257-104 14-18 4-36l-45-82q-8-14-25-17-16-2-27 11l-4 3q-4 4-11.5 10t-17.5 13.5-23.5 14.5-28.5 13-33.5 9.5-37.5 3.5q-76 0-125-50t-49-127q0-76 48-125.5t122-49.5q37 0 71.5 14t50.5 28l16 14q11 11 26 10 16-2 24-14l53-78q13-20-2-39-3-4-11-12t-30-23.5-48.5-28-67.5-22.5-86-10q-147 0-245.5 96.5t-98.5 240.5q0 146 97 241.5t247 95.5zm-339-1073q-150 0-286 58.5t-234.5 157-157 234.5-58.5 286 58.5 286 157 234.5 234.5 157 286 58.5 286-58.5 234.5-157 157-234.5 58.5-286-58.5-286-157-234.5-234.5-157-286-58.5zm0-160q182 0 348 71t286 191 191 286 71 348-71 348-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/credit-card-alt.svg b/img/icons/font-awesome/credit-card-alt.svg
new file mode 100644
index 00000000..e68bb579
--- /dev/null
+++ b/img/icons/font-awesome/credit-card-alt.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M0 1504v-608h2304v608q0 66-47 113t-113 47h-1984q-66 0-113-47t-47-113zm640-224v128h384v-128h-384zm-384 0v128h256v-128h-256zm1888-1152q66 0 113 47t47 113v224h-2304v-224q0-66 47-113t113-47h1984z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/credit-card.svg b/img/icons/font-awesome/credit-card.svg
new file mode 100644
index 00000000..7d6603f3
--- /dev/null
+++ b/img/icons/font-awesome/credit-card.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1824 128q66 0 113 47t47 113v1216q0 66-47 113t-113 47h-1600q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1600zm-1600 128q-13 0-22.5 9.5t-9.5 22.5v224h1664v-224q0-13-9.5-22.5t-22.5-9.5h-1600zm1600 1280q13 0 22.5-9.5t9.5-22.5v-608h-1664v608q0 13 9.5 22.5t22.5 9.5h1600zm-1504-128v-128h256v128h-256zm384 0v-128h384v128h-384z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/crop.svg b/img/icons/font-awesome/crop.svg
new file mode 100644
index 00000000..cd7b397a
--- /dev/null
+++ b/img/icons/font-awesome/crop.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M621 1280h595v-595zm-45-45l595-595h-595v595zm1152 77v192q0 14-9 23t-23 9h-224v224q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-224h-864q-14 0-23-9t-9-23v-864h-224q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h224v-224q0-14 9-23t23-9h192q14 0 23 9t9 23v224h851l246-247q10-9 23-9t23 9q9 10 9 23t-9 23l-247 246v851h224q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/crosshairs.svg b/img/icons/font-awesome/crosshairs.svg
new file mode 100644
index 00000000..1fbf8f29
--- /dev/null
+++ b/img/icons/font-awesome/crosshairs.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1325 1024h-109q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h109q-32-108-112.5-188.5t-188.5-112.5v109q0 26-19 45t-45 19h-128q-26 0-45-19t-19-45v-109q-108 32-188.5 112.5t-112.5 188.5h109q26 0 45 19t19 45v128q0 26-19 45t-45 19h-109q32 108 112.5 188.5t188.5 112.5v-109q0-26 19-45t45-19h128q26 0 45 19t19 45v109q108-32 188.5-112.5t112.5-188.5zm339-192v128q0 26-19 45t-45 19h-143q-37 161-154.5 278.5t-278.5 154.5v143q0 26-19 45t-45 19h-128q-26 0-45-19t-19-45v-143q-161-37-278.5-154.5t-154.5-278.5h-143q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h143q37-161 154.5-278.5t278.5-154.5v-143q0-26 19-45t45-19h128q26 0 45 19t19 45v143q161 37 278.5 154.5t154.5 278.5h143q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/css3.svg b/img/icons/font-awesome/css3.svg
new file mode 100644
index 00000000..e9a5154d
--- /dev/null
+++ b/img/icons/font-awesome/css3.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M275 128h1505l-266 1333-804 267-698-267 71-356h297l-29 147 422 161 486-161 68-339h-1208l58-297h1209l38-191h-1208z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cube.svg b/img/icons/font-awesome/cube.svg
new file mode 100644
index 00000000..3302443c
--- /dev/null
+++ b/img/icons/font-awesome/cube.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 1629l640-349v-636l-640 233v752zm-64-865l698-254-698-254-698 254zm832-252v768q0 35-18 65t-49 47l-704 384q-28 16-61 16t-61-16l-704-384q-31-17-49-47t-18-65v-768q0-40 23-73t61-47l704-256q22-8 44-8t44 8l704 256q38 14 61 47t23 73z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cubes.svg b/img/icons/font-awesome/cubes.svg
new file mode 100644
index 00000000..81ec7938
--- /dev/null
+++ b/img/icons/font-awesome/cubes.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M640 1632l384-192v-314l-384 164v342zm-64-454l404-173-404-173-404 173zm1088 454l384-192v-314l-384 164v342zm-64-454l404-173-404-173-404 173zm-448-293l384-165v-266l-384 164v267zm-64-379l441-189-441-189-441 189zm1088 518v416q0 36-19 67t-52 47l-448 224q-25 14-57 14t-57-14l-448-224q-4-2-7-4-2 2-7 4l-448 224q-25 14-57 14t-57-14l-448-224q-33-16-52-47t-19-67v-416q0-38 21.5-70t56.5-48l434-186v-400q0-38 21.5-70t56.5-48l448-192q23-10 50-10t50 10l448 192q35 16 56.5 48t21.5 70v400l434 186q36 16 57 48t21 70z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cut.svg b/img/icons/font-awesome/cut.svg
new file mode 100644
index 00000000..2c375c47
--- /dev/null
+++ b/img/icons/font-awesome/cut.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M960 896q26 0 45 19t19 45-19 45-45 19-45-19-19-45 19-45 45-19zm300 64l507 398q28 20 25 56-5 35-35 51l-128 64q-13 7-29 7-17 0-31-8l-690-387-110 66q-8 4-12 5 14 49 10 97-7 77-56 147.5t-132 123.5q-132 84-277 84-136 0-222-78-90-84-79-207 7-76 56-147t131-124q132-84 278-84 83 0 151 31 9-13 22-22l122-73-122-73q-13-9-22-22-68 31-151 31-146 0-278-84-82-53-131-124t-56-147q-5-59 15.5-113t63.5-93q85-79 222-79 145 0 277 84 83 52 132 123t56 148q4 48-10 97 4 1 12 5l110 66 690-387q14-8 31-8 16 0 29 7l128 64q30 16 35 51 3 36-25 56zm-681-260q46-42 21-108t-106-117q-92-59-192-59-74 0-113 36-46 42-21 108t106 117q92 59 192 59 74 0 113-36zm-85 745q81-51 106-117t-21-108q-39-36-113-36-100 0-192 59-81 51-106 117t21 108q39 36 113 36 100 0 192-59zm178-613l96 58v-11q0-36 33-56l14-8-79-47-26 26q-3 3-10 11t-12 12q-2 2-4 3.5t-3 2.5zm224 224l96 32 736-576-128-64-768 431v113l-160 96 9 8q2 2 7 6 4 4 11 12t11 12l26 26zm704 416l128-64-520-408-177 138q-2 3-13 7z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/cutlery.svg b/img/icons/font-awesome/cutlery.svg
new file mode 100644
index 00000000..83fdbccc
--- /dev/null
+++ b/img/icons/font-awesome/cutlery.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M832 64v640q0 61-35.5 111t-92.5 70v779q0 52-38 90t-90 38h-128q-52 0-90-38t-38-90v-779q-57-20-92.5-70t-35.5-111v-640q0-26 19-45t45-19 45 19 19 45v416q0 26 19 45t45 19 45-19 19-45v-416q0-26 19-45t45-19 45 19 19 45v416q0 26 19 45t45 19 45-19 19-45v-416q0-26 19-45t45-19 45 19 19 45zm768 0v1600q0 52-38 90t-90 38h-128q-52 0-90-38t-38-90v-512h-224q-13 0-22.5-9.5t-9.5-22.5v-800q0-132 94-226t226-94h256q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/dashboard.svg b/img/icons/font-awesome/dashboard.svg
new file mode 100644
index 00000000..6c31d48c
--- /dev/null
+++ b/img/icons/font-awesome/dashboard.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M384 1152q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm192-448q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm428 481l101-382q6-26-7.5-48.5t-38.5-29.5-48 6.5-30 39.5l-101 382q-60 5-107 43.5t-63 98.5q-20 77 20 146t117 89 146-20 89-117q16-60-6-117t-72-91zm660-33q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm-640-640q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm448 192q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm320 448q0 261-141 483-19 29-54 29h-1402q-35 0-54-29-141-221-141-483 0-182 71-348t191-286 286-191 348-71 348 71 286 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/dashcube.svg b/img/icons/font-awesome/dashcube.svg
new file mode 100644
index 00000000..ad14f6b0
--- /dev/null
+++ b/img/icons/font-awesome/dashcube.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M128 680q0-131 91.5-226.5t222.5-95.5h742l352-358v1470q0 132-91.5 227t-222.5 95h-780q-131 0-222.5-95t-91.5-227v-790zm1232 754l-176-180v-425q0-46-32-79t-78-33h-484q-46 0-78 33t-32 79v492q0 46 32.5 79.5t77.5 33.5h770z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/database.svg b/img/icons/font-awesome/database.svg
new file mode 100644
index 00000000..3f257f92
--- /dev/null
+++ b/img/icons/font-awesome/database.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 768q237 0 443-43t325-127v170q0 69-103 128t-280 93.5-385 34.5-385-34.5-280-93.5-103-128v-170q119 84 325 127t443 43zm0 768q237 0 443-43t325-127v170q0 69-103 128t-280 93.5-385 34.5-385-34.5-280-93.5-103-128v-170q119 84 325 127t443 43zm0-384q237 0 443-43t325-127v170q0 69-103 128t-280 93.5-385 34.5-385-34.5-280-93.5-103-128v-170q119 84 325 127t443 43zm0-1152q208 0 385 34.5t280 93.5 103 128v128q0 69-103 128t-280 93.5-385 34.5-385-34.5-280-93.5-103-128v-128q0-69 103-128t280-93.5 385-34.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/deaf.svg b/img/icons/font-awesome/deaf.svg
new file mode 100644
index 00000000..ad74451a
--- /dev/null
+++ b/img/icons/font-awesome/deaf.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1056 832q0 26 19 45t45 19 45-19 19-45q0-146-103-249t-249-103-249 103-103 249q0 26 19 45t45 19 45-19 19-45q0-93 66-158.5t158-65.5 158 65.5 66 158.5zm-221-576q-117 0-223.5 45.5t-184 123-123 184-45.5 223.5q0 26 19 45t45 19 45-19 19-45q0-185 131.5-316.5t316.5-131.5 316.5 131.5 131.5 316.5q0 55-18 103.5t-37.5 74.5-59.5 72q-34 39-52 63t-43.5 66.5-37 91-11.5 105.5q0 106-75 181t-181 75q-26 0-45 19t-19 45 19 45 45 19q159 0 271.5-112.5t112.5-271.5q0-41 7.5-74t26.5-64 33.5-50 45.5-54q35-41 53-64.5t44-67.5 37.5-93.5 11.5-108.5q0-117-45.5-223.5t-123-184-184-123-223.5-45.5zm-244 719l226 226-579 579q-12 12-29 12t-29-12l-168-168q-12-12-12-29t12-29zm1021-963l168 168q12 12 12 29t-12 30l-233 233-26 25-71 71q-66-153-195-258l91-91 207-207q13-12 30-12t29 12z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/deafness.svg b/img/icons/font-awesome/deafness.svg
new file mode 100644
index 00000000..ad74451a
--- /dev/null
+++ b/img/icons/font-awesome/deafness.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1056 832q0 26 19 45t45 19 45-19 19-45q0-146-103-249t-249-103-249 103-103 249q0 26 19 45t45 19 45-19 19-45q0-93 66-158.5t158-65.5 158 65.5 66 158.5zm-221-576q-117 0-223.5 45.5t-184 123-123 184-45.5 223.5q0 26 19 45t45 19 45-19 19-45q0-185 131.5-316.5t316.5-131.5 316.5 131.5 131.5 316.5q0 55-18 103.5t-37.5 74.5-59.5 72q-34 39-52 63t-43.5 66.5-37 91-11.5 105.5q0 106-75 181t-181 75q-26 0-45 19t-19 45 19 45 45 19q159 0 271.5-112.5t112.5-271.5q0-41 7.5-74t26.5-64 33.5-50 45.5-54q35-41 53-64.5t44-67.5 37.5-93.5 11.5-108.5q0-117-45.5-223.5t-123-184-184-123-223.5-45.5zm-244 719l226 226-579 579q-12 12-29 12t-29-12l-168-168q-12-12-12-29t12-29zm1021-963l168 168q12 12 12 29t-12 30l-233 233-26 25-71 71q-66-153-195-258l91-91 207-207q13-12 30-12t29 12z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/dedent.svg b/img/icons/font-awesome/dedent.svg
new file mode 100644
index 00000000..4ff487fe
--- /dev/null
+++ b/img/icons/font-awesome/dedent.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M384 544v576q0 13-9.5 22.5t-22.5 9.5q-14 0-23-9l-288-288q-9-9-9-23t9-23l288-288q9-9 23-9 13 0 22.5 9.5t9.5 22.5zm1408 768v192q0 13-9.5 22.5t-22.5 9.5h-1728q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1728q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5h-1088q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1088q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5h-1088q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1088q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5h-1728q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1728q13 0 22.5 9.5t9.5 22.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/delicious.svg b/img/icons/font-awesome/delicious.svg
new file mode 100644
index 00000000..c34092d7
--- /dev/null
+++ b/img/icons/font-awesome/delicious.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1600 1376v-480h-704v-704h-480q-93 0-158.5 65.5t-65.5 158.5v480h704v704h480q93 0 158.5-65.5t65.5-158.5zm64-960v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/desktop.svg b/img/icons/font-awesome/desktop.svg
new file mode 100644
index 00000000..14ad602f
--- /dev/null
+++ b/img/icons/font-awesome/desktop.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1856 992v-832q0-13-9.5-22.5t-22.5-9.5h-1600q-13 0-22.5 9.5t-9.5 22.5v832q0 13 9.5 22.5t22.5 9.5h1600q13 0 22.5-9.5t9.5-22.5zm128-832v1088q0 66-47 113t-113 47h-544q0 37 16 77.5t32 71 16 43.5q0 26-19 45t-45 19h-512q-26 0-45-19t-19-45q0-14 16-44t32-70 16-78h-544q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1600q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/deviantart.svg b/img/icons/font-awesome/deviantart.svg
new file mode 100644
index 00000000..3aa731e6
--- /dev/null
+++ b/img/icons/font-awesome/deviantart.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 303l-303 582 24 31h279v415h-507l-44 30-142 273-30 30h-301v-303l303-583-24-30h-279v-415h507l44-30 142-273 30-30h301v303z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/diamond.svg b/img/icons/font-awesome/diamond.svg
new file mode 100644
index 00000000..3b97f81b
--- /dev/null
+++ b/img/icons/font-awesome/diamond.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M212 768l623 665-300-665h-323zm812 772l349-772h-698zm-486-900l204-384h-262l-288 384h346zm675 793l623-665h-323zm-530-793h682l-204-384h-274zm827 0h346l-288-384h-262zm141-486l384 512q14 18 13 41.5t-17 40.5l-960 1024q-18 20-47 20t-47-20l-960-1024q-16-17-17-40.5t13-41.5l384-512q18-26 51-26h1152q33 0 51 26z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/digg.svg b/img/icons/font-awesome/digg.svg
new file mode 100644
index 00000000..b7942e7b
--- /dev/null
+++ b/img/icons/font-awesome/digg.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M328 282h204v983h-532v-697h328v-286zm0 819v-369h-123v369h123zm286-533v697h205v-697h-205zm0-286v204h205v-204h-205zm287 286h533v942h-533v-163h328v-82h-328v-697zm328 533v-369h-123v369h123zm287-533h532v942h-532v-163h327v-82h-327v-697zm327 533v-369h-123v369h123z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/dollar.svg b/img/icons/font-awesome/dollar.svg
new file mode 100644
index 00000000..b1d28802
--- /dev/null
+++ b/img/icons/font-awesome/dollar.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1362 1185q0 153-99.5 263.5t-258.5 136.5v175q0 14-9 23t-23 9h-135q-13 0-22.5-9.5t-9.5-22.5v-175q-66-9-127.5-31t-101.5-44.5-74-48-46.5-37.5-17.5-18q-17-21-2-41l103-135q7-10 23-12 15-2 24 9l2 2q113 99 243 125 37 8 74 8 81 0 142.5-43t61.5-122q0-28-15-53t-33.5-42-58.5-37.5-66-32-80-32.5q-39-16-61.5-25t-61.5-26.5-62.5-31-56.5-35.5-53.5-42.5-43.5-49-35.5-58-21-66.5-8.5-78q0-138 98-242t255-134v-180q0-13 9.5-22.5t22.5-9.5h135q14 0 23 9t9 23v176q57 6 110.5 23t87 33.5 63.5 37.5 39 29 15 14q17 18 5 38l-81 146q-8 15-23 16-14 3-27-7-3-3-14.5-12t-39-26.5-58.5-32-74.5-26-85.5-11.5q-95 0-155 43t-60 111q0 26 8.5 48t29.5 41.5 39.5 33 56 31 60.5 27 70 27.5q53 20 81 31.5t76 35 75.5 42.5 62 50 53 63.5 31.5 76.5 13 94z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/dot-circle-o.svg b/img/icons/font-awesome/dot-circle-o.svg
new file mode 100644
index 00000000..423c1040
--- /dev/null
+++ b/img/icons/font-awesome/dot-circle-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 896q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75 75 181zm-256-544q-148 0-273 73t-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273-73-273-198-198-273-73zm768 544q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/download.svg b/img/icons/font-awesome/download.svg
new file mode 100644
index 00000000..902e462f
--- /dev/null
+++ b/img/icons/font-awesome/download.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1344 1344q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm256 0q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm128-224v320q0 40-28 68t-68 28h-1472q-40 0-68-28t-28-68v-320q0-40 28-68t68-28h465l135 136q58 56 136 56t136-56l136-136h464q40 0 68 28t28 68zm-325-569q17 41-14 70l-448 448q-18 19-45 19t-45-19l-448-448q-31-29-14-70 17-39 59-39h256v-448q0-26 19-45t45-19h256q26 0 45 19t19 45v448h256q42 0 59 39z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/dribbble.svg b/img/icons/font-awesome/dribbble.svg
new file mode 100644
index 00000000..36e9b09d
--- /dev/null
+++ b/img/icons/font-awesome/dribbble.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 1500q-42-241-140-498h-2l-2 1q-16 6-43 16.5t-101 49-137 82-131 114.5-103 148l-15-11q184 150 418 150 132 0 256-52zm-185-607q-21-49-53-111-311 93-673 93-1 7-1 21 0 124 44 236.5t124 201.5q50-89 123.5-166.5t142.5-124.5 130.5-81 99.5-48l37-13q4-1 13-3.5t13-4.5zm-107-212q-120-213-244-378-138 65-234 186t-128 272q302 0 606-80zm684 319q-210-60-409-29 87 239 128 469 111-75 185-189.5t96-250.5zm-805-741q-1 0-2 1 1-1 2-1zm590 145q-185-164-433-164-76 0-155 19 131 170 246 382 69-26 130-60.5t96.5-61.5 65.5-57 37.5-40.5zm223 485q-3-232-149-410l-1 1q-9 12-19 24.5t-43.5 44.5-71 60.5-100 65-131.5 64.5q25 53 44 95 2 5 6.5 17t7.5 17q36-5 74.5-7t73.5-2 69 1.5 64 4 56.5 5.5 48 6.5 36.5 6 25 4.5zm112 7q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/drivers-license-o.svg b/img/icons/font-awesome/drivers-license-o.svg
new file mode 100644
index 00000000..54905c44
--- /dev/null
+++ b/img/icons/font-awesome/drivers-license-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 1212q0 55-31.5 93.5t-75.5 38.5h-426q-44 0-75.5-38.5t-31.5-93.5q0-54 7.5-100.5t24.5-90 51-68.5 81-25q64 64 156 64t156-64q47 0 81 25t51 68.5 24.5 90 7.5 100.5zm-128-444q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm1024 416v64q0 14-9 23t-23 9h-704q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h704q14 0 23 9t9 23zm-384-256v64q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h320q14 0 23 9t9 23zm384 0v64q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h192q14 0 23 9t9 23zm0-256v64q0 14-9 23t-23 9h-704q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h704q14 0 23 9t9 23zm128 832v-1120h-1792v1120q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5-9.5t9.5-22.5zm128-1216v1216q0 66-47 113t-113 47h-1728q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1728q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/drivers-license.svg b/img/icons/font-awesome/drivers-license.svg
new file mode 100644
index 00000000..27f68422
--- /dev/null
+++ b/img/icons/font-awesome/drivers-license.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 1212q0-54-7.5-100.5t-24.5-90-51-68.5-81-25q-64 64-156 64t-156-64q-47 0-81 25t-51 68.5-24.5 90-7.5 100.5q0 55 31.5 93.5t75.5 38.5h426q44 0 75.5-38.5t31.5-93.5zm-128-444q0-80-56-136t-136-56-136 56-56 136 56 136 136 56 136-56 56-136zm1024 480v-64q0-14-9-23t-23-9h-704q-14 0-23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23-9t9-23zm-384-256v-64q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v64q0 14 9 23t23 9h320q14 0 23-9t9-23zm384 0v-64q0-14-9-23t-23-9h-192q-14 0-23 9t-9 23v64q0 14 9 23t23 9h192q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-704q-14 0-23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23-9t9-23zm-1664-352h1792v-96q0-14-9-23t-23-9h-1728q-14 0-23 9t-9 23v96zm1920-96v1216q0 66-47 113t-113 47h-1728q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1728q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/dropbox.svg b/img/icons/font-awesome/dropbox.svg
new file mode 100644
index 00000000..780034e4
--- /dev/null
+++ b/img/icons/font-awesome/dropbox.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M402 707l494 305-342 285-490-319zm986 555v108l-490 293v1l-1-1-1 1v-1l-489-293v-108l147 96 342-284v-2l1 1 1-1v2l343 284zm-834-1144l342 285-494 304-338-270zm836 589l338 271-489 319-343-285zm-151-589l489 319-338 270-494-304z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/drupal.svg b/img/icons/font-awesome/drupal.svg
new file mode 100644
index 00000000..463ed516
--- /dev/null
+++ b/img/icons/font-awesome/drupal.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1295 1586q-5-19-24-5-30 22-87 39t-131 17q-129 0-193-49-5-4-13-4-11 0-26 12-7 6-7.5 16t7.5 20q34 32 87.5 46t102.5 12.5 99-4.5q41-4 84.5-20.5t65-30 28.5-20.5q12-12 7-29zm-39-115q-19-47-39-61-23-15-76-15-47 0-71 10-29 12-78 56-26 24-12 44 9 8 17.5 4.5t31.5-23.5q3-2 10.5-8.5t10.5-8.5 10-7 11.5-7 12.5-5 15-4.5 16.5-2.5 20.5-1q27 0 44.5 7.5t23 14.5 13.5 22q10 17 12.5 20t12.5-1q23-12 14-34zm355-281q0-22-5-44.5t-16.5-45-34-36.5-52.5-14q-33 0-97 41.5t-129 83.5-101 42q-27 1-63.5-19t-76-49-83.5-58-100-49-111-19q-115 1-197 78.5t-84 178.5q-2 112 74 164 29 20 62.5 28.5t103.5 8.5q57 0 132-32.5t134-71 120-70.5 93-31q26 1 65 31.5t71.5 67 68 67.5 55.5 32q35 3 58.5-14t55.5-63q28-41 42.5-101t14.5-106zm53-160q0 164-62 304.5t-166 236-242.5 149.5-290.5 54-293-57.5-247.5-157-170.5-241.5-64-302q0-89 19.5-172.5t49-145.5 70.5-118.5 78.5-94 78.5-69.5 64.5-46.5 42.5-24.5q14-8 51-26.5t54.5-28.5 48-30 60.5-44q36-28 58-72.5t30-125.5q129 155 186 193 44 29 130 68t129 66q21 13 39 25t60.5 46.5 76 70.5 75 95 69 122 47 148.5 19.5 177.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/edge.svg b/img/icons/font-awesome/edge.svg
new file mode 100644
index 00000000..653e2155
--- /dev/null
+++ b/img/icons/font-awesome/edge.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M69 795h1q16-126 58.5-241.5t115-217 167.5-176 223.5-117.5 276.5-43q231 0 414 105.5t294 303.5q104 187 104 442v188h-1125q1 111 53.5 192.5t136.5 122.5 189.5 57 213 3 208-46.5 173.5-84.5v377q-92 55-229.5 92t-312.5 38-316-53q-189-73-311.5-249t-124.5-372q-3-242 111-412t325-268q-48 60-78 125.5t-46 159.5h635q8-77-8-140t-47-101.5-70.5-66.5-80.5-41-75-20.5-56-8.5l-22-1q-135 5-259.5 44.5t-223.5 104.5-176 140.5-138 163.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/edit.svg b/img/icons/font-awesome/edit.svg
new file mode 100644
index 00000000..c2a69cc5
--- /dev/null
+++ b/img/icons/font-awesome/edit.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M888 1184l116-116-152-152-116 116v56h96v96h56zm440-720q-16-16-33 1l-350 350q-17 17-1 33t33-1l350-350q17-17 1-33zm80 594v190q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q63 0 117 25 15 7 18 23 3 17-9 29l-49 49q-14 14-32 8-23-6-45-6h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113v-126q0-13 9-22l64-64q15-15 35-7t20 29zm-96-738l288 288-672 672h-288v-288zm444 132l-92 92-288-288 92-92q28-28 68-28t68 28l152 152q28 28 28 68t-28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/eercast.svg b/img/icons/font-awesome/eercast.svg
new file mode 100644
index 00000000..4c4e7c83
--- /dev/null
+++ b/img/icons/font-awesome/eercast.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1341 784q29-44-6.5-129.5t-121.5-142.5q-58-39-125.5-53.5t-118-4.5-68.5 37q-12 23-4.5 28t42.5 10q23 3 38.5 5t44.5 9.5 56 17.5q36 13 67.5 31.5t53 37 40 38.5 30.5 38 22 34.5 16.5 28.5 12 18.5 10.5 6 11-9.5zm363 574q-52 127-148.5 220t-214.5 141.5-253 60.5-266-13.5-251-91-210-161.5-141.5-235.5-46.5-303.5q1-41 8.5-84.5t12.5-64 24-80.5 23-73q-51 208 1 397t173 318 291 206 346 83 349-74.5 289-244.5q20-27 18-14 0 4-4 14zm-239-449q0 104-40.5 199t-108.5 164-162 109.5-198 40.5-198-40.5-162-109.5-108.5-164-40.5-199 40.5-199 108.5-164 162-109.5 198-40.5 198 40.5 162 109.5 108.5 164 40.5 199zm287-288q-65-147-180.5-251t-253-153.5-292-53.5-301 36.5-275.5 129-220 211.5-131 297-10 373q-49-161-51.5-311.5t35.5-272.5 109-227 165.5-180.5 207-126 232-71 242.5-9 236 54 216 124.5 178 197q33 50 62 121t31 112zm-62 342q12-244-136.5-416t-396.5-240q-8 0-10-5t24-8q125 4 230 50t173 120 116 168.5 58.5 199-1 208-61.5 197.5-122.5 167-185 117.5-248.5 46.5q108-30 201.5-80t174-123 129.5-176.5 55-225.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/eject.svg b/img/icons/font-awesome/eject.svg
new file mode 100644
index 00000000..dd28f8b9
--- /dev/null
+++ b/img/icons/font-awesome/eject.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M141 979l710-710q19-19 45-19t45 19l710 710q19 19 13 32t-32 13h-1472q-26 0-32-13t13-32zm1459 557h-1408q-26 0-45-19t-19-45v-256q0-26 19-45t45-19h1408q26 0 45 19t19 45v256q0 26-19 45t-45 19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/ellipsis-h.svg b/img/icons/font-awesome/ellipsis-h.svg
new file mode 100644
index 00000000..99ae85c5
--- /dev/null
+++ b/img/icons/font-awesome/ellipsis-h.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M576 736v192q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h192q40 0 68 28t28 68zm512 0v192q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h192q40 0 68 28t28 68zm512 0v192q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h192q40 0 68 28t28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/ellipsis-v.svg b/img/icons/font-awesome/ellipsis-v.svg
new file mode 100644
index 00000000..d19fb891
--- /dev/null
+++ b/img/icons/font-awesome/ellipsis-v.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1088 1248v192q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h192q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h192q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h192q40 0 68 28t28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/empire.svg b/img/icons/font-awesome/empire.svg
new file mode 100644
index 00000000..b10961d4
--- /dev/null
+++ b/img/icons/font-awesome/empire.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M874 1638v66q-208-6-385-109.5t-283-275.5l58-34q29 49 73 99l65-57q148 168 368 212l-17 86q65 12 121 13zm-598-530l-83 28q22 60 49 112l-57 33q-98-180-98-385t98-385l57 33q-30 56-49 112l82 28q-35 100-35 212 0 109 36 212zm1252 177l58 34q-106 172-283 275.5t-385 109.5v-66q56-1 121-13l-17-86q220-44 368-212l65 57q44-50 73-99zm-151-554l-233 80q14 42 14 85t-14 85l232 80q-31 92-98 169l-185-162q-57 67-147 85l48 241q-52 10-98 10t-98-10l48-241q-90-18-147-85l-185 162q-67-77-98-169l232-80q-14-42-14-85t14-85l-233-80q33-93 99-169l185 162q59-68 147-86l-48-240q44-10 98-10t98 10l-48 240q88 18 147 86l185-162q66 76 99 169zm-503-643v66q-65 2-121 13l17 86q-220 42-368 211l-65-56q-38 42-73 98l-57-33q106-172 282-275.5t385-109.5zm831 808q0 205-98 385l-57-33q27-52 49-112l-83-28q36-103 36-212 0-112-35-212l82-28q-19-56-49-112l57-33q98 180 98 385zm-120-423l-57 33q-35-56-73-98l-65 56q-148-169-368-211l17-86q-56-11-121-13v-66q209 6 385 109.5t282 275.5zm163 423q0-173-67.5-331t-181.5-272-272-181.5-331-67.5-331 67.5-272 181.5-181.5 272-67.5 331 67.5 331 181.5 272 272 181.5 331 67.5 331-67.5 272-181.5 181.5-272 67.5-331zm44 0q0 182-71 348t-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71 348 71 286 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/envelope-o.svg b/img/icons/font-awesome/envelope-o.svg
new file mode 100644
index 00000000..f58d3aea
--- /dev/null
+++ b/img/icons/font-awesome/envelope-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 1504v-768q-32 36-69 66-268 206-426 338-51 43-83 67t-86.5 48.5-102.5 24.5h-2q-48 0-102.5-24.5t-86.5-48.5-83-67q-158-132-426-338-37-30-69-66v768q0 13 9.5 22.5t22.5 9.5h1472q13 0 22.5-9.5t9.5-22.5zm0-1051v-24.5l-.5-13-3-12.5-5.5-9-9-7.5-14-2.5h-1472q-13 0-22.5 9.5t-9.5 22.5q0 168 147 284 193 152 401 317 6 5 35 29.5t46 37.5 44.5 31.5 50.5 27.5 43 9h2q20 0 43-9t50.5-27.5 44.5-31.5 46-37.5 35-29.5q208-165 401-317 54-43 100.5-115.5t46.5-131.5zm128-37v1088q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1472q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/envelope-open-o.svg b/img/icons/font-awesome/envelope-open-o.svg
new file mode 100644
index 00000000..7d25defd
--- /dev/null
+++ b/img/icons/font-awesome/envelope-open-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1474 913l39 51q8 11 6.5 23.5t-11.5 20.5q-43 34-126.5 98.5t-146.5 113-67 51.5q-39 32-60 48t-60.5 41-76.5 36.5-74 11.5h-2q-37 0-74-11.5t-76-36.5-61-41.5-60-47.5q-5-4-65-50.5t-143.5-111-122.5-94.5q-11-8-12.5-20.5t6.5-23.5l37-52q8-11 21.5-13t24.5 7q94 73 306 236 5 4 43.5 35t60.5 46.5 56.5 32.5 58.5 17h2q24 0 58.5-17t56.5-32.5 60.5-46.5 43.5-35q258-198 313-242 11-8 24-6.5t21 12.5zm190 719v-928q-90-83-159-139-91-74-389-304-3-2-43-35t-61-48-56-32.5-59-17.5h-2q-24 0-59 17.5t-56 32.5-61 48-43 35q-215 166-315.5 245.5t-129.5 104-82 74.5q-14 12-21 19v928q0 13 9.5 22.5t22.5 9.5h1472q13 0 22.5-9.5t9.5-22.5zm128-928v928q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-928q0-56 41-94 123-114 350-290.5t233-181.5q36-30 59-47.5t61.5-42 76-36.5 74.5-12h2q37 0 74.5 12t76 36.5 61.5 42 59 47.5q43 36 156 122t226 177 201 173q41 38 41 94z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/envelope-open.svg b/img/icons/font-awesome/envelope-open.svg
new file mode 100644
index 00000000..c07c9aa9
--- /dev/null
+++ b/img/icons/font-awesome/envelope-open.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 654v978q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-978q0-15 11-24 8-7 39-34.5t41.5-36 45.5-37.5 70-55.5 96-73 143.5-107 192.5-140.5q5-4 52.5-40t71.5-52.5 64-35 69-18.5 69 18.5 65 35.5 71 52 52 40q110 80 192.5 140.5t143.5 107 96 73 70 55.5 45.5 37.5 41.5 36 39 34.5q11 9 11 24zm-564 585q263-191 345-252 11-8 12.5-20.5t-6.5-23.5l-38-52q-8-11-21-12.5t-24 6.5q-231 169-343 250-5 3-52 39t-71.5 52.5-64.5 35-69 18.5-69-18.5-64.5-35-71.5-52.5-52-39q-186-134-343-250-11-8-24-6.5t-21 12.5l-38 52q-8 11-6.5 23.5t12.5 20.5q82 61 345 252 10 8 50 38t65 47 64 39.5 77.5 33.5 75.5 11 75.5-11 79-34.5 64.5-39.5 65-47.5 48-36.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/envelope-square.svg b/img/icons/font-awesome/envelope-square.svg
new file mode 100644
index 00000000..17757714
--- /dev/null
+++ b/img/icons/font-awesome/envelope-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1376 128q119 0 203.5 84.5t84.5 203.5v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960zm32 1056v-436q-31 35-64 55-34 22-132.5 85t-151.5 99q-98 69-164 69t-164-69q-47-32-142-92.5t-142-92.5q-12-8-33-27t-31-27v436q0 40 28 68t68 28h832q40 0 68-28t28-68zm0-573q0-41-27.5-70t-68.5-29h-832q-40 0-68 28t-28 68q0 37 30.5 76.5t67.5 64.5q47 32 137.5 89t129.5 83q3 2 17 11.5t21 14 21 13 23.5 13 21.5 9.5 22.5 7.5 20.5 2.5 20.5-2.5 22.5-7.5 21.5-9.5 23.5-13 21-13 21-14 17-11.5l267-174q35-23 66.5-62.5t31.5-73.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/envelope.svg b/img/icons/font-awesome/envelope.svg
new file mode 100644
index 00000000..91f14860
--- /dev/null
+++ b/img/icons/font-awesome/envelope.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 710v794q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-794q44 49 101 87 362 246 497 345 57 42 92.5 65.5t94.5 48 110 24.5h2q51 0 110-24.5t94.5-48 92.5-65.5q170-123 498-345 57-39 100-87zm0-294q0 79-49 151t-122 123q-376 261-468 325-10 7-42.5 30.5t-54 38-52 32.5-57.5 27-50 9h-2q-23 0-50-9t-57.5-27-52-32.5-54-38-42.5-30.5q-91-64-262-182.5t-205-142.5q-62-42-117-115.5t-55-136.5q0-78 41.5-130t118.5-52h1472q65 0 112.5 47t47.5 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/envira.svg b/img/icons/font-awesome/envira.svg
new file mode 100644
index 00000000..775aa464
--- /dev/null
+++ b/img/icons/font-awesome/envira.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 816q-104-196-160-278-139-202-347-318-34-19-70-36-89-40-94-32t34 38l39 31q62 43 112.5 93.5t94.5 116.5 70.5 113 70.5 131q9 17 13 25 44 84 84 153t98 154 115.5 150 131 123.5 148.5 90.5q153 66 154 60 1-3-49-37-53-36-81-57-77-58-179-211t-185-310zm-347 543q-76-60-132.5-125t-98-143.5-71-154.5-58.5-186-52-209-60.5-252-76.5-289q273 0 497.5 36t379 92 271 144.5 185.5 172.5 110 198.5 56 199.5 12.5 198.5-9.5 173-20 143.5-13 107l323 327h-104l-281-285q-22 2-91.5 14t-121.5 19-138 6-160.5-17-167.5-59-179-111z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/eraser.svg b/img/icons/font-awesome/eraser.svg
new file mode 100644
index 00000000..c40adedd
--- /dev/null
+++ b/img/icons/font-awesome/eraser.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M960 1408l336-384h-768l-336 384h768zm1013-1077q15 34 9.5 71.5t-30.5 65.5l-896 1024q-38 44-96 44h-768q-38 0-69.5-20.5t-47.5-54.5q-15-34-9.5-71.5t30.5-65.5l896-1024q38-44 96-44h768q38 0 69.5 20.5t47.5 54.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/etsy.svg b/img/icons/font-awesome/etsy.svg
new file mode 100644
index 00000000..9997c7fb
--- /dev/null
+++ b/img/icons/font-awesome/etsy.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M646 183v655q103 1 191.5-1.5t125.5-5.5l37-3q68-2 90.5-24.5t39.5-94.5l33-142h103l-14 322 7 319h-103l-29-127q-15-68-45-93t-84-26q-87-8-352-8v556q0 78 43.5 115.5t133.5 37.5h357q35 0 59.5-2t55-7.5 54-18 48.5-32 46-50.5 39-73l93-216h89q-6 37-31.5 252t-30.5 276q-146-5-263.5-8t-162.5-4h-672l-376 12v-102l127-25q67-13 91.5-37t25.5-79l8-643q3-402-8-645-2-61-25.5-84t-91.5-36l-127-24v-102l376 12h702q139 0 374-27-6 68-14 194.5t-12 219.5l-5 92h-93l-32-124q-31-121-74-179.5t-113-58.5h-548q-28 0-35.5 8.5t-7.5 30.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/eur.svg b/img/icons/font-awesome/eur.svg
new file mode 100644
index 00000000..5b3bdc23
--- /dev/null
+++ b/img/icons/font-awesome/eur.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1360 1307l35 159q3 12-3 22.5t-17 14.5l-5 1q-4 2-10.5 3.5t-16 4.5-21.5 5.5-25.5 5-30 5-33.5 4.5-36.5 3-38.5 1q-234 0-409-130.5t-238-351.5h-95q-13 0-22.5-9.5t-9.5-22.5v-113q0-13 9.5-22.5t22.5-9.5h66q-2-57 1-105h-67q-14 0-23-9t-9-23v-114q0-14 9-23t23-9h98q67-210 243.5-338t400.5-128q102 0 194 23 11 3 20 15 6 11 3 24l-43 159q-3 13-14 19.5t-24 2.5l-4-1q-4-1-11.5-2.5l-17.5-3.5-22.5-3.5-26-3-29-2.5-29.5-1q-126 0-226 64t-150 176h468q16 0 25 12 10 12 7 26l-24 114q-5 26-32 26h-488q-3 37 0 105h459q15 0 25 12 9 12 6 27l-24 112q-2 11-11 18.5t-20 7.5h-387q48 117 149.5 185.5t228.5 68.5q18 0 36-1.5t33.5-3.5 29.5-4.5 24.5-5 18.5-4.5l12-3 5-2q13-5 26 2 12 7 15 21z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/euro.svg b/img/icons/font-awesome/euro.svg
new file mode 100644
index 00000000..5b3bdc23
--- /dev/null
+++ b/img/icons/font-awesome/euro.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1360 1307l35 159q3 12-3 22.5t-17 14.5l-5 1q-4 2-10.5 3.5t-16 4.5-21.5 5.5-25.5 5-30 5-33.5 4.5-36.5 3-38.5 1q-234 0-409-130.5t-238-351.5h-95q-13 0-22.5-9.5t-9.5-22.5v-113q0-13 9.5-22.5t22.5-9.5h66q-2-57 1-105h-67q-14 0-23-9t-9-23v-114q0-14 9-23t23-9h98q67-210 243.5-338t400.5-128q102 0 194 23 11 3 20 15 6 11 3 24l-43 159q-3 13-14 19.5t-24 2.5l-4-1q-4-1-11.5-2.5l-17.5-3.5-22.5-3.5-26-3-29-2.5-29.5-1q-126 0-226 64t-150 176h468q16 0 25 12 10 12 7 26l-24 114q-5 26-32 26h-488q-3 37 0 105h459q15 0 25 12 9 12 6 27l-24 112q-2 11-11 18.5t-20 7.5h-387q48 117 149.5 185.5t228.5 68.5q18 0 36-1.5t33.5-3.5 29.5-4.5 24.5-5 18.5-4.5l12-3 5-2q13-5 26 2 12 7 15 21z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/exchange.svg b/img/icons/font-awesome/exchange.svg
new file mode 100644
index 00000000..14a8372a
--- /dev/null
+++ b/img/icons/font-awesome/exchange.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 1184v192q0 13-9.5 22.5t-22.5 9.5h-1376v192q0 13-9.5 22.5t-22.5 9.5q-12 0-24-10l-319-320q-9-9-9-22 0-14 9-23l320-320q9-9 23-9 13 0 22.5 9.5t9.5 22.5v192h1376q13 0 22.5 9.5t9.5 22.5zm0-544q0 14-9 23l-320 320q-9 9-23 9-13 0-22.5-9.5t-9.5-22.5v-192h-1376q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1376v-192q0-14 9-23t23-9q12 0 24 10l319 319q9 9 9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/exclamation-circle.svg b/img/icons/font-awesome/exclamation-circle.svg
new file mode 100644
index 00000000..30bde88c
--- /dev/null
+++ b/img/icons/font-awesome/exclamation-circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 128q209 0 385.5 103t279.5 279.5 103 385.5-103 385.5-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103zm128 1247v-190q0-14-9-23.5t-22-9.5h-192q-13 0-23 10t-10 23v190q0 13 10 23t23 10h192q13 0 22-9.5t9-23.5zm-2-344l18-621q0-12-10-18-10-8-24-8h-220q-14 0-24 8-10 6-10 18l17 621q0 10 10 17.5t24 7.5h185q14 0 23.5-7.5t10.5-17.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/exclamation-triangle.svg b/img/icons/font-awesome/exclamation-triangle.svg
new file mode 100644
index 00000000..56e26986
--- /dev/null
+++ b/img/icons/font-awesome/exclamation-triangle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1375v-190q0-14-9.5-23.5t-22.5-9.5h-192q-13 0-22.5 9.5t-9.5 23.5v190q0 14 9.5 23.5t22.5 9.5h192q13 0 22.5-9.5t9.5-23.5zm-2-374l18-459q0-12-10-19-13-11-24-11h-220q-11 0-24 11-10 7-10 21l17 457q0 10 10 16.5t24 6.5h185q14 0 23.5-6.5t10.5-16.5zm-14-934l768 1408q35 63-2 126-17 29-46.5 46t-63.5 17h-1536q-34 0-63.5-17t-46.5-46q-37-63-2-126l768-1408q17-31 47-49t65-18 65 18 47 49z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/exclamation.svg b/img/icons/font-awesome/exclamation.svg
new file mode 100644
index 00000000..fb6a2dc6
--- /dev/null
+++ b/img/icons/font-awesome/exclamation.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1088 1248v224q0 26-19 45t-45 19h-256q-26 0-45-19t-19-45v-224q0-26 19-45t45-19h256q26 0 45 19t19 45zm30-1056l-28 768q-1 26-20.5 45t-45.5 19h-256q-26 0-45.5-19t-20.5-45l-28-768q-1-26 17.5-45t44.5-19h320q26 0 44.5 19t17.5 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/expand.svg b/img/icons/font-awesome/expand.svg
new file mode 100644
index 00000000..726f30ec
--- /dev/null
+++ b/img/icons/font-awesome/expand.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M883 1056q0 13-10 23l-332 332 144 144q19 19 19 45t-19 45-45 19h-448q-26 0-45-19t-19-45v-448q0-26 19-45t45-19 45 19l144 144 332-332q10-10 23-10t23 10l114 114q10 10 10 23zm781-864v448q0 26-19 45t-45 19-45-19l-144-144-332 332q-10 10-23 10t-23-10l-114-114q-10-10-10-23t10-23l332-332-144-144q-19-19-19-45t19-45 45-19h448q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/expeditedssl.svg b/img/icons/font-awesome/expeditedssl.svg
new file mode 100644
index 00000000..75a8061b
--- /dev/null
+++ b/img/icons/font-awesome/expeditedssl.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 64q-169 0-323 66t-265.5 177.5-177.5 265.5-66 323 66 323 177.5 265.5 265.5 177.5 323 66 323-66 265.5-177.5 177.5-265.5 66-323-66-323-177.5-265.5-265.5-177.5-323-66zm0-64q182 0 348 71t286 191 191 286 71 348-71 348-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71zm-400 832q16 0 16 16v480q0 16-16 16h-32q-16 0-16-16v-480q0-16 16-16h32zm400 64q53 0 90.5 37.5t37.5 90.5q0 35-17.5 64t-46.5 46v114q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-114q-29-17-46.5-46t-17.5-64q0-53 37.5-90.5t90.5-37.5zm0-768q209 0 385.5 103t279.5 279.5 103 385.5-103 385.5-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103zm-352 480v96q0 14 9 23t23 9h64q14 0 23-9t9-23v-96q0-93 65.5-158.5t158.5-65.5 158.5 65.5 65.5 158.5v96q0 14 9 23t23 9h64q14 0 23-9t9-23v-96q0-146-103-249t-249-103-249 103-103 249zm864 736v-512q0-26-19-45t-45-19h-896q-26 0-45 19t-19 45v512q0 26 19 45t45 19h896q26 0 45-19t19-45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/external-link-square.svg b/img/icons/font-awesome/external-link-square.svg
new file mode 100644
index 00000000..7957029a
--- /dev/null
+++ b/img/icons/font-awesome/external-link-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 928v-480q0-26-19-45t-45-19h-480q-42 0-59 39-17 41 14 70l144 144-534 534q-19 19-19 45t19 45l102 102q19 19 45 19t45-19l534-534 144 144q18 19 45 19 12 0 25-5 39-17 39-59zm256-512v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/external-link.svg b/img/icons/font-awesome/external-link.svg
new file mode 100644
index 00000000..d77c4512
--- /dev/null
+++ b/img/icons/font-awesome/external-link.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 928v320q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h704q14 0 23 9t9 23v64q0 14-9 23t-23 9h-704q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113v-320q0-14 9-23t23-9h64q14 0 23 9t9 23zm384-864v512q0 26-19 45t-45 19-45-19l-176-176-652 652q-10 10-23 10t-23-10l-114-114q-10-10-10-23t10-23l652-652-176-176q-19-19-19-45t19-45 45-19h512q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/eye-slash.svg b/img/icons/font-awesome/eye-slash.svg
new file mode 100644
index 00000000..7c4f7bcb
--- /dev/null
+++ b/img/icons/font-awesome/eye-slash.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M555 1335l78-141q-87-63-136-159t-49-203q0-121 61-225-229 117-381 353 167 258 427 375zm389-759q0-20-14-34t-34-14q-125 0-214.5 89.5t-89.5 214.5q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm363-191q0 7-1 9-106 189-316 567t-315 566l-49 89q-10 16-28 16-12 0-134-70-16-10-16-28 0-12 44-87-143-65-263.5-173t-208.5-245q-20-31-20-69t20-69q153-235 380-371t496-136q89 0 180 17l54-97q10-16 28-16 5 0 18 6t31 15.5 33 18.5 31.5 18.5 19.5 11.5q16 10 16 27zm37 447q0 139-79 253.5t-209 164.5l280-502q8 45 8 84zm448 128q0 35-20 69-39 64-109 145-150 172-347.5 267t-419.5 95l74-132q212-18 392.5-137t301.5-307q-115-179-282-294l63-112q95 64 182.5 153t144.5 184q20 34 20 69z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/eye.svg b/img/icons/font-awesome/eye.svg
new file mode 100644
index 00000000..2aec1e18
--- /dev/null
+++ b/img/icons/font-awesome/eye.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5t-316.5 131.5-316.5-131.5-131.5-316.5q0-121 61-225-229 117-381 353 133 205 333.5 326.5t434.5 121.5 434.5-121.5 333.5-326.5zm-720-384q0-20-14-34t-34-14q-125 0-214.5 89.5t-89.5 214.5q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5t-499.5 138.5-499.5-139-376.5-368q-20-35-20-69t20-69q140-229 376.5-368t499.5-139 499.5 139 376.5 368q20 35 20 69z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/eyedropper.svg b/img/icons/font-awesome/eyedropper.svg
new file mode 100644
index 00000000..82e628a1
--- /dev/null
+++ b/img/icons/font-awesome/eyedropper.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1698 94q94 94 94 226.5t-94 225.5l-225 223 104 104q10 10 10 23t-10 23l-210 210q-10 10-23 10t-23-10l-105-105-603 603q-37 37-90 37h-203l-256 128-64-64 128-256v-203q0-53 37-90l603-603-105-105q-10-10-10-23t10-23l210-210q10-10 23-10t23 10l104 104 223-225q93-94 225.5-94t226.5 94zm-1186 1378l576-576-192-192-576 576v192h192z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/fa.svg b/img/icons/font-awesome/fa.svg
new file mode 100644
index 00000000..e1ecc4ea
--- /dev/null
+++ b/img/icons/font-awesome/fa.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 512v839q0 48-49 62-174 52-338 52-73 0-215.5-29.5t-227.5-29.5q-164 0-370 48v338h-160v-1368q-63-25-101-81t-38-124q0-91 64-155t155-64 155 64 64 155q0 68-38 124t-101 81v68q190-44 343-44 99 0 198 15 14 2 111.5 22.5t149.5 20.5q77 0 165-18 11-2 80-21t89-19q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/facebook-f.svg b/img/icons/font-awesome/facebook-f.svg
new file mode 100644
index 00000000..9600dc73
--- /dev/null
+++ b/img/icons/font-awesome/facebook-f.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1343 12v264h-157q-86 0-116 36t-30 108v189h293l-39 296h-254v759h-306v-759h-255v-296h255v-218q0-186 104-288.5t277-102.5q147 0 228 12z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/facebook-official.svg b/img/icons/font-awesome/facebook-official.svg
new file mode 100644
index 00000000..a6d82ce0
--- /dev/null
+++ b/img/icons/font-awesome/facebook-official.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1579 128q35 0 60 25t25 60v1366q0 35-25 60t-60 25h-391v-595h199l30-232h-229v-148q0-56 23.5-84t91.5-28l122-1v-207q-63-9-178-9-136 0-217.5 80t-81.5 226v171h-200v232h200v595h-735q-35 0-60-25t-25-60v-1366q0-35 25-60t60-25h1366z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/facebook-square.svg b/img/icons/font-awesome/facebook-square.svg
new file mode 100644
index 00000000..d625bbef
--- /dev/null
+++ b/img/icons/font-awesome/facebook-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1376 128q119 0 203.5 84.5t84.5 203.5v960q0 119-84.5 203.5t-203.5 84.5h-188v-595h199l30-232h-229v-148q0-56 23.5-84t91.5-28l122-1v-207q-63-9-178-9-136 0-217.5 80t-81.5 226v171h-200v232h200v595h-532q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/facebook.svg b/img/icons/font-awesome/facebook.svg
new file mode 100644
index 00000000..9600dc73
--- /dev/null
+++ b/img/icons/font-awesome/facebook.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1343 12v264h-157q-86 0-116 36t-30 108v189h293l-39 296h-254v759h-306v-759h-255v-296h255v-218q0-186 104-288.5t277-102.5q147 0 228 12z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/fast-backward.svg b/img/icons/font-awesome/fast-backward.svg
new file mode 100644
index 00000000..5b981963
--- /dev/null
+++ b/img/icons/font-awesome/fast-backward.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1747 141q19-19 32-13t13 32v1472q0 26-13 32t-32-13l-710-710q-9-9-13-19v710q0 26-13 32t-32-13l-710-710q-9-9-13-19v678q0 26-19 45t-45 19h-128q-26 0-45-19t-19-45v-1408q0-26 19-45t45-19h128q26 0 45 19t19 45v678q4-10 13-19l710-710q19-19 32-13t13 32v710q4-10 13-19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/fast-forward.svg b/img/icons/font-awesome/fast-forward.svg
new file mode 100644
index 00000000..b8fb3eb3
--- /dev/null
+++ b/img/icons/font-awesome/fast-forward.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M45 1651q-19 19-32 13t-13-32v-1472q0-26 13-32t32 13l710 710q9 9 13 19v-710q0-26 13-32t32 13l710 710q9 9 13 19v-678q0-26 19-45t45-19h128q26 0 45 19t19 45v1408q0 26-19 45t-45 19h-128q-26 0-45-19t-19-45v-678q-4 10-13 19l-710 710q-19 19-32 13t-13-32v-710q-4 10-13 19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/fax.svg b/img/icons/font-awesome/fax.svg
new file mode 100644
index 00000000..17ef000d
--- /dev/null
+++ b/img/icons/font-awesome/fax.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M288 384q66 0 113 47t47 113v1088q0 66-47 113t-113 47h-128q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h128zm1376 163q58 34 93 93t35 128v768q0 106-75 181t-181 75h-864q-66 0-113-47t-47-113v-1536q0-40 28-68t68-28h672q40 0 88 20t76 48l152 152q28 28 48 76t20 88v163zm-736 989v-128q0-14-9-23t-23-9h-128q-14 0-23 9t-9 23v128q0 14 9 23t23 9h128q14 0 23-9t9-23zm0-256v-128q0-14-9-23t-23-9h-128q-14 0-23 9t-9 23v128q0 14 9 23t23 9h128q14 0 23-9t9-23zm0-256v-128q0-14-9-23t-23-9h-128q-14 0-23 9t-9 23v128q0 14 9 23t23 9h128q14 0 23-9t9-23zm256 512v-128q0-14-9-23t-23-9h-128q-14 0-23 9t-9 23v128q0 14 9 23t23 9h128q14 0 23-9t9-23zm0-256v-128q0-14-9-23t-23-9h-128q-14 0-23 9t-9 23v128q0 14 9 23t23 9h128q14 0 23-9t9-23zm0-256v-128q0-14-9-23t-23-9h-128q-14 0-23 9t-9 23v128q0 14 9 23t23 9h128q14 0 23-9t9-23zm256 512v-128q0-14-9-23t-23-9h-128q-14 0-23 9t-9 23v128q0 14 9 23t23 9h128q14 0 23-9t9-23zm0-256v-128q0-14-9-23t-23-9h-128q-14 0-23 9t-9 23v128q0 14 9 23t23 9h128q14 0 23-9t9-23zm0-256v-128q0-14-9-23t-23-9h-128q-14 0-23 9t-9 23v128q0 14 9 23t23 9h128q14 0 23-9t9-23zm96-384v-256h-160q-40 0-68-28t-28-68v-160h-640v512h896z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/feed.svg b/img/icons/font-awesome/feed.svg
new file mode 100644
index 00000000..9d4e89ff
--- /dev/null
+++ b/img/icons/font-awesome/feed.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M576 1344q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm512 123q2 28-17 48-18 21-47 21h-135q-25 0-43-16.5t-20-41.5q-22-229-184.5-391.5t-391.5-184.5q-25-2-41.5-20t-16.5-43v-135q0-29 21-47 17-17 43-17h5q160 13 306 80.5t259 181.5q114 113 181.5 259t80.5 306zm512 2q2 27-18 47-18 20-46 20h-143q-26 0-44.5-17.5t-19.5-42.5q-12-215-101-408.5t-231.5-336-336-231.5-408.5-102q-25-1-42.5-19.5t-17.5-43.5v-143q0-28 20-46 18-18 44-18h3q262 13 501.5 120t425.5 294q187 186 294 425.5t120 501.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/female.svg b/img/icons/font-awesome/female.svg
new file mode 100644
index 00000000..0c66f328
--- /dev/null
+++ b/img/icons/font-awesome/female.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1536 1056q0 40-28 68t-68 28q-51 0-80-43l-227-341h-45v132l247 411q9 15 9 33 0 26-19 45t-45 19h-192v272q0 46-33 79t-79 33h-160q-46 0-79-33t-33-79v-272h-192q-26 0-45-19t-19-45q0-18 9-33l247-411v-132h-45l-227 341q-29 43-80 43-40 0-68-28t-28-68q0-29 16-53l256-384q73-107 176-107h384q103 0 176 107l256 384q16 24 16 53zm-416-800q0 93-65.5 158.5t-158.5 65.5-158.5-65.5-65.5-158.5 65.5-158.5 158.5-65.5 158.5 65.5 65.5 158.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/fighter-jet.svg b/img/icons/font-awesome/fighter-jet.svg
new file mode 100644
index 00000000..329f3e58
--- /dev/null
+++ b/img/icons/font-awesome/fighter-jet.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1984 960q-1 32-288 96l-352 32-224 64h-64l-293 352h69q26 0 45 4.5t19 11.5-19 11.5-45 4.5h-320v-32h64v-416h-160l-192 224h-96l-32-32v-192h32v-32h128v-8l-192-24v-128l192-24v-8h-128v-32h-32v-192l32-32h96l192 224h160v-416h-64v-32h320q26 0 45 4.5t19 11.5-19 11.5-45 4.5h-69l293 352h64l224 64 352 32q128 28 200 52t80 34z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-archive-o.svg b/img/icons/font-awesome/file-archive-o.svg
new file mode 100644
index 00000000..14859903
--- /dev/null
+++ b/img/icons/font-awesome/file-archive-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M768 384v-128h-128v128h128zm128 128v-128h-128v128h128zm-128 128v-128h-128v128h128zm128 128v-128h-128v128h128zm700-388q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-128v128h-128v-128h-512v1536h1280zm-627-721l107 349q8 27 8 52 0 83-72.5 137.5t-183.5 54.5-183.5-54.5-72.5-137.5q0-25 8-52 21-63 120-396v-128h128v128h79q22 0 39 13t23 34zm-141 465q53 0 90.5-19t37.5-45-37.5-45-90.5-19-90.5 19-37.5 45 37.5 45 90.5 19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-audio-o.svg b/img/icons/font-awesome/file-audio-o.svg
new file mode 100644
index 00000000..4eca8d71
--- /dev/null
+++ b/img/icons/font-awesome/file-audio-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-788-814q20 8 20 30v544q0 22-20 30-8 2-12 2-12 0-23-9l-166-167h-131q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h131l166-167q16-15 35-7zm417 689q31 0 50-24 129-159 129-363t-129-363q-16-21-43-24t-47 14q-21 17-23.5 43.5t14.5 47.5q100 123 100 282t-100 282q-17 21-14.5 47.5t23.5 42.5q18 15 40 15zm-211-148q27 0 47-20 87-93 87-219t-87-219q-18-19-45-20t-46 17-20 44.5 18 46.5q52 57 52 131t-52 131q-19 20-18 46.5t20 44.5q20 17 44 17z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-code-o.svg b/img/icons/font-awesome/file-code-o.svg
new file mode 100644
index 00000000..4703ebbc
--- /dev/null
+++ b/img/icons/font-awesome/file-code-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-928-896q8-11 21-12.5t24 6.5l51 38q11 8 12.5 21t-6.5 24l-182 243 182 243q8 11 6.5 24t-12.5 21l-51 38q-11 8-24 6.5t-21-12.5l-226-301q-14-19 0-38zm802 301q14 19 0 38l-226 301q-8 11-21 12.5t-24-6.5l-51-38q-11-8-12.5-21t6.5-24l182-243-182-243q-8-11-6.5-24t12.5-21l51-38q11-8 24-6.5t21 12.5zm-620 461q-13-2-20.5-13t-5.5-24l138-831q2-13 13-20.5t24-5.5l63 10q13 2 20.5 13t5.5 24l-138 831q-2 13-13 20.5t-24 5.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-excel-o.svg b/img/icons/font-awesome/file-excel-o.svg
new file mode 100644
index 00000000..21174bb8
--- /dev/null
+++ b/img/icons/font-awesome/file-excel-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-979-234v106h281v-106h-75l103-161q5-7 10-16.5t7.5-13.5 3.5-4h2q1 4 5 10 2 4 4.5 7.5t6 8 6.5 8.5l107 161h-76v106h291v-106h-68l-192-273 195-282h67v-107h-279v107h74l-103 159q-4 7-10 16.5t-9 13.5l-2 3h-2q-1-4-5-10-6-11-17-23l-106-159h76v-107h-290v107h68l189 272-194 283h-68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-image-o.svg b/img/icons/font-awesome/file-image-o.svg
new file mode 100644
index 00000000..1a2b033f
--- /dev/null
+++ b/img/icons/font-awesome/file-image-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-128-448v320h-1024v-192l192-192 128 128 384-384zm-832-192q-80 0-136-56t-56-136 56-136 136-56 136 56 56 136-56 136-136 56z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-movie-o.svg b/img/icons/font-awesome/file-movie-o.svg
new file mode 100644
index 00000000..1f24d3c0
--- /dev/null
+++ b/img/icons/font-awesome/file-movie-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-640-896q52 0 90 38t38 90v384q0 52-38 90t-90 38h-384q-52 0-90-38t-38-90v-384q0-52 38-90t90-38h384zm492 2q20 8 20 30v576q0 22-20 30-8 2-12 2-14 0-23-9l-265-266v-90l265-266q9-9 23-9 4 0 12 2z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-o.svg b/img/icons/font-awesome/file-o.svg
new file mode 100644
index 00000000..03bb7a84
--- /dev/null
+++ b/img/icons/font-awesome/file-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-pdf-o.svg b/img/icons/font-awesome/file-pdf-o.svg
new file mode 100644
index 00000000..aedd1fb8
--- /dev/null
+++ b/img/icons/font-awesome/file-pdf-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-514-593q33 26 84 56 59-7 117-7 147 0 177 49 16 22 2 52 0 1-1 2l-2 2v1q-6 38-71 38-48 0-115-20t-130-53q-221 24-392 83-153 262-242 262-15 0-28-7l-24-12q-1-1-6-5-10-10-6-36 9-40 56-91.5t132-96.5q14-9 23 6 2 2 2 4 52-85 107-197 68-136 104-262-24-82-30.5-159.5t6.5-127.5q11-40 42-40h22q23 0 35 15 18 21 9 68-2 6-4 8 1 3 1 8v30q-2 123-14 192 55 164 146 238zm-576 411q52-24 137-158-51 40-87.5 84t-49.5 74zm398-920q-15 42-2 132 1-7 7-44 0-3 7-43 1-4 4-8-1-1-1-2-1-2-1-3-1-22-13-36 0 1-1 2v2zm-124 661q135-54 284-81-2-1-13-9.5t-16-13.5q-76-67-127-176-27 86-83 197-30 56-45 83zm646-16q-24-24-140-24 76 28 124 28 14 0 18-1 0-1-2-3z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-photo-o.svg b/img/icons/font-awesome/file-photo-o.svg
new file mode 100644
index 00000000..1a2b033f
--- /dev/null
+++ b/img/icons/font-awesome/file-photo-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-128-448v320h-1024v-192l192-192 128 128 384-384zm-832-192q-80 0-136-56t-56-136 56-136 136-56 136 56 56 136-56 136-136 56z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-picture-o.svg b/img/icons/font-awesome/file-picture-o.svg
new file mode 100644
index 00000000..1a2b033f
--- /dev/null
+++ b/img/icons/font-awesome/file-picture-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-128-448v320h-1024v-192l192-192 128 128 384-384zm-832-192q-80 0-136-56t-56-136 56-136 136-56 136 56 56 136-56 136-136 56z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-powerpoint-o.svg b/img/icons/font-awesome/file-powerpoint-o.svg
new file mode 100644
index 00000000..3d9eff6b
--- /dev/null
+++ b/img/icons/font-awesome/file-powerpoint-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-992-234v106h327v-106h-93v-167h137q76 0 118-15 67-23 106.5-87t39.5-146q0-81-37-141t-100-87q-48-19-130-19h-368v107h92v555h-92zm353-280h-119v-268h120q52 0 83 18 56 33 56 115 0 89-62 120-31 15-78 15z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-sound-o.svg b/img/icons/font-awesome/file-sound-o.svg
new file mode 100644
index 00000000..4eca8d71
--- /dev/null
+++ b/img/icons/font-awesome/file-sound-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-788-814q20 8 20 30v544q0 22-20 30-8 2-12 2-12 0-23-9l-166-167h-131q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h131l166-167q16-15 35-7zm417 689q31 0 50-24 129-159 129-363t-129-363q-16-21-43-24t-47 14q-21 17-23.5 43.5t14.5 47.5q100 123 100 282t-100 282q-17 21-14.5 47.5t23.5 42.5q18 15 40 15zm-211-148q27 0 47-20 87-93 87-219t-87-219q-18-19-45-20t-46 17-20 44.5 18 46.5q52 57 52 131t-52 131q-19 20-18 46.5t20 44.5q20 17 44 17z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-text-o.svg b/img/icons/font-awesome/file-text-o.svg
new file mode 100644
index 00000000..6e04aef3
--- /dev/null
+++ b/img/icons/font-awesome/file-text-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-1024-864q0-14 9-23t23-9h704q14 0 23 9t9 23v64q0 14-9 23t-23 9h-704q-14 0-23-9t-9-23v-64zm736 224q14 0 23 9t9 23v64q0 14-9 23t-23 9h-704q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h704zm0 256q14 0 23 9t9 23v64q0 14-9 23t-23 9h-704q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h704z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-text.svg b/img/icons/font-awesome/file-text.svg
new file mode 100644
index 00000000..30c7858e
--- /dev/null
+++ b/img/icons/font-awesome/file-text.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 476q14 14 28 36h-472v-472q22 14 36 28zm-476 164h544v1056q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h800v544q0 40 28 68t68 28zm160 736v-64q0-14-9-23t-23-9h-704q-14 0-23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-704q-14 0-23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-704q-14 0-23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23-9t9-23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-video-o.svg b/img/icons/font-awesome/file-video-o.svg
new file mode 100644
index 00000000..1f24d3c0
--- /dev/null
+++ b/img/icons/font-awesome/file-video-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-640-896q52 0 90 38t38 90v384q0 52-38 90t-90 38h-384q-52 0-90-38t-38-90v-384q0-52 38-90t90-38h384zm492 2q20 8 20 30v576q0 22-20 30-8 2-12 2-14 0-23-9l-265-266v-90l265-266q9-9 23-9 4 0 12 2z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-word-o.svg b/img/icons/font-awesome/file-word-o.svg
new file mode 100644
index 00000000..84f244ed
--- /dev/null
+++ b/img/icons/font-awesome/file-word-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-1175-896v107h70l164 661h159l128-485q7-20 10-46 2-16 2-24h4l3 24q1 3 3.5 20t5.5 26l128 485h159l164-661h70v-107h-300v107h90l-99 438q-5 20-7 46l-2 21h-4q0-3-.5-6.5t-1.5-8-1-6.5q-1-5-4-21t-5-25l-144-545h-114l-144 545q-2 9-4.5 24.5t-3.5 21.5l-4 21h-4l-2-21q-2-26-7-46l-99-438h90v-107h-300z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file-zip-o.svg b/img/icons/font-awesome/file-zip-o.svg
new file mode 100644
index 00000000..14859903
--- /dev/null
+++ b/img/icons/font-awesome/file-zip-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M768 384v-128h-128v128h128zm128 128v-128h-128v128h128zm-128 128v-128h-128v128h128zm128 128v-128h-128v128h128zm700-388q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-128v128h-128v-128h-512v1536h1280zm-627-721l107 349q8 27 8 52 0 83-72.5 137.5t-183.5 54.5-183.5-54.5-72.5-137.5q0-25 8-52 21-63 120-396v-128h128v128h79q22 0 39 13t23 34zm-141 465q53 0 90.5-19t37.5-45-37.5-45-90.5-19-90.5 19-37.5 45 37.5 45 90.5 19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/file.svg b/img/icons/font-awesome/file.svg
new file mode 100644
index 00000000..c8ef1853
--- /dev/null
+++ b/img/icons/font-awesome/file.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 512v-472q22 14 36 28l408 408q14 14 28 36h-472zm-128 32q0 40 28 68t68 28h544v1056q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h800v544z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/files-o.svg b/img/icons/font-awesome/files-o.svg
new file mode 100644
index 00000000..3c8e5bc9
--- /dev/null
+++ b/img/icons/font-awesome/files-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1696 384q40 0 68 28t28 68v1216q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-288h-544q-40 0-68-28t-28-68v-672q0-40 20-88t48-76l408-408q28-28 76-48t88-20h416q40 0 68 28t28 68v328q68-40 128-40h416zm-544 213l-299 299h299v-299zm-640-384l-299 299h299v-299zm196 647l316-316v-416h-384v416q0 40-28 68t-68 28h-416v640h512v-256q0-40 20-88t48-76zm956 804v-1152h-384v416q0 40-28 68t-68 28h-416v640h896z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/film.svg b/img/icons/font-awesome/film.svg
new file mode 100644
index 00000000..bb35c058
--- /dev/null
+++ b/img/icons/font-awesome/film.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M448 1600v-128q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v128q0 26 19 45t45 19h128q26 0 45-19t19-45zm0-384v-128q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v128q0 26 19 45t45 19h128q26 0 45-19t19-45zm0-384v-128q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v128q0 26 19 45t45 19h128q26 0 45-19t19-45zm1024 768v-512q0-26-19-45t-45-19h-768q-26 0-45 19t-19 45v512q0 26 19 45t45 19h768q26 0 45-19t19-45zm-1024-1152v-128q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v128q0 26 19 45t45 19h128q26 0 45-19t19-45zm1408 1152v-128q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v128q0 26 19 45t45 19h128q26 0 45-19t19-45zm-384-768v-512q0-26-19-45t-45-19h-768q-26 0-45 19t-19 45v512q0 26 19 45t45 19h768q26 0 45-19t19-45zm384 384v-128q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v128q0 26 19 45t45 19h128q26 0 45-19t19-45zm0-384v-128q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v128q0 26 19 45t45 19h128q26 0 45-19t19-45zm0-384v-128q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v128q0 26 19 45t45 19h128q26 0 45-19t19-45zm128-160v1344q0 66-47 113t-113 47h-1600q-66 0-113-47t-47-113v-1344q0-66 47-113t113-47h1600q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/filter.svg b/img/icons/font-awesome/filter.svg
new file mode 100644
index 00000000..e364710b
--- /dev/null
+++ b/img/icons/font-awesome/filter.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1595 295q17 41-14 70l-493 493v742q0 42-39 59-13 5-25 5-27 0-45-19l-256-256q-19-19-19-45v-486l-493-493q-31-29-14-70 17-39 59-39h1280q42 0 59 39z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/fire-extinguisher.svg b/img/icons/font-awesome/fire-extinguisher.svg
new file mode 100644
index 00000000..47df8d27
--- /dev/null
+++ b/img/icons/font-awesome/fire-extinguisher.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 192q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm896-32v320q0 16-12 25-8 7-20 7-4 0-7-1l-448-96q-11-2-18-11t-7-20h-256v102q111 23 183.5 111t72.5 203v800q0 26-19 45t-45 19h-512q-26 0-45-19t-19-45v-800q0-106 62.5-190.5t161.5-114.5v-111h-32q-59 0-115 23.5t-91.5 53-66 66.5-40.5 53.5-14 24.5q-17 35-57 35-16 0-29-7-23-12-31.5-37t3.5-49q5-10 14.5-26t37.5-53.5 60.5-70 85-67 108.5-52.5q-25-42-25-86 0-66 47-113t113-47 113 47 47 113q0 33-14 64h302q0-11 7-20t18-11l448-96q3-1 7-1 12 0 20 7 12 9 12 25z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/fire.svg b/img/icons/font-awesome/fire.svg
new file mode 100644
index 00000000..7a86e363
--- /dev/null
+++ b/img/icons/font-awesome/fire.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1600 1696v64q0 13-9.5 22.5t-22.5 9.5h-1344q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h1344q13 0 22.5 9.5t9.5 22.5zm-256-1056q0 78-24.5 144t-64 112.5-87.5 88-96 77.5-87.5 72-64 81.5-24.5 96.5q0 96 67 224l-4-1 1 1q-90-41-160-83t-138.5-100-113.5-122.5-72.5-150.5-27.5-184q0-78 24.5-144t64-112.5 87.5-88 96-77.5 87.5-72 64-81.5 24.5-96.5q0-94-66-224l3 1-1-1q90 41 160 83t138.5 100 113.5 122.5 72.5 150.5 27.5 184z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/firefox.svg b/img/icons/font-awesome/firefox.svg
new file mode 100644
index 00000000..af68f575
--- /dev/null
+++ b/img/icons/font-awesome/firefox.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M903 1792q-283 0-504.5-150.5t-329.5-398.5q-58-131-67-301t26-332.5 111-312 179-242.5l-11 281q11-14 68-15.5t70 15.5q42-81 160.5-138t234.5-59q-54 45-119.5 148.5t-58.5 163.5q25 8 62.5 13.5t63 7.5 68 4 50.5 3q15 5 9.5 45.5t-30.5 75.5q-5 7-16.5 18.5t-56.5 35.5-101 34l15 189-139-67q-18 43-7.5 81.5t36 66.5 65.5 41.5 81 6.5q51-9 98-34.5t83.5-45 73.5-17.5q61 4 89.5 33t19.5 65q-1 2-2.5 5.5t-8.5 12.5-18 15.5-31.5 10.5-46.5 1q-60 95-144.5 135.5t-209.5 29.5q74 61 162.5 82.5t168.5 6 154.5-52 128-87.5 80.5-104q43-91 39-192.5t-37.5-188.5-78.5-125q87 38 137 79.5t77 112.5q15-170-57.5-343t-209.5-284q265 77 412 279.5t151 517.5q2 127-40.5 255t-123.5 238-189 196-247.5 135.5-288.5 49.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/first-order.svg b/img/icons/font-awesome/first-order.svg
new file mode 100644
index 00000000..42640a8c
--- /dev/null
+++ b/img/icons/font-awesome/first-order.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1450 896q0 45-5 76l-236-14 224 78q-19 73-58 141l-214-103 177 158q-44 61-107 108l-157-178 103 215q-61 37-140 59l-79-228 14 240q-38 6-76 6t-76-6l14-238-78 226q-74-19-140-59l103-215-157 178q-59-43-108-108l178-158-214 104q-39-69-58-141l224-79-237 14q-5-42-5-76 0-35 5-77l238 14-225-79q19-73 58-140l214 104-177-159q46-61 107-108l158 178-103-215q67-39 140-58l77 224-13-236q36-6 75-6 38 0 76 6l-14 237 78-225q74 19 140 59l-103 214 158-178q61 47 107 108l-177 159 213-104q37 62 58 141l-224 78 237-14q5 31 5 77zm30 0q0-160-78.5-295.5t-213-214-292.5-78.5q-119 0-227 46.5t-186.5 125-124.5 187.5-46 229q0 119 46 228t124.5 187.5 186.5 125 227 46.5q158 0 292.5-78.5t213-214 78.5-294.5zm73-383v766l-657 383-657-383v-766l657-383zm-657 1206l708-412v-823l-708-411-708 411v823zm768-1271v896l-768 448-768-448v-896l768-448z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/flag-checkered.svg b/img/icons/font-awesome/flag-checkered.svg
new file mode 100644
index 00000000..1b60fb6f
--- /dev/null
+++ b/img/icons/font-awesome/flag-checkered.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M832 1000v-192q-181 16-384 117v185q205-96 384-110zm0-418v-197q-172 8-384 126v189q215-111 384-118zm832 463v-184q-235 116-384 71v-224q-20-6-39-15-5-3-33-17t-34.5-17-31.5-15-34.5-15.5-32.5-13-36-12.5-35-8.5-39.5-7.5-39.5-4-44-2q-23 0-49 3v222h19q102 0 192.5 29t197.5 82q19 9 39 15v188q42 17 91 17 120 0 293-92zm0-427v-189q-169 91-306 91-45 0-78-8v196q148 42 384-90zm-1344-362q0 35-17.5 64t-46.5 46v1266q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-1266q-29-17-46.5-46t-17.5-64q0-53 37.5-90.5t90.5-37.5 90.5 37.5 37.5 90.5zm1472 64v763q0 39-35 57-10 5-17 9-218 116-369 116-88 0-158-35l-28-14q-64-33-99-48t-91-29-114-14q-102 0-235.5 44t-228.5 102q-15 9-33 9-16 0-32-8-32-19-32-56v-742q0-35 31-55 35-21 78.5-42.5t114-52 152.5-49.5 155-19q112 0 209 31t209 86q38 19 89 19 122 0 310-112 22-12 31-17 31-16 62 2 31 20 31 55z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/flag-o.svg b/img/icons/font-awesome/flag-o.svg
new file mode 100644
index 00000000..1a16a650
--- /dev/null
+++ b/img/icons/font-awesome/flag-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 1045v-616q-169 91-306 91-82 0-145-32-100-49-184-76.5t-178-27.5q-173 0-403 127v599q245-113 433-113 55 0 103.5 7.5t98 26 77 31 82.5 39.5l28 14q44 22 101 22 120 0 293-92zm-1344-789q0 35-17.5 64t-46.5 46v1266q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-1266q-29-17-46.5-46t-17.5-64q0-53 37.5-90.5t90.5-37.5 90.5 37.5 37.5 90.5zm1472 64v763q0 39-35 57-10 5-17 9-218 116-369 116-88 0-158-35l-28-14q-64-33-99-48t-91-29-114-14q-102 0-235.5 44t-228.5 102q-15 9-33 9-16 0-32-8-32-19-32-56v-742q0-35 31-55 35-21 78.5-42.5t114-52 152.5-49.5 155-19q112 0 209 31t209 86q38 19 89 19 122 0 310-112 22-12 31-17 31-16 62 2 31 20 31 55z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/flag.svg b/img/icons/font-awesome/flag.svg
new file mode 100644
index 00000000..6a7b813f
--- /dev/null
+++ b/img/icons/font-awesome/flag.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M320 256q0 72-64 110v1266q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-1266q-64-38-64-110 0-53 37.5-90.5t90.5-37.5 90.5 37.5 37.5 90.5zm1472 64v763q0 25-12.5 38.5t-39.5 27.5q-215 116-369 116-61 0-123.5-22t-108.5-48-115.5-48-142.5-22q-192 0-464 146-17 9-33 9-26 0-45-19t-19-45v-742q0-32 31-55 21-14 79-43 236-120 421-120 107 0 200 29t219 88q38 19 88 19 54 0 117.5-21t110-47 88-47 54.5-21q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/flash.svg b/img/icons/font-awesome/flash.svg
new file mode 100644
index 00000000..084b178f
--- /dev/null
+++ b/img/icons/font-awesome/flash.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1333 566q18 20 7 44l-540 1157q-13 25-42 25-4 0-14-2-17-5-25.5-19t-4.5-30l197-808-406 101q-4 1-12 1-18 0-31-11-18-15-13-39l201-825q4-14 16-23t28-9h328q19 0 32 12.5t13 29.5q0 8-5 18l-171 463 396-98q8-2 12-2 19 0 34 15z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/flask.svg b/img/icons/font-awesome/flask.svg
new file mode 100644
index 00000000..f7d867e4
--- /dev/null
+++ b/img/icons/font-awesome/flask.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1591 1448q56 89 21.5 152.5t-140.5 63.5h-1152q-106 0-140.5-63.5t21.5-152.5l503-793v-399h-64q-26 0-45-19t-19-45 19-45 45-19h512q26 0 45 19t19 45-19 45-45 19h-64v399zm-779-725l-272 429h712l-272-429-20-31v-436h-128v436z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/flickr.svg b/img/icons/font-awesome/flickr.svg
new file mode 100644
index 00000000..b036d7af
--- /dev/null
+++ b/img/icons/font-awesome/flickr.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1376 128q119 0 203.5 84.5t84.5 203.5v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960zm-550 768q0-88-62-150t-150-62-150 62-62 150 62 150 150 62 150-62 62-150zm564 0q0-88-62-150t-150-62-150 62-62 150 62 150 150 62 150-62 62-150z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/floppy-o.svg b/img/icons/font-awesome/floppy-o.svg
new file mode 100644
index 00000000..26f264de
--- /dev/null
+++ b/img/icons/font-awesome/floppy-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M512 1536h768v-384h-768v384zm896 0h128v-896q0-14-10-38.5t-20-34.5l-281-281q-10-10-34-20t-39-10v416q0 40-28 68t-68 28h-576q-40 0-68-28t-28-68v-416h-128v1280h128v-416q0-40 28-68t68-28h832q40 0 68 28t28 68v416zm-384-928v-320q0-13-9.5-22.5t-22.5-9.5h-192q-13 0-22.5 9.5t-9.5 22.5v320q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5-9.5t9.5-22.5zm640 32v928q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1344q0-40 28-68t68-28h928q40 0 88 20t76 48l280 280q28 28 48 76t20 88z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/folder-o.svg b/img/icons/font-awesome/folder-o.svg
new file mode 100644
index 00000000..db231aac
--- /dev/null
+++ b/img/icons/font-awesome/folder-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1600 1312v-704q0-40-28-68t-68-28h-704q-40 0-68-28t-28-68v-64q0-40-28-68t-68-28h-320q-40 0-68 28t-28 68v960q0 40 28 68t68 28h1216q40 0 68-28t28-68zm128-704v704q0 92-66 158t-158 66h-1216q-92 0-158-66t-66-158v-960q0-92 66-158t158-66h320q92 0 158 66t66 158v32h672q92 0 158 66t66 158z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/folder-open-o.svg b/img/icons/font-awesome/folder-open-o.svg
new file mode 100644
index 00000000..7ecc9fd0
--- /dev/null
+++ b/img/icons/font-awesome/folder-open-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1845 931q0-35-53-35h-1088q-40 0-85.5 21.5t-71.5 52.5l-294 363q-18 24-18 40 0 35 53 35h1088q40 0 86-22t71-53l294-363q18-22 18-39zm-1141-163h768v-160q0-40-28-68t-68-28h-576q-40 0-68-28t-28-68v-64q0-40-28-68t-68-28h-320q-40 0-68 28t-28 68v853l256-315q44-53 116-87.5t140-34.5zm1269 163q0 62-46 120l-295 363q-43 53-116 87.5t-140 34.5h-1088q-92 0-158-66t-66-158v-960q0-92 66-158t158-66h320q92 0 158 66t66 158v32h544q92 0 158 66t66 158v160h192q54 0 99 24.5t67 70.5q15 32 15 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/folder-open.svg b/img/icons/font-awesome/folder-open.svg
new file mode 100644
index 00000000..1b0852d2
--- /dev/null
+++ b/img/icons/font-awesome/folder-open.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1943 952q0 31-31 66l-336 396q-43 51-120.5 86.5t-143.5 35.5h-1088q-34 0-60.5-13t-26.5-43q0-31 31-66l336-396q43-51 120.5-86.5t143.5-35.5h1088q34 0 60.5 13t26.5 43zm-343-344v160h-832q-94 0-197 47.5t-164 119.5l-337 396-5 6q0-4-.5-12.5t-.5-12.5v-960q0-92 66-158t158-66h320q92 0 158 66t66 158v32h544q92 0 158 66t66 158z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/folder.svg b/img/icons/font-awesome/folder.svg
new file mode 100644
index 00000000..3351c673
--- /dev/null
+++ b/img/icons/font-awesome/folder.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1728 608v704q0 92-66 158t-158 66h-1216q-92 0-158-66t-66-158v-960q0-92 66-158t158-66h320q92 0 158 66t66 158v32h672q92 0 158 66t66 158z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/font-awesome.svg b/img/icons/font-awesome/font-awesome.svg
new file mode 100644
index 00000000..e1ecc4ea
--- /dev/null
+++ b/img/icons/font-awesome/font-awesome.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 512v839q0 48-49 62-174 52-338 52-73 0-215.5-29.5t-227.5-29.5q-164 0-370 48v338h-160v-1368q-63-25-101-81t-38-124q0-91 64-155t155-64 155 64 64 155q0 68-38 124t-101 81v68q190-44 343-44 99 0 198 15 14 2 111.5 22.5t149.5 20.5q77 0 165-18 11-2 80-21t89-19q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/font.svg b/img/icons/font-awesome/font.svg
new file mode 100644
index 00000000..b917ad55
--- /dev/null
+++ b/img/icons/font-awesome/font.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M789 559l-170 450q33 0 136.5 2t160.5 2q19 0 57-2-87-253-184-452zm-725 1105l2-79q23-7 56-12.5t57-10.5 49.5-14.5 44.5-29 31-50.5l237-616 280-724h128q8 14 11 21l205 480q33 78 106 257.5t114 274.5q15 34 58 144.5t72 168.5q20 45 35 57 19 15 88 29.5t84 20.5q6 38 6 57 0 5-.5 13.5t-.5 12.5q-63 0-190-8t-191-8q-76 0-215 7t-178 8q0-43 4-78l131-28q1 0 12.5-2.5t15.5-3.5 14.5-4.5 15-6.5 11-8 9-11 2.5-14q0-16-31-96.5t-72-177.5-42-100l-450-2q-26 58-76.5 195.5t-50.5 162.5q0 22 14 37.5t43.5 24.5 48.5 13.5 57 8.5 41 4q1 19 1 58 0 9-2 27-58 0-174.5-10t-174.5-10q-8 0-26.5 4t-21.5 4q-80 14-188 14z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/fonticons.svg b/img/icons/font-awesome/fonticons.svg
new file mode 100644
index 00000000..26c416f1
--- /dev/null
+++ b/img/icons/font-awesome/fonticons.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M128 128h1536v1536h-1536v-1536zm908 320l-12 33 75 83-31 114 25 25 107-57 107 57 25-25-31-114 75-83-12-33h-95l-53-96h-32l-53 96h-95zm-267 163q32 0 44.5 16t11.5 63l174-21q0-55-17.5-92.5t-50.5-56-69-25.5-85-7q-133 0-199 57.5t-66 182.5v72h-96v128h76q20 0 20 8v382q0 14-5 20t-18 7l-73 7v88h448v-86l-149-14q-6-1-8.5-1.5t-3.5-2.5-.5-4 1-7 .5-10v-387h191l38-128h-231q-6 0-2-6t4-9v-80q0-27 1.5-40.5t7.5-28 19.5-20 36.5-5.5zm607 829v-86l-54-9q-7-1-9.5-2.5t-2.5-3 1-7.5 1-12v-520h-275l-23 101 83 22q23 7 23 27v370q0 14-6 18.5t-20 6.5l-70 9v86h352z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/fort-awesome.svg b/img/icons/font-awesome/fort-awesome.svg
new file mode 100644
index 00000000..9aa5d116
--- /dev/null
+++ b/img/icons/font-awesome/fort-awesome.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M640 1008v-224q0-16-16-16h-96q-16 0-16 16v224q0 16 16 16h96q16 0 16-16zm512 0v-224q0-16-16-16h-96q-16 0-16 16v224q0 16 16 16h96q16 0 16-16zm512 32v752h-640v-320q0-80-56-136t-136-56-136 56-56 136v320h-640v-752q0-16 16-16h96q16 0 16 16v112h128v-624q0-16 16-16h96q16 0 16 16v112h128v-112q0-16 16-16h96q16 0 16 16v112h128v-112q0-6 2.5-9.5t8.5-5 9.5-2 11.5 0 9 .5v-391q-32-15-32-50 0-23 16.5-39t38.5-16 38.5 16 16.5 39q0 35-32 50v17q45-10 83-10 21 0 59.5 7.5t54.5 7.5q17 0 47-7.5t37-7.5q16 0 16 16v210q0 15-35 21.5t-62 6.5q-18 0-54.5-7.5t-55.5-7.5q-40 0-90 12v133q1 0 9-.5t11.5 0 9.5 2 8.5 5 2.5 9.5v112h128v-112q0-16 16-16h96q16 0 16 16v112h128v-112q0-16 16-16h96q16 0 16 16v624h128v-112q0-16 16-16h96q16 0 16 16z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/forumbee.svg b/img/icons/font-awesome/forumbee.svg
new file mode 100644
index 00000000..740bf147
--- /dev/null
+++ b/img/icons/font-awesome/forumbee.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1062 150q-317 121-556 362.5t-358 560.5q-20-89-20-176 0-208 102.5-384.5t278.5-279 384-102.5q82 0 169 19zm269 119q93 65 164 155-389 113-674.5 400.5t-396.5 676.5q-93-72-155-162 112-386 395-671t667-399zm-733 1334q115-356 379.5-622t619.5-384q40 92 54 195-292 120-516 345t-343 518q-103-14-194-52zm1066 58q-193-50-367-115-135 84-290 107 109-205 274-370.5t369-275.5q-21 152-101 284 65 175 115 370z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/forward.svg b/img/icons/font-awesome/forward.svg
new file mode 100644
index 00000000..bf9ab999
--- /dev/null
+++ b/img/icons/font-awesome/forward.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M109 1651q-19 19-32 13t-13-32v-1472q0-26 13-32t32 13l710 710q9 9 13 19v-710q0-26 13-32t32 13l710 710q19 19 19 45t-19 45l-710 710q-19 19-32 13t-13-32v-710q-4 10-13 19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/foursquare.svg b/img/icons/font-awesome/foursquare.svg
new file mode 100644
index 00000000..8de51757
--- /dev/null
+++ b/img/icons/font-awesome/foursquare.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1256 434l37-194q5-23-9-40t-35-17h-712q-23 0-38.5 17t-15.5 37v1101q0 7 6 1l291-352q23-26 38-33.5t48-7.5h239q22 0 37-14.5t18-29.5q24-130 37-191 4-21-11.5-40t-36.5-19h-294q-29 0-48-19t-19-48v-42q0-29 19-47.5t48-18.5h346q18 0 35-13.5t20-29.5zm227-222q-15 73-53.5 266.5t-69.5 350-35 173.5q-6 22-9 32.5t-14 32.5-24.5 33-38.5 21-58 10h-271q-13 0-22 10-8 9-426 494-22 25-58.5 28.5t-48.5-5.5q-55-22-55-98v-1410q0-55 38-102.5t120-47.5h888q95 0 127 53t10 159zm0 0l-158 790q4-17 35-173.5t69.5-350 53.5-266.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/free-code-camp.svg b/img/icons/font-awesome/free-code-camp.svg
new file mode 100644
index 00000000..f474b8bb
--- /dev/null
+++ b/img/icons/font-awesome/free-code-camp.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M453 1637q0 21-16 37.5t-37 16.5q-1 0-13-3-63-15-162-140-225-284-225-676 0-341 213-614 39-51 95-103.5t94-52.5q19 0 35 13.5t16 32.5q0 27-63 90-98 102-147 184-119 199-119 449 0 281 123 491 50 85 136 173 2 3 14.5 16t19.5 21 17 20.5 14.5 23.5 4.5 21zm1343-134q0 29-17.5 48.5t-46.5 19.5h-1081q-26 0-45-19t-19-45q0-29 17.5-48.5t46.5-19.5h1081q26 0 45 19t19 45zm-215-611q0 134-67 233-25 38-69.5 78.5t-83.5 60.5q-16 10-27 10-7 0-15-6t-8-12q0-9 19-30t42-46 42-67.5 19-88.5q0-76-35-130-29-42-46-42-3 0-3 5 0 12 7.5 35.5t7.5 36.5q0 22-21.5 35t-44.5 13q-66 0-66-76 0-15 1.5-44t1.5-44q0-25-10-46-13-25-42-53.5t-51-28.5q-5 0-7 .5t-3.5 2.5-1.5 6q0 2 16 26t16 54q0 37-19 68t-46 54-53.5 46-45.5 54-19 68q0 98 42 160 29 43 79 63 16 5 17 10 1 2 1 5 0 16-18 16-6 0-33-11-119-43-195-139.5t-76-218.5q0-55 24.5-115.5t60-115 70.5-108.5 59.5-113.5 24.5-111.5q0-53-25-94-29-48-56-64-19-9-19-21 0-20 41-20 50 0 110 29 41 19 71 44.5t49.5 51 33.5 62.5 22 69 16 80q0 1 3 17.5t4.5 25 5.5 25 9 27 11 21.5 14.5 16.5 18.5 5.5q23 0 37-14t14-37q0-25-20-67t-20-52 10-10q27 0 93 70 72 76 102.5 156t30.5 186zm723 29q0 274-138 503-19 32-48 72t-68 86.5-81 77-74 30.5q-16 0-31-15.5t-15-31.5q0-15 29-50.5t68.5-77 48.5-52.5q183-230 183-531 0-131-20.5-235t-72.5-211q-58-119-163-228-2-3-13-13.5t-16.5-16.5-15-17.5-15-20-9.5-18.5-4-19q0-19 16-35.5t35-16.5q70 0 196 169 98 131 146 273t60 314q2 42 2 64z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/frown-o.svg b/img/icons/font-awesome/frown-o.svg
new file mode 100644
index 00000000..4fb042ed
--- /dev/null
+++ b/img/icons/font-awesome/frown-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1262 1229q8 25-4 48.5t-37 31.5-49-4-32-38q-25-80-92.5-129.5t-151.5-49.5-151.5 49.5-92.5 129.5q-8 26-31.5 38t-48.5 4q-26-8-38-31.5t-4-48.5q37-121 138-195t228-74 228 74 138 195zm-494-589q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm512 0q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm256 256q0-130-51-248.5t-136.5-204-204-136.5-248.5-51-248.5 51-204 136.5-136.5 204-51 248.5 51 248.5 136.5 204 204 136.5 248.5 51 248.5-51 204-136.5 136.5-204 51-248.5zm128 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/futbol-o.svg b/img/icons/font-awesome/futbol-o.svg
new file mode 100644
index 00000000..9d0ce8c7
--- /dev/null
+++ b/img/icons/font-awesome/futbol-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M609 816l287-208 287 208-109 336h-355zm287-816q182 0 348 71t286 191 191 286 71 348-71 348-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71zm619 1350q149-203 149-454v-3l-102 89-240-224 63-323 134 12q-150-206-389-282l53 124-287 159-287-159 53-124q-239 76-389 282l135-12 62 323-240 224-102-89v3q0 251 149 454l30-132 326 40 139 298-116 69q117 39 240 39t240-39l-116-69 139-298 326-40z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/gamepad.svg b/img/icons/font-awesome/gamepad.svg
new file mode 100644
index 00000000..1a0ab791
--- /dev/null
+++ b/img/icons/font-awesome/gamepad.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 1088v-128q0-14-9-23t-23-9h-192v-192q0-14-9-23t-23-9h-128q-14 0-23 9t-9 23v192h-192q-14 0-23 9t-9 23v128q0 14 9 23t23 9h192v192q0 14 9 23t23 9h128q14 0 23-9t9-23v-192h192q14 0 23-9t9-23zm576 64q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm256-256q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm256 128q0 212-150 362t-362 150q-192 0-338-128h-220q-146 128-338 128-212 0-362-150t-150-362 150-362 362-150h896q212 0 362 150t150 362z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/gavel.svg b/img/icons/font-awesome/gavel.svg
new file mode 100644
index 00000000..569420d7
--- /dev/null
+++ b/img/icons/font-awesome/gavel.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1771 1536q0 53-37 90l-107 108q-39 37-91 37-53 0-90-37l-363-364q-38-36-38-90 0-53 43-96l-256-256-126 126q-14 14-34 14t-34-14q2 2 12.5 12t12.5 13 10 11.5 10 13.5 6 13.5 5.5 16.5 1.5 18q0 38-28 68-3 3-16.5 18t-19 20.5-18.5 16.5-22 15.5-22 9-26 4.5q-40 0-68-28l-408-408q-28-28-28-68 0-13 4.5-26t9-22 15.5-22 16.5-18.5 20.5-19 18-16.5q30-28 68-28 10 0 18 1.5t16.5 5.5 13.5 6 13.5 10 11.5 10 13 12.5 12 12.5q-14-14-14-34t14-34l348-348q14-14 34-14t34 14q-2-2-12.5-12t-12.5-13-10-11.5-10-13.5-6-13.5-5.5-16.5-1.5-18q0-38 28-68 3-3 16.5-18t19-20.5 18.5-16.5 22-15.5 22-9 26-4.5q40 0 68 28l408 408q28 28 28 68 0 13-4.5 26t-9 22-15.5 22-16.5 18.5-20.5 19-18 16.5q-30 28-68 28-10 0-18-1.5t-16.5-5.5-13.5-6-13.5-10-11.5-10-13-12.5-12-12.5q14 14 14 34t-14 34l-126 126 256 256q43-43 96-43 52 0 91 37l363 363q37 39 37 91z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/gbp.svg b/img/icons/font-awesome/gbp.svg
new file mode 100644
index 00000000..6e90a225
--- /dev/null
+++ b/img/icons/font-awesome/gbp.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1404 1137v367q0 14-9 23t-23 9h-956q-14 0-23-9t-9-23v-150q0-13 9.5-22.5t22.5-9.5h97v-383h-95q-14 0-23-9.5t-9-22.5v-131q0-14 9-23t23-9h95v-223q0-171 123.5-282t314.5-111q185 0 335 125 9 8 10 20.5t-7 22.5l-103 127q-9 11-22 12-13 2-23-7-5-5-26-19t-69-32-93-18q-85 0-137 47t-52 123v215h305q13 0 22.5 9t9.5 23v131q0 13-9.5 22.5t-22.5 9.5h-305v379h414v-181q0-13 9-22.5t23-9.5h162q14 0 23 9.5t9 22.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/ge.svg b/img/icons/font-awesome/ge.svg
new file mode 100644
index 00000000..b10961d4
--- /dev/null
+++ b/img/icons/font-awesome/ge.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M874 1638v66q-208-6-385-109.5t-283-275.5l58-34q29 49 73 99l65-57q148 168 368 212l-17 86q65 12 121 13zm-598-530l-83 28q22 60 49 112l-57 33q-98-180-98-385t98-385l57 33q-30 56-49 112l82 28q-35 100-35 212 0 109 36 212zm1252 177l58 34q-106 172-283 275.5t-385 109.5v-66q56-1 121-13l-17-86q220-44 368-212l65 57q44-50 73-99zm-151-554l-233 80q14 42 14 85t-14 85l232 80q-31 92-98 169l-185-162q-57 67-147 85l48 241q-52 10-98 10t-98-10l48-241q-90-18-147-85l-185 162q-67-77-98-169l232-80q-14-42-14-85t14-85l-233-80q33-93 99-169l185 162q59-68 147-86l-48-240q44-10 98-10t98 10l-48 240q88 18 147 86l185-162q66 76 99 169zm-503-643v66q-65 2-121 13l17 86q-220 42-368 211l-65-56q-38 42-73 98l-57-33q106-172 282-275.5t385-109.5zm831 808q0 205-98 385l-57-33q27-52 49-112l-83-28q36-103 36-212 0-112-35-212l82-28q-19-56-49-112l57-33q98 180 98 385zm-120-423l-57 33q-35-56-73-98l-65 56q-148-169-368-211l17-86q-56-11-121-13v-66q209 6 385 109.5t282 275.5zm163 423q0-173-67.5-331t-181.5-272-272-181.5-331-67.5-331 67.5-272 181.5-181.5 272-67.5 331 67.5 331 181.5 272 272 181.5 331 67.5 331-67.5 272-181.5 181.5-272 67.5-331zm44 0q0 182-71 348t-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71 348 71 286 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/gear.svg b/img/icons/font-awesome/gear.svg
new file mode 100644
index 00000000..fd469a59
--- /dev/null
+++ b/img/icons/font-awesome/gear.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm512-109v222q0 12-8 23t-20 13l-185 28q-19 54-39 91 35 50 107 138 10 12 10 25t-9 23q-27 37-99 108t-94 71q-12 0-26-9l-138-108q-44 23-91 38-16 136-29 186-7 28-36 28h-222q-14 0-24.5-8.5t-11.5-21.5l-28-184q-49-16-90-37l-141 107q-10 9-25 9-14 0-25-11-126-114-165-168-7-10-7-23 0-12 8-23 15-21 51-66.5t54-70.5q-27-50-41-99l-183-27q-13-2-21-12.5t-8-23.5v-222q0-12 8-23t19-13l186-28q14-46 39-92-40-57-107-138-10-12-10-24 0-10 9-23 26-36 98.5-107.5t94.5-71.5q13 0 26 10l138 107q44-23 91-38 16-136 29-186 7-28 36-28h222q14 0 24.5 8.5t11.5 21.5l28 184q49 16 90 37l142-107q9-9 24-9 13 0 25 10 129 119 165 170 7 8 7 22 0 12-8 23-15 21-51 66.5t-54 70.5q26 50 41 98l183 28q13 2 21 12.5t8 23.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/gears.svg b/img/icons/font-awesome/gears.svg
new file mode 100644
index 00000000..e3cbf2fc
--- /dev/null
+++ b/img/icons/font-awesome/gears.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M960 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm768 512q0-52-38-90t-90-38-90 38-38 90q0 53 37.5 90.5t90.5 37.5 90.5-37.5 37.5-90.5zm0-1024q0-52-38-90t-90-38-90 38-38 90q0 53 37.5 90.5t90.5 37.5 90.5-37.5 37.5-90.5zm-384 421v185q0 10-7 19.5t-16 10.5l-155 24q-11 35-32 76 34 48 90 115 7 11 7 20 0 12-7 19-23 30-82.5 89.5t-78.5 59.5q-11 0-21-7l-115-90q-37 19-77 31-11 108-23 155-7 24-30 24h-186q-11 0-20-7.5t-10-17.5l-23-153q-34-10-75-31l-118 89q-7 7-20 7-11 0-21-8-144-133-144-160 0-9 7-19 10-14 41-53t47-61q-23-44-35-82l-152-24q-10-1-17-9.5t-7-19.5v-185q0-10 7-19.5t16-10.5l155-24q11-35 32-76-34-48-90-115-7-11-7-20 0-12 7-20 22-30 82-89t79-59q11 0 21 7l115 90q34-18 77-32 11-108 23-154 7-24 30-24h186q11 0 20 7.5t10 17.5l23 153q34 10 75 31l118-89q8-7 20-7 11 0 21 8 144 133 144 160 0 8-7 19-12 16-42 54t-45 60q23 48 34 82l152 23q10 2 17 10.5t7 19.5zm640 533v140q0 16-149 31-12 27-30 52 51 113 51 138 0 4-4 7-122 71-124 71-8 0-46-47t-52-68q-20 2-30 2t-30-2q-14 21-52 68t-46 47q-2 0-124-71-4-3-4-7 0-25 51-138-18-25-30-52-149-15-149-31v-140q0-16 149-31 13-29 30-52-51-113-51-138 0-4 4-7 4-2 35-20t59-34 30-16q8 0 46 46.5t52 67.5q20-2 30-2t30 2q51-71 92-112l6-2q4 0 124 70 4 3 4 7 0 25-51 138 17 23 30 52 149 15 149 31zm0-1024v140q0 16-149 31-12 27-30 52 51 113 51 138 0 4-4 7-122 71-124 71-8 0-46-47t-52-68q-20 2-30 2t-30-2q-14 21-52 68t-46 47q-2 0-124-71-4-3-4-7 0-25 51-138-18-25-30-52-149-15-149-31v-140q0-16 149-31 13-29 30-52-51-113-51-138 0-4 4-7 4-2 35-20t59-34 30-16q8 0 46 46.5t52 67.5q20-2 30-2t30 2q51-71 92-112l6-2q4 0 124 70 4 3 4 7 0 25-51 138 17 23 30 52 149 15 149 31z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/genderless.svg b/img/icons/font-awesome/genderless.svg
new file mode 100644
index 00000000..0c05550c
--- /dev/null
+++ b/img/icons/font-awesome/genderless.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1280 960q0-185-131.5-316.5t-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5 316.5-131.5 131.5-316.5zm128 0q0 117-45.5 223.5t-123 184-184 123-223.5 45.5-223.5-45.5-184-123-123-184-45.5-223.5 45.5-223.5 123-184 184-123 223.5-45.5 223.5 45.5 184 123 123 184 45.5 223.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/get-pocket.svg b/img/icons/font-awesome/get-pocket.svg
new file mode 100644
index 00000000..4a0823d6
--- /dev/null
+++ b/img/icons/font-awesome/get-pocket.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1601 128q65 0 110 45.5t45 110.5v519q0 176-68 336t-182.5 275-274 182.5-334.5 67.5q-176 0-335.5-67.5t-274.5-182.5-183-275-68-336v-519q0-64 46-110t110-46h1409zm-704 1064q47 0 82-33l404-388q37-35 37-85 0-49-34.5-83.5t-83.5-34.5q-47 0-82 33l-323 310-323-310q-35-33-81-33-49 0-83.5 34.5t-34.5 83.5q0 51 36 85l405 388q33 33 81 33z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/gg-circle.svg b/img/icons/font-awesome/gg-circle.svg
new file mode 100644
index 00000000..ff1587c3
--- /dev/null
+++ b/img/icons/font-awesome/gg-circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M717 1354l271-271-279-279-88 88 192 191-96 96-279-279 279-279 40 40 87-87-127-128-454 454zm358-8l454-454-454-454-271 271 279 279 88-88-192-191 96-96 279 279-279 279-40-40-87 88zm717-450q0 182-71 348t-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71 348 71 286 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/gg.svg b/img/icons/font-awesome/gg.svg
new file mode 100644
index 00000000..e61cc161
--- /dev/null
+++ b/img/icons/font-awesome/gg.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M736 800l384 384-384 384-672-672 672-672 168 168-96 96-72-72-480 480 480 480 193-193-289-287zm576-576l672 672-672 672-168-168 96-96 72 72 480-480-480-480-193 193 289 287-96 96-384-384z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/gift.svg b/img/icons/font-awesome/gift.svg
new file mode 100644
index 00000000..fdd795ad
--- /dev/null
+++ b/img/icons/font-awesome/gift.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1056 1356v-716h-320v716q0 25 18 38.5t46 13.5h192q28 0 46-13.5t18-38.5zm-456-844h195l-126-161q-26-31-69-31-40 0-68 28t-28 68 28 68 68 28zm688-96q0-40-28-68t-68-28q-43 0-69 31l-125 161h194q40 0 68-28t28-68zm376 256v320q0 14-9 23t-23 9h-96v416q0 40-28 68t-68 28h-1088q-40 0-68-28t-28-68v-416h-96q-14 0-23-9t-9-23v-320q0-14 9-23t23-9h440q-93 0-158.5-65.5t-65.5-158.5 65.5-158.5 158.5-65.5q107 0 168 77l128 165 128-165q61-77 168-77 93 0 158.5 65.5t65.5 158.5-65.5 158.5-158.5 65.5h440q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/git-square.svg b/img/icons/font-awesome/git-square.svg
new file mode 100644
index 00000000..e93091e2
--- /dev/null
+++ b/img/icons/font-awesome/git-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M710 1308q0 66-93 66-107 0-107-63 0-64 98-64 102 0 102 61zm-36-466q0 85-74 85-77 0-77-84 0-90 77-90 36 0 55 25.5t19 63.5zm166-75v-125q-78 29-135 29-50-29-110-29-86 0-145 57t-59 143q0 50 29.5 102t73.5 67v3q-38 17-38 85 0 53 41 77v3q-113 37-113 139 0 45 20 78.5t54 51 72 25.5 81 8q224 0 224-188 0-67-48-99t-126-46q-27-5-51.5-20.5t-24.5-39.5q0-44 49-52 77-15 122-70t45-134q0-24-10-52 37-9 49-13zm59 419h137q-2-27-2-82v-387q0-46 2-69h-137q3 23 3 71v392q0 50-3 75zm509-16v-121q-30 21-68 21-53 0-53-82v-225h52q9 0 26.5 1t26.5 1v-117h-105q0-82 3-102h-140q4 24 4 55v47h-60v117q36-3 37-3 3 0 11 .5t12 .5v2h-2v217q0 37 2.5 64t11.5 56.5 24.5 48.5 43.5 31 66 12q64 0 108-24zm-356-706q0-36-24-63.5t-60-27.5-60.5 27-24.5 64q0 36 25 62.5t60 26.5 59.5-27 24.5-62zm612-48v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/git.svg b/img/icons/font-awesome/git.svg
new file mode 100644
index 00000000..4eda66e0
--- /dev/null
+++ b/img/icons/font-awesome/git.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M595 1514q0-100-165-100-158 0-158 104 0 101 172 101 151 0 151-105zm-59-755q0-61-30-102t-89-41q-124 0-124 145 0 135 124 135 119 0 119-137zm269-324v202q-36 12-79 22 16 43 16 84 0 127-73 216.5t-197 112.5q-40 8-59.5 27t-19.5 58q0 31 22.5 51.5t58 32 78.5 22 86 25.5 78.5 37.5 58 64 22.5 98.5q0 304-363 304-69 0-130-12.5t-116-41-87.5-82-32.5-127.5q0-165 182-225v-4q-67-41-67-126 0-109 63-137v-4q-72-24-119.5-108.5t-47.5-165.5q0-139 95-231.5t235-92.5q96 0 178 47 98 0 218-47zm318 881h-222q4-45 4-134v-609q0-94-4-128h222q-4 33-4 124v613q0 89 4 134zm601-222v196q-71 39-174 39-62 0-107-20t-70-50-39.5-78-18.5-92-4-103v-351h2v-4q-7 0-19-1t-18-1q-21 0-59 6v-190h96v-76q0-54-6-89h227q-6 41-6 165h171v190q-15 0-43.5-2t-42.5-2h-85v365q0 131 87 131 61 0 109-33zm-576-947q0 58-39 101.5t-96 43.5q-58 0-98-43.5t-40-101.5q0-59 39.5-103t98.5-44q58 0 96.5 44.5t38.5 102.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/github-alt.svg b/img/icons/font-awesome/github-alt.svg
new file mode 100644
index 00000000..caae276d
--- /dev/null
+++ b/img/icons/font-awesome/github-alt.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 1216q0 40-12.5 82t-43 76-72.5 34-72.5-34-43-76-12.5-82 12.5-82 43-76 72.5-34 72.5 34 43 76 12.5 82zm640 0q0 40-12.5 82t-43 76-72.5 34-72.5-34-43-76-12.5-82 12.5-82 43-76 72.5-34 72.5 34 43 76 12.5 82zm160 0q0-120-69-204t-187-84q-41 0-195 21-71 11-157 11t-157-11q-152-21-195-21-118 0-187 84t-69 204q0 88 32 153.5t81 103 122 60 140 29.5 149 7h168q82 0 149-7t140-29.5 122-60 81-103 32-153.5zm224-176q0 207-61 331-38 77-105.5 133t-141 86-170 47.5-171.5 22-167 4.5q-78 0-142-3t-147.5-12.5-152.5-30-137-51.5-121-81-86-115q-62-123-62-331 0-237 136-396-27-82-27-170 0-116 51-218 108 0 190 39.5t189 123.5q147-35 309-35 148 0 280 32 105-82 187-121t189-39q51 102 51 218 0 87-27 168 136 160 136 398z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/github-square.svg b/img/icons/font-awesome/github-square.svg
new file mode 100644
index 00000000..56cf3ca1
--- /dev/null
+++ b/img/icons/font-awesome/github-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M647 1200q4-6-3-13-9-7-14-2-4 6 3 13 9 7 14 2zm-28-41q-5-7-12-4-6 4 0 12 7 8 12 5 6-4 0-13zm-41-40q2-4-5-8-7-2-8 2-3 5 4 8 8 2 9-2zm21 23q2-1 1.5-4.5t-3.5-5.5q-6-7-10-3t1 11q6 6 11 2zm86 75q2-7-9-11-9-3-13 4-2 7 9 11 9 3 13-4zm42 3q0-8-12-8-10 0-10 8t11 8 11-8zm39-7q-2-7-13-5t-9 9q2 8 12 6t10-10zm642-317q0-212-150-362t-362-150-362 150-150 362q0 167 98 300.5t252 185.5q18 3 26.5-5t8.5-20q0-52-1-95-6 1-15.5 2.5t-35.5 2-48-4-43.5-20-29.5-41.5q-23-59-57-74-2-1-4.5-3.5l-8-8-7-9.5 4-7.5 19.5-3.5q6 0 15 2t30 15.5 33 35.5q16 28 37.5 42t43.5 14 38-3.5 30-9.5q7-47 33-69-49-6-86-18.5t-73-39-55.5-76-19.5-119.5q0-79 53-137-24-62 5-136 19-6 54.5 7.5t60.5 29.5l26 16q58-17 128-17t128 17q11-7 28.5-18t55.5-26 57-9q29 74 5 136 53 58 53 137 0 57-14 100.5t-35.5 70-53.5 44.5-62.5 26-68.5 12q35 31 35 95 0 40-.5 89t-.5 51q0 12 8.5 20t26.5 5q154-52 252-185.5t98-300.5zm256-480v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/github.svg b/img/icons/font-awesome/github.svg
new file mode 100644
index 00000000..9aa472a5
--- /dev/null
+++ b/img/icons/font-awesome/github.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 128q209 0 385.5 103t279.5 279.5 103 385.5q0 251-146.5 451.5t-378.5 277.5q-27 5-40-7t-13-30q0-3 .5-76.5t.5-134.5q0-97-52-142 57-6 102.5-18t94-39 81-66.5 53-105 20.5-150.5q0-119-79-206 37-91-8-204-28-9-81 11t-92 44l-38 24q-93-26-192-26t-192 26q-16-11-42.5-27t-83.5-38.5-85-13.5q-45 113-8 204-79 87-79 206 0 85 20.5 150t52.5 105 80.5 67 94 39 102.5 18q-39 36-49 103-21 10-45 15t-57 5-65.5-21.5-55.5-62.5q-19-32-48.5-52t-49.5-24l-20-3q-21 0-29 4.5t-5 11.5 9 14 13 12l7 5q22 10 43.5 38t31.5 51l10 23q13 38 44 61.5t67 30 69.5 7 55.5-3.5l23-4q0 38 .5 88.5t.5 54.5q0 18-13 30t-40 7q-232-77-378.5-277.5t-146.5-451.5q0-209 103-385.5t279.5-279.5 385.5-103zm-477 1103q3-7-7-12-10-3-13 2-3 7 7 12 9 6 13-2zm31 34q7-5-2-16-10-9-16-3-7 5 2 16 10 10 16 3zm30 45q9-7 0-19-8-13-17-6-9 5 0 18t17 7zm42 42q8-8-4-19-12-12-20-3-9 8 4 19 12 12 20 3zm57 25q3-11-13-16-15-4-19 7t13 15q15 6 19-6zm63 5q0-13-17-11-16 0-16 11 0 13 17 11 16 0 16-11zm58-10q-2-11-18-9-16 3-14 15t18 8 14-14z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/gitlab.svg b/img/icons/font-awesome/gitlab.svg
new file mode 100644
index 00000000..b61b09c2
--- /dev/null
+++ b/img/icons/font-awesome/gitlab.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M104 706l792 1015-868-630q-18-13-25-34.5t0-42.5l101-308zm462 0h660l-330 1015zm-198-612l198 612h-462l198-612q8-23 33-23t33 23zm1320 612l101 308q7 21 0 42.5t-25 34.5l-868 630 792-1015zm0 0h-462l198-612q8-23 33-23t33 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/gittip.svg b/img/icons/font-awesome/gittip.svg
new file mode 100644
index 00000000..a7520ac5
--- /dev/null
+++ b/img/icons/font-awesome/gittip.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M901 1302l350-473q16-22 24.5-59t-6-85-61.5-79q-40-26-83-25.5t-73.5 17.5-54.5 45q-36 40-96 40-59 0-95-40-24-28-54.5-45t-73.5-17.5-84 25.5q-46 31-60.5 79t-6 85 24.5 59zm763-406q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/glass.svg b/img/icons/font-awesome/glass.svg
new file mode 100644
index 00000000..7e37d6c3
--- /dev/null
+++ b/img/icons/font-awesome/glass.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1699 186q0 35-43 78l-632 632v768h320q26 0 45 19t19 45-19 45-45 19h-896q-26 0-45-19t-19-45 19-45 45-19h320v-768l-632-632q-43-43-43-78 0-23 18-36.5t38-17.5 43-4h1408q23 0 43 4t38 17.5 18 36.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/glide-g.svg b/img/icons/font-awesome/glide-g.svg
new file mode 100644
index 00000000..856cd11a
--- /dev/null
+++ b/img/icons/font-awesome/glide-g.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M872.5 305q0-24-2-38.5t-8.5-30-21-23-37.5-7.5q-39 0-78 23-105 58-159 190.5t-54 269.5q0 44 8.5 85.5t26.5 80.5 52.5 62.5 81.5 23.5q4 0 18 .5t20 0 16-3 15-8.5 7-16q16-77 48-231.5t48-231.5q19-91 19-146zm754 656q0 7-7.5 13.5t-15.5 6.5l-6-1q-22-3-62-11t-72-12.5-63-4.5q-167 0-351 93-15 8-21 27-10 36-24.5 105.5t-22.5 100.5q-23 91-70 179.5t-112.5 164.5-154.5 123-185 47q-135 0-214.5-83.5t-79.5-219.5q0-53 19.5-117t63-116.5 97.5-52.5q38 0 120 33.5t83 61.5q0 1-16.5 12.5t-39.5 31-46 44.5-39 61-16 74q0 33 16.5 53t48.5 20q45 0 85-31.5t66.5-78 48-105.5 32.5-107 16-90v-9q0-2-3.5-3.5t-8.5-1.5h-10l-10 .5-6 .5q-227 0-352-122.5t-125-348.5q0-108 34.5-221t96-210 156-167.5 204.5-89.5q52-9 106-9 374 0 374 360 0 98-38 273t-43 211l3 3q101-57 182.5-88t167.5-31q22 0 53 13 19 7 80 102.5t61 116.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/glide.svg b/img/icons/font-awesome/glide.svg
new file mode 100644
index 00000000..87d90ad8
--- /dev/null
+++ b/img/icons/font-awesome/glide.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M994 515q0 27-13 94-11 50-31.5 150t-30.5 150q-2 11-4.5 12.5t-13.5 2.5q-20 2-31 2-58 0-84-49.5t-26-113.5q0-88 35-174t103-124q28-14 51-14 28 0 36.5 16.5t8.5 47.5zm486 424q0-14-39-75.5t-52-66.5q-21-8-34-8-91 0-226 77l-2-2q3-22 27.5-135t24.5-178q0-233-242-233-24 0-68 6-94 17-168.5 89.5t-111.5 166.5-37 189q0 146 80.5 225t227.5 79q25 0 25 3t-1 5q-4 34-26 117-14 52-51.5 101t-82.5 49q-42 0-42-47 0-24 10.5-47.5t25-39.5 29.5-28.5 26-20 11-8.5q0-3-7-10-24-22-58.5-36.5t-65.5-14.5q-35 0-63.5 34t-41 75-12.5 75q0 88 51.5 142t138.5 54q82 0 155-53t117.5-126 65.5-153q6-22 15.5-66.5t14.5-66.5q3-12 14-18 118-60 227-60 48 0 127 18 1 1 4 1 5 0 9.5-4.5t4.5-8.5zm184-523v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/globe.svg b/img/icons/font-awesome/globe.svg
new file mode 100644
index 00000000..515280b6
--- /dev/null
+++ b/img/icons/font-awesome/globe.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 128q209 0 385.5 103t279.5 279.5 103 385.5-103 385.5-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103zm274 521q-2 1-9.5 9.5t-13.5 9.5q2 0 4.5-5t5-11 3.5-7q6-7 22-15 14-6 52-12 34-8 51 11-2-2 9.5-13t14.5-12q3-2 15-4.5t15-7.5l2-22q-12 1-17.5-7t-6.5-21q0 2-6 8 0-7-4.5-8t-11.5 1-9 1q-10-3-15-7.5t-8-16.5-4-15q-2-5-9.5-11t-9.5-10q-1-2-2.5-5.5t-3-6.5-4-5.5-5.5-2.5-7 5-7.5 10-4.5 5q-3-2-6-1.5t-4.5 1-4.5 3-5 3.5q-3 2-8.5 3t-8.5 2q15-5-1-11-10-4-16-3 9-4 7.5-12t-8.5-14h5q-1-4-8.5-8.5t-17.5-8.5-13-6q-8-5-34-9.5t-33-.5q-5 6-4.5 10.5t4 14 3.5 12.5q1 6-5.5 13t-6.5 12q0 7 14 15.5t10 21.5q-3 8-16 16t-16 12q-5 8-1.5 18.5t10.5 16.5q2 2 1.5 4t-3.5 4.5-5.5 4-6.5 3.5l-3 2q-11 5-20.5-6t-13.5-26q-7-25-16-30-23-8-29 1-5-13-41-26-25-9-58-4 6-1 0-15-7-15-19-12 3-6 4-17.5t1-13.5q3-13 12-23 1-1 7-8.5t9.5-13.5.5-6q35 4 50-11 5-5 11.5-17t10.5-17q9-6 14-5.5t14.5 5.5 14.5 5q14 1 15.5-11t-7.5-20q12 1 3-17-4-7-8-9-12-4-27 5-8 4 2 8-1-1-9.5 10.5t-16.5 17.5-16-5q-1-1-5.5-13.5t-9.5-13.5q-8 0-16 15 3-8-11-15t-24-8q19-12-8-27-7-4-20.5-5t-19.5 4q-5 7-5.5 11.5t5 8 10.5 5.5 11.5 4 8.5 3q14 10 8 14-2 1-8.5 3.5t-11.5 4.5-6 4q-3 4 0 14t-2 14q-5-5-9-17.5t-7-16.5q7 9-25 6l-10-1q-4 0-16 2t-20.5 1-13.5-8q-4-8 0-20 1-4 4-2-4-3-11-9.5t-10-8.5q-46 15-94 41 6 1 12-1 5-2 13-6.5t10-5.5q34-14 42-7l5-5q14 16 20 25-7-4-30-1-20 6-22 12 7 12 5 18-4-3-11.5-10t-14.5-11-15-5q-16 0-22 1-146 80-235 222 7 7 12 8 4 1 5 9t2.5 11 11.5-3q9 8 3 19 1-1 44 27 19 17 21 21 3 11-10 18-1-2-9-9t-9-4q-3 5 .5 18.5t10.5 12.5q-7 0-9.5 16t-2.5 35.5-1 23.5l2 1q-3 12 5.5 34.5t21.5 19.5q-13 3 20 43 6 8 8 9 3 2 12 7.5t15 10 10 10.5q4 5 10 22.5t14 23.5q-2 6 9.5 20t10.5 23q-1 0-2.5 1t-2.5 1q3 7 15.5 14t15.5 13q1 3 2 10t3 11 8 2q2-20-24-62-15-25-17-29-3-5-5.5-15.5t-4.5-14.5q2 0 6 1.5t8.5 3.5 7.5 4 2 3q-3 7 2 17.5t12 18.5 17 19 12 13q6 6 14 19.5t0 13.5q9 0 20 10.5t17 19.5q5 8 8 26t5 24q2 7 8.5 13.5t12.5 9.5l16 8 13 7q5 2 18.5 10.5t21.5 11.5q10 4 16 4t14.5-2.5 13.5-3.5q15-2 29 15t21 21q36 19 55 11-2 1 .5 7.5t8 15.5 9 14.5 5.5 8.5q5 6 18 15t18 15q6-4 7-9-3 8 7 20t18 10q14-3 14-32-31 15-49-18 0-1-2.5-5.5t-4-8.5-2.5-8.5 0-7.5 5-3q9 0 10-3.5t-2-12.5-4-13q-1-8-11-20t-12-15q-5 9-16 8t-16-9q0 1-1.5 5.5t-1.5 6.5q-13 0-15-1 1-3 2.5-17.5t3.5-22.5q1-4 5.5-12t7.5-14.5 4-12.5-4.5-9.5-17.5-2.5q-19 1-26 20-1 3-3 10.5t-5 11.5-9 7q-7 3-24 2t-24-5q-13-8-22.5-29t-9.5-37q0-10 2.5-26.5t3-25-5.5-24.5q3-2 9-9.5t10-10.5q2-1 4.5-1.5t4.5 0 4-1.5 3-6q-1-1-4-3-3-3-4-3 7 3 28.5-1.5t27.5 1.5q15 11 22-2 0-1-2.5-9.5t-.5-13.5q5 27 29 9 3 3 15.5 5t17.5 5q3 2 7 5.5t5.5 4.5 5-.5 8.5-6.5q10 14 12 24 11 40 19 44 7 3 11 2t4.5-9.5 0-14-1.5-12.5l-1-8v-18l-1-8q-15-3-18.5-12t1.5-18.5 15-18.5q1-1 8-3.5t15.5-6.5 12.5-8q21-19 15-35 7 0 11-9-1 0-5-3t-7.5-5-4.5-2q9-5 2-16 5-3 7.5-11t7.5-10q9 12 21 2 8-8 1-16 5-7 20.5-10.5t18.5-9.5q7 2 8-2t1-12 3-12q4-5 15-9t13-5l17-11q3-4 0-4 18 2 31-11 10-11-6-20 3-6-3-9.5t-15-5.5q3-1 11.5-.5t10.5-1.5q15-10-7-16-17-5-43 12zm-163 877q206-36 351-189-3-3-12.5-4.5t-12.5-3.5q-18-7-24-8 1-7-2.5-13t-8-9-12.5-8-11-7q-2-2-7-6t-7-5.5-7.5-4.5-8.5-2-10 1l-3 1q-3 1-5.5 2.5t-5.5 3-4 3 0 2.5q-21-17-36-22-5-1-11-5.5t-10.5-7-10-1.5-11.5 7q-5 5-6 15t-2 13q-7-5 0-17.5t2-18.5q-3-6-10.5-4.5t-12 4.5-11.5 8.5-9 6.5-8.5 5.5-8.5 7.5q-3 4-6 12t-5 11q-2-4-11.5-6.5t-9.5-5.5q2 10 4 35t5 38q7 31-12 48-27 25-29 40-4 22 12 26 0 7-8 20.5t-7 21.5q0 6 2 16z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/google-plus-circle.svg b/img/icons/font-awesome/google-plus-circle.svg
new file mode 100644
index 00000000..36a6f41e
--- /dev/null
+++ b/img/icons/font-awesome/google-plus-circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1045 905q0-33-6-64h-362v132h217q-12 76-74.5 120.5t-142.5 44.5q-99 0-169-71.5t-70-170.5 70-170.5 169-71.5q93 0 153 59l104-101q-108-100-257-100-160 0-272 112.5t-112 271.5 112 271.5 272 112.5q165 0 266.5-105t101.5-270zm345 46h109v-110h-109v-110h-110v110h-110v110h110v110h110v-110zm274-55q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/google-plus-official.svg b/img/icons/font-awesome/google-plus-official.svg
new file mode 100644
index 00000000..36a6f41e
--- /dev/null
+++ b/img/icons/font-awesome/google-plus-official.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1045 905q0-33-6-64h-362v132h217q-12 76-74.5 120.5t-142.5 44.5q-99 0-169-71.5t-70-170.5 70-170.5 169-71.5q93 0 153 59l104-101q-108-100-257-100-160 0-272 112.5t-112 271.5 112 271.5 272 112.5q165 0 266.5-105t101.5-270zm345 46h109v-110h-109v-110h-110v110h-110v110h110v110h110v-110zm274-55q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/google-plus-square.svg b/img/icons/font-awesome/google-plus-square.svg
new file mode 100644
index 00000000..c0592cd6
--- /dev/null
+++ b/img/icons/font-awesome/google-plus-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1045 905q0-26-6-64h-362v132h217q-3 24-16.5 50t-37.5 53-66.5 44.5-96.5 17.5q-99 0-169-71t-70-171 70-171 169-71q92 0 153 59l104-101q-108-100-257-100-160 0-272 112.5t-112 271.5 112 271.5 272 112.5q165 0 266.5-105t101.5-270zm345 46h109v-110h-109v-110h-110v110h-110v110h110v110h110v-110zm274-535v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/google-plus.svg b/img/icons/font-awesome/google-plus.svg
new file mode 100644
index 00000000..658eb572
--- /dev/null
+++ b/img/icons/font-awesome/google-plus.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1437 913q0 208-87 370.5t-248 254-369 91.5q-149 0-285-58t-234-156-156-234-58-285 58-285 156-234 234-156 285-58q286 0 491 192l-199 191q-117-113-292-113-123 0-227.5 62t-165.5 168.5-61 232.5 61 232.5 165.5 168.5 227.5 62q83 0 152.5-23t114.5-57.5 78.5-78.5 49-83 21.5-74h-416v-252h692q12 63 12 122zm867-122v210h-209v209h-210v-209h-209v-210h209v-209h210v209h209z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/google-wallet.svg b/img/icons/font-awesome/google-wallet.svg
new file mode 100644
index 00000000..369eada3
--- /dev/null
+++ b/img/icons/font-awesome/google-wallet.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M441 672q33 0 52 26 266 364 362 774h-446q-127-441-367-749-12-16-3-33.5t29-17.5h373zm559 357q-49 199-125 393-79-310-256-594 40-221 44-449 211 340 337 650zm99-709q235 324 384.5 698.5t184.5 773.5h-451q-41-665-553-1472h435zm693 576q0 424-101 812-67-560-359-1083-25-301-106-584-4-16 5.5-28.5t25.5-12.5h359q21 0 38.5 13t22.5 33q115 409 115 850z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/google.svg b/img/icons/font-awesome/google.svg
new file mode 100644
index 00000000..0d997b41
--- /dev/null
+++ b/img/icons/font-awesome/google.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 786h725q12 67 12 128 0 217-91 387.5t-259.5 266.5-386.5 96q-157 0-299-60.5t-245-163.5-163.5-245-60.5-299 60.5-299 163.5-245 245-163.5 299-60.5q300 0 515 201l-209 201q-123-119-306-119-129 0-238.5 65t-173.5 176.5-64 243.5 64 243.5 173.5 176.5 238.5 65q87 0 160-24t120-60 82-82 51.5-87 22.5-78h-436v-264z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/graduation-cap.svg b/img/icons/font-awesome/graduation-cap.svg
new file mode 100644
index 00000000..fbd5484e
--- /dev/null
+++ b/img/icons/font-awesome/graduation-cap.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1774 836l18 316q4 69-82 128t-235 93.5-323 34.5-323-34.5-235-93.5-82-128l18-316 574 181q22 7 48 7t48-7zm530-324q0 23-22 31l-1120 352q-4 1-10 1t-10-1l-652-206q-43 34-71 111.5t-34 178.5q63 36 63 109 0 69-58 107l58 433q2 14-8 25-9 11-24 11h-192q-15 0-24-11-10-11-8-25l58-433q-58-38-58-107 0-73 65-111 11-207 98-330l-333-104q-22-8-22-31t22-31l1120-352q4-1 10-1t10 1l1120 352q22 8 22 31z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/gratipay.svg b/img/icons/font-awesome/gratipay.svg
new file mode 100644
index 00000000..a7520ac5
--- /dev/null
+++ b/img/icons/font-awesome/gratipay.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M901 1302l350-473q16-22 24.5-59t-6-85-61.5-79q-40-26-83-25.5t-73.5 17.5-54.5 45q-36 40-96 40-59 0-95-40-24-28-54.5-45t-73.5-17.5-84 25.5q-46 31-60.5 79t-6 85 24.5 59zm763-406q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/grav.svg b/img/icons/font-awesome/grav.svg
new file mode 100644
index 00000000..1e64a22b
--- /dev/null
+++ b/img/icons/font-awesome/grav.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1418 476q-15-17-35-8.5t-26 28.5 5 38q14 17 40 14.5t34-20.5-18-52zm-396 246q-8 8-19.5 8t-18.5-8q-8-8-8-19t8-18q7-8 18.5-8t19.5 8q7 7 7 18t-7 19zm165 74l-35 35q-12 13-29.5 13t-30.5-13l-38-38q-12-13-12-30t12-30l35-35q12-12 29.5-12t30.5 12l38 39q12 12 12 29.5t-12 29.5zm-109-130q-7 8-18.5 8t-19.5-8q-7-8-7-19t7-19q8-8 19-8t19 8 8 19-8 19zm403-98q-34 64-107.5 85.5t-127.5-16.5q-38-28-61-66.5t-21-87.5 39-92 75.5-53 70.5 5 70 51q2 2 13 12.5t14.5 13.5 13 13.5 12.5 15.5 10 15.5 8.5 18 4 18.5 1 21-5 22-9.5 24zm201 482q3-20-8.5-34.5t-27.5-21.5-33-17-23-20q-40-71-84-98.5t-113-11.5q19-13 40-18.5t33-4.5l12 1q2-45-34-90 6-20 6.5-40.5t-2.5-30.5l-3-10q43-24 71-65t34-91q10-84-43-150.5t-137-76.5q-60-7-114 18.5t-82 74.5q-30 51-33.5 101t14.5 87 43.5 64 56.5 42q-45-4-88-36t-57-88q-28-108 32-222-16-21-29-32-50 0-89 19 19-24 42-37t36-14l13-1q0-50-13-78-10-21-32.5-28.5t-47 3.5-37.5 40q2-4 4-7-7 28-6.5 75.5t19 117 48.5 122.5q-25 14-47 36-35 16-85.5 70.5t-84.5 101.5l-33 46q-90 34-181 125.5t-75 162.5q1 16 11 27-15 12-30 30-21 25-21 54t21.5 40 63.5-6q41-19 77-49.5t55-60.5q-2-2-6.5-5t-20.5-7.5-33-3.5q23-5 51-12.5t40-10 27.5-6 26-4 23.5-.5q14 7 22-34 7-37 7-90 0-102-40-150 106 103 101 219-1 29-15 50t-27 27l-13 6q-4 7-19 32t-26 45.5-26.5 52-25 61-17 63-6.5 66.5 10 63q-35-54-37-80-22 24-34.5 39t-33.5 42-30.5 46-16.5 41-.5 38 25.5 27q45 25 144-64t190.5-221.5 122.5-228.5q86-52 145-115.5t86-119.5q47 93 154 178 104 83 167 80 39-2 46-43zm239-154q0 182-71 348t-191 286-286.5 191-348.5 71-348.5-71-286.5-191-191-286-71-348 71-348 191-286 286.5-191 348.5-71 348.5 71 286.5 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/group.svg b/img/icons/font-awesome/group.svg
new file mode 100644
index 00000000..1036013c
--- /dev/null
+++ b/img/icons/font-awesome/group.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M657 896q-162 5-265 128h-134q-82 0-138-40.5t-56-118.5q0-353 124-353 6 0 43.5 21t97.5 42.5 119 21.5q67 0 133-23-5 37-5 66 0 139 81 256zm1071 637q0 120-73 189.5t-194 69.5h-874q-121 0-194-69.5t-73-189.5q0-53 3.5-103.5t14-109 26.5-108.5 43-97.5 62-81 85.5-53.5 111.5-20q10 0 43 21.5t73 48 107 48 135 21.5 135-21.5 107-48 73-48 43-21.5q61 0 111.5 20t85.5 53.5 62 81 43 97.5 26.5 108.5 14 109 3.5 103.5zm-1024-1277q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75 75 181zm704 384q0 159-112.5 271.5t-271.5 112.5-271.5-112.5-112.5-271.5 112.5-271.5 271.5-112.5 271.5 112.5 112.5 271.5zm576 225q0 78-56 118.5t-138 40.5h-134q-103-123-265-128 81-117 81-256 0-29-5-66 66 23 133 23 59 0 119-21.5t97.5-42.5 43.5-21q124 0 124 353zm-128-609q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75 75 181z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/h-square.svg b/img/icons/font-awesome/h-square.svg
new file mode 100644
index 00000000..1cdbc6ef
--- /dev/null
+++ b/img/icons/font-awesome/h-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 1344v-896q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v320h-512v-320q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v896q0 26 19 45t45 19h128q26 0 45-19t19-45v-320h512v320q0 26 19 45t45 19h128q26 0 45-19t19-45zm256-928v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hacker-news.svg b/img/icons/font-awesome/hacker-news.svg
new file mode 100644
index 00000000..0340b760
--- /dev/null
+++ b/img/icons/font-awesome/hacker-news.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M937 1004l266-499h-112l-157 312q-24 48-44 92l-42-92-155-312h-120l263 493v324h101v-318zm727-588v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hand-grab-o.svg b/img/icons/font-awesome/hand-grab-o.svg
new file mode 100644
index 00000000..f7f96ff8
--- /dev/null
+++ b/img/icons/font-awesome/hand-grab-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 384q-53 0-90.5 37.5t-37.5 90.5v128h-32v-93q0-48-32-81.5t-80-33.5q-46 0-79 33t-33 79v429l-32-30v-172q0-48-32-81.5t-80-33.5q-46 0-79 33t-33 79v224q0 47 35 82l310 296q39 39 39 102 0 26 19 45t45 19h640q26 0 45-19t19-45v-25q0-41 10-77l108-436q10-36 10-77v-246q0-48-32-81.5t-80-33.5q-46 0-79 33t-33 79v32h-32v-125q0-40-25-72.5t-64-40.5q-14-2-23-2-46 0-79 33t-33 79v128h-32v-122q0-51-32.5-89.5t-82.5-43.5q-5-1-13-1zm0-128q84 0 149 50 57-34 123-34 59 0 111 27t86 76q27-7 59-7 100 0 170 71.5t70 171.5v246q0 51-13 108l-109 436q-6 24-6 71 0 80-56 136t-136 56h-640q-84 0-138-58.5t-54-142.5l-308-296q-76-73-76-175v-224q0-99 70.5-169.5t169.5-70.5q11 0 16 1 6-95 75.5-160t164.5-65q52 0 98 21 72-69 174-69z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hand-lizard-o.svg b/img/icons/font-awesome/hand-lizard-o.svg
new file mode 100644
index 00000000..7ec6c905
--- /dev/null
+++ b/img/icons/font-awesome/hand-lizard-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1151 0q61 0 116 28t91 77l572 781q118 159 118 359v355q0 80-56 136t-136 56h-384q-80 0-136-56t-56-136v-177l-286-143h-546q-80 0-136-56t-56-136v-32q0-119 84.5-203.5t203.5-84.5h420l42-128h-686q-100 0-173.5-67.5t-81.5-166.5q-65-79-65-182v-32q0-80 56-136t136-56h959zm769 1600v-355q0-157-93-284l-573-781q-39-52-103-52h-959q-26 0-45 19t-19 45q0 32 1.5 49.5t9.5 40.5 25 43q10-31 35.5-50t56.5-19h832v32h-832q-26 0-45 19t-19 45q0 44 3 58 8 44 44 73t81 29h731q40 0 68 28t28 68q0 15-5 30l-64 192q-10 29-35 47.5t-56 18.5h-443q-66 0-113 47t-47 113v32q0 26 19 45t45 19h561q16 0 29 7l317 158q24 13 38.5 36t14.5 50v197q0 26 19 45t45 19h384q26 0 45-19t19-45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hand-o-down.svg b/img/icons/font-awesome/hand-o-down.svg
new file mode 100644
index 00000000..a3273928
--- /dev/null
+++ b/img/icons/font-awesome/hand-o-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1536 960q0-84-32-183t-64-194-32-167v-32h-640v32q0 35-12 67.5t-37 62.5-46 50-54 49q-9 8-14 12-81 72-145 112-22 14-68 38-3 1-22.5 10.5t-36 18.5-35.5 20-30.5 21.5-11.5 18.5q0 71 30.5 115.5t97.5 44.5q43 0 84.5-15t68-33 55-33 48.5-15v576q0 50 38.5 89t89.5 39q52 0 90-38t38-90v-331q46 35 103 35 69 0 119-53 32 18 69 18t73.5-17.5 52.5-47.5q24 4 56 4 85 0 126-48.5t41-135.5zm-128-768q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm256 764q0 142-77.5 230t-217.5 87l-5-1q-76 61-178 61-22 0-43-3-54 30-119 37v169q0 105-76 180.5t-181 75.5q-103 0-179-76t-76-180v-374q-54 22-128 22-121 0-188.5-81.5t-67.5-206.5q0-38 17.5-69.5t49.5-55 63-40.5 72-37 62-33q55-35 129-100 3-2 17-14t21.5-19 21.5-20.5 22.5-24 18-22.5 14-23.5 4.5-21.5v-288q0-53 37.5-90.5t90.5-37.5h640q53 0 90.5 37.5t37.5 90.5v288q0 59 59 223 69 190 69 317z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hand-o-left.svg b/img/icons/font-awesome/hand-o-left.svg
new file mode 100644
index 00000000..f5568b86
--- /dev/null
+++ b/img/icons/font-awesome/hand-o-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1376 1408h32v-640h-32q-35 0-67.5-12t-62.5-37-50-46-49-54q-8-9-12-14-72-81-112-145-14-22-38-68-1-3-10.5-22.5t-18.5-36-20-35.5-21.5-30.5-18.5-11.5q-71 0-115.5 30.5t-44.5 97.5q0 43 15 84.5t33 68 33 55 15 48.5h-576q-50 0-89 38.5t-39 89.5q0 52 38 90t90 38h331q-15 17-25 47.5t-10 55.5q0 69 53 119-18 32-18 69t17.5 73.5 47.5 52.5q-4 24-4 56 0 85 48.5 126t135.5 41q84 0 183-32t194-64 167-32zm288-64q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm128-576v640q0 53-37.5 90.5t-90.5 37.5h-288q-59 0-223 59-190 69-317 69-142 0-230-77.5t-87-217.5l1-5q-61-76-61-178 0-22 3-43-33-57-37-119h-169q-105 0-180.5-76t-75.5-181q0-103 76-179t180-76h374q-22-60-22-128 0-122 81.5-189t206.5-67q38 0 69.5 17.5t55 49.5 40.5 63 37 72 33 62q35 55 100 129 2 3 14 17t19 21.5 20.5 21.5 24 22.5 22.5 18 23.5 14 21.5 4.5h288q53 0 90.5 37.5t37.5 90.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hand-o-right.svg b/img/icons/font-awesome/hand-o-right.svg
new file mode 100644
index 00000000..5a9f3b2b
--- /dev/null
+++ b/img/icons/font-awesome/hand-o-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 1344q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm1408-576q0-51-39-89.5t-89-38.5h-576q0-20 15-48.5t33-55 33-68 15-84.5q0-67-44.5-97.5t-115.5-30.5q-24 0-90 139-24 44-37 65-40 64-112 145-71 81-101 106-69 57-140 57h-32v640h32q72 0 167 32t193.5 64 179.5 32q189 0 189-167 0-26-5-56 30-16 47.5-52.5t17.5-73.5-18-69q53-50 53-119 0-25-10-55.5t-25-47.5h331q52 0 90-38t38-90zm128-1q0 105-75.5 181t-180.5 76h-169q-4 62-37 119 3 21 3 43 0 101-60 178 1 139-85 219.5t-227 80.5q-133 0-322-69-164-59-223-59h-288q-53 0-90.5-37.5t-37.5-90.5v-640q0-53 37.5-90.5t90.5-37.5h288q10 0 21.5-4.5t23.5-14 22.5-18 24-22.5 20.5-21.5 19-21.5 14-17q65-74 100-129 13-21 33-62t37-72 40.5-63 55-49.5 69.5-17.5q125 0 206.5 67t81.5 189q0 68-22 128h374q104 0 180 76t76 179z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hand-o-up.svg b/img/icons/font-awesome/hand-o-up.svg
new file mode 100644
index 00000000..e3ef1748
--- /dev/null
+++ b/img/icons/font-awesome/hand-o-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 1600q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm128-764q0-189-167-189-26 0-56 5-16-30-52.5-47.5t-73.5-17.5-69 18q-50-53-119-53-25 0-55.5 10t-47.5 25v-331q0-52-38-90t-90-38q-51 0-89.5 39t-38.5 89v576q-20 0-48.5-15t-55-33-68-33-84.5-15q-67 0-97.5 44.5t-30.5 115.5q0 24 139 90 44 24 65 37 64 40 145 112 81 71 106 101 57 69 57 140v32h640v-32q0-72 32-167t64-193.5 32-179.5zm128-5q0 133-69 322-59 164-59 223v288q0 53-37.5 90.5t-90.5 37.5h-640q-53 0-90.5-37.5t-37.5-90.5v-288q0-10-4.5-21.5t-14-23.5-18-22.5-22.5-24-21.5-20.5-21.5-19-17-14q-74-65-129-100-21-13-62-33t-72-37-63-40.5-49.5-55-17.5-69.5q0-125 67-206.5t189-81.5q68 0 128 22v-374q0-104 76-180t179-76q105 0 181 75.5t76 180.5v169q62 4 119 37 21-3 43-3 101 0 178 60 139-1 219.5 85t80.5 227z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hand-paper-o.svg b/img/icons/font-awesome/hand-paper-o.svg
new file mode 100644
index 00000000..6884c18c
--- /dev/null
+++ b/img/icons/font-awesome/hand-paper-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M880 128q-46 0-79 33t-33 79v656h-32v-528q0-46-33-79t-79-33-79 33-33 79v784l-154-205q-38-51-102-51-53 0-90.5 37.5t-37.5 90.5q0 43 26 77l384 512q38 51 102 51h688q34 0 61-22t34-56l76-405q5-32 5-59v-498q0-46-33-79t-79-33-79 33-33 79v272h-32v-528q0-46-33-79t-79-33-79 33-33 79v528h-32v-656q0-46-33-79t-79-33zm0-128q68 0 125.5 35.5t88.5 96.5q19-4 42-4 99 0 169.5 70.5t70.5 169.5v17q105-6 180.5 64t75.5 175v498q0 40-8 83l-76 404q-14 79-76.5 131t-143.5 52h-688q-60 0-114.5-27.5t-90.5-74.5l-384-512q-51-68-51-154 0-106 75-181t181-75q78 0 128 34v-434q0-99 70.5-169.5t169.5-70.5q23 0 42 4 31-61 88.5-96.5t125.5-35.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hand-peace-o.svg b/img/icons/font-awesome/hand-peace-o.svg
new file mode 100644
index 00000000..8578bc67
--- /dev/null
+++ b/img/icons/font-awesome/hand-peace-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1416 647q60 0 107 23 141 63 141 226v177q0 94-23 186l-85 339q-21 86-90.5 140t-157.5 54h-668q-106 0-181-75t-75-181v-401l-239-628q-17-45-17-91 0-106 75-181t181-75q80 0 145.5 45.5t93.5 119.5l17 44v-113q0-106 75-181t181-75 181 75 75 181v261q27-5 48-5 69 0 127.5 36.5t88.5 98.5zm-216-7q-33 0-60.5 18t-41.5 48l-74 163-71 155h55q50 0 90 31.5t50 80.5l154-338q10-20 10-46 0-46-33-79t-79-33zm221 135q-22 0-40.5 8t-29 16-23.5 29.5-17 30.5-17 37l-132 290q-10 20-10 46 0 46 33 79t79 33q33 0 60.5-18t41.5-48l160-352q9-18 9-38 0-50-32-81.5t-82-31.5zm-1165-359q0 22 8 46l248 650v69l102-111q43-46 106-46h198l106-233v-535q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5v640h-64l-200-526q-14-37-47-59.5t-73-22.5q-53 0-90.5 37.5t-37.5 90.5zm1052 1248q44 0 78.5-27t45.5-70l85-339q19-73 19-155v-91l-141 310q-17 38-53 61t-78 23q-53 0-93.5-34.5t-48.5-86.5q-44 57-114 57h-208v-32h208q46 0 81-33t35-79-31-79-77-33h-296q-49 0-82 36l-126 136v308q0 53 37.5 90.5t90.5 37.5h668z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hand-pointer-o.svg b/img/icons/font-awesome/hand-pointer-o.svg
new file mode 100644
index 00000000..96bfdf88
--- /dev/null
+++ b/img/icons/font-awesome/hand-pointer-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M640 128q-53 0-90.5 37.5t-37.5 90.5v896l-151-202q-41-54-107-54-52 0-89 38t-37 90q0 43 26 77l384 512q38 51 102 51h718q22 0 39.5-13.5t22.5-34.5l92-368q24-96 24-194v-217q0-41-28-71t-68-30-68 28-28 68h-32v-61q0-48-32-81.5t-80-33.5q-46 0-79 33t-33 79v64h-32v-90q0-55-37-94.5t-91-39.5q-53 0-90.5 37.5t-37.5 90.5v96h-32v-570q0-55-37-94.5t-91-39.5zm0-128q107 0 181.5 77.5t74.5 184.5v220q22-2 32-2 99 0 173 69 47-21 99-21 113 0 184 87 27-7 56-7 94 0 159 67.5t65 161.5v217q0 116-28 225l-92 368q-16 64-68 104.5t-118 40.5h-718q-60 0-114.5-27.5t-90.5-74.5l-384-512q-51-68-51-154 0-105 74.5-180.5t179.5-75.5q71 0 130 35v-547q0-106 75-181t181-75zm128 1408v-384h-32v384h32zm256 0v-384h-32v384h32zm256 0v-384h-32v384h32z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hand-rock-o.svg b/img/icons/font-awesome/hand-rock-o.svg
new file mode 100644
index 00000000..f7f96ff8
--- /dev/null
+++ b/img/icons/font-awesome/hand-rock-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 384q-53 0-90.5 37.5t-37.5 90.5v128h-32v-93q0-48-32-81.5t-80-33.5q-46 0-79 33t-33 79v429l-32-30v-172q0-48-32-81.5t-80-33.5q-46 0-79 33t-33 79v224q0 47 35 82l310 296q39 39 39 102 0 26 19 45t45 19h640q26 0 45-19t19-45v-25q0-41 10-77l108-436q10-36 10-77v-246q0-48-32-81.5t-80-33.5q-46 0-79 33t-33 79v32h-32v-125q0-40-25-72.5t-64-40.5q-14-2-23-2-46 0-79 33t-33 79v128h-32v-122q0-51-32.5-89.5t-82.5-43.5q-5-1-13-1zm0-128q84 0 149 50 57-34 123-34 59 0 111 27t86 76q27-7 59-7 100 0 170 71.5t70 171.5v246q0 51-13 108l-109 436q-6 24-6 71 0 80-56 136t-136 56h-640q-84 0-138-58.5t-54-142.5l-308-296q-76-73-76-175v-224q0-99 70.5-169.5t169.5-70.5q11 0 16 1 6-95 75.5-160t164.5-65q52 0 98 21 72-69 174-69z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hand-scissors-o.svg b/img/icons/font-awesome/hand-scissors-o.svg
new file mode 100644
index 00000000..2a562b51
--- /dev/null
+++ b/img/icons/font-awesome/hand-scissors-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1073 1664h-177q-163 0-226-141-23-49-23-102v-5q-62-30-98.5-88.5t-36.5-127.5q0-38 5-48h-261q-106 0-181-75t-75-181 75-181 181-75h113l-44-17q-74-28-119.5-93.5t-45.5-145.5q0-106 75-181t181-75q46 0 91 17l628 239h401q106 0 181 75t75 181v668q0 88-54 157.5t-140 90.5l-339 85q-92 23-186 23zm-49-711l-155 71-163 74q-30 14-48 41.5t-18 60.5q0 46 33 79t79 33q26 0 46-10l338-154q-49-10-80.5-50t-31.5-90v-55zm320 311q0-46-33-79t-79-33q-26 0-46 10l-290 132q-28 13-37 17t-30.5 17-29.5 23.5-16 29-8 40.5q0 50 31.5 82t81.5 32q20 0 38-9l352-160q30-14 48-41.5t18-60.5zm-232-752l-650-248q-24-8-46-8-53 0-90.5 37.5t-37.5 90.5q0 40 22.5 73t59.5 47l526 200v64h-640q-53 0-90.5 37.5t-37.5 90.5 37.5 90.5 90.5 37.5h535l233-106v-198q0-63 46-106l111-102h-69zm-39 1024q82 0 155-19l339-85q43-11 70-45.5t27-78.5v-668q0-53-37.5-90.5t-90.5-37.5h-308l-136 126q-36 33-36 82v296q0 46 33 77t79 31 79-35 33-81v-208h32v208q0 70-57 114 52 8 86.5 48.5t34.5 93.5q0 42-23 78t-61 53l-310 141h91z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hand-spock-o.svg b/img/icons/font-awesome/hand-spock-o.svg
new file mode 100644
index 00000000..0c08a3e8
--- /dev/null
+++ b/img/icons/font-awesome/hand-spock-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M459 1792q-77 0-137.5-47.5t-79.5-122.5l-101-401q-13-57-13-108 0-45-5-67l-116-477q-7-27-7-57 0-93 62-161t155-78q17-85 82.5-139t152.5-54q83 0 148 51.5t85 132.5l83 348 103-428q20-81 85-132.5t148-51.5q89 0 155.5 57.5t80.5 144.5q92 10 152 79t60 162q0 24-7 59l-123 512q10-7 37.5-28.5t38.5-29.5 35-23 41-20.5 41.5-11 49.5-5.5q105 0 180 74t75 179q0 62-28.5 118t-78.5 94l-507 380q-68 51-153 51h-694zm645-1664q-38 0-68.5 24t-39.5 62l-164 682h-127l-145-602q-9-38-39.5-62t-68.5-24q-48 0-80 33t-32 80q0 15 3 28l132 547h-26l-99-408q-9-37-40-62.5t-69-25.5q-47 0-80 33t-33 79q0 14 3 26l116 478q7 28 9 86t10 88l100 401q8 32 34 52.5t59 20.5h694q42 0 76-26l507-379q56-43 56-110 0-52-37.5-88.5t-89.5-36.5q-43 0-77 26l-307 230v-227q0-4 32-138t68-282 39-161q4-18 4-29 0-47-32-81t-79-34q-39 0-69.5 24t-39.5 62l-116 482h-26l150-624q3-14 3-28 0-48-31.5-82t-79.5-34z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hand-stop-o.svg b/img/icons/font-awesome/hand-stop-o.svg
new file mode 100644
index 00000000..6884c18c
--- /dev/null
+++ b/img/icons/font-awesome/hand-stop-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M880 128q-46 0-79 33t-33 79v656h-32v-528q0-46-33-79t-79-33-79 33-33 79v784l-154-205q-38-51-102-51-53 0-90.5 37.5t-37.5 90.5q0 43 26 77l384 512q38 51 102 51h688q34 0 61-22t34-56l76-405q5-32 5-59v-498q0-46-33-79t-79-33-79 33-33 79v272h-32v-528q0-46-33-79t-79-33-79 33-33 79v528h-32v-656q0-46-33-79t-79-33zm0-128q68 0 125.5 35.5t88.5 96.5q19-4 42-4 99 0 169.5 70.5t70.5 169.5v17q105-6 180.5 64t75.5 175v498q0 40-8 83l-76 404q-14 79-76.5 131t-143.5 52h-688q-60 0-114.5-27.5t-90.5-74.5l-384-512q-51-68-51-154 0-106 75-181t181-75q78 0 128 34v-434q0-99 70.5-169.5t169.5-70.5q23 0 42 4 31-61 88.5-96.5t125.5-35.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/handshake-o.svg b/img/icons/font-awesome/handshake-o.svg
new file mode 100644
index 00000000..dac57e14
--- /dev/null
+++ b/img/icons/font-awesome/handshake-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M192 1152q40 0 56-32t0-64-56-32-56 32 0 64 56 32zm1473-58q-10-13-38.5-50t-41.5-54-38-49-42.5-53-40.5-47-45-49l-125 140q-83 94-208.5 92t-205.5-98q-57-69-56.5-158t58.5-157l177-206q-22-11-51-16.5t-47.5-6-56.5.5-49 1q-92 0-158 66l-158 158h-155v544q5 0 21-.5t22 0 19.5 2 20.5 4.5 17.5 8.5 18.5 13.5l297 292q115 111 227 111 78 0 125-47 57 20 112.5-8t72.5-85q74 6 127-44 20-18 36-45.5t14-50.5q10 10 43 10 43 0 77-21t49.5-53 12-71.5-30.5-73.5zm159 58h96v-512h-93l-157-180q-66-76-169-76h-167q-89 0-146 67l-209 243q-28 33-28 75t27 75q43 51 110 52t111-49l193-218q25-23 53.5-21.5t47 27 8.5 56.5q16 19 56 63t60 68q29 36 82.5 105.5t64.5 84.5q52 66 60 140zm288 0q40 0 56-32t0-64-56-32-56 32 0 64 56 32zm192-576v640q0 26-19 45t-45 19h-434q-27 65-82 106.5t-125 51.5q-33 48-80.5 81.5t-102.5 45.5q-42 53-104.5 81.5t-128.5 24.5q-60 34-126 39.5t-127.5-14-117-53.5-103.5-81l-287-282h-358q-26 0-45-19t-19-45v-672q0-26 19-45t45-19h421q14-14 47-48t47.5-48 44-40 50.5-37.5 51-25.5 62-19.5 68-5.5h117q99 0 181 56 82-56 181-56h167q35 0 67 6t56.5 14.5 51.5 26.5 44.5 31 43 39.5 39 42 41 48 41.5 48.5h355q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hard-of-hearing.svg b/img/icons/font-awesome/hard-of-hearing.svg
new file mode 100644
index 00000000..ad74451a
--- /dev/null
+++ b/img/icons/font-awesome/hard-of-hearing.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1056 832q0 26 19 45t45 19 45-19 19-45q0-146-103-249t-249-103-249 103-103 249q0 26 19 45t45 19 45-19 19-45q0-93 66-158.5t158-65.5 158 65.5 66 158.5zm-221-576q-117 0-223.5 45.5t-184 123-123 184-45.5 223.5q0 26 19 45t45 19 45-19 19-45q0-185 131.5-316.5t316.5-131.5 316.5 131.5 131.5 316.5q0 55-18 103.5t-37.5 74.5-59.5 72q-34 39-52 63t-43.5 66.5-37 91-11.5 105.5q0 106-75 181t-181 75q-26 0-45 19t-19 45 19 45 45 19q159 0 271.5-112.5t112.5-271.5q0-41 7.5-74t26.5-64 33.5-50 45.5-54q35-41 53-64.5t44-67.5 37.5-93.5 11.5-108.5q0-117-45.5-223.5t-123-184-184-123-223.5-45.5zm-244 719l226 226-579 579q-12 12-29 12t-29-12l-168-168q-12-12-12-29t12-29zm1021-963l168 168q12 12 12 29t-12 30l-233 233-26 25-71 71q-66-153-195-258l91-91 207-207q13-12 30-12t29 12z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hashtag.svg b/img/icons/font-awesome/hashtag.svg
new file mode 100644
index 00000000..9dbe0fc2
--- /dev/null
+++ b/img/icons/font-awesome/hashtag.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M991 1024l64-256h-254l-64 256h254zm768-504l-56 224q-7 24-31 24h-327l-64 256h311q15 0 25 12 10 14 6 28l-56 224q-5 24-31 24h-327l-81 328q-7 24-31 24h-224q-16 0-26-12-9-12-6-28l78-312h-254l-81 328q-7 24-31 24h-225q-15 0-25-12-9-12-6-28l78-312h-311q-15 0-25-12-9-12-6-28l56-224q7-24 31-24h327l64-256h-311q-15 0-25-12-10-14-6-28l56-224q5-24 31-24h327l81-328q7-24 32-24h224q15 0 25 12 9 12 6 28l-78 312h254l81-328q7-24 32-24h224q15 0 25 12 9 12 6 28l-78 312h311q15 0 25 12 9 12 6 28z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hdd-o.svg b/img/icons/font-awesome/hdd-o.svg
new file mode 100644
index 00000000..6450c65b
--- /dev/null
+++ b/img/icons/font-awesome/hdd-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1168 1216q0 33-23.5 56.5t-56.5 23.5-56.5-23.5-23.5-56.5 23.5-56.5 56.5-23.5 56.5 23.5 23.5 56.5zm256 0q0 33-23.5 56.5t-56.5 23.5-56.5-23.5-23.5-56.5 23.5-56.5 56.5-23.5 56.5 23.5 23.5 56.5zm112 160v-320q0-13-9.5-22.5t-22.5-9.5h-1216q-13 0-22.5 9.5t-9.5 22.5v320q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5-9.5t9.5-22.5zm-1230-480h1180l-157-482q-4-13-16-21.5t-26-8.5h-782q-14 0-26 8.5t-16 21.5zm1358 160v320q0 66-47 113t-113 47h-1216q-66 0-113-47t-47-113v-320q0-25 16-75l197-606q17-53 63-86t101-33h782q55 0 101 33t63 86l197 606q16 50 16 75z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/header.svg b/img/icons/font-awesome/header.svg
new file mode 100644
index 00000000..92ff8aac
--- /dev/null
+++ b/img/icons/font-awesome/header.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1682 1664q-44 0-132.5-3.5t-133.5-3.5q-44 0-132 3.5t-132 3.5q-24 0-37-20.5t-13-45.5q0-31 17-46t39-17 51-7 45-15q33-21 33-140l-1-391q0-21-1-31-13-4-50-4h-675q-38 0-51 4-1 10-1 31l-1 371q0 142 37 164 16 10 48 13t57 3.5 45 15 20 45.5q0 26-12.5 48t-36.5 22q-47 0-139.5-3.5t-138.5-3.5q-43 0-128 3.5t-127 3.5q-23 0-35.5-21t-12.5-45q0-30 15.5-45t36-17.5 47.5-7.5 42-15q33-23 33-143l-1-57v-813q0-3 .5-26t0-36.5-1.5-38.5-3.5-42-6.5-36.5-11-31.5-16-18q-15-10-45-12t-53-2-41-14-18-45q0-26 12-48t36-22q46 0 138.5 3.5t138.5 3.5q42 0 126.5-3.5t126.5-3.5q25 0 37.5 22t12.5 48q0 30-17 43.5t-38.5 14.5-49.5 4-43 13q-35 21-35 160l1 320q0 21 1 32 13 3 39 3h699q25 0 38-3 1-11 1-32l1-320q0-139-35-160-18-11-58.5-12.5t-66-13-25.5-49.5q0-26 12.5-48t37.5-22q44 0 132 3.5t132 3.5q43 0 129-3.5t129-3.5q25 0 37.5 22t12.5 48q0 30-17.5 44t-40 14.5-51.5 3-44 12.5q-35 23-35 161l1 943q0 119 34 140 16 10 46 13.5t53.5 4.5 41.5 15.5 18 44.5q0 26-12 48t-36 22z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/headphones.svg b/img/icons/font-awesome/headphones.svg
new file mode 100644
index 00000000..73b48d6f
--- /dev/null
+++ b/img/icons/font-awesome/headphones.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1728 886q0 166-60 314l-20 49-185 33q-22 83-90.5 136.5t-156.5 53.5v32q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-576q0-14 9-23t23-9h64q14 0 23 9t9 23v32q71 0 130 35.5t93 95.5l68-12q29-95 29-193 0-148-88-279t-236.5-209-315.5-78-315.5 78-236.5 209-88 279q0 98 29 193l68 12q34-60 93-95.5t130-35.5v-32q0-14 9-23t23-9h64q14 0 23 9t9 23v576q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-32q-88 0-156.5-53.5t-90.5-136.5l-185-33-20-49q-60-148-60-314 0-151 67-291t179-242.5 266-163.5 320-61 320 61 266 163.5 179 242.5 67 291z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/heart-o.svg b/img/icons/font-awesome/heart-o.svg
new file mode 100644
index 00000000..945e6c3d
--- /dev/null
+++ b/img/icons/font-awesome/heart-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 596q0-81-21.5-143t-55-98.5-81.5-59.5-94-31-98-8-112 25.5-110.5 64-86.5 72-60 61.5q-18 22-49 22t-49-22q-24-28-60-61.5t-86.5-72-110.5-64-112-25.5-98 8-94 31-81.5 59.5-55 98.5-21.5 143q0 168 187 355l581 560 580-559q188-188 188-356zm128 0q0 221-229 450l-623 600q-18 18-44 18t-44-18l-624-602q-10-8-27.5-26t-55.5-65.5-68-97.5-53.5-121-23.5-138q0-220 127-344t351-124q62 0 126.5 21.5t120 58 95.5 68.5 76 68q36-36 76-68t95.5-68.5 120-58 126.5-21.5q224 0 351 124t127 344z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/heart.svg b/img/icons/font-awesome/heart.svg
new file mode 100644
index 00000000..2d576b74
--- /dev/null
+++ b/img/icons/font-awesome/heart.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 1664q-26 0-44-18l-624-602q-10-8-27.5-26t-55.5-65.5-68-97.5-53.5-121-23.5-138q0-220 127-344t351-124q62 0 126.5 21.5t120 58 95.5 68.5 76 68q36-36 76-68t95.5-68.5 120-58 126.5-21.5q224 0 351 124t127 344q0 221-229 450l-623 600q-18 18-44 18z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/heartbeat.svg b/img/icons/font-awesome/heartbeat.svg
new file mode 100644
index 00000000..3481e80b
--- /dev/null
+++ b/img/icons/font-awesome/heartbeat.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1280 1024h305q-5 6-10 10.5t-9 7.5l-3 4-623 600q-18 18-44 18t-44-18l-624-602q-5-2-21-20h369q22 0 39.5-13.5t22.5-34.5l70-281 190 667q6 20 23 33t39 13q21 0 38-13t23-33l146-485 56 112q18 35 57 35zm512-428q0 145-103 300h-369l-111-221q-8-17-25.5-27t-36.5-8q-45 5-56 46l-129 430-196-686q-6-20-23.5-33t-39.5-13-39 13.5-22 34.5l-116 464h-423q-103-155-103-300 0-220 127-344t351-124q62 0 126.5 21.5t120 58 95.5 68.5 76 68q36-36 76-68t95.5-68.5 120-58 126.5-21.5q224 0 351 124t127 344z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/history.svg b/img/icons/font-awesome/history.svg
new file mode 100644
index 00000000..da65a50e
--- /dev/null
+++ b/img/icons/font-awesome/history.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 896q0 156-61 298t-164 245-245 164-298 61q-172 0-327-72.5t-264-204.5q-7-10-6.5-22.5t8.5-20.5l137-138q10-9 25-9 16 2 23 12 73 95 179 147t225 52q104 0 198.5-40.5t163.5-109.5 109.5-163.5 40.5-198.5-40.5-198.5-109.5-163.5-163.5-109.5-198.5-40.5q-98 0-188 35.5t-160 101.5l137 138q31 30 14 69-17 40-59 40h-448q-26 0-45-19t-19-45v-448q0-42 40-59 39-17 69 14l130 129q107-101 244.5-156.5t284.5-55.5q156 0 298 61t245 164 164 245 61 298zm-640-288v448q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h224v-352q0-14 9-23t23-9h64q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/home.svg b/img/icons/font-awesome/home.svg
new file mode 100644
index 00000000..56878090
--- /dev/null
+++ b/img/icons/font-awesome/home.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1472 992v480q0 26-19 45t-45 19h-384v-384h-256v384h-384q-26 0-45-19t-19-45v-480q0-1 .5-3t.5-3l575-474 575 474q1 2 1 6zm223-69l-62 74q-8 9-21 11h-3q-13 0-21-7l-692-577-692 577q-12 8-24 7-13-2-21-11l-62-74q-8-10-7-23.5t11-21.5l719-599q32-26 76-26t76 26l244 204v-195q0-14 9-23t23-9h192q14 0 23 9t9 23v408l219 182q10 8 11 21.5t-7 23.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hospital-o.svg b/img/icons/font-awesome/hospital-o.svg
new file mode 100644
index 00000000..552457a2
--- /dev/null
+++ b/img/icons/font-awesome/hospital-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M576 1312v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm0-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm256 0v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm768 512v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm512 256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm256 0v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm-256 864h384v-1152h-256v32q0 40-28 68t-68 28h-448q-40 0-68-28t-28-68v-32h-256v1152h384v-224q0-13 9.5-22.5t22.5-9.5h320q13 0 22.5 9.5t9.5 22.5v224zm0-1184v-320q0-13-9.5-22.5t-22.5-9.5h-64q-13 0-22.5 9.5t-9.5 22.5v96h-128v-96q0-13-9.5-22.5t-22.5-9.5h-64q-13 0-22.5 9.5t-9.5 22.5v320q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5-9.5t9.5-22.5v-96h128v96q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5-9.5t9.5-22.5zm512-32v1280q0 26-19 45t-45 19h-1280q-26 0-45-19t-19-45v-1280q0-26 19-45t45-19h320v-288q0-40 28-68t68-28h448q40 0 68 28t28 68v288h320q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hotel.svg b/img/icons/font-awesome/hotel.svg
new file mode 100644
index 00000000..c49828f0
--- /dev/null
+++ b/img/icons/font-awesome/hotel.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 1024h1728q26 0 45 19t19 45v448h-256v-256h-1536v256h-256v-1216q0-26 19-45t45-19h128q26 0 45 19t19 45v704zm576-320q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm1216 256v-64q0-159-112.5-271.5t-271.5-112.5h-704q-26 0-45 19t-19 45v384h1152z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hourglass-1.svg b/img/icons/font-awesome/hourglass-1.svg
new file mode 100644
index 00000000..32d639b4
--- /dev/null
+++ b/img/icons/font-awesome/hourglass-1.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1536 128q0 261-106.5 461.5t-266.5 306.5q160 106 266.5 306.5t106.5 461.5h96q14 0 23 9t9 23v64q0 14-9 23t-23 9h-1472q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96q0-261 106.5-461.5t266.5-306.5q-160-106-266.5-306.5t-106.5-461.5h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h1472q14 0 23 9t9 23v64q0 14-9 23t-23 9h-96zm-128 0h-1024q0 66 9 128h1006q9-61 9-128zm0 1536q0-130-34-249.5t-90.5-208-126.5-152-146-94.5h-230q-76 31-146 94.5t-126.5 152-90.5 208-34 249.5h1024z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hourglass-2.svg b/img/icons/font-awesome/hourglass-2.svg
new file mode 100644
index 00000000..fde5cdda
--- /dev/null
+++ b/img/icons/font-awesome/hourglass-2.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1536 128q0 261-106.5 461.5t-266.5 306.5q160 106 266.5 306.5t106.5 461.5h96q14 0 23 9t9 23v64q0 14-9 23t-23 9h-1472q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96q0-261 106.5-461.5t266.5-306.5q-160-106-266.5-306.5t-106.5-461.5h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h1472q14 0 23 9t9 23v64q0 14-9 23t-23 9h-96zm-128 0h-1024q0 206 85 384h854q85-178 85-384zm-57 1216q-54-141-145.5-241.5t-194.5-142.5h-230q-103 42-194.5 142.5t-145.5 241.5h910z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hourglass-3.svg b/img/icons/font-awesome/hourglass-3.svg
new file mode 100644
index 00000000..2a139400
--- /dev/null
+++ b/img/icons/font-awesome/hourglass-3.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1536 128q0 261-106.5 461.5t-266.5 306.5q160 106 266.5 306.5t106.5 461.5h96q14 0 23 9t9 23v64q0 14-9 23t-23 9h-1472q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96q0-261 106.5-461.5t266.5-306.5q-160-106-266.5-306.5t-106.5-461.5h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h1472q14 0 23 9t9 23v64q0 14-9 23t-23 9h-96zm-534 708q77-29 149-92.5t129.5-152.5 92.5-210 35-253h-1024q0 132 35 253t92.5 210 129.5 152.5 149 92.5q19 7 30.5 23.5t11.5 36.5-11.5 36.5-30.5 23.5q-137 51-244 196h700q-107-145-244-196-19-7-30.5-23.5t-11.5-36.5 11.5-36.5 30.5-23.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hourglass-end.svg b/img/icons/font-awesome/hourglass-end.svg
new file mode 100644
index 00000000..2a139400
--- /dev/null
+++ b/img/icons/font-awesome/hourglass-end.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1536 128q0 261-106.5 461.5t-266.5 306.5q160 106 266.5 306.5t106.5 461.5h96q14 0 23 9t9 23v64q0 14-9 23t-23 9h-1472q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96q0-261 106.5-461.5t266.5-306.5q-160-106-266.5-306.5t-106.5-461.5h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h1472q14 0 23 9t9 23v64q0 14-9 23t-23 9h-96zm-534 708q77-29 149-92.5t129.5-152.5 92.5-210 35-253h-1024q0 132 35 253t92.5 210 129.5 152.5 149 92.5q19 7 30.5 23.5t11.5 36.5-11.5 36.5-30.5 23.5q-137 51-244 196h700q-107-145-244-196-19-7-30.5-23.5t-11.5-36.5 11.5-36.5 30.5-23.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hourglass-half.svg b/img/icons/font-awesome/hourglass-half.svg
new file mode 100644
index 00000000..fde5cdda
--- /dev/null
+++ b/img/icons/font-awesome/hourglass-half.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1536 128q0 261-106.5 461.5t-266.5 306.5q160 106 266.5 306.5t106.5 461.5h96q14 0 23 9t9 23v64q0 14-9 23t-23 9h-1472q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96q0-261 106.5-461.5t266.5-306.5q-160-106-266.5-306.5t-106.5-461.5h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h1472q14 0 23 9t9 23v64q0 14-9 23t-23 9h-96zm-128 0h-1024q0 206 85 384h854q85-178 85-384zm-57 1216q-54-141-145.5-241.5t-194.5-142.5h-230q-103 42-194.5 142.5t-145.5 241.5h910z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hourglass-o.svg b/img/icons/font-awesome/hourglass-o.svg
new file mode 100644
index 00000000..666fddd1
--- /dev/null
+++ b/img/icons/font-awesome/hourglass-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1536 128q0 261-106.5 461.5t-266.5 306.5q160 106 266.5 306.5t106.5 461.5h96q14 0 23 9t9 23v64q0 14-9 23t-23 9h-1472q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96q0-261 106.5-461.5t266.5-306.5q-160-106-266.5-306.5t-106.5-461.5h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h1472q14 0 23 9t9 23v64q0 14-9 23t-23 9h-96zm-534 708q77-29 149-92.5t129.5-152.5 92.5-210 35-253h-1024q0 132 35 253t92.5 210 129.5 152.5 149 92.5q19 7 30.5 23.5t11.5 36.5-11.5 36.5-30.5 23.5q-77 29-149 92.5t-129.5 152.5-92.5 210-35 253h1024q0-132-35-253t-92.5-210-129.5-152.5-149-92.5q-19-7-30.5-23.5t-11.5-36.5 11.5-36.5 30.5-23.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hourglass-start.svg b/img/icons/font-awesome/hourglass-start.svg
new file mode 100644
index 00000000..32d639b4
--- /dev/null
+++ b/img/icons/font-awesome/hourglass-start.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1536 128q0 261-106.5 461.5t-266.5 306.5q160 106 266.5 306.5t106.5 461.5h96q14 0 23 9t9 23v64q0 14-9 23t-23 9h-1472q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96q0-261 106.5-461.5t266.5-306.5q-160-106-266.5-306.5t-106.5-461.5h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h1472q14 0 23 9t9 23v64q0 14-9 23t-23 9h-96zm-128 0h-1024q0 66 9 128h1006q9-61 9-128zm0 1536q0-130-34-249.5t-90.5-208-126.5-152-146-94.5h-230q-76 31-146 94.5t-126.5 152-90.5 208-34 249.5h1024z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/hourglass.svg b/img/icons/font-awesome/hourglass.svg
new file mode 100644
index 00000000..4f2b0734
--- /dev/null
+++ b/img/icons/font-awesome/hourglass.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1632 1600q14 0 23 9t9 23v128q0 14-9 23t-23 9h-1472q-14 0-23-9t-9-23v-128q0-14 9-23t23-9h1472zm-1374-64q3-55 16-107t30-95 46-87 53.5-76 64.5-69.5 66-60 70.5-55 66.5-47.5 65-43q-43-28-65-43t-66.5-47.5-70.5-55-66-60-64.5-69.5-53.5-76-46-87-30-95-16-107h1276q-3 55-16 107t-30 95-46 87-53.5 76-64.5 69.5-66 60-70.5 55-66.5 47.5-65 43q43 28 65 43t66.5 47.5 70.5 55 66 60 64.5 69.5 53.5 76 46 87 30 95 16 107h-1276zm1374-1536q14 0 23 9t9 23v128q0 14-9 23t-23 9h-1472q-14 0-23-9t-9-23v-128q0-14 9-23t23-9h1472z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/houzz.svg b/img/icons/font-awesome/houzz.svg
new file mode 100644
index 00000000..36238c84
--- /dev/null
+++ b/img/icons/font-awesome/houzz.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 1191l512-295v591l-512 296v-592zm-512-295v591l512-296zm512-887v591l-512 296v-591zm0 591l512-295v591z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/html5.svg b/img/icons/font-awesome/html5.svg
new file mode 100644
index 00000000..1d583ab5
--- /dev/null
+++ b/img/icons/font-awesome/html5.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1322 597l16-175h-884l47 534h612l-22 228-197 53-196-53-13-140h-175l22 278 362 100h4v-1l359-99 50-544h-644l-15-181h674zm-1130-469h1408l-128 1438-578 162-574-162z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/i-cursor.svg b/img/icons/font-awesome/i-cursor.svg
new file mode 100644
index 00000000..9bc682d2
--- /dev/null
+++ b/img/icons/font-awesome/i-cursor.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1216 128q-320 0-320 224v416h128v128h-128v544q0 224 320 224h64v128h-64q-272 0-384-146-112 146-384 146h-64v-128h64q320 0 320-224v-544h-128v-128h128v-416q0-224-320-224h-64v-128h64q272 0 384 146 112-146 384-146h64v128h-64z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/id-badge.svg b/img/icons/font-awesome/id-badge.svg
new file mode 100644
index 00000000..70ca8a82
--- /dev/null
+++ b/img/icons/font-awesome/id-badge.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1280 1258q0 64-37 107t-91 43h-512q-54 0-91-43t-37-107 9-118 29.5-104 61-78.5 96.5-28.5q80 75 188 75t188-75q56 0 96.5 28.5t61 78.5 29.5 104 9 118zm-154-519q0 94-67.5 160.5t-162.5 66.5-162.5-66.5-67.5-160.5 67.5-160.5 162.5-66.5 162.5 66.5 67.5 160.5zm282 893v-1376h-1024v1376q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5-9.5t9.5-22.5zm128-1472v1472q0 66-47 113t-113 47h-960q-66 0-113-47t-47-113v-1472q0-66 47-113t113-47h352v96q0 14 9 23t23 9h192q14 0 23-9t9-23v-96h352q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/id-card-o.svg b/img/icons/font-awesome/id-card-o.svg
new file mode 100644
index 00000000..54905c44
--- /dev/null
+++ b/img/icons/font-awesome/id-card-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 1212q0 55-31.5 93.5t-75.5 38.5h-426q-44 0-75.5-38.5t-31.5-93.5q0-54 7.5-100.5t24.5-90 51-68.5 81-25q64 64 156 64t156-64q47 0 81 25t51 68.5 24.5 90 7.5 100.5zm-128-444q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm1024 416v64q0 14-9 23t-23 9h-704q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h704q14 0 23 9t9 23zm-384-256v64q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h320q14 0 23 9t9 23zm384 0v64q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h192q14 0 23 9t9 23zm0-256v64q0 14-9 23t-23 9h-704q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h704q14 0 23 9t9 23zm128 832v-1120h-1792v1120q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5-9.5t9.5-22.5zm128-1216v1216q0 66-47 113t-113 47h-1728q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1728q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/id-card.svg b/img/icons/font-awesome/id-card.svg
new file mode 100644
index 00000000..27f68422
--- /dev/null
+++ b/img/icons/font-awesome/id-card.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 1212q0-54-7.5-100.5t-24.5-90-51-68.5-81-25q-64 64-156 64t-156-64q-47 0-81 25t-51 68.5-24.5 90-7.5 100.5q0 55 31.5 93.5t75.5 38.5h426q44 0 75.5-38.5t31.5-93.5zm-128-444q0-80-56-136t-136-56-136 56-56 136 56 136 136 56 136-56 56-136zm1024 480v-64q0-14-9-23t-23-9h-704q-14 0-23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23-9t9-23zm-384-256v-64q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v64q0 14 9 23t23 9h320q14 0 23-9t9-23zm384 0v-64q0-14-9-23t-23-9h-192q-14 0-23 9t-9 23v64q0 14 9 23t23 9h192q14 0 23-9t9-23zm0-256v-64q0-14-9-23t-23-9h-704q-14 0-23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23-9t9-23zm-1664-352h1792v-96q0-14-9-23t-23-9h-1728q-14 0-23 9t-9 23v96zm1920-96v1216q0 66-47 113t-113 47h-1728q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1728q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/ils.svg b/img/icons/font-awesome/ils.svg
new file mode 100644
index 00000000..b4705e51
--- /dev/null
+++ b/img/icons/font-awesome/ils.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1120 624v496q0 14-9 23t-23 9h-160q-14 0-23-9t-9-23v-496q0-112-80-192t-192-80h-272v1152q0 14-9 23t-23 9h-160q-14 0-23-9t-9-23v-1344q0-14 9-23t23-9h464q135 0 249 66.5t180.5 180.5 66.5 249zm384-464v880q0 135-66.5 249t-180.5 180.5-249 66.5h-464q-14 0-23-9t-9-23v-960q0-14 9-23t23-9h160q14 0 23 9t9 23v768h272q112 0 192-80t80-192v-880q0-14 9-23t23-9h160q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/image.svg b/img/icons/font-awesome/image.svg
new file mode 100644
index 00000000..b1fb7e26
--- /dev/null
+++ b/img/icons/font-awesome/image.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 576q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm1024 384v448h-1408v-192l320-320 160 160 512-512zm96-704h-1600q-13 0-22.5 9.5t-9.5 22.5v1216q0 13 9.5 22.5t22.5 9.5h1600q13 0 22.5-9.5t9.5-22.5v-1216q0-13-9.5-22.5t-22.5-9.5zm160 32v1216q0 66-47 113t-113 47h-1600q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1600q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/imdb.svg b/img/icons/font-awesome/imdb.svg
new file mode 100644
index 00000000..ef50f086
--- /dev/null
+++ b/img/icons/font-awesome/imdb.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1050 797v182q0 4 .5 15t0 15l-1.5 12-3.5 11.5-6.5 7.5-11 5.5-16 1.5v-309q9 0 16 1t11 5 6.5 5.5 3.5 9.5 1 10.5v27.5zm316 96v121q0 1 .5 12.5t0 15.5-2.5 11.5-7.5 10.5-13.5 3q-9 0-14-9-4-10-4-165v-24.5l1.5-8.5 3.5-7 5-5.5 8-1.5q6 0 10 1.5t6.5 4.5 4 6 2 8.5.5 8v18.5zm-1058 236h122v-472h-122v472zm434 0h106v-472h-159l-28 221q-20-148-32-221h-158v472h107v-312l45 312h76l43-319v319zm425-305q0-67-5-90-3-16-11-28.5t-17-20.5-25-14-26.5-8.5-31-4-29-1.5h-132.5v472h56q169 1 197-24.5t25-180.5q-1-62-1-100zm317 197v-133q0-29-2-45t-9.5-33.5-24.5-25-46-7.5q-46 0-77 34v-154h-117v472h110l7-30q30 36 77 36 50 0 66-30.5t16-83.5zm180-733v1216q0 66-47 113t-113 47h-1216q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1216q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/inbox.svg b/img/icons/font-awesome/inbox.svg
new file mode 100644
index 00000000..e4ae6418
--- /dev/null
+++ b/img/icons/font-awesome/inbox.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1151 960h316q-1-3-2.5-8.5t-2.5-7.5l-212-496h-708l-212 496q-1 3-2.5 8.5t-2.5 7.5h316l95 192h320zm513 30v482q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-482q0-62 25-123l238-552q10-25 36.5-42t52.5-17h832q26 0 52.5 17t36.5 42l238 552q25 61 25 123z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/indent.svg b/img/icons/font-awesome/indent.svg
new file mode 100644
index 00000000..cf26f1f6
--- /dev/null
+++ b/img/icons/font-awesome/indent.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M352 832q0 14-9 23l-288 288q-9 9-23 9-13 0-22.5-9.5t-9.5-22.5v-576q0-13 9.5-22.5t22.5-9.5q14 0 23 9l288 288q9 9 9 23zm1440 480v192q0 13-9.5 22.5t-22.5 9.5h-1728q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1728q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5h-1088q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1088q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5h-1088q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1088q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5h-1728q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1728q13 0 22.5 9.5t9.5 22.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/industry.svg b/img/icons/font-awesome/industry.svg
new file mode 100644
index 00000000..e02c8290
--- /dev/null
+++ b/img/icons/font-awesome/industry.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M448 0q26 0 45 19t19 45v891l536-429q17-14 40-14 26 0 45 19t19 45v379l536-429q17-14 40-14 26 0 45 19t19 45v1152q0 26-19 45t-45 19h-1664q-26 0-45-19t-19-45v-1664q0-26 19-45t45-19h384z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/info-circle.svg b/img/icons/font-awesome/info-circle.svg
new file mode 100644
index 00000000..281f4265
--- /dev/null
+++ b/img/icons/font-awesome/info-circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 1376v-160q0-14-9-23t-23-9h-96v-512q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896v-160q0-14-9-23t-23-9h-192q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/info.svg b/img/icons/font-awesome/info.svg
new file mode 100644
index 00000000..f32adf7f
--- /dev/null
+++ b/img/icons/font-awesome/info.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1216 1344v128q0 26-19 45t-45 19h-512q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h64v-384h-64q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h384q26 0 45 19t19 45v576h64q26 0 45 19t19 45zm-128-1152v192q0 26-19 45t-45 19h-256q-26 0-45-19t-19-45v-192q0-26 19-45t45-19h256q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/inr.svg b/img/icons/font-awesome/inr.svg
new file mode 100644
index 00000000..c15c2a62
--- /dev/null
+++ b/img/icons/font-awesome/inr.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1345 470v102q0 14-9 23t-23 9h-168q-23 144-129 234t-276 110q167 178 459 536 14 16 4 34-8 18-29 18h-195q-16 0-25-12-306-367-498-571-9-9-9-22v-127q0-13 9.5-22.5t22.5-9.5h112q132 0 212.5-43t102.5-125h-427q-14 0-23-9t-9-23v-102q0-14 9-23t23-9h413q-57-113-268-113h-145q-13 0-22.5-9.5t-9.5-22.5v-133q0-14 9-23t23-9h832q14 0 23 9t9 23v102q0 14-9 23t-23 9h-233q47 61 64 144h171q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/instagram.svg b/img/icons/font-awesome/instagram.svg
new file mode 100644
index 00000000..a7e12a07
--- /dev/null
+++ b/img/icons/font-awesome/instagram.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm138 0q0 164-115 279t-279 115-279-115-115-279 115-279 279-115 279 115 115 279zm108-410q0 38-27 65t-65 27-65-27-27-65 27-65 65-27 65 27 27 65zm-502-220q-7 0-76.5-.5t-105.5 0-96.5 3-103 10-71.5 18.5q-50 20-88 58t-58 88q-11 29-18.5 71.5t-10 103-3 96.5 0 105.5.5 76.5-.5 76.5 0 105.5 3 96.5 10 103 18.5 71.5q20 50 58 88t88 58q29 11 71.5 18.5t103 10 96.5 3 105.5 0 76.5-.5 76.5.5 105.5 0 96.5-3 103-10 71.5-18.5q50-20 88-58t58-88q11-29 18.5-71.5t10-103 3-96.5 0-105.5-.5-76.5.5-76.5 0-105.5-3-96.5-10-103-18.5-71.5q-20-50-58-88t-88-58q-29-11-71.5-18.5t-103-10-96.5-3-105.5 0-76.5.5zm768 630q0 229-5 317-10 208-124 322t-322 124q-88 5-317 5t-317-5q-208-10-322-124t-124-322q-5-88-5-317t5-317q10-208 124-322t322-124q88-5 317-5t317 5q208 10 322 124t124 322q5 88 5 317z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/institution.svg b/img/icons/font-awesome/institution.svg
new file mode 100644
index 00000000..4c514037
--- /dev/null
+++ b/img/icons/font-awesome/institution.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M960 0l960 384v128h-128q0 26-20.5 45t-48.5 19h-1526q-28 0-48.5-19t-20.5-45h-128v-128zm-704 640h256v768h128v-768h256v768h128v-768h256v768h128v-768h256v768h59q28 0 48.5 19t20.5 45v64h-1664v-64q0-26 20.5-45t48.5-19h59v-768zm1595 960q28 0 48.5 19t20.5 45v128h-1920v-128q0-26 20.5-45t48.5-19h1782z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/internet-explorer.svg b/img/icons/font-awesome/internet-explorer.svg
new file mode 100644
index 00000000..f1678fc2
--- /dev/null
+++ b/img/icons/font-awesome/internet-explorer.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 937q0 56-7 104h-1151q0 146 109.5 244.5t257.5 98.5q99 0 185.5-46.5t136.5-130.5h423q-56 159-170.5 281t-267.5 188.5-321 66.5q-187 0-356-83-228 116-394 116-237 0-237-263 0-115 45-275 17-60 109-229 199-360 475-606-184 79-427 354 63-274 283.5-449.5t501.5-175.5q30 0 45 1 255-117 433-117 64 0 116 13t94.5 40.5 66.5 76.5 24 115q0 116-75 286 101 182 101 390zm-70-640q0-83-53-132t-137-49q-108 0-254 70 121 47 222.5 131.5t170.5 195.5q51-135 51-216zm-1594 1237q0 86 48.5 132.5t134.5 46.5q115 0 266-83-122-72-213.5-183t-137.5-245q-98 205-98 332zm504-713h728q-5-142-113-237t-251-95q-144 0-251.5 95t-112.5 237z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/intersex.svg b/img/icons/font-awesome/intersex.svg
new file mode 100644
index 00000000..7e7dc408
--- /dev/null
+++ b/img/icons/font-awesome/intersex.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 32q0-14 9-23t23-9h288q26 0 45 19t19 45v288q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-134l-254 255q126 158 126 359 0 221-147.5 384.5t-364.5 187.5v132h96q14 0 23 9t9 23v64q0 14-9 23t-23 9h-96v96q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-96h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96v-132q-149-16-270.5-103t-186.5-223.5-53-291.5q16-204 160-353.5t347-172.5q118-14 228 19t198 103l255-254h-134q-14 0-23-9t-9-23v-64zm-448 1248q185 0 316.5-131.5t131.5-316.5-131.5-316.5-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/ioxhost.svg b/img/icons/font-awesome/ioxhost.svg
new file mode 100644
index 00000000..92901dfc
--- /dev/null
+++ b/img/icons/font-awesome/ioxhost.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1463 832q0 35-25 60.5t-61 25.5h-702q-36 0-61-25.5t-25-60.5 25-60.5 61-25.5h702q36 0 61 25.5t25 60.5zm214 0q0-86-23-170h-982q-36 0-61-25t-25-60q0-36 25-61t61-25h908q-88-143-235-227t-320-84q-177 0-327.5 87.5t-238 237.5-87.5 327q0 86 23 170h982q36 0 61 25t25 60q0 36-25 61t-61 25h-908q88 143 235.5 227t320.5 84q132 0 253-51.5t208-139 139-208 52-253.5zm371-255q0 35-25 60t-61 25h-131q17 85 17 170 0 167-65.5 319.5t-175.5 263-262.5 176-319.5 65.5q-246 0-448.5-133t-301.5-350h-189q-36 0-61-25t-25-61q0-35 25-60t61-25h132q-17-85-17-170 0-167 65.5-319.5t175.5-263 262.5-176 320.5-65.5q245 0 447.5 133t301.5 350h188q36 0 61 25t25 61z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/italic.svg b/img/icons/font-awesome/italic.svg
new file mode 100644
index 00000000..5a36e0b5
--- /dev/null
+++ b/img/icons/font-awesome/italic.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M384 1662l17-85q22-7 61.5-16.5t72-19 59.5-23.5q28-35 41-101 1-7 62-289t114-543.5 52-296.5v-25q-24-13-54.5-18.5t-69.5-8-58-5.5l19-103q33 2 120 6.5t149.5 7 120.5 2.5q48 0 98.5-2.5t121-7 98.5-6.5q-5 39-19 89-30 10-101.5 28.5t-108.5 33.5q-8 19-14 42.5t-9 40-7.5 45.5-6.5 42q-27 148-87.5 419.5t-77.5 355.5q-2 9-13 58t-20 90-16 83.5-6 57.5l1 18q17 4 185 31-3 44-16 99-11 0-32.5 1.5t-32.5 1.5q-29 0-87-10t-86-10q-138-2-206-2-51 0-143 9t-121 11z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/joomla.svg b/img/icons/font-awesome/joomla.svg
new file mode 100644
index 00000000..ad0a0c08
--- /dev/null
+++ b/img/icons/font-awesome/joomla.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1198 1073l-160 160-151 152-30 30q-65 64-151.5 87t-171.5 2q-16 70-72 115t-129 45q-85 0-145-60.5t-60-145.5q0-72 44.5-128t113.5-72q-22-86 1-173t88-152l12-12 151 152-11 11q-37 37-37 89t37 90q37 37 89 37t89-37l30-30 151-152 161-160zm-341-682l12 12-152 152-12-12q-37-37-89-37t-89 37-37 89.5 37 89.5l29 29 152 152 160 160-151 152-161-160-151-152-30-30q-68-67-90-159.5t5-179.5q-70-15-115-71t-45-129q0-85 60-145.5t145-60.5q76 0 133.5 49t69.5 123q84-20 169.5 3.5t149.5 87.5zm807 1067q0 85-60 145.5t-145 60.5q-74 0-131-47t-71-118q-86 28-179.5 6t-161.5-90l-11-12 151-152 12 12q37 37 89 37t89-37 37-89-37-89l-30-30-152-152-160-160 152-152 160 160 152 152 29 30q64 64 87.5 150.5t2.5 171.5q76 11 126.5 68.5t50.5 134.5zm-2-1124q0 77-51 135t-127 69q26 85 3 176.5t-90 158.5l-12 12-151-152 12-12q37-37 37-89t-37-89-89-37-89 37l-30 30-152 152-160 160-152-152 161-160 152-152 29-30q67-67 159-89.5t178 3.5q11-75 68.5-126t135.5-51q85 0 145 60.5t60 145.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/jpy.svg b/img/icons/font-awesome/jpy.svg
new file mode 100644
index 00000000..a46b2afa
--- /dev/null
+++ b/img/icons/font-awesome/jpy.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M985.5 1536h-172q-13 0-22.5-9t-9.5-23v-330h-288q-13 0-22.5-9t-9.5-23v-103q0-13 9.5-22.5t22.5-9.5h288v-85h-288q-13 0-22.5-9t-9.5-23v-104q0-13 9.5-22.5t22.5-9.5h214l-321-578q-8-16 0-32 10-16 28-16h194q19 0 29 18l215 425q19 38 56 125 10-24 30.5-68t27.5-61l191-420q8-19 29-19h191q17 0 27 16 9 14 1 31l-313 579h215q13 0 22.5 9.5t9.5 22.5v104q0 14-9.5 23t-22.5 9h-290v85h290q13 0 22.5 9.5t9.5 22.5v103q0 14-9.5 23t-22.5 9h-290v330q0 13-9.5 22.5t-22.5 9.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/jsfiddle.svg b/img/icons/font-awesome/jsfiddle.svg
new file mode 100644
index 00000000..43cbdf79
--- /dev/null
+++ b/img/icons/font-awesome/jsfiddle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1800 772q111 46 179.5 145.5t68.5 221.5q0 164-118 280.5t-285 116.5q-4 0-11.5-.5t-10.5-.5h-1217q-170-10-288-125.5t-118-280.5q0-110 55-203t147-147q-12-39-12-82 0-115 82-196t199-81q95 0 172 58 75-154 222.5-248t326.5-94q166 0 306 80.5t221.5 218.5 81.5 301q0 6-.5 18t-.5 18zm-1332 266q0 122 84 193t208 71q137 0 240-99-16-20-47.5-56.5t-43.5-50.5q-67 65-144 65-55 0-93.5-33.5t-38.5-87.5q0-53 38.5-87t91.5-34q44 0 84.5 21t73 55 65 75 69 82 77 75 97 55 121.5 21q121 0 204.5-71.5t83.5-190.5q0-121-84-192t-207-71q-143 0-241 97l93 108q66-64 142-64 52 0 92 33t40 84q0 57-37 91.5t-94 34.5q-43 0-82.5-21t-72-55-65.5-75-69.5-82-77.5-75-96.5-55-118.5-21q-122 0-207 70.5t-85 189.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/key.svg b/img/icons/font-awesome/key.svg
new file mode 100644
index 00000000..34ed57a0
--- /dev/null
+++ b/img/icons/font-awesome/key.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5t-102.5-265.5q0-160 95-313t248-248 313-95q163 0 265.5 102.5t102.5 265.5q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/keyboard-o.svg b/img/icons/font-awesome/keyboard-o.svg
new file mode 100644
index 00000000..d7f7ba44
--- /dev/null
+++ b/img/icons/font-awesome/keyboard-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M448 1168v96q0 16-16 16h-96q-16 0-16-16v-96q0-16 16-16h96q16 0 16 16zm128-256v96q0 16-16 16h-224q-16 0-16-16v-96q0-16 16-16h224q16 0 16 16zm-128-256v96q0 16-16 16h-96q-16 0-16-16v-96q0-16 16-16h96q16 0 16 16zm1024 512v96q0 16-16 16h-864q-16 0-16-16v-96q0-16 16-16h864q16 0 16 16zm-640-256v96q0 16-16 16h-96q-16 0-16-16v-96q0-16 16-16h96q16 0 16 16zm-128-256v96q0 16-16 16h-96q-16 0-16-16v-96q0-16 16-16h96q16 0 16 16zm384 256v96q0 16-16 16h-96q-16 0-16-16v-96q0-16 16-16h96q16 0 16 16zm-128-256v96q0 16-16 16h-96q-16 0-16-16v-96q0-16 16-16h96q16 0 16 16zm384 256v96q0 16-16 16h-96q-16 0-16-16v-96q0-16 16-16h96q16 0 16 16zm384 256v96q0 16-16 16h-96q-16 0-16-16v-96q0-16 16-16h96q16 0 16 16zm-512-512v96q0 16-16 16h-96q-16 0-16-16v-96q0-16 16-16h96q16 0 16 16zm256 0v96q0 16-16 16h-96q-16 0-16-16v-96q0-16 16-16h96q16 0 16 16zm256 0v352q0 16-16 16h-224q-16 0-16-16v-96q0-16 16-16h112v-240q0-16 16-16h96q16 0 16 16zm128 752v-896h-1664v896h1664zm128-896v896q0 53-37.5 90.5t-90.5 37.5h-1664q-53 0-90.5-37.5t-37.5-90.5v-896q0-53 37.5-90.5t90.5-37.5h1664q53 0 90.5 37.5t37.5 90.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/krw.svg b/img/icons/font-awesome/krw.svg
new file mode 100644
index 00000000..8167b53f
--- /dev/null
+++ b/img/icons/font-awesome/krw.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M514 1195l81-299h-159l75 300q1 1 1 3t1 3q0-1 .5-3.5t.5-3.5zm116-427l35-128h-292l32 128h225zm192 0h139l-35-128h-70zm449 428l78-300h-162l81 299q0 1 .5 3.5t1.5 3.5q0-1 .5-3t.5-3zm111-428l33-128h-297l34 128h230zm410 32v64q0 14-9 23t-23 9h-213l-164 616q-7 24-31 24h-159q-24 0-31-24l-166-616h-209l-167 616q-7 24-31 24h-159q-11 0-19.5-7t-10.5-17l-160-616h-208q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h175l-33-128h-142q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h109l-89-344q-5-15 5-28 10-12 26-12h137q26 0 31 24l90 360h359l97-360q7-24 31-24h126q24 0 31 24l98 360h365l93-360q5-24 31-24h137q16 0 26 12 10 13 5 28l-91 344h111q14 0 23 9t9 23v64q0 14-9 23t-23 9h-145l-34 128h179q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/language.svg b/img/icons/font-awesome/language.svg
new file mode 100644
index 00000000..793337cd
--- /dev/null
+++ b/img/icons/font-awesome/language.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M782 1078q-1 3-12.5-.5t-31.5-11.5l-20-9q-44-20-87-49-7-5-41-31.5t-38-28.5q-67 103-134 181-81 95-105 110-4 2-19.5 4t-18.5 0q6-4 82-92 21-24 85.5-115t78.5-118q17-30 51-98.5t36-77.5q-8-1-110 33-8 2-27.5 7.5t-34.5 9.5-17 5q-2 2-2 10.5t-1 9.5q-5 10-31 15-23 7-47 0-18-4-28-21-4-6-5-23 6-2 24.5-5t29.5-6q58-16 105-32 100-35 102-35 10-2 43-19.5t44-21.5q9-3 21.5-8t14.5-5.5 6 .5q2 12-1 33 0 2-12.5 27t-26.5 53.5-17 33.5q-25 50-77 131l64 28q12 6 74.5 32t67.5 28q4 1 10.5 25.5t4.5 30.5zm-205-486q3 15-4 28-12 23-50 38-30 12-60 12-26-3-49-26-14-15-18-41l1-3q3 3 19.5 5t26.5 0 58-16q36-12 55-14 17 0 21 17zm698 129l63 227-139-42zm-1108 800l694-232v-1032l-694 233v1031zm1241-317l102 31-181-657-100-31-216 536 102 31 45-110 211 65zm-503-962l573 184v-380zm311 1323l158 13-54 160-40-66q-130 83-276 108-58 12-91 12h-84q-79 0-199.5-39t-183.5-85q-8-7-8-16 0-8 5-13.5t13-5.5q4 0 18 7.5t30.5 16.5 20.5 11q73 37 159.5 61.5t157.5 24.5q95 0 167-14.5t157-50.5q15-7 30.5-15.5t34-19 28.5-16.5zm448-1079v1079l-774-246q-14 6-375 127.5t-368 121.5q-13 0-18-13 0-1-1-3v-1078q3-9 4-10 5-6 20-11 107-36 149-50v-384l558 198q2 0 160.5-55t316-108.5 161.5-53.5q20 0 20 21v418z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/laptop.svg b/img/icons/font-awesome/laptop.svg
new file mode 100644
index 00000000..a9d18d80
--- /dev/null
+++ b/img/icons/font-awesome/laptop.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M480 1280q-66 0-113-47t-47-113v-704q0-66 47-113t113-47h1088q66 0 113 47t47 113v704q0 66-47 113t-113 47h-1088zm-32-864v704q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5-9.5t9.5-22.5v-704q0-13-9.5-22.5t-22.5-9.5h-1088q-13 0-22.5 9.5t-9.5 22.5zm1376 928h160v96q0 40-47 68t-113 28h-1600q-66 0-113-28t-47-68v-96h1760zm-720 96q16 0 16-16t-16-16h-160q-16 0-16 16t16 16h160z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/lastfm-square.svg b/img/icons/font-awesome/lastfm-square.svg
new file mode 100644
index 00000000..7d964f8b
--- /dev/null
+++ b/img/icons/font-awesome/lastfm-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1560 1052q0-173-234-239-35-10-53-16.5t-38-25-29-46.5q0-2-2-8.5t-3-12-1-7.5q0-36 24.5-59.5t60.5-23.5q54 0 71 15h-1q20 15 39 51l93-71q-39-54-49-64-33-29-67.5-39t-85.5-10q-80 0-142 57.5t-62 137.5q0 7 2 23 16 96 64.5 140t148.5 73q29 8 49 15.5t45 21.5 38.5 34.5 13.5 46.5v5q1 58-40.5 93t-100.5 35q-97 0-167-144-23-47-51.5-121.5t-48-125.5-54-110.5-74-95.5-103.5-60.5-147-24.5q-101 0-192 56t-144 148-50 192v1q4 108 50.5 199t133.5 147.5 196 56.5q186 0 279-110 20-27 31-51l-60-109q-42 80-99 116t-146 36q-115 0-191-87t-76-204q0-105 82-189t186-84q112 0 170 53.5t104 172.5q8 21 25.5 68.5t28.5 76.5 31.5 74.5 38.5 74 45.5 62.5 55.5 53.5 66 33 80 13.5q107 0 183-69.5t76-174.5zm104-636v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/lastfm.svg b/img/icons/font-awesome/lastfm.svg
new file mode 100644
index 00000000..24935848
--- /dev/null
+++ b/img/icons/font-awesome/lastfm.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1292 704q0 6 10 41 10 29 25 49.5t41 34 44 20 55 16.5q325 91 325 332 0 146-105.5 242.5t-254.5 96.5q-59 0-111.5-18.5t-91.5-45.5-77-74.5-63-87.5-53.5-103.5-43.5-103-39.5-106.5-35.5-95q-32-81-61.5-133.5t-73.5-96.5-104-64-142-20q-96 0-183 55.5t-138 144.5-51 185q0 160 106.5 279.5t263.5 119.5q177 0 258-95 56-63 83-116l84 152q-15 34-44 70l1 1q-131 152-388 152-147 0-269.5-79t-190.5-207.5-68-274.5q0-105 43.5-206t116-176.5 172-121.5 204.5-46q87 0 159 19t123.5 50 95 80 72.5 99 58.5 117 50.5 124.5 50 130.5 55 127q96 200 233 200 81 0 138.5-48.5t57.5-128.5q0-42-19-72t-50.5-46-72.5-31.5-84.5-27-87.5-34-81-52-65-82-39-122.5q-3-16-3-33 0-110 87.5-192t198.5-78q78 3 120.5 14.5t90.5 53.5h-1q12 11 23 24.5t26 36 19 27.5l-129 99q-26-49-54-70v-1q-23-21-97-21-49 0-84 33t-35 83z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/leaf.svg b/img/icons/font-awesome/leaf.svg
new file mode 100644
index 00000000..aa62b0b6
--- /dev/null
+++ b/img/icons/font-awesome/leaf.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1280 704q0-26-19-45t-45-19q-172 0-318 49.5t-259.5 134-235.5 219.5q-19 21-19 45 0 26 19 45t45 19q24 0 45-19 27-24 74-71t67-66q137-124 268.5-176t313.5-52q26 0 45-19t19-45zm512-198q0 95-20 193-46 224-184.5 383t-357.5 268q-214 108-438 108-148 0-286-47-15-5-88-42t-96-37q-16 0-39.5 32t-45 70-52.5 70-60 32q-43 0-63.5-17.5t-45.5-59.5q-2-4-6-11t-5.5-10-3-9.5-1.5-13.5q0-35 31-73.5t68-65.5 68-56 31-48q0-4-14-38t-16-44q-9-51-9-104 0-115 43.5-220t119-184.5 170.5-139 204-95.5q55-18 145-25.5t179.5-9 178.5-6 163.5-24 113.5-56.5l29.5-29.5 29.5-28 27-20 36.5-16 43.5-4.5q39 0 70.5 46t47.5 112 24 124 8 96z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/leanpub.svg b/img/icons/font-awesome/leanpub.svg
new file mode 100644
index 00000000..5f3aaf9d
--- /dev/null
+++ b/img/icons/font-awesome/leanpub.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1893 392l155 1272q-131 0-257-57-200-91-393-91-226 0-374 148-148-148-374-148-193 0-393 91-128 57-252 57h-5l155-1272q224-127 482-127 233 0 387 106 154-106 387-106 258 0 482 127zm-495 987q129 0 232 28.5t260 93.5l-124-1021q-171-78-368-78-224 0-374 141-150-141-374-141-197 0-368 78l-124 1021q105-43 165.5-65t148.5-39.5 178-17.5q202 0 374 108 172-108 374-108zm40-34l-55-907q-211 4-359 155-152-155-374-155-176 0-336 66l-114 941q124-51 228.5-76t221.5-25q209 0 374 102 172-107 374-102z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/legal.svg b/img/icons/font-awesome/legal.svg
new file mode 100644
index 00000000..569420d7
--- /dev/null
+++ b/img/icons/font-awesome/legal.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1771 1536q0 53-37 90l-107 108q-39 37-91 37-53 0-90-37l-363-364q-38-36-38-90 0-53 43-96l-256-256-126 126q-14 14-34 14t-34-14q2 2 12.5 12t12.5 13 10 11.5 10 13.5 6 13.5 5.5 16.5 1.5 18q0 38-28 68-3 3-16.5 18t-19 20.5-18.5 16.5-22 15.5-22 9-26 4.5q-40 0-68-28l-408-408q-28-28-28-68 0-13 4.5-26t9-22 15.5-22 16.5-18.5 20.5-19 18-16.5q30-28 68-28 10 0 18 1.5t16.5 5.5 13.5 6 13.5 10 11.5 10 13 12.5 12 12.5q-14-14-14-34t14-34l348-348q14-14 34-14t34 14q-2-2-12.5-12t-12.5-13-10-11.5-10-13.5-6-13.5-5.5-16.5-1.5-18q0-38 28-68 3-3 16.5-18t19-20.5 18.5-16.5 22-15.5 22-9 26-4.5q40 0 68 28l408 408q28 28 28 68 0 13-4.5 26t-9 22-15.5 22-16.5 18.5-20.5 19-18 16.5q-30 28-68 28-10 0-18-1.5t-16.5-5.5-13.5-6-13.5-10-11.5-10-13-12.5-12-12.5q14 14 14 34t-14 34l-126 126 256 256q43-43 96-43 52 0 91 37l363 363q37 39 37 91z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/lemon-o.svg b/img/icons/font-awesome/lemon-o.svg
new file mode 100644
index 00000000..34e004b0
--- /dev/null
+++ b/img/icons/font-awesome/lemon-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1535 826q0-44-7-113.5t-18-96.5q-12-30-17-44t-9-36.5-4-48.5q0-23 5-68.5t5-67.5q0-37-10-55-4-1-13-1-19 0-58 4.5t-59 4.5q-60 0-176-24t-175-24q-43 0-94.5 11.5t-85 23.5-89.5 34q-137 54-202 103-96 73-159.5 189.5t-88 236-24.5 248.5q0 40 12.5 120t12.5 121q0 23-11 66.5t-11 65.5 12 36.5 34 14.5q24 0 72.5-11t73.5-11q57 0 169.5 15.5t169.5 15.5q181 0 284-36 129-45 235.5-152.5t166-245.5 59.5-275zm128-2q0 165-70 327.5t-196 288-281 180.5q-124 44-326 44-57 0-170-14.5t-169-14.5q-24 0-72.5 14.5t-73.5 14.5q-73 0-123.5-55.5t-50.5-128.5q0-24 11-68t11-67q0-40-12.5-120.5t-12.5-121.5q0-111 18-217.5t54.5-209.5 100.5-194 150-156q78-59 232-120 194-78 316-78 60 0 175.5 24t173.5 24q19 0 57-5t58-5q81 0 118 50.5t37 134.5q0 23-5 68t-5 68q0 13 2 25t3.5 16.5 7.5 20.5 8 20q16 40 25 118.5t9 136.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/level-down.svg b/img/icons/font-awesome/level-down.svg
new file mode 100644
index 00000000..cba67173
--- /dev/null
+++ b/img/icons/font-awesome/level-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M416 256h704q13 0 22.5 9.5t9.5 23.5v863h192q40 0 58 37t-9 69l-320 384q-18 22-49 22t-49-22l-320-384q-26-31-9-69 18-37 58-37h192v-640h-320q-14 0-25-11l-160-192q-13-14-4-34 9-19 29-19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/level-up.svg b/img/icons/font-awesome/level-up.svg
new file mode 100644
index 00000000..7c6311ea
--- /dev/null
+++ b/img/icons/font-awesome/level-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1402 603q-18 37-58 37h-192v864q0 14-9 23t-23 9h-704q-21 0-29-18-8-20 4-35l160-192q9-11 25-11h320v-640h-192q-40 0-58-37-17-37 9-68l320-384q18-22 49-22t49 22l320 384q27 32 9 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/life-bouy.svg b/img/icons/font-awesome/life-bouy.svg
new file mode 100644
index 00000000..a1539f54
--- /dev/null
+++ b/img/icons/font-awesome/life-bouy.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 0q182 0 348 71t286 191 191 286 71 348-71 348-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71zm0 128q-190 0-361 90l194 194q82-28 167-28t167 28l194-194q-171-90-361-90zm-678 1129l194-194q-28-82-28-167t28-167l-194-194q-90 171-90 361t90 361zm678 407q190 0 361-90l-194-194q-82 28-167 28t-167-28l-194 194q171 90 361 90zm0-384q159 0 271.5-112.5t112.5-271.5-112.5-271.5-271.5-112.5-271.5 112.5-112.5 271.5 112.5 271.5 271.5 112.5zm484-217l194 194q90-171 90-361t-90-361l-194 194q28 82 28 167t-28 167z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/life-buoy.svg b/img/icons/font-awesome/life-buoy.svg
new file mode 100644
index 00000000..a1539f54
--- /dev/null
+++ b/img/icons/font-awesome/life-buoy.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 0q182 0 348 71t286 191 191 286 71 348-71 348-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71zm0 128q-190 0-361 90l194 194q82-28 167-28t167 28l194-194q-171-90-361-90zm-678 1129l194-194q-28-82-28-167t28-167l-194-194q-90 171-90 361t90 361zm678 407q190 0 361-90l-194-194q-82 28-167 28t-167-28l-194 194q171 90 361 90zm0-384q159 0 271.5-112.5t112.5-271.5-112.5-271.5-271.5-112.5-271.5 112.5-112.5 271.5 112.5 271.5 271.5 112.5zm484-217l194 194q90-171 90-361t-90-361l-194 194q28 82 28 167t-28 167z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/life-ring.svg b/img/icons/font-awesome/life-ring.svg
new file mode 100644
index 00000000..a1539f54
--- /dev/null
+++ b/img/icons/font-awesome/life-ring.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 0q182 0 348 71t286 191 191 286 71 348-71 348-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71zm0 128q-190 0-361 90l194 194q82-28 167-28t167 28l194-194q-171-90-361-90zm-678 1129l194-194q-28-82-28-167t28-167l-194-194q-90 171-90 361t90 361zm678 407q190 0 361-90l-194-194q-82 28-167 28t-167-28l-194 194q171 90 361 90zm0-384q159 0 271.5-112.5t112.5-271.5-112.5-271.5-271.5-112.5-271.5 112.5-112.5 271.5 112.5 271.5 271.5 112.5zm484-217l194 194q90-171 90-361t-90-361l-194 194q28 82 28 167t-28 167z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/life-saver.svg b/img/icons/font-awesome/life-saver.svg
new file mode 100644
index 00000000..a1539f54
--- /dev/null
+++ b/img/icons/font-awesome/life-saver.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 0q182 0 348 71t286 191 191 286 71 348-71 348-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71zm0 128q-190 0-361 90l194 194q82-28 167-28t167 28l194-194q-171-90-361-90zm-678 1129l194-194q-28-82-28-167t28-167l-194-194q-90 171-90 361t90 361zm678 407q190 0 361-90l-194-194q-82 28-167 28t-167-28l-194 194q171 90 361 90zm0-384q159 0 271.5-112.5t112.5-271.5-112.5-271.5-271.5-112.5-271.5 112.5-112.5 271.5 112.5 271.5 271.5 112.5zm484-217l194 194q90-171 90-361t-90-361l-194 194q28 82 28 167t-28 167z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/lightbulb-o.svg b/img/icons/font-awesome/lightbulb-o.svg
new file mode 100644
index 00000000..13b60f0e
--- /dev/null
+++ b/img/icons/font-awesome/lightbulb-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1120 576q0 13-9.5 22.5t-22.5 9.5-22.5-9.5-9.5-22.5q0-46-54-71t-106-25q-13 0-22.5-9.5t-9.5-22.5 9.5-22.5 22.5-9.5q50 0 99.5 16t87 54 37.5 90zm160 0q0-72-34.5-134t-90-101.5-123-62-136.5-22.5-136.5 22.5-123 62-90 101.5-34.5 134q0 101 68 180 10 11 30.5 33t30.5 33q128 153 141 298h228q13-145 141-298 10-11 30.5-33t30.5-33q68-79 68-180zm128 0q0 155-103 268-45 49-74.5 87t-59.5 95.5-34 107.5q47 28 47 82 0 37-25 64 25 27 25 64 0 52-45 81 13 23 13 47 0 46-31.5 71t-77.5 25q-20 44-60 70t-87 26-87-26-60-70q-46 0-77.5-25t-31.5-71q0-24 13-47-45-29-45-81 0-37 25-64-25-27-25-64 0-54 47-82-4-50-34-107.5t-59.5-95.5-74.5-87q-103-113-103-268 0-99 44.5-184.5t117-142 164-89 186.5-32.5 186.5 32.5 164 89 117 142 44.5 184.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/line-chart.svg b/img/icons/font-awesome/line-chart.svg
new file mode 100644
index 00000000..44890071
--- /dev/null
+++ b/img/icons/font-awesome/line-chart.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M2048 1536v128h-2048v-1536h128v1408h1920zm-128-1248v435q0 21-19.5 29.5t-35.5-7.5l-121-121-633 633q-10 10-23 10t-23-10l-233-233-416 416-192-192 585-585q10-10 23-10t23 10l233 233 464-464-121-121q-16-16-7.5-35.5t29.5-19.5h435q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/link.svg b/img/icons/font-awesome/link.svg
new file mode 100644
index 00000000..f1a0088a
--- /dev/null
+++ b/img/icons/font-awesome/link.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1520 1216q0-40-28-68l-208-208q-28-28-68-28-42 0-72 32 3 3 19 18.5t21.5 21.5 15 19 13 25.5 3.5 27.5q0 40-28 68t-68 28q-15 0-27.5-3.5t-25.5-13-19-15-21.5-21.5-18.5-19q-33 31-33 73 0 40 28 68l206 207q27 27 68 27 40 0 68-26l147-146q28-28 28-67zm-703-705q0-40-28-68l-206-207q-28-28-68-28-39 0-68 27l-147 146q-28 28-28 67 0 40 28 68l208 208q27 27 68 27 42 0 72-31-3-3-19-18.5t-21.5-21.5-15-19-13-25.5-3.5-27.5q0-40 28-68t68-28q15 0 27.5 3.5t25.5 13 19 15 21.5 21.5 18.5 19q33-31 33-73zm895 705q0 120-85 203l-147 146q-83 83-203 83-121 0-204-85l-206-207q-83-83-83-203 0-123 88-209l-88-88q-86 88-208 88-120 0-204-84l-208-208q-84-84-84-204t85-203l147-146q83-83 203-83 121 0 204 85l206 207q83 83 83 203 0 123-88 209l88 88q86-88 208-88 120 0 204 84l208 208q84 84 84 204z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/linkedin-square.svg b/img/icons/font-awesome/linkedin-square.svg
new file mode 100644
index 00000000..f0976ce1
--- /dev/null
+++ b/img/icons/font-awesome/linkedin-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M365 1414h231v-694h-231v694zm246-908q-1-52-36-86t-93-34-94.5 34-36.5 86q0 51 35.5 85.5t92.5 34.5h1q59 0 95-34.5t36-85.5zm585 908h231v-398q0-154-73-233t-193-79q-136 0-209 117h2v-101h-231q3 66 0 694h231v-388q0-38 7-56 15-35 45-59.5t74-24.5q116 0 116 157v371zm468-998v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/linkedin.svg b/img/icons/font-awesome/linkedin.svg
new file mode 100644
index 00000000..09ac3243
--- /dev/null
+++ b/img/icons/font-awesome/linkedin.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M477 625v991h-330v-991h330zm21-306q1 73-50.5 122t-135.5 49h-2q-82 0-132-49t-50-122q0-74 51.5-122.5t134.5-48.5 133 48.5 51 122.5zm1166 729v568h-329v-530q0-105-40.5-164.5t-126.5-59.5q-63 0-105.5 34.5t-63.5 85.5q-11 30-11 81v553h-329q2-399 2-647t-1-296l-1-48h329v144h-2q20-32 41-56t56.5-52 87-43.5 114.5-15.5q171 0 275 113.5t104 332.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/linode.svg b/img/icons/font-awesome/linode.svg
new file mode 100644
index 00000000..f4f60b39
--- /dev/null
+++ b/img/icons/font-awesome/linode.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M458 1535l202 214-34-236-216-213zm226 226l274-218-11-245-300 215zm-311-638l227 213-48-327-245-204zm250 224l317-214-14-324-352 200zm348 11l95 80-2-239-103-79q0 1 1 8.5t0 12-5 7.5l-78 52 85 70q7 6 7 88zm-705-752l256 200-68-465-279-173zm1035 663l15-234-230 164 2 240zm-756-455l373-194-19-441-423 163zm853 365l20-233-226-142-2 105 144 95q6 4 4 9l-7 119zm191-139l30-222-179 128-20 228zm-188 167l-71-49-8 117q0 5-4 8l-234 187q-7 5-14 0l-98-83 7 161q0 5-4 8l-293 234q-4 2-6 2-8-2-8-3l-228-242q-4-4-59-277-2-7 5-11l61-37q-94-86-95-92l-72-351q-2-7 6-12l94-45q-133-100-135-108l-96-466q-2-10 7-13l433-135q5 0 8 1l317 153q6 4 6 9l20 463q0 7-6 10l-118 61 126 85q5 2 5 8l5 123 121-74q5-4 11 0l84 56 3-110q0-6 5-9l206-126q6-3 11 0l245 135q4 4 5 7t-6.5 60-17.5 124.5-10 70.5q0 5-4 7l-191 153q-6 5-13 0z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/linux.svg b/img/icons/font-awesome/linux.svg
new file mode 100644
index 00000000..e83ecb9e
--- /dev/null
+++ b/img/icons/font-awesome/linux.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M791 411q-11 1-15.5 10.5t-8.5 9.5q-5 1-5-5 0-12 19-15h10zm87 14q-4 1-11.5-6.5t-17.5-4.5q24-11 32 2 3 6-3 9zm-351 427q-4-1-6 3t-4.5 12.5-5.5 13.5-10 13q-10 11-1 12 4 1 12.5-7t12.5-18q1-3 2-7t2-6 1.5-4.5.5-4v-3l-1-2.5-3-2zm855 359q0-18-55-42 4-15 7.5-27.5t5-26 3-21.5.5-22.5-1-19.5-3.5-22-4-20.5-5-25-5.5-26.5q-10-48-47-103t-72-75q24 20 57 83 87 162 54 278-11 40-50 42-31 4-38.5-18.5t-8-83.5-11.5-107q-9-39-19.5-69t-19.5-45.5-15.5-24.5-13-15-7.5-7q-14-62-31-103t-29.5-56-23.5-33-15-40q-4-21 6-53.5t4.5-49.5-44.5-25q-15-3-44.5-18t-35.5-16q-8-1-11-26t8-51 36-27q37-3 51 30t4 58q-11 19-2 26.5t30 .5q13-4 13-36v-37q-5-30-13.5-50t-21-30.5-23.5-15-27-7.5q-107 8-89 134 0 15-1 15-9-9-29.5-10.5t-33 .5-15.5-5q1-57-16-90t-45-34q-27-1-41.5 27.5t-16.5 59.5q-1 15 3.5 37t13 37.5 15.5 13.5q10-3 16-14 4-9-7-8-7 0-15.5-14.5t-9.5-33.5q-1-22 9-37t34-14q17 0 27 21t9.5 39-1.5 22q-22 15-31 29-8 12-27.5 23.5t-20.5 12.5q-13 14-15.5 27t7.5 18q14 8 25 19.5t16 19 18.5 13 35.5 6.5q47 2 102-15 2-1 23-7t34.5-10.5 29.5-13 21-17.5q9-14 20-8 5 3 6.5 8.5t-3 12-16.5 9.5q-20 6-56.5 21.5t-45.5 19.5q-44 19-70 23-25 5-79-2-10-2-9 2t17 19q25 23 67 22 17-1 36-7t36-14 33.5-17.5 30-17 24.5-12 17.5-2.5 8.5 11q0 2-1 4.5t-4 5-6 4.5-8.5 5-9 4.5-10 5-9.5 4.5q-28 14-67.5 44t-66.5 43-49 1q-21-11-63-73-22-31-25-22-1 3-1 10 0 25-15 56.5t-29.5 55.5-21 58 11.5 63q-23 6-62.5 90t-47.5 141q-2 18-1.5 69t-5.5 59q-8 24-29 3-32-31-36-94-2-28 4-56 4-19-1-18-2 1-4 5-36 65 10 166 5 12 25 28t24 20q20 23 104 90.5t93 76.5q16 15 17.5 38t-14 43-45.5 23q8 15 29 44.5t28 54 7 70.5q46-24 7-92-4-8-10.5-16t-9.5-12-2-6q3-5 13-9.5t20 2.5q46 52 166 36 133-15 177-87 23-38 34-30 12 6 10 52-1 25-23 92-9 23-6 37.5t24 15.5q3-19 14.5-77t13.5-90q2-21-6.5-73.5t-7.5-97 23-70.5q15-18 51-18 1-37 34.5-53t72.5-10.5 60 22.5zm-628-827q3-17-2.5-30t-11.5-15q-9-2-9 7 2 5 5 6 10 0 7 15-3 20 8 20 3 0 3-3zm419 197q-2-8-6.5-11.5t-13-5-14.5-5.5q-5-3-9.5-8t-7-8-5.5-6.5-4-4-4 1.5q-14 16 7 43.5t39 31.5q9 1 14.5-8t3.5-20zm-178-213q0-11-5-19.5t-11-12.5-9-3q-6 0-8 2t0 4 5 3q14 4 18 31 0 3 8-2 2-2 2-3zm54-233q0-2-2.5-5t-9-7-9.5-6q-15-15-24-15-9 1-11.5 7.5t-1 13-.5 12.5q-1 4-6 10.5t-6 9 3 8.5q4 3 8 0t11-9 15-9q1-1 9-1t15-2 9-7zm565 1341q20 12 31 24.5t12 24-2.5 22.5-15.5 22-23.5 19.5-30 18.5-31.5 16.5-32 15.5-27 13q-38 19-85.5 56t-75.5 64q-17 16-68 19.5t-89-14.5q-18-9-29.5-23.5t-16.5-25.5-22-19.5-47-9.5q-44-1-130-1-19 0-57 1.5t-58 2.5q-44 1-79.5 15t-53.5 30-43.5 28.5-53.5 11.5q-29-1-111-31t-146-43q-19-4-51-9.5t-50-9-39.5-9.5-33.5-14.5-17-19.5q-10-23 7-66.5t18-54.5q1-16-4-40t-10-42.5-4.5-36.5 10.5-27q14-12 57-14t60-12q30-18 42-35t12-51q21 73-32 106-32 20-83 15-34-3-43 10-13 15 5 57 2 6 8 18t8.5 18 4.5 17 1 22q0 15-17 49t-14 48q3 17 37 26 20 6 84.5 18.5t99.5 20.5q24 6 74 22t82.5 23 55.5 4q43-6 64.5-28t23-48-7.5-58.5-19-52-20-36.5q-121-190-169-242-68-74-113-40-11 9-15-15-3-16-2-38 1-29 10-52t24-47 22-42q8-21 26.5-72t29.5-78 30-61 39-54q110-143 124-195-12-112-16-310-2-90 24-151.5t106-104.5q39-21 104-21 53-1 106 13.5t89 41.5q57 42 91.5 121.5t29.5 147.5q-5 95 30 214 34 113 133 218 55 59 99.5 163t59.5 191q8 49 5 84.5t-12 55.5-20 22q-10 2-23.5 19t-27 35.5-40.5 33.5-61 14q-18-1-31.5-5t-22.5-13.5-13.5-15.5-11.5-20.5-9-19.5q-22-37-41-30t-28 49 7 97q20 70 1 195-10 65 18 100.5t73 33 85-35.5q59-49 89.5-66.5t103.5-42.5q53-18 77-36.5t18.5-34.5-25-28.5-51.5-23.5q-33-11-49.5-48t-15-72.5 15.5-47.5q1 31 8 56.5t14.5 40.5 20.5 28.5 21 19 21.5 13 16.5 9.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/list-alt.svg b/img/icons/font-awesome/list-alt.svg
new file mode 100644
index 00000000..8f455199
--- /dev/null
+++ b/img/icons/font-awesome/list-alt.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M384 1184v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm0-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm0-256v64q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm1152 512v64q0 13-9.5 22.5t-22.5 9.5h-960q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h960q13 0 22.5 9.5t9.5 22.5zm0-256v64q0 13-9.5 22.5t-22.5 9.5h-960q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h960q13 0 22.5 9.5t9.5 22.5zm0-256v64q0 13-9.5 22.5t-22.5 9.5h-960q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h960q13 0 22.5 9.5t9.5 22.5zm128 704v-832q0-13-9.5-22.5t-22.5-9.5h-1472q-13 0-22.5 9.5t-9.5 22.5v832q0 13 9.5 22.5t22.5 9.5h1472q13 0 22.5-9.5t9.5-22.5zm128-1088v1088q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1472q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/list-ol.svg b/img/icons/font-awesome/list-ol.svg
new file mode 100644
index 00000000..0143c9b0
--- /dev/null
+++ b/img/icons/font-awesome/list-ol.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M381 1620q0 80-54.5 126t-135.5 46q-106 0-172-66l57-88q49 45 106 45 29 0 50.5-14.5t21.5-42.5q0-64-105-56l-26-56q8-10 32.5-43.5t42.5-54 37-38.5v-1q-16 0-48.5 1t-48.5 1v53h-106v-152h333v88l-95 115q51 12 81 49t30 88zm2-627v159h-362q-6-36-6-54 0-51 23.5-93t56.5-68 66-47.5 56.5-43.5 23.5-45q0-25-14.5-38.5t-39.5-13.5q-46 0-81 58l-85-59q24-51 71.5-79.5t105.5-28.5q73 0 123 41.5t50 112.5q0 50-34 91.5t-75 64.5-75.5 50.5-35.5 52.5h127v-60h105zm1409 319v192q0 13-9.5 22.5t-22.5 9.5h-1216q-13 0-22.5-9.5t-9.5-22.5v-192q0-14 9-23t23-9h1216q13 0 22.5 9.5t9.5 22.5zm-1408-899v99h-335v-99h107q0-41 .5-121.5t.5-121.5v-12h-2q-8 17-50 54l-71-76 136-127h106v404h108zm1408 387v192q0 13-9.5 22.5t-22.5 9.5h-1216q-13 0-22.5-9.5t-9.5-22.5v-192q0-14 9-23t23-9h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5t-22.5 9.5h-1216q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/list-ul.svg b/img/icons/font-awesome/list-ul.svg
new file mode 100644
index 00000000..ff2c99d0
--- /dev/null
+++ b/img/icons/font-awesome/list-ul.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5h-1216q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zm-1408-928q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5h-1216q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5t-22.5 9.5h-1216q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/list.svg b/img/icons/font-awesome/list.svg
new file mode 100644
index 00000000..05b1cd25
--- /dev/null
+++ b/img/icons/font-awesome/list.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 1312v192q0 13-9.5 22.5t-22.5 9.5h-192q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h192q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5h-192q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h192q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5h-192q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h192q13 0 22.5 9.5t9.5 22.5zm1536 768v192q0 13-9.5 22.5t-22.5 9.5h-1344q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1344q13 0 22.5 9.5t9.5 22.5zm-1536-1152v192q0 13-9.5 22.5t-22.5 9.5h-192q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h192q13 0 22.5 9.5t9.5 22.5zm1536 768v192q0 13-9.5 22.5t-22.5 9.5h-1344q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1344q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5h-1344q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1344q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5h-1344q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1344q13 0 22.5 9.5t9.5 22.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/location-arrow.svg b/img/icons/font-awesome/location-arrow.svg
new file mode 100644
index 00000000..337d64ae
--- /dev/null
+++ b/img/icons/font-awesome/location-arrow.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1593 349l-640 1280q-17 35-57 35-5 0-15-2-22-5-35.5-22.5t-13.5-39.5v-576h-576q-22 0-39.5-13.5t-22.5-35.5 4-42 29-30l1280-640q13-7 29-7 27 0 45 19 15 14 18.5 34.5t-6.5 39.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/lock.svg b/img/icons/font-awesome/lock.svg
new file mode 100644
index 00000000..12b16022
--- /dev/null
+++ b/img/icons/font-awesome/lock.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M640 768h512v-192q0-106-75-181t-181-75-181 75-75 181v192zm832 96v576q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-576q0-40 28-68t68-28h32v-192q0-184 132-316t316-132 316 132 132 316v192h32q40 0 68 28t28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/long-arrow-down.svg b/img/icons/font-awesome/long-arrow-down.svg
new file mode 100644
index 00000000..c835f9e0
--- /dev/null
+++ b/img/icons/font-awesome/long-arrow-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1277 1299q8 19-5 35l-350 384q-10 10-23 10-14 0-24-10l-355-384q-13-16-5-35 9-19 29-19h224v-1248q0-14 9-23t23-9h192q14 0 23 9t9 23v1248h224q21 0 29 19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/long-arrow-left.svg b/img/icons/font-awesome/long-arrow-left.svg
new file mode 100644
index 00000000..313a289f
--- /dev/null
+++ b/img/icons/font-awesome/long-arrow-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 800v192q0 14-9 23t-23 9h-1248v224q0 21-19 29t-35-5l-384-350q-10-10-10-23 0-14 10-24l384-354q16-14 35-6 19 9 19 29v224h1248q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/long-arrow-right.svg b/img/icons/font-awesome/long-arrow-right.svg
new file mode 100644
index 00000000..e625241c
--- /dev/null
+++ b/img/icons/font-awesome/long-arrow-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1728 893q0 14-10 24l-384 354q-16 14-35 6-19-9-19-29v-224h-1248q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h1248v-224q0-21 19-29t35 5l384 350q10 10 10 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/long-arrow-up.svg b/img/icons/font-awesome/long-arrow-up.svg
new file mode 100644
index 00000000..26ccb480
--- /dev/null
+++ b/img/icons/font-awesome/long-arrow-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1277 493q-9 19-29 19h-224v1248q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-1248h-224q-21 0-29-19t5-35l350-384q10-10 23-10 14 0 24 10l355 384q13 16 5 35z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/low-vision.svg b/img/icons/font-awesome/low-vision.svg
new file mode 100644
index 00000000..7e6cef49
--- /dev/null
+++ b/img/icons/font-awesome/low-vision.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M335 1356q-2 0-6-2-86-57-168.5-145t-139.5-180q-21-30-21-69 0-9 2-19t4-18 7-18 8.5-16 10.5-17 10-15 12-15.5 11-14.5q184-251 452-365-110-198-110-211 0-19 17-29 116-64 128-64 18 0 28 16l124 229q92-19 192-19 266 0 497.5 137.5t378.5 369.5q20 31 20 69t-20 69q-91 142-218.5 253.5t-278.5 175.5q110 198 110 211 0 20-17 29-116 64-127 64-19 0-29-16l-124-229-64-119-444-820 7-7q-58 24-99 47 3 5 127 234t243 449 119 223q0 7-9 9-13 3-72 3-57 0-60-7l-456-841q-39 28-82 68 24 43 214 393.5t190 354.5q0 10-11 10-14 0-82.5-22t-72.5-28l-106-197-224-413q-44 53-78 106 2 3 18 25t23 34l176 327q0 10-10 10zm830-102l49 91q273-111 450-385-180-277-459-389 67 64 103 148.5t36 176.5q0 106-47 200.5t-132 157.5zm-317-614q0 20 14 34t34 14q86 0 147 61t61 147q0 20 14 34t34 14 34-14 14-34q0-126-89-215t-215-89q-20 0-34 14t-14 34zm366-65l-9-4 7 7z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/magic.svg b/img/icons/font-awesome/magic.svg
new file mode 100644
index 00000000..eba8f68d
--- /dev/null
+++ b/img/icons/font-awesome/magic.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1254 581l293-293-107-107-293 293zm447-293q0 27-18 45l-1286 1286q-18 18-45 18t-45-18l-198-198q-18-18-18-45t18-45l1286-1286q18-18 45-18t45 18l198 198q18 18 18 45zm-1351-190l98 30-98 30-30 98-30-98-98-30 98-30 30-98zm350 162l196 60-196 60-60 196-60-196-196-60 196-60 60-196zm930 478l98 30-98 30-30 98-30-98-98-30 98-30 30-98zm-640-640l98 30-98 30-30 98-30-98-98-30 98-30 30-98z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/magnet.svg b/img/icons/font-awesome/magnet.svg
new file mode 100644
index 00000000..dcad64ac
--- /dev/null
+++ b/img/icons/font-awesome/magnet.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 832v128q0 201-98.5 362t-274 251.5-395.5 90.5-395.5-90.5-274-251.5-98.5-362v-128q0-26 19-45t45-19h384q26 0 45 19t19 45v128q0 52 23.5 90t53.5 57 71 30 64 13 44 2 44-2 64-13 71-30 53.5-57 23.5-90v-128q0-26 19-45t45-19h384q26 0 45 19t19 45zm-1024-640v384q0 26-19 45t-45 19h-384q-26 0-45-19t-19-45v-384q0-26 19-45t45-19h384q26 0 45 19t19 45zm1024 0v384q0 26-19 45t-45 19h-384q-26 0-45-19t-19-45v-384q0-26 19-45t45-19h384q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/mail-forward.svg b/img/icons/font-awesome/mail-forward.svg
new file mode 100644
index 00000000..e087dd6b
--- /dev/null
+++ b/img/icons/font-awesome/mail-forward.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 640q0 26-19 45l-512 512q-19 19-45 19t-45-19-19-45v-256h-224q-98 0-175.5 6t-154 21.5-133 42.5-105.5 69.5-80 101-48.5 138.5-17.5 181q0 55 5 123 0 6 2.5 23.5t2.5 26.5q0 15-8.5 25t-23.5 10q-16 0-28-17-7-9-13-22t-13.5-30-10.5-24q-127-285-127-451 0-199 53-333 162-403 875-403h224v-256q0-26 19-45t45-19 45 19l512 512q19 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/mail-reply-all.svg b/img/icons/font-awesome/mail-reply-all.svg
new file mode 100644
index 00000000..9ecf745b
--- /dev/null
+++ b/img/icons/font-awesome/mail-reply-all.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M640 1082v70q0 42-39 59-13 5-25 5-27 0-45-19l-512-512q-19-19-19-45t19-45l512-512q29-31 70-14 39 17 39 59v69l-397 398q-19 19-19 45t19 45zm1152 38q0 58-17 133.5t-38.5 138-48 125-40.5 90.5l-20 40q-8 17-28 17-6 0-9-1-25-8-23-34 43-400-106-565-64-71-170.5-110.5t-267.5-52.5v251q0 42-39 59-13 5-25 5-27 0-45-19l-512-512q-19-19-19-45t19-45l512-512q29-31 70-14 39 17 39 59v262q411 28 599 221 169 173 169 509z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/mail-reply.svg b/img/icons/font-awesome/mail-reply.svg
new file mode 100644
index 00000000..ff641c8e
--- /dev/null
+++ b/img/icons/font-awesome/mail-reply.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 1120q0 166-127 451-3 7-10.5 24t-13.5 30-13 22q-12 17-28 17-15 0-23.5-10t-8.5-25q0-9 2.5-26.5t2.5-23.5q5-68 5-123 0-101-17.5-181t-48.5-138.5-80-101-105.5-69.5-133-42.5-154-21.5-175.5-6h-224v256q0 26-19 45t-45 19-45-19l-512-512q-19-19-19-45t19-45l512-512q19-19 45-19t45 19 19 45v256h224q713 0 875 403 53 134 53 333z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/male.svg b/img/icons/font-awesome/male.svg
new file mode 100644
index 00000000..e9ab7e3e
--- /dev/null
+++ b/img/icons/font-awesome/male.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 704v416q0 40-28 68t-68 28-68-28-28-68v-352h-64v912q0 46-33 79t-79 33-79-33-33-79v-464h-64v464q0 46-33 79t-79 33-79-33-33-79v-912h-64v352q0 40-28 68t-68 28-68-28-28-68v-416q0-80 56-136t136-56h640q80 0 136 56t56 136zm-288-448q0 93-65.5 158.5t-158.5 65.5-158.5-65.5-65.5-158.5 65.5-158.5 158.5-65.5 158.5 65.5 65.5 158.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/map-marker.svg b/img/icons/font-awesome/map-marker.svg
new file mode 100644
index 00000000..37c703ec
--- /dev/null
+++ b/img/icons/font-awesome/map-marker.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 640q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm256 0q0 109-33 179l-364 774q-16 33-47.5 52t-67.5 19-67.5-19-46.5-52l-365-774q-33-70-33-179 0-212 150-362t362-150 362 150 150 362z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/map-o.svg b/img/icons/font-awesome/map-o.svg
new file mode 100644
index 00000000..e11f7557
--- /dev/null
+++ b/img/icons/font-awesome/map-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M2020 11q28 20 28 53v1408q0 20-11 36t-29 23l-640 256q-24 11-48 0l-616-246-616 246q-10 5-24 5-19 0-36-11-28-20-28-53v-1408q0-20 11-36t29-23l640-256q24-11 48 0l616 246 616-246q32-13 60 6zm-1284 135v1270l576 230v-1270zm-608 217v1270l544-217v-1270zm1792 1066v-1270l-544 217v1270z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/map-pin.svg b/img/icons/font-awesome/map-pin.svg
new file mode 100644
index 00000000..d4883b31
--- /dev/null
+++ b/img/icons/font-awesome/map-pin.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 1088q66 0 128-15v655q0 26-19 45t-45 19h-128q-26 0-45-19t-19-45v-655q62 15 128 15zm0-1088q212 0 362 150t150 362-150 362-362 150-362-150-150-362 150-362 362-150zm0 224q14 0 23-9t9-23-9-23-23-9q-146 0-249 103t-103 249q0 14 9 23t23 9 23-9 9-23q0-119 84.5-203.5t203.5-84.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/map-signs.svg b/img/icons/font-awesome/map-signs.svg
new file mode 100644
index 00000000..56846aaa
--- /dev/null
+++ b/img/icons/font-awesome/map-signs.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1745 297q10 10 10 23t-10 23l-141 141q-28 28-68 28h-1344q-26 0-45-19t-19-45v-256q0-26 19-45t45-19h576v-64q0-26 19-45t45-19h128q26 0 45 19t19 45v64h512q40 0 68 28zm-977 919h256v512q0 26-19 45t-45 19h-128q-26 0-45-19t-19-45v-512zm832-448q26 0 45 19t19 45v256q0 26-19 45t-45 19h-1344q-40 0-68-28l-141-141q-10-10-10-23t10-23l141-141q28-28 68-28h512v-192h256v192h576z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/map.svg b/img/icons/font-awesome/map.svg
new file mode 100644
index 00000000..a8c9e280
--- /dev/null
+++ b/img/icons/font-awesome/map.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M512 0q13 0 22.5 9.5t9.5 22.5v1472q0 20-17 28l-480 256q-7 4-15 4-13 0-22.5-9.5t-9.5-22.5v-1472q0-20 17-28l480-256q7-4 15-4zm1248 0q13 0 22.5 9.5t9.5 22.5v1472q0 20-17 28l-480 256q-7 4-15 4-13 0-22.5-9.5t-9.5-22.5v-1472q0-20 17-28l480-256q7-4 15-4zm-1120 0q8 0 14 3l512 256q18 10 18 29v1472q0 13-9.5 22.5t-22.5 9.5q-8 0-14-3l-512-256q-18-10-18-29v-1472q0-13 9.5-22.5t22.5-9.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/mars-double.svg b/img/icons/font-awesome/mars-double.svg
new file mode 100644
index 00000000..8be8f9c6
--- /dev/null
+++ b/img/icons/font-awesome/mars-double.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1600 416q0-14 9-23t23-9h288q26 0 45 19t19 45v288q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-134l-254 255q76 95 107.5 214t9.5 247q-31 182-166 312t-318 156q-210 29-384.5-80t-241.5-300q-117-6-221-57.5t-177.5-133-113.5-192.5-32-230q9-135 78-252t182-191.5 248-89.5q118-14 227.5 19t198.5 103l255-254h-134q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h288q26 0 45 19t19 45v288q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-134l-254 255q59 74 93 169 182 9 328 124l255-254h-134q-14 0-23-9t-9-23v-64zm-512 416q0-20-4-58-162 25-271 150t-109 292q0 20 4 58 162-25 271-150t109-292zm-896 0q0 168 111 294t276 149q-3-29-3-59 0-210 135-369.5t338-196.5q-53-120-163.5-193t-245.5-73q-185 0-316.5 131.5t-131.5 316.5zm960 832q185 0 316.5-131.5t131.5-316.5q0-168-111-294t-276-149q3 28 3 59 0 210-135 369.5t-338 196.5q53 120 163.5 193t245.5 73z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/mars-stroke-h.svg b/img/icons/font-awesome/mars-stroke-h.svg
new file mode 100644
index 00000000..34778cb5
--- /dev/null
+++ b/img/icons/font-awesome/mars-stroke-h.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1901 915q19 19 19 45t-19 45l-294 294q-9 10-22.5 10t-22.5-10l-45-45q-10-9-10-22.5t10-22.5l185-185h-294v224q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-224h-132q-24 217-187.5 364.5t-384.5 147.5q-167 0-306-87t-212-236-54-319q15-133 88-245.5t188-182 249-80.5q155-12 292 52.5t224 186 103 271.5h132v-224q0-14 9-23t23-9h64q14 0 23 9t9 23v224h294l-185-185q-10-9-10-22.5t10-22.5l45-45q9-10 22.5-10t22.5 10zm-1325 493q185 0 316.5-131.5t131.5-316.5-131.5-316.5-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/mars-stroke-v.svg b/img/icons/font-awesome/mars-stroke-v.svg
new file mode 100644
index 00000000..b9c8cfcc
--- /dev/null
+++ b/img/icons/font-awesome/mars-stroke-v.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 644q217 24 364.5 187.5t147.5 384.5q0 167-87 306t-236 212-319 54q-133-15-245.5-88t-182-188-80.5-249q-12-155 52.5-292t186-224 271.5-103v-132h-160q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h160v-165l-92 92q-10 9-23 9t-22-9l-46-46q-9-9-9-22t9-23l202-201q19-19 45-19t45 19l202 201q9 10 9 23t-9 22l-46 46q-9 9-22 9t-23-9l-92-92v165h160q14 0 23 9t9 23v64q0 14-9 23t-23 9h-160v132zm-64 1020q185 0 316.5-131.5t131.5-316.5-131.5-316.5-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/mars-stroke.svg b/img/icons/font-awesome/mars-stroke.svg
new file mode 100644
index 00000000..41708a49
--- /dev/null
+++ b/img/icons/font-awesome/mars-stroke.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1600 128q26 0 45 19t19 45v416q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-262l-213 214 140 140q9 10 9 23t-9 22l-46 46q-9 9-22 9t-23-9l-140-141-78 79q126 156 126 359 0 117-45.5 223.5t-123 184-184 123-223.5 45.5-223.5-45.5-184-123-123-184-45.5-223.5 45.5-223.5 123-184 184-123 223.5-45.5q203 0 359 126l78-78-172-172q-9-10-9-23t9-22l46-46q9-9 22-9t23 9l172 172 213-213h-261q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h416zm-896 1408q185 0 316.5-131.5t131.5-316.5-131.5-316.5-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/mars.svg b/img/icons/font-awesome/mars.svg
new file mode 100644
index 00000000..f2332de4
--- /dev/null
+++ b/img/icons/font-awesome/mars.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1600 128q26 0 45 19t19 45v416q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-262l-382 383q126 156 126 359 0 117-45.5 223.5t-123 184-184 123-223.5 45.5-223.5-45.5-184-123-123-184-45.5-223.5 45.5-223.5 123-184 184-123 223.5-45.5q203 0 359 126l382-382h-261q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h416zm-896 1408q185 0 316.5-131.5t131.5-316.5-131.5-316.5-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/maxcdn.svg b/img/icons/font-awesome/maxcdn.svg
new file mode 100644
index 00000000..f35a419c
--- /dev/null
+++ b/img/icons/font-awesome/maxcdn.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1745 773l-164 763h-334l178-832q13-56-15-88-27-33-83-33h-169l-204 953h-334l204-953h-286l-204 953h-334l204-953-153-327h1276q101 0 189.5 40.5t147.5 113.5q60 73 81 168.5t0 194.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/meanpath.svg b/img/icons/font-awesome/meanpath.svg
new file mode 100644
index 00000000..76f625c0
--- /dev/null
+++ b/img/icons/font-awesome/meanpath.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1439 842v114q0 24-13.5 38t-37.5 14h-202q-24 0-38-14t-14-38v-114q0-24 14-38t38-14h202q24 0 37.5 14t13.5 38zm-490 230v-250q0-53-32.5-85.5t-85.5-32.5h-133q-68 0-96 52-28-52-96-52h-130q-53 0-85.5 32.5t-32.5 85.5v250q0 22 21 22h55q22 0 22-22v-230q0-24 13.5-38t38.5-14h94q24 0 38 14t14 38v230q0 22 21 22h54q22 0 22-22v-230q0-24 14-38t38-14h97q24 0 37.5 14t13.5 38v230q0 22 22 22h55q21 0 21-22zm589-96v-154q0-53-33-85.5t-86-32.5h-264q-53 0-86 32.5t-33 85.5v410q0 21 22 21h55q21 0 21-21v-180q31 42 94 42h191q53 0 86-32.5t33-85.5zm126-616v1072q0 96-68 164t-164 68h-1072q-96 0-164-68t-68-164v-1072q0-96 68-164t164-68h1072q96 0 164 68t68 164z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/medium.svg b/img/icons/font-awesome/medium.svg
new file mode 100644
index 00000000..c58e0270
--- /dev/null
+++ b/img/icons/font-awesome/medium.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M597 421v1173q0 25-12.5 42.5t-36.5 17.5q-17 0-33-8l-465-233q-21-10-35.5-33.5t-14.5-46.5v-1140q0-20 10-34t29-14q14 0 44 15l511 256q3 3 3 5zm64 101l534 866-534-266v-600zm1131 18v1054q0 25-14 40.5t-38 15.5-47-13l-441-220zm-3-120q0 3-256.5 419.5t-300.5 487.5l-390-634 324-527q17-28 52-28 14 0 26 6l541 270q4 2 4 6z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/medkit.svg b/img/icons/font-awesome/medkit.svg
new file mode 100644
index 00000000..3b33653d
--- /dev/null
+++ b/img/icons/font-awesome/medkit.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1280 1120v-192q0-14-9-23t-23-9h-224v-224q0-14-9-23t-23-9h-192q-14 0-23 9t-9 23v224h-224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23-9t9-23v-224h224q14 0 23-9t9-23zm-640-736h512v-128h-512v128zm-384 0v1280h-32q-92 0-158-66t-66-158v-832q0-92 66-158t158-66h32zm1184 0v1280h-1088v-1280h160v-160q0-40 28-68t68-28h576q40 0 68 28t28 68v160h160zm352 224v832q0 92-66 158t-158 66h-32v-1280h32q92 0 158 66t66 158z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/meetup.svg b/img/icons/font-awesome/meetup.svg
new file mode 100644
index 00000000..c59bd59f
--- /dev/null
+++ b/img/icons/font-awesome/meetup.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1398 1234q-4-24-27.5-34t-49.5-10.5-48.5-12.5-25.5-38q-5-47 33-139.5t75-181 32-127.5q-14-101-117-103-45-1-75 16l-3 2-5 2.5-4.5 2-5 2-5 .5-6-1.5-6-3.5-6.5-5q-3-2-9-8.5t-9-9-8.5-7.5-9.5-7.5-9.5-5.5-11-4.5-11.5-2.5q-30-5-48 3t-45 31q-1 1-9 8.5t-12.5 11-15 10-16.5 5.5-17-3q-54-27-84-40-41-18-94 5t-76 65q-16 28-41 98.5t-43.5 132.5-40 134-21.5 73q-22 69 18.5 119t110.5 46q30-2 50.5-15t38.5-46q7-13 79-199.5t77-194.5q6-11 21.5-18t29.5 0q27 15 21 53-2 18-51 139.5t-50 132.5q-6 38 19.5 56.5t60.5 7 55-49.5q4-8 45.5-92t81.5-163.5 46-88.5q20-29 41-28 29 0 25 38-2 16-65.5 147.5t-70.5 159.5q-12 53 13 103t74 74q17 9 51 15.5t71.5 8 62.5-14 20-48.5zm-951 216q3 15-5 27.5t-23 15.5q-14 3-26.5-5t-15.5-23q-3-14 5-27t22-16 27 5 16 23zm570 263q12 17 8.5 37.5t-20.5 32.5-37.5 8-32.5-21q-11-17-7.5-37.5t20.5-32.5 37.5-8 31.5 21zm-776-812q-18 27-49.5 33t-57.5-13q-26-18-32-50t12-58q18-27 49.5-33t57.5 12q26 19 32 50.5t-12 58.5zm1290 677q19 28 13 61.5t-34 52.5-60.5 13-51.5-34-13-61 33-53q28-19 60.5-13t52.5 34zm112-604q69 113 42.5 244.5t-134.5 207.5q-90 63-199 60-20 80-84.5 127t-143.5 44.5-140-57.5q-12 9-13 10-103 71-225 48.5t-193-126.5q-50-73-53-164-83-14-142.5-70.5t-80.5-128-2-152 81-138.5q-36-60-38-128t24.5-125 79.5-98.5 121-50.5q32-85 99-148t146.5-91.5 168-17 159.5 66.5q72-21 140-17.5t128.5 36 104.5 80 67.5 115 17.5 140.5q52 16 87 57t45.5 89-5.5 99.5-58 87.5zm-1124-660q14 20 9.5 44.5t-24.5 38.5q-19 14-43.5 9.5t-37.5-24.5q-14-20-9.5-44.5t24.5-38.5q19-14 43.5-9.5t37.5 24.5zm159-281q4 16-5 30.5t-26 18.5-31-5.5-18-26.5q-3-17 6.5-31t25.5-18q17-4 31 5.5t17 26.5zm1186 948q4 20-6.5 37t-30.5 21q-19 4-36-6.5t-21-30.5 6.5-37 30.5-22q20-4 36.5 7.5t20.5 30.5zm-664-893q16 27 8.5 58.5t-35.5 47.5q-27 16-57.5 8.5t-46.5-34.5q-16-28-8.5-59t34.5-48 58-9 47 36zm746 656q4 15-4 27.5t-23 16.5q-15 3-27.5-5.5t-15.5-22.5q-3-15 5-28t23-16q14-3 26.5 5t15.5 23zm-191-241q15 22 10.5 49t-26.5 43q-22 15-49 10t-42-27-10-49 27-43 48.5-11 41.5 28z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/meh-o.svg b/img/icons/font-awesome/meh-o.svg
new file mode 100644
index 00000000..4c589b84
--- /dev/null
+++ b/img/icons/font-awesome/meh-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1280 1088q0 26-19 45t-45 19h-640q-26 0-45-19t-19-45 19-45 45-19h640q26 0 45 19t19 45zm-512-448q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm512 0q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm256 256q0-130-51-248.5t-136.5-204-204-136.5-248.5-51-248.5 51-204 136.5-136.5 204-51 248.5 51 248.5 136.5 204 204 136.5 248.5 51 248.5-51 204-136.5 136.5-204 51-248.5zm128 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/mercury.svg b/img/icons/font-awesome/mercury.svg
new file mode 100644
index 00000000..9a5852d7
--- /dev/null
+++ b/img/icons/font-awesome/mercury.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1086 316q145 72 233.5 210.5t88.5 305.5q0 221-147.5 384.5t-364.5 187.5v132h96q14 0 23 9t9 23v64q0 14-9 23t-23 9h-96v96q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-96h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96v-132q-217-24-364.5-187.5t-147.5-384.5q0-167 88.5-305.5t233.5-210.5q-165-96-228-273-6-16 3.5-29.5t26.5-13.5h69q21 0 29 20 44 106 140 171t214 65 214-65 140-171q8-20 37-20h61q17 0 26.5 13.5t3.5 29.5q-63 177-228 273zm-254 964q185 0 316.5-131.5t131.5-316.5-131.5-316.5-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/microchip.svg b/img/icons/font-awesome/microchip.svg
new file mode 100644
index 00000000..b55a9687
--- /dev/null
+++ b/img/icons/font-awesome/microchip.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M320 1280v128h-112q-16 0-16-16v-16h-48q-16 0-16-16v-32q0-16 16-16h48v-16q0-16 16-16h112zm0-256v128h-112q-16 0-16-16v-16h-48q-16 0-16-16v-32q0-16 16-16h48v-16q0-16 16-16h112zm0-256v128h-112q-16 0-16-16v-16h-48q-16 0-16-16v-32q0-16 16-16h48v-16q0-16 16-16h112zm0-256v128h-112q-16 0-16-16v-16h-48q-16 0-16-16v-32q0-16 16-16h48v-16q0-16 16-16h112zm0-256v128h-112q-16 0-16-16v-16h-48q-16 0-16-16v-32q0-16 16-16h48v-16q0-16 16-16h112zm1088-160v1472q0 40-28 68t-68 28h-832q-40 0-68-28t-28-68v-1472q0-40 28-68t68-28h832q40 0 68 28t28 68zm256 1232v32q0 16-16 16h-48v16q0 16-16 16h-112v-128h112q16 0 16 16v16h48q16 0 16 16zm0-256v32q0 16-16 16h-48v16q0 16-16 16h-112v-128h112q16 0 16 16v16h48q16 0 16 16zm0-256v32q0 16-16 16h-48v16q0 16-16 16h-112v-128h112q16 0 16 16v16h48q16 0 16 16zm0-256v32q0 16-16 16h-48v16q0 16-16 16h-112v-128h112q16 0 16 16v16h48q16 0 16 16zm0-256v32q0 16-16 16h-48v16q0 16-16 16h-112v-128h112q16 0 16 16v16h48q16 0 16 16z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/microphone-slash.svg b/img/icons/font-awesome/microphone-slash.svg
new file mode 100644
index 00000000..06a548ae
--- /dev/null
+++ b/img/icons/font-awesome/microphone-slash.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M463 945l-101 101q-42-103-42-214v-128q0-26 19-45t45-19 45 19 19 45v128q0 53 15 113zm1114-602l-361 361v128q0 132-94 226t-226 94q-55 0-109-19l-96 96q97 51 205 51 185 0 316.5-131.5t131.5-316.5v-128q0-26 19-45t45-19 45 19 19 45v128q0 221-147.5 384.5t-364.5 187.5v132h256q26 0 45 19t19 45-19 45-45 19h-640q-26 0-45-19t-19-45 19-45 45-19h256v-132q-125-13-235-81l-254 254q-10 10-23 10t-23-10l-82-82q-10-10-10-23t10-23l1234-1234q10-10 23-10t23 10l82 82q10 10 10 23t-10 23zm-380-132l-621 621v-512q0-132 94-226t226-94q102 0 184.5 59t116.5 152z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/microphone.svg b/img/icons/font-awesome/microphone.svg
new file mode 100644
index 00000000..abcd3b15
--- /dev/null
+++ b/img/icons/font-awesome/microphone.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1472 704v128q0 221-147.5 384.5t-364.5 187.5v132h256q26 0 45 19t19 45-19 45-45 19h-640q-26 0-45-19t-19-45 19-45 45-19h256v-132q-217-24-364.5-187.5t-147.5-384.5v-128q0-26 19-45t45-19 45 19 19 45v128q0 185 131.5 316.5t316.5 131.5 316.5-131.5 131.5-316.5v-128q0-26 19-45t45-19 45 19 19 45zm-256-384v512q0 132-94 226t-226 94-226-94-94-226v-512q0-132 94-226t226-94 226 94 94 226z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/minus-circle.svg b/img/icons/font-awesome/minus-circle.svg
new file mode 100644
index 00000000..4777d9e6
--- /dev/null
+++ b/img/icons/font-awesome/minus-circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1344 960v-128q0-26-19-45t-45-19h-768q-26 0-45 19t-19 45v128q0 26 19 45t45 19h768q26 0 45-19t19-45zm320-64q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/minus-square-o.svg b/img/icons/font-awesome/minus-square-o.svg
new file mode 100644
index 00000000..e64d08f3
--- /dev/null
+++ b/img/icons/font-awesome/minus-square-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1344 800v64q0 14-9 23t-23 9h-832q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h832q14 0 23 9t9 23zm128 448v-832q0-66-47-113t-113-47h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113zm128-832v832q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/minus-square.svg b/img/icons/font-awesome/minus-square.svg
new file mode 100644
index 00000000..2d6475d6
--- /dev/null
+++ b/img/icons/font-awesome/minus-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 960v-128q0-26-19-45t-45-19h-896q-26 0-45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45-19t19-45zm256-544v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/minus.svg b/img/icons/font-awesome/minus.svg
new file mode 100644
index 00000000..db6a7279
--- /dev/null
+++ b/img/icons/font-awesome/minus.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1600 736v192q0 40-28 68t-68 28h-1216q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h1216q40 0 68 28t28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/mixcloud.svg b/img/icons/font-awesome/mixcloud.svg
new file mode 100644
index 00000000..fe3f364b
--- /dev/null
+++ b/img/icons/font-awesome/mixcloud.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1645 1098q0-59-34-106.5t-87-68.5q-7 45-23 92-7 24-27.5 38t-44.5 14q-12 0-24-3-31-10-45-38.5t-4-58.5q23-71 23-143 0-123-61-227.5t-166-165.5-228-61q-134 0-247 73t-167 194q108 28 188 106 22 23 22 55t-22 54-54 22-55-22q-75-75-180-75-106 0-181 74.5t-75 180.5 75 180.5 181 74.5h1046q79 0 134.5-55.5t55.5-133.5zm153 0q0 142-100.5 242t-242.5 100h-1046q-169 0-289-119.5t-120-288.5q0-153 100-267t249-136q62-184 221-298t354-114q235 0 408.5 158.5t196.5 389.5q116 25 192.5 118.5t76.5 214.5zm250 0q0 175-97 319-23 33-64 33-24 0-43-13-26-17-32-48.5t12-57.5q71-104 71-233t-71-233q-18-26-12-57t32-49 57.5-11.5 49.5 32.5q97 142 97 318zm256 0q0 244-134 443-23 34-64 34-23 0-42-13-26-18-32.5-49t11.5-57q108-164 108-358 0-195-108-357-18-26-11.5-57.5t32.5-48.5q26-18 57-12t49 33q134 198 134 442z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/mobile-phone.svg b/img/icons/font-awesome/mobile-phone.svg
new file mode 100644
index 00000000..b878e0d8
--- /dev/null
+++ b/img/icons/font-awesome/mobile-phone.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M976 1408q0-33-23.5-56.5t-56.5-23.5-56.5 23.5-23.5 56.5 23.5 56.5 56.5 23.5 56.5-23.5 23.5-56.5zm208-160v-704q0-13-9.5-22.5t-22.5-9.5h-512q-13 0-22.5 9.5t-9.5 22.5v704q0 13 9.5 22.5t22.5 9.5h512q13 0 22.5-9.5t9.5-22.5zm-192-848q0-16-16-16h-160q-16 0-16 16t16 16h160q16 0 16-16zm288-16v1024q0 52-38 90t-90 38h-512q-52 0-90-38t-38-90v-1024q0-52 38-90t90-38h512q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/mobile.svg b/img/icons/font-awesome/mobile.svg
new file mode 100644
index 00000000..b878e0d8
--- /dev/null
+++ b/img/icons/font-awesome/mobile.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M976 1408q0-33-23.5-56.5t-56.5-23.5-56.5 23.5-23.5 56.5 23.5 56.5 56.5 23.5 56.5-23.5 23.5-56.5zm208-160v-704q0-13-9.5-22.5t-22.5-9.5h-512q-13 0-22.5 9.5t-9.5 22.5v704q0 13 9.5 22.5t22.5 9.5h512q13 0 22.5-9.5t9.5-22.5zm-192-848q0-16-16-16h-160q-16 0-16 16t16 16h160q16 0 16-16zm288-16v1024q0 52-38 90t-90 38h-512q-52 0-90-38t-38-90v-1024q0-52 38-90t90-38h512q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/modx.svg b/img/icons/font-awesome/modx.svg
new file mode 100644
index 00000000..71acd2bf
--- /dev/null
+++ b/img/icons/font-awesome/modx.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1427 709l-614-386 92-151h855zm-1022 265l-184-116v-858l1183 743zm1019-135l147 95v858l-532-335zm-37-21l-500 802h-855l356-571z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/money.svg b/img/icons/font-awesome/money.svg
new file mode 100644
index 00000000..081b11e1
--- /dev/null
+++ b/img/icons/font-awesome/money.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M832 1152h384v-96h-128v-448h-114l-148 137 77 80q42-37 55-57h2v288h-128v96zm512-256q0 70-21 142t-59.5 134-101.5 101-138 39-138-39-101.5-101-59.5-134-21-142 21-142 59.5-134 101.5-101 138-39 138 39 101.5 101 59.5 134 21 142zm512 256v-512q-106 0-181-75t-75-181h-1152q0 106-75 181t-181 75v512q106 0 181 75t75 181h1152q0-106 75-181t181-75zm128-832v1152q0 26-19 45t-45 19h-1792q-26 0-45-19t-19-45v-1152q0-26 19-45t45-19h1792q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/moon-o.svg b/img/icons/font-awesome/moon-o.svg
new file mode 100644
index 00000000..9a1a7e31
--- /dev/null
+++ b/img/icons/font-awesome/moon-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1390 1303q-54 9-110 9-182 0-337-90t-245-245-90-337q0-192 104-357-201 60-328.5 229t-127.5 384q0 130 51 248.5t136.5 204 204 136.5 248.5 51q144 0 273.5-61.5t220.5-171.5zm203-85q-94 203-283.5 324.5t-413.5 121.5q-156 0-298-61t-245-164-164-245-61-298q0-153 57.5-292.5t156-241.5 235.5-164.5 290-68.5q44-2 61 39 18 41-15 72-86 78-131.5 181.5t-45.5 218.5q0 148 73 273t198 198 273 73q118 0 228-51 41-18 72 13 14 14 17.5 34t-4.5 38z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/mortar-board.svg b/img/icons/font-awesome/mortar-board.svg
new file mode 100644
index 00000000..fbd5484e
--- /dev/null
+++ b/img/icons/font-awesome/mortar-board.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1774 836l18 316q4 69-82 128t-235 93.5-323 34.5-323-34.5-235-93.5-82-128l18-316 574 181q22 7 48 7t48-7zm530-324q0 23-22 31l-1120 352q-4 1-10 1t-10-1l-652-206q-43 34-71 111.5t-34 178.5q63 36 63 109 0 69-58 107l58 433q2 14-8 25-9 11-24 11h-192q-15 0-24-11-10-11-8-25l58-433q-58-38-58-107 0-73 65-111 11-207 98-330l-333-104q-22-8-22-31t22-31l1120-352q4-1 10-1t10 1l1120 352q22 8 22 31z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/motorcycle.svg b/img/icons/font-awesome/motorcycle.svg
new file mode 100644
index 00000000..23576099
--- /dev/null
+++ b/img/icons/font-awesome/motorcycle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M2301 1036q12 103-22 198.5t-99 163.5-158.5 106-196.5 31q-161-11-279.5-125t-134.5-274q-12-111 27.5-210.5t118.5-170.5l-71-107q-96 80-151 194t-55 244q0 27-18.5 46.5t-45.5 19.5h-325q-23 164-149 274t-294 110q-185 0-316.5-131.5t-131.5-316.5 131.5-316.5 316.5-131.5q76 0 152 27l24-45q-123-110-304-110h-64q-26 0-45-19t-19-45 19-45 45-19h128q78 0 145 13.5t116.5 38.5 71.5 39.5 51 36.5h627l-85-128h-222q-30 0-49-22.5t-14-52.5q4-23 23-38t43-15h253q33 0 53 28l70 105 114-114q19-19 46-19h101q26 0 45 19t19 45v128q0 26-19 45t-45 19h-179l115 172q131-63 275-36 143 26 244 134.5t118 253.5zm-1853 372q115 0 203-72.5t111-183.5h-314q-35 0-55-31-18-32-1-63l147-277q-47-13-91-13-132 0-226 94t-94 226 94 226 226 94zm1408 0q132 0 226-94t94-226-94-226-226-94q-60 0-121 24l174 260q15 23 10 49t-27 40q-15 11-36 11-35 0-53-29l-174-260q-93 95-93 225 0 132 94 226t226 94z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/mouse-pointer.svg b/img/icons/font-awesome/mouse-pointer.svg
new file mode 100644
index 00000000..885128c1
--- /dev/null
+++ b/img/icons/font-awesome/mouse-pointer.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1389 1043q31 30 14 69-17 40-59 40h-382l201 476q10 25 0 49t-34 35l-177 75q-25 10-49 0t-35-34l-191-452-312 312q-19 19-45 19-12 0-24-5-40-17-40-59v-1504q0-42 40-59 12-5 24-5 27 0 45 19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/music.svg b/img/icons/font-awesome/music.svg
new file mode 100644
index 00000000..0647a864
--- /dev/null
+++ b/img/icons/font-awesome/music.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 224v1120q0 50-34 89t-86 60.5-103.5 32-96.5 10.5-96.5-10.5-103.5-32-86-60.5-34-89 34-89 86-60.5 103.5-32 96.5-10.5q105 0 192 39v-537l-768 237v709q0 50-34 89t-86 60.5-103.5 32-96.5 10.5-96.5-10.5-103.5-32-86-60.5-34-89 34-89 86-60.5 103.5-32 96.5-10.5q105 0 192 39v-967q0-31 19-56.5t49-35.5l832-256q12-4 28-4 40 0 68 28t28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/navicon.svg b/img/icons/font-awesome/navicon.svg
new file mode 100644
index 00000000..2d6eb980
--- /dev/null
+++ b/img/icons/font-awesome/navicon.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 1344v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45zm0-512v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45zm0-512v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/neuter.svg b/img/icons/font-awesome/neuter.svg
new file mode 100644
index 00000000..e233c980
--- /dev/null
+++ b/img/icons/font-awesome/neuter.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 576q0 221-147.5 384.5t-364.5 187.5v612q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-612q-217-24-364.5-187.5t-147.5-384.5q0-117 45.5-223.5t123-184 184-123 223.5-45.5 223.5 45.5 184 123 123 184 45.5 223.5zm-576 448q185 0 316.5-131.5t131.5-316.5-131.5-316.5-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/newspaper-o.svg b/img/icons/font-awesome/newspaper-o.svg
new file mode 100644
index 00000000..795d15af
--- /dev/null
+++ b/img/icons/font-awesome/newspaper-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 512h-384v384h384v-384zm128 640v128h-640v-128h640zm0-768v640h-640v-640h640zm640 768v128h-512v-128h512zm0-256v128h-512v-128h512zm0-256v128h-512v-128h512zm0-256v128h-512v-128h512zm-1536 960v-960h-128v960q0 26 19 45t45 19 45-19 19-45zm1664 0v-1088h-1536v1088q0 33-11 64h1483q26 0 45-19t19-45zm128-1216v1216q0 80-56 136t-136 56h-1664q-80 0-136-56t-56-136v-1088h256v-128h1792z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/object-group.svg b/img/icons/font-awesome/object-group.svg
new file mode 100644
index 00000000..19ad9b88
--- /dev/null
+++ b/img/icons/font-awesome/object-group.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M2048 384h-128v1024h128v384h-384v-128h-1280v128h-384v-384h128v-1024h-128v-384h384v128h1280v-128h384v384zm-256-256v128h128v-128h-128zm-1664 0v128h128v-128h-128zm128 1536v-128h-128v128h128zm1408-128v-128h128v-1024h-128v-128h-1280v128h-128v1024h128v128h1280zm256 128v-128h-128v128h128zm-640-1024h384v768h-896v-256h-384v-768h896v256zm-768 384h640v-512h-640v512zm1024 256v-512h-256v384h-384v128h640z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/object-ungroup.svg b/img/icons/font-awesome/object-ungroup.svg
new file mode 100644
index 00000000..0fe3dd74
--- /dev/null
+++ b/img/icons/font-awesome/object-ungroup.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M2304 768h-128v640h128v384h-384v-128h-896v128h-384v-384h128v-128h-384v128h-384v-384h128v-640h-128v-384h384v128h896v-128h384v384h-128v128h384v-128h384v384zm-256-256v128h128v-128h-128zm-640-384v128h128v-128h-128zm-1280 0v128h128v-128h-128zm128 1152v-128h-128v128h128zm1280-128h-128v128h128v-128zm-1152 0h896v-128h128v-640h-128v-128h-896v128h-128v640h128v128zm512 512v-128h-128v128h128zm1280 0v-128h-128v128h128zm-128-256v-640h-128v-128h-384v384h128v384h-384v-128h-384v128h128v128h896v-128h128z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/odnoklassniki-square.svg b/img/icons/font-awesome/odnoklassniki-square.svg
new file mode 100644
index 00000000..d67456cf
--- /dev/null
+++ b/img/icons/font-awesome/odnoklassniki-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1055 580q0 66-46.5 112.5t-112.5 46.5-112.5-46.5-46.5-112.5 46.5-112.5 112.5-46.5 112.5 46.5 46.5 112.5zm214 363q-10-20-28-32t-47.5-9.5-60.5 27.5q-10 8-29 20t-81 32-127 20-124-18-86-36l-27-18q-31-25-60.5-27.5t-47.5 9.5-28 32q-22 45-2 74.5t87 73.5q83 53 226 67l-51 52q-142 142-191 190-22 22-22 52.5t22 52.5l9 9q22 22 52.5 22t52.5-22l191-191q114 115 191 191 22 22 52.5 22t52.5-22l9-9q22-22 22-52.5t-22-52.5l-191-190-52-52q141-14 225-67 67-44 87-73.5t-2-74.5zm-49-363q0-134-95-229t-229-95-229 95-95 229 95 229 229 95 229-95 95-229zm444-164v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/odnoklassniki.svg b/img/icons/font-awesome/odnoklassniki.svg
new file mode 100644
index 00000000..71fef12a
--- /dev/null
+++ b/img/icons/font-awesome/odnoklassniki.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 907q-188 0-321-133t-133-320q0-188 133-321t321-133 321 133 133 321q0 187-133 320t-321 133zm0-677q-92 0-157.5 65.5t-65.5 158.5q0 92 65.5 157.5t157.5 65.5 157.5-65.5 65.5-157.5q0-93-65.5-158.5t-157.5-65.5zm523 732q13 27 15 49.5t-4.5 40.5-26.5 38.5-42.5 37-61.5 41.5q-115 73-315 94l73 72 267 267q30 31 30 74t-30 73l-12 13q-31 30-74 30t-74-30q-67-68-267-268l-267 268q-31 30-74 30t-73-30l-12-13q-31-30-31-73t31-74l267-267 72-72q-203-21-317-94-39-25-61.5-41.5t-42.5-37-26.5-38.5-4.5-40.5 15-49.5q10-20 28-35t42-22 56 2 65 35q5 4 15 11t43 24.5 69 30.5 92 24 113 11q91 0 174-25.5t120-50.5l38-25q33-26 65-35t56-2 42 22 28 35z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/opencart.svg b/img/icons/font-awesome/opencart.svg
new file mode 100644
index 00000000..5d491067
--- /dev/null
+++ b/img/icons/font-awesome/opencart.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1524 1561q0 68-48 116t-116 48-116.5-48-48.5-116 48.5-116.5 116.5-48.5 116 48.5 48 116.5zm-749 0q0 68-48.5 116t-116.5 48-116-48-48-116 48-116.5 116-48.5 116.5 48.5 48.5 116.5zm-775-1494q57 60 110.5 104.5t121 82 136 63 166 45.5 200 31.5 250 18.5 304 9.5 372.5 2.5q139 0 244.5 5t181 16.5 124 27.5 71 39.5 24 51.5-19.5 64-56.5 76.5-89.5 91-116 104.5-139 119q-185 157-286 247 29-51 76.5-109t94-105.5 94.5-98.5 83-91.5 54-80.5 13-70-45.5-55.5-116.5-41-204-23.5-304-5q-168 2-314-6t-256-23-204.5-41-159.5-51.5-122.5-62.5-91.5-66.5-68-71.5-50.5-69.5-40-68-36.5-59.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/openid.svg b/img/icons/font-awesome/openid.svg
new file mode 100644
index 00000000..e573f7d2
--- /dev/null
+++ b/img/icons/font-awesome/openid.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1086 0v1536l-272 128q-228-20-414-102t-293-208.5-107-272.5q0-140 100.5-263.5t275-205.5 391.5-108v172q-217 38-356.5 150t-139.5 255q0 152 154.5 267t388.5 145v-1360zm669 582l37 390-525-114 147-83q-119-70-280-99v-172q277 33 481 157z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/opera.svg b/img/icons/font-awesome/opera.svg
new file mode 100644
index 00000000..eb67b3f7
--- /dev/null
+++ b/img/icons/font-awesome/opera.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1493 228q-165-110-359-110-155 0-293 73t-240 200q-75 93-119.5 218t-48.5 266v42q4 141 48.5 266t119.5 218q102 127 240 200t293 73q194 0 359-110-121 108-274.5 168t-322.5 60q-29 0-43-1-175-8-333-82t-272-193-181-281-67-339q0-182 71-348t191-286 286-191 348-71h3q168 1 320.5 60.5t273.5 167.5zm299 668q0 192-77 362.5t-213 296.5q-104 63-222 63-137 0-255-84 154-56 253.5-233t99.5-405q0-227-99-404t-253-234q119-83 254-83 119 0 226 65 135 125 210.5 295t75.5 361z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/optin-monster.svg b/img/icons/font-awesome/optin-monster.svg
new file mode 100644
index 00000000..56fd6c6c
--- /dev/null
+++ b/img/icons/font-awesome/optin-monster.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M482 1675q-8 16-27 34.5t-37 25.5q-25 9-51.5-3.5t-28.5-31.5q-1-22 40-55t68-38q23-4 34 21.5t2 46.5zm1341 0q7 16 26 34.5t38 25.5q25 9 51.5-3.5t27.5-31.5q2-22-39.5-55t-68.5-38q-22-4-33 21.5t-2 46.5zm48-109q13 27 56.5 59.5t77.5 41.5q45 13 82-4.5t37-50.5q0-46-67.5-100.5t-115.5-59.5q-40-5-63.5 37.5t-6.5 76.5zm-1439 0q-13 27-56 59.5t-77 41.5q-45 13-82-4.5t-37-50.5q0-46 67.5-100.5t115.5-59.5q40-5 63 37.5t6 76.5zm730-1124h1q-41 0-76 15 27 8 44 30.5t17 49.5q0 35-27 60t-65 25q-52 0-80-43-5 23-5 42 0 74 56 126.5t135 52.5q80 0 136-52.5t56-126.5-56-126.5-136-52.5zm304-218q-99-109-220.5-131.5t-245.5 44.5q27-60 82.5-96.5t118-39.5 121.5 17 99.5 74.5 44.5 131.5zm750 1239q8 11-11 42 7 23 7 40 1 56-44.5 112.5t-109.5 91.5-118 37q-48 2-92-21.5t-66-65.5q-687 25-1259 0-23 41-66.5 65t-92.5 22q-86-3-179.5-80.5t-92.5-160.5q2-22 7-40-19-31-11-42 6-10 31-1 14-22 41-51-7-29 2-38 11-10 39 4 29-20 59-34 0-29 13-37 23-12 51 16 35-5 61 2 18 4 38 19v-73q-11 0-18-2-53-10-97-44.5t-55-87.5q-9-38 0-81 15-62 93-95 2-17 19-35.5t36-23.5 33 7.5 19 30.5h13q46 5 60 23 3 3 5 7 10-1 30.5-3.5t30.5-3.5q-15-11-30-17-23-40-91-43 0-6 1-10-62-2-118.5-18.5t-84.5-47.5q-32-36-42.5-92t-2.5-112q16-126 90-179 23-16 52-4.5t32 40.5q0 1 1.5 14t2.5 21 3 20 5.5 19 8.5 10q27 14 76 12 48-46 98-74-40-4-162 14l47-46q61-58 163-111 145-73 282-86-20-8-41-15.5t-47-14-42.5-10.5-47.5-11-43-10q595-126 904 139 98 84 158 222 85 10 121-9h1q5-3 8.5-10t5.5-19 3-19.5 3-21.5l1-14q3-28 32-40t52 5q73 52 91 178 7 57-3.5 113t-42.5 91q-28 32-83.5 48.5t-115.5 18.5v10q-71 2-95 43-14 5-31 17 11 1 32 3.5t30 3.5q1-5 5-8 16-18 60-23h13q5-18 19-30t33-8 36 23 19 36q79 32 93 95 9 40 1 81-12 53-56 88t-97 44q-10 2-17 2 0 49-1 73 20-15 38-19 26-7 61-2 28-28 51-16 14 9 14 37 33 16 59 34 27-13 38-4 10 10 2 38 28 30 41 51 23-8 31 1zm-275-952q0 29-9 54 82 32 112 132 4-37-9.5-98.5t-41.5-90.5q-20-19-36-17t-16 20zm-78 100q35 42 47.5 108.5t-.5 124.5q67-13 97-45 13-14 18-28-3-64-31-114.5t-79-66.5q-15 15-52 21zm-37 4q-30 0-44-1 42 115 53 239 21 0 43-3 16-68 1-135t-53-100zm-1564 82q30-100 112-132-9-25-9-54 0-18-16.5-20t-35.5 17q-28 29-41.5 90.5t-9.5 98.5zm36 102q29 31 97 45-13-58-.5-124.5t47.5-108.5q-37-6-52-21-51 16-78.5 66t-31.5 115q9 17 18 28zm177 54q14-124 73-235-19 4-55 18l-45 19v-1q-46 89-20 196 25 3 47 3zm963 39q8 38 16.5 108.5t11.5 89.5q3 18 9.5 21.5t23.5-4.5q40-20 62-85.5t23-125.5q-24-2-146-4zm-282-641q-116 0-199 82.5t-83 198.5q0 117 83 199.5t199 82.5 199-82.5 83-199.5q0-116-83-198.5t-199-82.5zm228 639q-105-2-211 0v-1q-1 27 2.5 86t13.5 66q29 14 93.5 14.5t95.5-10.5q9-3 11-39t-.5-69.5-4.5-46.5zm-268 199q8-4 9.5-48t-.5-88-4-63v-1q-212 3-214 3-4 20-7 62t0 83 14 46q34 15 101 16t101-10zm-394-189q-16 59 4.5 118.5t77.5 84.5q15 8 24 5t12-21q3-16 8-90t10-103q-69 2-136 6zm-127 126q3 23-34 36 132 141 271.5 240t305.5 154q172-49 310.5-146t293.5-250q-33-13-30-34 0-2 .5-3.5t1.5-3 1-2.5v-1 1q-17-2-50-5.5t-48-4.5q-26 90-82 132-51 38-82-1-5-6-9-14-7-13-17-62-2 5-5 9t-7.5 7-8 5.5-9.5 4l-10 2.5-12 2-12 1.5-13.5 1-13.5.5q-106 9-163-11-4 17-10 26.5t-21 15-23 7-36 3.5q-6 1-9 1-179 17-203-40-2 63-56 54-47-8-91-54-12-13-20-26-17-29-26-65-58 6-87 10 1 2 4 10zm-84 628q3-14 3-30-17-71-51-130t-73-70q-41-12-101.5 14.5t-104.5 80-39 107.5q35 53 100 93t119 42q51 2 94-28t53-79zm3-171q23 63 27 119 195-113 392-174-98-52-180.5-120t-179.5-165q-6 4-29 13 0 1-1 4t-1 5q31 18 22 37-12 23-56 34-10 13-29 24h-1q-2 83 1 150 19 34 35 73zm69 166q532 21 1145 0-254-147-428-196-76 35-156 57-8 3-16 0-65-21-129-49-208 60-416 188h-1v1q1 0 1-1zm1184-46q4-54 28-120 14-38 33-71l-1 1q3-77 3-153-15-8-30-25-42-9-56-33-9-20 22-38-2-4-2-9-16-4-28-12-204 190-383 284 198 59 414 176zm392 23q5-54-39-107.5t-104-80-102-14.5q-38 11-72.5 70.5t-51.5 129.5q0 16 3 30 10 49 53 79t94 28q54-2 119-42t100-93z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/outdent.svg b/img/icons/font-awesome/outdent.svg
new file mode 100644
index 00000000..4ff487fe
--- /dev/null
+++ b/img/icons/font-awesome/outdent.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M384 544v576q0 13-9.5 22.5t-22.5 9.5q-14 0-23-9l-288-288q-9-9-9-23t9-23l288-288q9-9 23-9 13 0 22.5 9.5t9.5 22.5zm1408 768v192q0 13-9.5 22.5t-22.5 9.5h-1728q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1728q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5h-1088q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1088q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5h-1088q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1088q13 0 22.5 9.5t9.5 22.5zm0-384v192q0 13-9.5 22.5t-22.5 9.5h-1728q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1728q13 0 22.5 9.5t9.5 22.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/pagelines.svg b/img/icons/font-awesome/pagelines.svg
new file mode 100644
index 00000000..ff75c884
--- /dev/null
+++ b/img/icons/font-awesome/pagelines.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1594 1103q-32 80-76 138t-91 88.5-99 46.5-101.5 14.5-96.5-8.5-86.5-22-69.5-27.5-46-22.5l-17-10q-113 228-289.5 359.5t-384.5 132.5q-19 0-32-13t-13-32 13-31.5 32-12.5q173-1 322.5-107.5t251.5-294.5q-36 14-72 23t-83 13-91-2.5-93-28.5-92-59-84.5-100-74.5-146q114-47 214-57t167.5 7.5 124.5 56.5 88.5 77 56.5 82q53-131 79-291-7 1-18 2.5t-46.5 2.5-69.5-.5-81.5-10-88.5-23-84-42.5-75-65-54.5-94.5-28.5-127.5q70-28 133.5-36.5t112.5 1 92 30 73.5 50 56 61 42 63 27.5 56 16 39.5l4 16q12-122 12-195-8-6-21.5-16t-49-44.5-63.5-71.5-54-93-33-112.5 12-127 70-138.5q73 25 127.5 61.5t84.5 76.5 48 85 20.5 89-.5 85.5-13 76.5-19 62-17 42l-7 15q1 4 1 50t-1 72q3-7 10-18.5t30.5-43 50.5-58 71-55.5 91.5-44.5 112-14.5 132.5 24q-2 78-21.5 141.5t-50 104.5-69.5 71.5-81.5 45.5-84.5 24-80 9.5-67.5-1-46.5-4.5l-17-3q-23 147-73 283 6-7 18-18.5t49.5-41 77.5-52.5 99.5-42 117.5-20 129 23.5 137 77.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/paint-brush.svg b/img/icons/font-awesome/paint-brush.svg
new file mode 100644
index 00000000..e95aaddf
--- /dev/null
+++ b/img/icons/font-awesome/paint-brush.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1615 0q70 0 122.5 46.5t52.5 116.5q0 63-45 151-332 629-465 752-97 91-218 91-126 0-216.5-92.5t-90.5-219.5q0-128 92-212l638-579q59-54 130-54zm-909 1034q39 76 106.5 130t150.5 76l1 71q4 213-129.5 347t-348.5 134q-123 0-218-46.5t-152.5-127.5-86.5-183-29-220q7 5 41 30t62 44.5 59 36.5 46 17q41 0 55-37 25-66 57.5-112.5t69.5-76 88-47.5 103-25.5 125-10.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/paper-plane-o.svg b/img/icons/font-awesome/paper-plane-o.svg
new file mode 100644
index 00000000..e525f088
--- /dev/null
+++ b/img/icons/font-awesome/paper-plane-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1764 11q33 24 27 64l-256 1536q-5 29-32 45-14 8-31 8-11 0-24-5l-527-215-298 327q-18 21-47 21-14 0-23-4-19-7-30-23.5t-11-36.5v-452l-472-193q-37-14-40-55-3-39 32-59l1664-960q35-21 68 2zm-342 1499l221-1323-1434 827 336 137 863-639-478 797z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/paper-plane.svg b/img/icons/font-awesome/paper-plane.svg
new file mode 100644
index 00000000..2b82fd79
--- /dev/null
+++ b/img/icons/font-awesome/paper-plane.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1764 11q33 24 27 64l-256 1536q-5 29-32 45-14 8-31 8-11 0-24-5l-453-185-242 295q-18 23-49 23-13 0-22-4-19-7-30.5-23.5t-11.5-36.5v-349l864-1059-1069 925-395-162q-37-14-40-55-2-40 32-59l1664-960q15-9 32-9 20 0 36 11z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/paperclip.svg b/img/icons/font-awesome/paperclip.svg
new file mode 100644
index 00000000..66ae24d7
--- /dev/null
+++ b/img/icons/font-awesome/paperclip.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1596 1385q0 117-79 196t-196 79q-135 0-235-100l-777-776q-113-115-113-271 0-159 110-270t269-111q158 0 273 113l605 606q10 10 10 22 0 16-30.5 46.5t-46.5 30.5q-13 0-23-10l-606-607q-79-77-181-77-106 0-179 75t-73 181q0 105 76 181l776 777q63 63 145 63 64 0 106-42t42-106q0-82-63-145l-581-581q-26-24-60-24-29 0-48 19t-19 48q0 32 25 59l410 410q10 10 10 22 0 16-31 47t-47 31q-12 0-22-10l-410-410q-63-61-63-149 0-82 57-139t139-57q88 0 149 63l581 581q100 98 100 235z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/paragraph.svg b/img/icons/font-awesome/paragraph.svg
new file mode 100644
index 00000000..7b7e810d
--- /dev/null
+++ b/img/icons/font-awesome/paragraph.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1534 189v73q0 29-18.5 61t-42.5 32q-50 0-54 1-26 6-32 31-3 11-3 64v1152q0 25-18 43t-43 18h-108q-25 0-43-18t-18-43v-1218h-143v1218q0 25-17.5 43t-43.5 18h-108q-26 0-43.5-18t-17.5-43v-496q-147-12-245-59-126-58-192-179-64-117-64-259 0-166 88-286 88-118 209-159 111-37 417-37h479q25 0 43 18t18 43z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/paste.svg b/img/icons/font-awesome/paste.svg
new file mode 100644
index 00000000..cba4cd59
--- /dev/null
+++ b/img/icons/font-awesome/paste.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M768 1664h896v-640h-416q-40 0-68-28t-28-68v-416h-384v1152zm256-1440v-64q0-13-9.5-22.5t-22.5-9.5h-704q-13 0-22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h704q13 0 22.5-9.5t9.5-22.5zm256 672h299l-299-299v299zm512 128v672q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-160h-544q-40 0-68-28t-28-68v-1344q0-40 28-68t68-28h1088q40 0 68 28t28 68v328q21 13 36 28l408 408q28 28 48 76t20 88z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/pause-circle-o.svg b/img/icons/font-awesome/pause-circle-o.svg
new file mode 100644
index 00000000..04c856ff
--- /dev/null
+++ b/img/icons/font-awesome/pause-circle-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 128q209 0 385.5 103t279.5 279.5 103 385.5-103 385.5-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103zm0 1312q148 0 273-73t198-198 73-273-73-273-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73zm96-224q-14 0-23-9t-9-23v-576q0-14 9-23t23-9h192q14 0 23 9t9 23v576q0 14-9 23t-23 9h-192zm-384 0q-14 0-23-9t-9-23v-576q0-14 9-23t23-9h192q14 0 23 9t9 23v576q0 14-9 23t-23 9h-192z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/pause-circle.svg b/img/icons/font-awesome/pause-circle.svg
new file mode 100644
index 00000000..bdd6308c
--- /dev/null
+++ b/img/icons/font-awesome/pause-circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M832 1184v-576q0-14-9-23t-23-9h-256q-14 0-23 9t-9 23v576q0 14 9 23t23 9h256q14 0 23-9t9-23zm448 0v-576q0-14-9-23t-23-9h-256q-14 0-23 9t-9 23v576q0 14 9 23t23 9h256q14 0 23-9t9-23zm384-288q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/pause.svg b/img/icons/font-awesome/pause.svg
new file mode 100644
index 00000000..f9181135
--- /dev/null
+++ b/img/icons/font-awesome/pause.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 192v1408q0 26-19 45t-45 19h-512q-26 0-45-19t-19-45v-1408q0-26 19-45t45-19h512q26 0 45 19t19 45zm-896 0v1408q0 26-19 45t-45 19h-512q-26 0-45-19t-19-45v-1408q0-26 19-45t45-19h512q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/paw.svg b/img/icons/font-awesome/paw.svg
new file mode 100644
index 00000000..f5cfb361
--- /dev/null
+++ b/img/icons/font-awesome/paw.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M844 472q0 60-19 113.5t-63 92.5-105 39q-76 0-138-57.5t-92-135.5-30-151q0-60 19-113.5t63-92.5 105-39q77 0 138.5 57.5t91.5 135 30 151.5zm-342 483q0 80-42 139t-119 59q-76 0-141.5-55.5t-100.5-133.5-35-152q0-80 42-139.5t119-59.5q76 0 141.5 55.5t100.5 134 35 152.5zm394-27q118 0 255 97.5t229 237 92 254.5q0 46-17 76.5t-48.5 45-64.5 20-76 5.5q-68 0-187.5-45t-182.5-45q-66 0-192.5 44.5t-200.5 44.5q-183 0-183-146 0-86 56-191.5t139.5-192.5 187.5-146 193-59zm239-211q-61 0-105-39t-63-92.5-19-113.5q0-74 30-151.5t91.5-135 138.5-57.5q61 0 105 39t63 92.5 19 113.5q0 73-30 151t-92 135.5-138 57.5zm432-104q77 0 119 59.5t42 139.5q0 74-35 152t-100.5 133.5-141.5 55.5q-77 0-119-59t-42-139q0-74 35-152.5t100.5-134 141.5-55.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/paypal.svg b/img/icons/font-awesome/paypal.svg
new file mode 100644
index 00000000..2f759561
--- /dev/null
+++ b/img/icons/font-awesome/paypal.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1647 646q18 84-4 204-87 444-565 444h-44q-25 0-44 16.5t-24 42.5l-4 19-55 346-2 15q-5 26-24.5 42.5t-44.5 16.5h-251q-21 0-33-15t-9-36q9-56 26.5-168t26.5-168 27-167.5 27-167.5q5-37 43-37h131q133 2 236-21 175-39 287-144 102-95 155-246 24-70 35-133 1-6 2.5-7.5t3.5-1 6 3.5q79 59 98 162zm-172-282q0 107-46 236-80 233-302 315-113 40-252 42 0 1-90 1l-90-1q-100 0-118 96-2 8-85 530-1 10-12 10h-295q-22 0-36.5-16.5t-11.5-38.5l232-1471q5-29 27.5-48t51.5-19h598q34 0 97.5 13t111.5 32q107 41 163.5 123t56.5 196z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/pencil-square-o.svg b/img/icons/font-awesome/pencil-square-o.svg
new file mode 100644
index 00000000..c2a69cc5
--- /dev/null
+++ b/img/icons/font-awesome/pencil-square-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M888 1184l116-116-152-152-116 116v56h96v96h56zm440-720q-16-16-33 1l-350 350q-17 17-1 33t33-1l350-350q17-17 1-33zm80 594v190q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q63 0 117 25 15 7 18 23 3 17-9 29l-49 49q-14 14-32 8-23-6-45-6h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113v-126q0-13 9-22l64-64q15-15 35-7t20 29zm-96-738l288 288-672 672h-288v-288zm444 132l-92 92-288-288 92-92q28-28 68-28t68 28l152 152q28 28 28 68t-28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/pencil-square.svg b/img/icons/font-awesome/pencil-square.svg
new file mode 100644
index 00000000..2440d951
--- /dev/null
+++ b/img/icons/font-awesome/pencil-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M532 1108l152 152-52 52h-56v-96h-96v-56zm414-390q14 13-3 30l-291 291q-17 17-30 3-14-13 3-30l291-291q17-17 30-3zm-274 690l544-544-288-288-544 544v288h288zm608-608l92-92q28-28 28-68t-28-68l-152-152q-28-28-68-28t-68 28l-92 92zm384-384v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/pencil.svg b/img/icons/font-awesome/pencil.svg
new file mode 100644
index 00000000..2b0da7ab
--- /dev/null
+++ b/img/icons/font-awesome/pencil.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/percent.svg b/img/icons/font-awesome/percent.svg
new file mode 100644
index 00000000..98c60b56
--- /dev/null
+++ b/img/icons/font-awesome/percent.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 1280q0-52-38-90t-90-38-90 38-38 90 38 90 90 38 90-38 38-90zm-768-768q0-52-38-90t-90-38-90 38-38 90 38 90 90 38 90-38 38-90zm1024 768q0 159-112.5 271.5t-271.5 112.5-271.5-112.5-112.5-271.5 112.5-271.5 271.5-112.5 271.5 112.5 112.5 271.5zm-96-1088q0 20-13 38l-1056 1408q-19 26-51 26h-160q-26 0-45-19t-19-45q0-20 13-38l1056-1408q19-26 51-26h160q26 0 45 19t19 45zm-672 320q0 159-112.5 271.5t-271.5 112.5-271.5-112.5-112.5-271.5 112.5-271.5 271.5-112.5 271.5 112.5 112.5 271.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/phone-square.svg b/img/icons/font-awesome/phone-square.svg
new file mode 100644
index 00000000..4da60a37
--- /dev/null
+++ b/img/icons/font-awesome/phone-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 1193q0-11-2-16t-18-16.5-40.5-25-47.5-26.5-45.5-25-28.5-15q-5-3-19-13t-25-15-21-5q-15 0-36.5 20.5t-39.5 45-38.5 45-33.5 20.5q-7 0-16.5-3.5t-15.5-6.5-17-9.5-14-8.5q-99-55-170-126.5t-127-170.5q-2-3-8.5-14t-9.5-17-6.5-15.5-3.5-16.5q0-13 20.5-33.5t45-38.5 45-39.5 20.5-36.5q0-10-5-21t-15-25-13-19q-3-6-15-28.5t-25-45.5-26.5-47.5-25-40.5-16.5-18-16-2q-48 0-101 22-46 21-80 94.5t-34 130.5q0 16 2.5 34t5 30.5 9 33 10 29.5 12.5 33 11 30q60 164 216.5 320.5t320.5 216.5q6 2 30 11t33 12.5 29.5 10 33 9 30.5 5 34 2.5q57 0 130.5-34t94.5-80q22-53 22-101zm256-777v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/phone.svg b/img/icons/font-awesome/phone.svg
new file mode 100644
index 00000000..55096dcd
--- /dev/null
+++ b/img/icons/font-awesome/phone.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1600 1240q0 27-10 70.5t-21 68.5q-21 50-122 106-94 51-186 51-27 0-53-3.5t-57.5-12.5-47-14.5-55.5-20.5-49-18q-98-35-175-83-127-79-264-216t-216-264q-48-77-83-175-3-9-18-49t-20.5-55.5-14.5-47-12.5-57.5-3.5-53q0-92 51-186 56-101 106-122 25-11 68.5-21t70.5-10q14 0 21 3 18 6 53 76 11 19 30 54t35 63.5 31 53.5q3 4 17.5 25t21.5 35.5 7 28.5q0 20-28.5 50t-62 55-62 53-28.5 46q0 9 5 22.5t8.5 20.5 14 24 11.5 19q76 137 174 235t235 174q2 1 19 11.5t24 14 20.5 8.5 22.5 5q18 0 46-28.5t53-62 55-62 50-28.5q14 0 28.5 7t35.5 21.5 25 17.5q25 15 53.5 31t63.5 35 54 30q70 35 76 53 3 7 3 21z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/photo.svg b/img/icons/font-awesome/photo.svg
new file mode 100644
index 00000000..b1fb7e26
--- /dev/null
+++ b/img/icons/font-awesome/photo.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 576q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm1024 384v448h-1408v-192l320-320 160 160 512-512zm96-704h-1600q-13 0-22.5 9.5t-9.5 22.5v1216q0 13 9.5 22.5t22.5 9.5h1600q13 0 22.5-9.5t9.5-22.5v-1216q0-13-9.5-22.5t-22.5-9.5zm160 32v1216q0 66-47 113t-113 47h-1600q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1600q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/picture-o.svg b/img/icons/font-awesome/picture-o.svg
new file mode 100644
index 00000000..b1fb7e26
--- /dev/null
+++ b/img/icons/font-awesome/picture-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 576q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm1024 384v448h-1408v-192l320-320 160 160 512-512zm96-704h-1600q-13 0-22.5 9.5t-9.5 22.5v1216q0 13 9.5 22.5t22.5 9.5h1600q13 0 22.5-9.5t9.5-22.5v-1216q0-13-9.5-22.5t-22.5-9.5zm160 32v1216q0 66-47 113t-113 47h-1600q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1600q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/pie-chart.svg b/img/icons/font-awesome/pie-chart.svg
new file mode 100644
index 00000000..6cdc9b7b
--- /dev/null
+++ b/img/icons/font-awesome/pie-chart.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M768 890l546 546q-106 108-247.5 168t-298.5 60q-209 0-385.5-103t-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103v762zm187 6h773q0 157-60 298.5t-168 247.5zm709-128h-768v-768q209 0 385.5 103t279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/pied-piper-alt.svg b/img/icons/font-awesome/pied-piper-alt.svg
new file mode 100644
index 00000000..c49b591d
--- /dev/null
+++ b/img/icons/font-awesome/pied-piper-alt.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1227 929q75-3 143.5 20.5t118 58.5 101 94.5 84 108 75.5 120.5q33 56 78.5 109t75.5 80.5 99 88.5q-48 30-108.5 57.5t-138.5 59-114 47.5q-44-37-74-115t-43.5-164.5-33-180.5-42.5-168.5-72.5-123-122.5-48.5l-10 2-6 4q4 5 13 14 6 5 28 23.5t25.5 22 19 18 18 20.5 11.5 21 10.5 27.5 4.5 31 4 40.5l1 33q1 26-2.5 57.5t-7.5 52-12.5 58.5-11.5 53q-35-1-101 9.5t-98 10.5q-39 0-72-10-2-16-2-47 0-74 3-96 2-13 31.5-41.5t57-59 26.5-51.5q-24-2-43 24-36 53-111.5 99.5t-136.5 46.5q-25 0-75.5-63t-106.5-139.5-84-96.5q-6-4-27-30-482 112-513 112-16 0-28-11t-12-27q0-15 8.5-26.5t22.5-14.5l486-106q-8-14-8-25t5.5-17.5 16-11.5 20-7 23-4.5 18.5-4.5q4-1 15.5-7.5t17.5-6.5q15 0 28 16t20 33q163-37 172-37 17 0 29.5 11t12.5 28q0 15-8.5 26t-23.5 14l-182 40-1 16q-1 26 81.5 117.5t104.5 91.5q47 0 119-80t72-129q0-36-23.5-53t-51-18.5-51-11.5-23.5-34q0-16 10-34l-68-19q43-44 43-117 0-26-5-58 82-16 144-16 44 0 71.5 1.5t48.5 8.5 31 13.5 20.5 24.5 15.5 33.5 17 47.5 24 60l50-25q-3 40-23 60t-42.5 21-40 6.5-16.5 20.5zm60-235q-5-5-13.5-15.5t-12-14.5-10.5-11.5-10-10.5l-8-8-8.5-7.5-8-5-8.5-4.5q-7-3-14.5-5t-20.5-2.5-22-.5h-70q-126 0-217 43 16-30 36-46.5t54-29.5 65.5-36 46-36.5 50-55 43.5-50.5q12 9 28 31.5t32 36.5 38 13l12-1v76l22 1q247-95 371-190 28-21 50-39t42.5-37.5 33-31 29.5-34 24-31 24.5-37 23-38 27-47.5 29.5-53l7-9q-2 53-43 139-79 165-205 264t-306 142q-14 3-42 7.5t-50 9.5-39 14q3 19 24.5 46t21.5 34q0 11-26 30zm-221 921q39-26 131.5-47.5t146.5-21.5q9 0 22.5 15.5t28 42.5 26 50 24 51 14.5 33q-121 45-244 45-61 0-125-11zm-239-647l48-12 109 177-73 48zm501 517q3 15 3 16 0 7-17.5 14.5t-46 13-54 9.5-53.5 7.5-32 4.5l-7-43q21-2 60.5-8.5t72-10 60.5-3.5h14zm-457-628l-96 20-6-17q10-1 32.5-7t34.5-6q19 0 35 10zm195 634h31l10 83-41 12v-95zm889-1490v-1 1zm0 0l-1 5-2 2 1-3zm0 0l1-1z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/pied-piper-pp.svg b/img/icons/font-awesome/pied-piper-pp.svg
new file mode 100644
index 00000000..1b776001
--- /dev/null
+++ b/img/icons/font-awesome/pied-piper-pp.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1174 1020q0 64-38 109t-91 45q-43 0-70-15v-277q28-17 70-17 53 0 91 45.5t38 109.5zm-343-428q0 64-38 109.5t-91 45.5q-43 0-70-15v-277q28-17 70-17 53 0 91 45t38 109zm562 431q0-134-88-229t-213-95q-20 0-39 3-23 78-78 136-87 95-211 101v636l211-41v-206q51 19 117 19 125 0 213-95t88-229zm-343-427q0-134-88.5-229t-213.5-95q-74 0-141 36h-186v840l211-41v-206q55 19 116 19 125 0 213.5-95t88.5-229zm614-180v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/pied-piper.svg b/img/icons/font-awesome/pied-piper.svg
new file mode 100644
index 00000000..092a28ec
--- /dev/null
+++ b/img/icons/font-awesome/pied-piper.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M2304 0q-69 46-125 92t-89 81-59.5 71.5-37.5 57.5-22 44.5-14 29.5q-10 18-35.5 136.5t-48.5 164.5q-15 29-50 60.5t-67.5 50.5-72.5 41-48 28q-47 31-151 231-341-14-630 158-92 53-303 179 47-16 86-31t55-22l15-7q71-27 163-64.5t133.5-53.5 108-34.5 142.5-31.5q186-31 465 7 1 0 10 3 11 6 14 17t-3 22l-194 345q-15 29-47 22-128-24-354-24-146 0-402 44.5t-392 46.5q-82 1-149-13t-107-37-61-40-33-34l-1-1v-2q0-6 6-6 138 0 371-55 192-366 374.5-524t383.5-158q5 0 14.5.5t38 5 55 12 61.5 24.5 63 39.5 54 59 40 82.5l102-177q2-4 21-42.5t44.5-86.5 61-109.5 84-133.5 100.5-137q66-82 128-141.5t121.5-96.5 92.5-53.5 88-39.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/pinterest-p.svg b/img/icons/font-awesome/pinterest-p.svg
new file mode 100644
index 00000000..4241e47a
--- /dev/null
+++ b/img/icons/font-awesome/pinterest-p.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 597q0-108 37.5-203.5t103.5-166.5 152-123 185-78 202-26q158 0 294 66.5t221 193.5 85 287q0 96-19 188t-60 177-100 149.5-145 103-189 38.5q-68 0-135-32t-96-88q-10 39-28 112.5t-23.5 95-20.5 71-26 71-32 62.5-46 77.5-62 86.5l-14 5-9-10q-15-157-15-188 0-92 21.5-206.5t66.5-287.5 52-203q-32-65-32-169 0-83 52-156t132-73q61 0 95 40.5t34 102.5q0 66-44 191t-44 187q0 63 45 104.5t109 41.5q55 0 102-25t78.5-68 56-95 38-110.5 20-111 6.5-99.5q0-173-109.5-269.5t-285.5-96.5q-200 0-334 129.5t-134 328.5q0 44 12.5 85t27 65 27 45.5 12.5 30.5q0 28-15 73t-37 45q-2 0-17-3-51-15-90.5-56t-61-94.5-32.5-108-11-106.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/pinterest-square.svg b/img/icons/font-awesome/pinterest-square.svg
new file mode 100644
index 00000000..6a02a8d0
--- /dev/null
+++ b/img/icons/font-awesome/pinterest-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1376 128q119 0 203.5 84.5t84.5 203.5v960q0 119-84.5 203.5t-203.5 84.5h-725q85-122 108-210 9-34 53-209 21 39 73.5 67t112.5 28q181 0 295.5-147.5t114.5-373.5q0-84-35-162.5t-96.5-139-152.5-97-197-36.5q-104 0-194.5 28.5t-153 76.5-107.5 109.5-66.5 128-21.5 132.5q0 102 39.5 180t116.5 110q13 5 23.5 0t14.5-19q10-44 15-61 6-23-11-42-50-62-50-150 0-150 103.5-256.5t270.5-106.5q149 0 232.5 81t83.5 210q0 168-67.5 286t-173.5 118q-60 0-97-43.5t-23-103.5q8-34 26.5-92.5t29.5-102 11-74.5q0-49-26.5-81.5t-75.5-32.5q-61 0-103.5 56.5t-42.5 139.5q0 72 24 121l-98 414q-24 100-7 254h-183q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/pinterest.svg b/img/icons/font-awesome/pinterest.svg
new file mode 100644
index 00000000..3ef3bdaf
--- /dev/null
+++ b/img/icons/font-awesome/pinterest.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 896q0 209-103 385.5t-279.5 279.5-385.5 103q-111 0-218-32 59-93 78-164 9-34 54-211 20 39 73 67.5t114 28.5q121 0 216-68.5t147-188.5 52-270q0-114-59.5-214t-172.5-163-255-63q-105 0-196 29t-154.5 77-109 110.5-67 129.5-21.5 134q0 104 40 183t117 111q30 12 38-20 2-7 8-31t8-30q6-23-11-43-51-61-51-151 0-151 104.5-259.5t273.5-108.5q151 0 235.5 82t84.5 213q0 170-68.5 289t-175.5 119q-61 0-98-43.5t-23-104.5q8-35 26.5-93.5t30-103 11.5-75.5q0-50-27-83t-77-33q-62 0-105 57t-43 142q0 73 25 122l-99 418q-17 70-13 177-206-91-333-281t-127-423q0-209 103-385.5t279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/plane.svg b/img/icons/font-awesome/plane.svg
new file mode 100644
index 00000000..bfa92316
--- /dev/null
+++ b/img/icons/font-awesome/plane.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1568 160q44 52 12 148t-108 172l-161 161 160 696q5 19-12 33l-128 96q-7 6-19 6-4 0-7-1-15-3-21-16l-279-508-259 259 53 194q5 17-8 31l-96 96q-9 9-23 9h-2q-15-2-24-13l-189-252-252-189q-11-7-13-23-1-13 9-25l96-97q9-9 23-9 6 0 8 1l194 53 259-259-508-279q-14-8-17-24-2-16 9-27l128-128q14-13 30-8l665 159 160-160q76-76 172-108t148 12z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/play-circle-o.svg b/img/icons/font-awesome/play-circle-o.svg
new file mode 100644
index 00000000..b69c1d44
--- /dev/null
+++ b/img/icons/font-awesome/play-circle-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1312 896q0 37-32 55l-544 320q-15 9-32 9-16 0-32-8-32-19-32-56v-640q0-37 32-56 33-18 64 1l544 320q32 18 32 55zm128 0q0-148-73-273t-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273zm224 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/play-circle.svg b/img/icons/font-awesome/play-circle.svg
new file mode 100644
index 00000000..71b778e2
--- /dev/null
+++ b/img/icons/font-awesome/play-circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 128q209 0 385.5 103t279.5 279.5 103 385.5-103 385.5-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103zm384 823q32-18 32-55t-32-55l-544-320q-31-19-64-1-32 19-32 56v640q0 37 32 56 16 8 32 8 17 0 32-9z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/play.svg b/img/icons/font-awesome/play.svg
new file mode 100644
index 00000000..13052f48
--- /dev/null
+++ b/img/icons/font-awesome/play.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1576 927l-1328 738q-23 13-39.5 3t-16.5-36v-1472q0-26 16.5-36t39.5 3l1328 738q23 13 23 31t-23 31z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/plug.svg b/img/icons/font-awesome/plug.svg
new file mode 100644
index 00000000..ef8d3fed
--- /dev/null
+++ b/img/icons/font-awesome/plug.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1755 453q37 38 37 90.5t-37 90.5l-401 400 150 150-160 160q-163 163-389.5 186.5t-411.5-100.5l-362 362h-181v-181l362-362q-124-185-100.5-411.5t186.5-389.5l160-160 150 150 400-401q38-37 91-37t90 37 37 90.5-37 90.5l-400 401 234 234 401-400q38-37 91-37t90 37z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/plus-circle.svg b/img/icons/font-awesome/plus-circle.svg
new file mode 100644
index 00000000..1d61d9cd
--- /dev/null
+++ b/img/icons/font-awesome/plus-circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1344 960v-128q0-26-19-45t-45-19h-256v-256q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v256h-256q-26 0-45 19t-19 45v128q0 26 19 45t45 19h256v256q0 26 19 45t45 19h128q26 0 45-19t19-45v-256h256q26 0 45-19t19-45zm320-64q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/plus-square-o.svg b/img/icons/font-awesome/plus-square-o.svg
new file mode 100644
index 00000000..285996b0
--- /dev/null
+++ b/img/icons/font-awesome/plus-square-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1344 800v64q0 14-9 23t-23 9h-352v352q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-352h-352q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h352v-352q0-14 9-23t23-9h64q14 0 23 9t9 23v352h352q14 0 23 9t9 23zm128 448v-832q0-66-47-113t-113-47h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113zm128-832v832q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/plus-square.svg b/img/icons/font-awesome/plus-square.svg
new file mode 100644
index 00000000..4dbbd715
--- /dev/null
+++ b/img/icons/font-awesome/plus-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 960v-128q0-26-19-45t-45-19h-320v-320q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v320h-320q-26 0-45 19t-19 45v128q0 26 19 45t45 19h320v320q0 26 19 45t45 19h128q26 0 45-19t19-45v-320h320q26 0 45-19t19-45zm256-544v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/plus.svg b/img/icons/font-awesome/plus.svg
new file mode 100644
index 00000000..79327232
--- /dev/null
+++ b/img/icons/font-awesome/plus.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1600 736v192q0 40-28 68t-68 28h-416v416q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-416h-416q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h416v-416q0-40 28-68t68-28h192q40 0 68 28t28 68v416h416q40 0 68 28t28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/podcast.svg b/img/icons/font-awesome/podcast.svg
new file mode 100644
index 00000000..d2e22797
--- /dev/null
+++ b/img/icons/font-awesome/podcast.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1122 1192q0 86-17 197-31 215-55 313-22 90-152 90t-152-90q-24-98-55-313-17-110-17-197 0-168 224-168t224 168zm542-424q0 240-134 434t-350 280q-8 3-15-3t-6-15q7-48 10-66 4-32 6-47 1-9 9-12 159-81 255.5-234t96.5-337q0-180-91-330.5t-247-234.5-337-74q-124 7-237 61t-193.5 140.5-128 202-46.5 240.5q1 184 99 336.5t257 231.5q7 3 9 12 3 21 6 45 1 9 5 32.5t6 35.5q1 9-6.5 15t-15.5 2q-148-58-261-169.5t-173.5-264-52.5-319.5q7-143 66-273.5t154.5-227 225-157.5 272.5-70q164-10 315.5 46.5t261 160.5 175 250.5 65.5 308.5zm-542-32q0 93-65.5 158.5t-158.5 65.5-158.5-65.5-65.5-158.5 65.5-158.5 158.5-65.5 158.5 65.5 65.5 158.5zm288 32q0 122-53.5 228.5t-146.5 177.5q-8 6-16 2t-10-14q-6-52-29-92-7-10 3-20 58-54 91-127t33-155q0-111-58.5-204t-157.5-141.5-212-36.5q-133 15-229 113t-109 231q-10 92 23.5 176t98.5 144q10 10 3 20-24 41-29 93-2 9-10 13t-16-2q-95-74-148.5-183t-51.5-234q3-131 69-244t177-181.5 241-74.5q144-7 268 60t196.5 187.5 72.5 263.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/power-off.svg b/img/icons/font-awesome/power-off.svg
new file mode 100644
index 00000000..7dc4f460
--- /dev/null
+++ b/img/icons/font-awesome/power-off.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 896q0 156-61 298t-164 245-245 164-298 61-298-61-245-164-164-245-61-298q0-182 80.5-343t226.5-270q43-32 95.5-25t83.5 50q32 42 24.5 94.5t-49.5 84.5q-98 74-151.5 181t-53.5 228q0 104 40.5 198.5t109.5 163.5 163.5 109.5 198.5 40.5 198.5-40.5 163.5-109.5 109.5-163.5 40.5-198.5q0-121-53.5-228t-151.5-181q-42-32-49.5-84.5t24.5-94.5q31-43 84-50t95 25q146 109 226.5 270t80.5 343zm-640-768v640q0 52-38 90t-90 38-90-38-38-90v-640q0-52 38-90t90-38 90 38 38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/print.svg b/img/icons/font-awesome/print.svg
new file mode 100644
index 00000000..56299e96
--- /dev/null
+++ b/img/icons/font-awesome/print.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M448 1536h896v-256h-896v256zm0-640h896v-384h-160q-40 0-68-28t-28-68v-160h-640v640zm1152 64q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm128 0v416q0 13-9.5 22.5t-22.5 9.5h-224v160q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-160h-224q-13 0-22.5-9.5t-9.5-22.5v-416q0-79 56.5-135.5t135.5-56.5h64v-544q0-40 28-68t68-28h672q40 0 88 20t76 48l152 152q28 28 48 76t20 88v256h64q79 0 135.5 56.5t56.5 135.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/product-hunt.svg b/img/icons/font-awesome/product-hunt.svg
new file mode 100644
index 00000000..8a9fd825
--- /dev/null
+++ b/img/icons/font-awesome/product-hunt.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1150 762q0 56-39.5 95t-95.5 39h-253v-269h253q56 0 95.5 39.5t39.5 95.5zm179 0q0-130-91.5-222t-222.5-92h-433v896h180v-269h253q130 0 222-91.5t92-221.5zm463 134q0 182-71 348t-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71 348 71 286 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/puzzle-piece.svg b/img/icons/font-awesome/puzzle-piece.svg
new file mode 100644
index 00000000..4776b4a2
--- /dev/null
+++ b/img/icons/font-awesome/puzzle-piece.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1728 1098q0 81-44.5 135t-123.5 54q-41 0-77.5-17.5t-59-38-56.5-38-71-17.5q-110 0-110 124 0 39 16 115t15 115v5q-22 0-33 1-34 3-97.5 11.5t-115.5 13.5-98 5q-61 0-103-26.5t-42-83.5q0-37 17.5-71t38-56.5 38-59 17.5-77.5q0-79-54-123.5t-135-44.5q-84 0-143 45.5t-59 127.5q0 43 15 83t33.5 64.5 33.5 53 15 50.5q0 45-46 89-37 35-117 35-95 0-245-24-9-2-27.5-4t-27.5-4l-13-2q-1 0-3-1-2 0-2-1v-1024q2 1 17.5 3.5t34 5 21.5 3.5q150 24 245 24 80 0 117-35 46-44 46-89 0-22-15-50.5t-33.5-53-33.5-64.5-15-83q0-82 59-127.5t144-45.5q80 0 134 44.5t54 123.5q0 41-17.5 77.5t-38 59-38 56.5-17.5 71q0 57 42 83.5t103 26.5q64 0 180-15t163-17v2q-1 2-3.5 17.5t-5 34-3.5 21.5q-24 150-24 245 0 80 35 117 44 46 89 46 22 0 50.5-15t53-33.5 64.5-33.5 83-15q82 0 127.5 59t45.5 143z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/qq.svg b/img/icons/font-awesome/qq.svg
new file mode 100644
index 00000000..b814154a
--- /dev/null
+++ b/img/icons/font-awesome/qq.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M270 806q-8-19-8-52 0-20 11-49t24-45q-1-22 7.5-53t22.5-43q0-139 92.5-288.5t217.5-209.5q139-66 324-66 133 0 266 55 49 21 90 48t71 56 55 68 42 74 32.5 84.5 25.5 89.5 22 98l1 5q55 83 55 150 0 14-9 40t-9 38q0 1 1.5 3.5t3.5 5 2 3.5q77 114 120.5 214.5t43.5 208.5q0 43-19.5 100t-55.5 57q-9 0-19.5-7.5t-19-17.5-19-26-16-26.5-13.5-26-9-17.5q-1-1-3-1l-5 4q-59 154-132 223 20 20 61.5 38.5t69 41.5 35.5 65q-2 4-4 16t-7 18q-64 97-302 97-53 0-110.5-9t-98-20-104.5-30q-15-5-23-7-14-4-46-4.5t-40-1.5q-41 45-127.5 65t-168.5 20q-35 0-69-1.5t-93-9-101-20.5-74.5-40-32.5-64q0-40 10-59.5t41-48.5q11-2 40.5-13t49.5-12q4 0 14-2 2-2 2-4l-2-3q-48-11-108-105.5t-73-156.5l-5-3q-4 0-12 20-18 41-54.5 74.5t-77.5 37.5h-1q-4 0-6-4.5t-5-5.5q-23-54-23-100 0-275 252-466z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/qrcode.svg b/img/icons/font-awesome/qrcode.svg
new file mode 100644
index 00000000..125d12f3
--- /dev/null
+++ b/img/icons/font-awesome/qrcode.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M576 1152v128h-128v-128h128zm0-768v128h-128v-128h128zm768 0v128h-128v-128h128zm-1024 1023h384v-383h-384v383zm0-767h384v-384h-384v384zm768 0h384v-384h-384v384zm-256 256v640h-640v-640h640zm512 512v128h-128v-128h128zm256 0v128h-128v-128h128zm0-512v384h-384v-128h-128v384h-128v-640h384v128h128v-128h128zm-768-768v640h-640v-640h640zm768 0v640h-640v-640h640z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/question-circle-o.svg b/img/icons/font-awesome/question-circle-o.svg
new file mode 100644
index 00000000..59349176
--- /dev/null
+++ b/img/icons/font-awesome/question-circle-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1008 1200v160q0 14-9 23t-23 9h-160q-14 0-23-9t-9-23v-160q0-14 9-23t23-9h160q14 0 23 9t9 23zm256-496q0 50-15 90t-45.5 69-52 44-59.5 36q-32 18-46.5 28t-26 24-11.5 29v32q0 14-9 23t-23 9h-160q-14 0-23-9t-9-23v-68q0-35 10.5-64.5t24-47.5 39-35.5 41-25.5 44.5-21q53-25 75-43t22-49q0-42-43.5-71.5t-95.5-29.5q-56 0-95 27-29 20-80 83-9 12-25 12-11 0-19-6l-108-82q-10-7-12-20t5-23q122-192 349-192 129 0 238.5 89.5t109.5 214.5zm-368-448q-130 0-248.5 51t-204 136.5-136.5 204-51 248.5 51 248.5 136.5 204 204 136.5 248.5 51 248.5-51 204-136.5 136.5-204 51-248.5-51-248.5-136.5-204-204-136.5-248.5-51zm768 640q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/question-circle.svg b/img/icons/font-awesome/question-circle.svg
new file mode 100644
index 00000000..6b7d7cf1
--- /dev/null
+++ b/img/icons/font-awesome/question-circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1376v-192q0-14-9-23t-23-9h-192q-14 0-23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23-9t9-23zm256-672q0-88-55.5-163t-138.5-116-170-41q-243 0-371 213-15 24 8 42l132 100q7 6 19 6 16 0 25-12 53-68 86-92 34-24 86-24 48 0 85.5 26t37.5 59q0 38-20 61t-68 45q-63 28-115.5 86.5t-52.5 125.5v36q0 14 9 23t23 9h192q14 0 23-9t9-23q0-19 21.5-49.5t54.5-49.5q32-18 49-28.5t46-35 44.5-48 28-60.5 12.5-81zm384 192q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/question.svg b/img/icons/font-awesome/question.svg
new file mode 100644
index 00000000..7fbcd22f
--- /dev/null
+++ b/img/icons/font-awesome/question.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1088 1256v240q0 16-12 28t-28 12h-240q-16 0-28-12t-12-28v-240q0-16 12-28t28-12h240q16 0 28 12t12 28zm316-600q0 54-15.5 101t-35 76.5-55 59.5-57.5 43.5-61 35.5q-41 23-68.5 65t-27.5 67q0 17-12 32.5t-28 15.5h-240q-15 0-25.5-18.5t-10.5-37.5v-45q0-83 65-156.5t143-108.5q59-27 84-56t25-76q0-42-46.5-74t-107.5-32q-65 0-108 29-35 25-107 115-13 16-31 16-12 0-25-8l-164-125q-13-10-15.5-25t5.5-28q160-266 464-266 80 0 161 31t146 83 106 127.5 41 158.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/quora.svg b/img/icons/font-awesome/quora.svg
new file mode 100644
index 00000000..6f63adb1
--- /dev/null
+++ b/img/icons/font-awesome/quora.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1255 787q0-318-105-474.5t-330-156.5q-222 0-326 157t-104 474q0 316 104 471.5t326 155.5q74 0 131-17-22-43-39-73t-44-65-53.5-56.5-63-36-77.5-14.5q-46 0-79 16l-49-97q105-91 276-91 132 0 215.5 54t150.5 155q67-149 67-402zm390 632h117q3 27-2 67t-26.5 95-58 100.5-107 78-162.5 32.5q-71 0-130.5-19t-105.5-56-79-78-66-96q-97 27-205 27-150 0-292.5-58t-253-158.5-178-249-67.5-317.5q0-170 67.5-319.5t178.5-250.5 253.5-159 291.5-58q121 0 238.5 36t217 106 176 164.5 119.5 219 43 261.5q0 190-80.5 347.5t-218.5 264.5q47 70 93.5 106.5t104.5 36.5q61 0 94-37.5t38-85.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/quote-left.svg b/img/icons/font-awesome/quote-left.svg
new file mode 100644
index 00000000..6dde970a
--- /dev/null
+++ b/img/icons/font-awesome/quote-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M832 960v384q0 80-56 136t-136 56h-384q-80 0-136-56t-56-136v-704q0-104 40.5-198.5t109.5-163.5 163.5-109.5 198.5-40.5h64q26 0 45 19t19 45v128q0 26-19 45t-45 19h-64q-106 0-181 75t-75 181v32q0 40 28 68t68 28h224q80 0 136 56t56 136zm896 0v384q0 80-56 136t-136 56h-384q-80 0-136-56t-56-136v-704q0-104 40.5-198.5t109.5-163.5 163.5-109.5 198.5-40.5h64q26 0 45 19t19 45v128q0 26-19 45t-45 19h-64q-106 0-181 75t-75 181v32q0 40 28 68t68 28h224q80 0 136 56t56 136z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/quote-right.svg b/img/icons/font-awesome/quote-right.svg
new file mode 100644
index 00000000..ecc2ad21
--- /dev/null
+++ b/img/icons/font-awesome/quote-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M832 320v704q0 104-40.5 198.5t-109.5 163.5-163.5 109.5-198.5 40.5h-64q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h64q106 0 181-75t75-181v-32q0-40-28-68t-68-28h-224q-80 0-136-56t-56-136v-384q0-80 56-136t136-56h384q80 0 136 56t56 136zm896 0v704q0 104-40.5 198.5t-109.5 163.5-163.5 109.5-198.5 40.5h-64q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h64q106 0 181-75t75-181v-32q0-40-28-68t-68-28h-224q-80 0-136-56t-56-136v-384q0-80 56-136t136-56h384q80 0 136 56t56 136z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/ra.svg b/img/icons/font-awesome/ra.svg
new file mode 100644
index 00000000..fd958437
--- /dev/null
+++ b/img/icons/font-awesome/ra.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M19 874q8-217 116-406t305-318h5q0 1-1 3-8 8-28 33.5t-52 76.5-60 110.5-44.5 135.5-14 150.5 39 157.5 108.5 154q50 50 102 69.5t90.5 11.5 69.5-23.5 47-32.5l16-16q39-51 53-116.5t6.5-122.5-21-107-26.5-80l-14-29q-10-25-30.5-49.5t-43-41-43.5-29.5-35-19l-13-6 104-115q39 17 78 52t59 61l19 27q1-48-18.5-103.5t-40.5-87.5l-20-31 161-183 160 181q-33 46-52.5 102.5t-22.5 90.5l-4 33q22-37 61.5-72.5t67.5-52.5l28-17 103 115q-44 14-85 50t-60 65l-19 29q-31 56-48 133.5t-7 170 57 156.5q33 45 77.5 60.5t85 5.5 76-26.5 57.5-33.5l21-16q60-53 96.5-115t48.5-121.5 10-121.5-18-118-37-107.5-45.5-93-45-72-34.5-47.5l-13-17q-14-13-7-13l10 3q40 29 62.5 46t62 50 64 58 58.5 65 55.5 77 45.5 88 38 103 23.5 117 10.5 136q3 259-108 465t-312 321-456 115q-185 0-351-74t-283.5-198-184-293-60.5-353z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/random.svg b/img/icons/font-awesome/random.svg
new file mode 100644
index 00000000..52208d3c
--- /dev/null
+++ b/img/icons/font-awesome/random.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M666 481q-60 92-137 273-22-45-37-72.5t-40.5-63.5-51-56.5-63-35-81.5-14.5h-224q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h224q250 0 410 225zm1126 799q0 14-9 23l-320 320q-9 9-23 9-13 0-22.5-9.5t-9.5-22.5v-192q-32 0-85 .5t-81 1-73-1-71-5-64-10.5-63-18.5-58-28.5-59-40-55-53.5-56-69.5q59-93 136-273 22 45 37 72.5t40.5 63.5 51 56.5 63 35 81.5 14.5h256v-192q0-14 9-23t23-9q12 0 24 10l319 319q9 9 9 23zm0-896q0 14-9 23l-320 320q-9 9-23 9-13 0-22.5-9.5t-9.5-22.5v-192h-256q-48 0-87 15t-69 45-51 61.5-45 77.5q-32 62-78 171-29 66-49.5 111t-54 105-64 100-74 83-90 68.5-106.5 42-128 16.5h-224q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h224q48 0 87-15t69-45 51-61.5 45-77.5q32-62 78-171 29-66 49.5-111t54-105 64-100 74-83 90-68.5 106.5-42 128-16.5h256v-192q0-14 9-23t23-9q12 0 24 10l319 319q9 9 9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/ravelry.svg b/img/icons/font-awesome/ravelry.svg
new file mode 100644
index 00000000..c3706180
--- /dev/null
+++ b/img/icons/font-awesome/ravelry.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1207 1733q-6-1-11-4-13-8-36-23t-86-65-116.5-104.5-112-140-89.5-172.5q-17-3-175-37 66 213 235 362t391 184zm-641-606l168 28q-25-76-41-167.5t-19-145.5l-4-53q-84 82-121 224 5 65 17 114zm110-609q-43 64-77 148 44-46 74-68zm1437 434q0-161-62-307t-167.5-252-250.5-168.5-304-62.5q-147 0-281 52.5t-240 148.5q-30 58-45 160 60-51 143-83.5t158.5-43 143-13.5 108.5 1l40 3q33 1 53 15.5t24.5 33 6.5 37-1 28.5q-126-11-227.5-.5t-183 43.5-142.5 71.5-131 98.5q4 36 11.5 92.5t35.5 178 62 179.5q123 6 247.5-14.5t214.5-53.5 162.5-67 109.5-59l37-24q22-16 39.5-20.5t30.5 5 17 34.5q14 97-39 121-208 97-467 134-135 20-317 16 41 96 110 176.5t137 127 130.5 79 101.5 43.5l39 12q143 23 263-15 195-99 314-289t119-418zm74-37q-14 135-40 212-70 208-181.5 346.5t-318.5 253.5q-48 33-82 44-72 26-163 16-36 3-73 3-283 0-504.5-173t-295.5-442q-1 0-4-.5t-5-.5q-6 50 2.5 112.5t26 115 36 98 31.5 71.5l14 26q8 12 54 82-71-38-124.5-106.5t-78.5-140-39.5-137-17.5-107.5l-2-42q-5-2-33.5-12.5t-48.5-18-53-20.5-57.5-25-50-25.5-42.5-27-25-25.5q19 10 50.5 25.5t113 45.5 145.5 38l2-32q11-149 94-290 41-202 176-365 28-115 81-214 15-28 32-45t49-32q158-74 303.5-104t302-11 306.5 97q220 115 333 336t87 474z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/rebel.svg b/img/icons/font-awesome/rebel.svg
new file mode 100644
index 00000000..fd958437
--- /dev/null
+++ b/img/icons/font-awesome/rebel.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M19 874q8-217 116-406t305-318h5q0 1-1 3-8 8-28 33.5t-52 76.5-60 110.5-44.5 135.5-14 150.5 39 157.5 108.5 154q50 50 102 69.5t90.5 11.5 69.5-23.5 47-32.5l16-16q39-51 53-116.5t6.5-122.5-21-107-26.5-80l-14-29q-10-25-30.5-49.5t-43-41-43.5-29.5-35-19l-13-6 104-115q39 17 78 52t59 61l19 27q1-48-18.5-103.5t-40.5-87.5l-20-31 161-183 160 181q-33 46-52.5 102.5t-22.5 90.5l-4 33q22-37 61.5-72.5t67.5-52.5l28-17 103 115q-44 14-85 50t-60 65l-19 29q-31 56-48 133.5t-7 170 57 156.5q33 45 77.5 60.5t85 5.5 76-26.5 57.5-33.5l21-16q60-53 96.5-115t48.5-121.5 10-121.5-18-118-37-107.5-45.5-93-45-72-34.5-47.5l-13-17q-14-13-7-13l10 3q40 29 62.5 46t62 50 64 58 58.5 65 55.5 77 45.5 88 38 103 23.5 117 10.5 136q3 259-108 465t-312 321-456 115q-185 0-351-74t-283.5-198-184-293-60.5-353z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/recycle.svg b/img/icons/font-awesome/recycle.svg
new file mode 100644
index 00000000..ad9ca0cd
--- /dev/null
+++ b/img/icons/font-awesome/recycle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M836 1169l-15 368-2 22-420-29q-36-3-67-31.5t-47-65.5q-11-27-14.5-55t4-65 12-55 21.5-64 19-53q78 12 509 28zm-387-586l180 379-147-92q-63 72-111.5 144.5t-72.5 125-39.5 94.5-18.5 63l-4 21-190-357q-17-26-18-56t6-47l8-18q35-63 114-188l-140-86zm1231 517l-188 359q-12 29-36.5 46.5t-43.5 20.5l-18 4q-71 7-219 12l8 164-230-367 211-362 7 173q170 16 283 5t170-33zm-785-924q-47 63-265 435l-317-187-19-12 225-356q20-31 60-45t80-10q24 2 48.5 12t42 21 41.5 33 36 34.5 36 39.5 32 35zm655 307l212 363q18 37 12.5 76t-27.5 74q-13 20-33 37t-38 28-48.5 22-47 16-51.5 14-46 12q-34-72-265-436l313-195zm-143-226l142-83-220 373-419-20 151-86q-34-89-75-166t-75.5-123.5-64.5-80-47-46.5l-17-13 405 1q31-3 58 10.5t39 28.5l11 15q39 61 112 190z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/reddit-alien.svg b/img/icons/font-awesome/reddit-alien.svg
new file mode 100644
index 00000000..ac45a1c6
--- /dev/null
+++ b/img/icons/font-awesome/reddit-alien.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 846q0 58-29.5 105.5t-79.5 72.5q12 46 12 96 0 155-106.5 287t-290.5 208.5-400 76.5-399.5-76.5-290-208.5-106.5-287q0-47 11-94-51-25-82-73.5t-31-106.5q0-82 58-140.5t141-58.5q85 0 145 63 218-152 515-162l116-521q3-13 15-21t26-5l369 81q18-37 54-59.5t79-22.5q62 0 106 43.5t44 105.5-44 106-106 44-105.5-43.5-43.5-105.5l-334-74-104 472q300 9 519 160 58-61 143-61 83 0 141 58.5t58 140.5zm-1374 199q0 62 43.5 106t105.5 44 106-44 44-106-44-105.5-106-43.5q-61 0-105 44t-44 105zm810 355q11-11 11-26t-11-26q-10-10-25-10t-26 10q-41 42-121 62t-160 20-160-20-121-62q-11-10-26-10t-25 10q-11 10-11 25.5t11 26.5q43 43 118.5 68t122.5 29.5 91 4.5 91-4.5 122.5-29.5 118.5-68zm-3-205q62 0 105.5-44t43.5-106q0-61-44-105t-105-44q-62 0-106 43.5t-44 105.5 44 106 106 44z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/reddit-square.svg b/img/icons/font-awesome/reddit-square.svg
new file mode 100644
index 00000000..75b1e05a
--- /dev/null
+++ b/img/icons/font-awesome/reddit-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1067 1129q13 13 0 26-53 53-171 53t-171-53q-13-13 0-26 5-6 13-6t13 6q42 42 145 42t145-42q5-6 13-6t13 6zm-263-156q0 31-23 54t-54 23-54-23-23-54q0-32 22.5-54.5t54.5-22.5 54.5 22.5 22.5 54.5zm338 0q0 31-23 54t-54 23-54-23-23-54q0-32 22.5-54.5t54.5-22.5 54.5 22.5 22.5 54.5zm215-103q0-42-30-72t-73-30q-42 0-73 31-113-78-267-82l54-243 171 39q1 32 23.5 54t53.5 22q32 0 54.5-22.5t22.5-54.5-22.5-54.5-54.5-22.5q-48 0-69 43l-189-42q-17-5-21 13l-60 268q-154 6-265 83-30-32-74-32-43 0-73 30t-30 72q0 30 16 55t42 38q-5 25-5 48 0 122 120 208.5t289 86.5q170 0 290-86.5t120-208.5q0-25-6-49 25-13 40.5-37.5t15.5-54.5zm307-454v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/reddit.svg b/img/icons/font-awesome/reddit.svg
new file mode 100644
index 00000000..8ad28fb7
--- /dev/null
+++ b/img/icons/font-awesome/reddit.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1095 1167q16 16 0 31-62 62-199 62t-199-62q-16-15 0-31 6-6 15-6t15 6q48 49 169 49 120 0 169-49 6-6 15-6t15 6zm-307-181q0 37-26 63t-63 26-63.5-26-26.5-63q0-38 26.5-64t63.5-26 63 26.5 26 63.5zm395 0q0 37-26.5 63t-63.5 26-63-26-26-63 26-63.5 63-26.5 63.5 26 26.5 64zm251-120q0-49-35-84t-85-35-86 36q-130-90-311-96l63-283 200 45q0 37 26 63t63 26 63.5-26.5 26.5-63.5-26.5-63.5-63.5-26.5q-54 0-80 50l-221-49q-19-5-25 16l-69 312q-180 7-309 97-35-37-87-37-50 0-85 35t-35 84q0 35 18.5 64t49.5 44q-6 27-6 56 0 142 140 243t337 101q198 0 338-101t140-243q0-32-7-57 30-15 48-43.5t18-63.5zm358 30q0 182-71 348t-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71 348 71 286 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/refresh.svg b/img/icons/font-awesome/refresh.svg
new file mode 100644
index 00000000..e5464ee5
--- /dev/null
+++ b/img/icons/font-awesome/refresh.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1639 1056q0 5-1 7-64 268-268 434.5t-478 166.5q-146 0-282.5-55t-243.5-157l-129 129q-19 19-45 19t-45-19-19-45v-448q0-26 19-45t45-19h448q26 0 45 19t19 45-19 45l-137 137q71 66 161 102t187 36q134 0 250-65t186-179q11-17 53-117 8-23 30-23h192q13 0 22.5 9.5t9.5 22.5zm25-800v448q0 26-19 45t-45 19h-448q-26 0-45-19t-19-45 19-45l138-138q-148-137-349-137-134 0-250 65t-186 179q-11 17-53 117-8 23-30 23h-199q-13 0-22.5-9.5t-9.5-22.5v-7q65-268 270-434.5t480-166.5q146 0 284 55.5t245 156.5l130-129q19-19 45-19t45 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/registered.svg b/img/icons/font-awesome/registered.svg
new file mode 100644
index 00000000..6e12e656
--- /dev/null
+++ b/img/icons/font-awesome/registered.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1042 703q0-88-60-121-33-18-117-18h-123v281h162q66 0 102-37t36-105zm52 285l205 373q8 17-1 31-8 16-27 16h-152q-20 0-28-17l-194-365h-155v350q0 14-9 23t-23 9h-134q-14 0-23-9t-9-23v-960q0-14 9-23t23-9h294q128 0 190 24 85 31 134 109t49 180q0 92-42.5 165.5t-115.5 109.5q6 10 9 16zm-198-828q-150 0-286 58.5t-234.5 157-157 234.5-58.5 286 58.5 286 157 234.5 234.5 157 286 58.5 286-58.5 234.5-157 157-234.5 58.5-286-58.5-286-157-234.5-234.5-157-286-58.5zm896 736q0 182-71 348t-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71 348 71 286 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/remove.svg b/img/icons/font-awesome/remove.svg
new file mode 100644
index 00000000..3e9c0655
--- /dev/null
+++ b/img/icons/font-awesome/remove.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1490 1322q0 40-28 68l-136 136q-28 28-68 28t-68-28l-294-294-294 294q-28 28-68 28t-68-28l-136-136q-28-28-28-68t28-68l294-294-294-294q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 294 294-294q28-28 68-28t68 28l136 136q28 28 28 68t-28 68l-294 294 294 294q28 28 28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/renren.svg b/img/icons/font-awesome/renren.svg
new file mode 100644
index 00000000..0a04d347
--- /dev/null
+++ b/img/icons/font-awesome/renren.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1261 1570q-171 94-368 94-196 0-367-94 138-87 235.5-211t131.5-268q35 144 132.5 268t235.5 211zm-495-1428v485q0 252-126.5 459.5t-330.5 306.5q-181-215-181-495 0-187 83.5-349.5t229.5-269.5 325-137zm898 756q0 280-181 495-204-99-330.5-306.5t-126.5-459.5v-485q179 30 325 137t229.5 269.5 83.5 349.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/reorder.svg b/img/icons/font-awesome/reorder.svg
new file mode 100644
index 00000000..2d6eb980
--- /dev/null
+++ b/img/icons/font-awesome/reorder.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 1344v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45zm0-512v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45zm0-512v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/repeat.svg b/img/icons/font-awesome/repeat.svg
new file mode 100644
index 00000000..5cd779db
--- /dev/null
+++ b/img/icons/font-awesome/repeat.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 256v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39 14-69l138-138q-148-137-349-137-104 0-198.5 40.5t-163.5 109.5-109.5 163.5-40.5 198.5 40.5 198.5 109.5 163.5 163.5 109.5 198.5 40.5q119 0 225-52t179-147q7-10 23-12 15 0 25 9l137 138q9 8 9.5 20.5t-7.5 22.5q-109 132-264 204.5t-327 72.5q-156 0-298-61t-245-164-164-245-61-298 61-298 164-245 245-164 298-61q147 0 284.5 55.5t244.5 156.5l130-129q29-31 70-14 39 17 39 59z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/reply-all.svg b/img/icons/font-awesome/reply-all.svg
new file mode 100644
index 00000000..9ecf745b
--- /dev/null
+++ b/img/icons/font-awesome/reply-all.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M640 1082v70q0 42-39 59-13 5-25 5-27 0-45-19l-512-512q-19-19-19-45t19-45l512-512q29-31 70-14 39 17 39 59v69l-397 398q-19 19-19 45t19 45zm1152 38q0 58-17 133.5t-38.5 138-48 125-40.5 90.5l-20 40q-8 17-28 17-6 0-9-1-25-8-23-34 43-400-106-565-64-71-170.5-110.5t-267.5-52.5v251q0 42-39 59-13 5-25 5-27 0-45-19l-512-512q-19-19-19-45t19-45l512-512q29-31 70-14 39 17 39 59v262q411 28 599 221 169 173 169 509z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/reply.svg b/img/icons/font-awesome/reply.svg
new file mode 100644
index 00000000..ff641c8e
--- /dev/null
+++ b/img/icons/font-awesome/reply.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 1120q0 166-127 451-3 7-10.5 24t-13.5 30-13 22q-12 17-28 17-15 0-23.5-10t-8.5-25q0-9 2.5-26.5t2.5-23.5q5-68 5-123 0-101-17.5-181t-48.5-138.5-80-101-105.5-69.5-133-42.5-154-21.5-175.5-6h-224v256q0 26-19 45t-45 19-45-19l-512-512q-19-19-19-45t19-45l512-512q19-19 45-19t45 19 19 45v256h224q713 0 875 403 53 134 53 333z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/resistance.svg b/img/icons/font-awesome/resistance.svg
new file mode 100644
index 00000000..fd958437
--- /dev/null
+++ b/img/icons/font-awesome/resistance.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M19 874q8-217 116-406t305-318h5q0 1-1 3-8 8-28 33.5t-52 76.5-60 110.5-44.5 135.5-14 150.5 39 157.5 108.5 154q50 50 102 69.5t90.5 11.5 69.5-23.5 47-32.5l16-16q39-51 53-116.5t6.5-122.5-21-107-26.5-80l-14-29q-10-25-30.5-49.5t-43-41-43.5-29.5-35-19l-13-6 104-115q39 17 78 52t59 61l19 27q1-48-18.5-103.5t-40.5-87.5l-20-31 161-183 160 181q-33 46-52.5 102.5t-22.5 90.5l-4 33q22-37 61.5-72.5t67.5-52.5l28-17 103 115q-44 14-85 50t-60 65l-19 29q-31 56-48 133.5t-7 170 57 156.5q33 45 77.5 60.5t85 5.5 76-26.5 57.5-33.5l21-16q60-53 96.5-115t48.5-121.5 10-121.5-18-118-37-107.5-45.5-93-45-72-34.5-47.5l-13-17q-14-13-7-13l10 3q40 29 62.5 46t62 50 64 58 58.5 65 55.5 77 45.5 88 38 103 23.5 117 10.5 136q3 259-108 465t-312 321-456 115q-185 0-351-74t-283.5-198-184-293-60.5-353z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/retweet.svg b/img/icons/font-awesome/retweet.svg
new file mode 100644
index 00000000..27b41e36
--- /dev/null
+++ b/img/icons/font-awesome/retweet.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1344 1504q0 13-9.5 22.5t-22.5 9.5h-960q-8 0-13.5-2t-9-7-5.5-8-3-11.5-1-11.5v-600h-192q-26 0-45-19t-19-45q0-24 15-41l320-384q19-22 49-22t49 22l320 384q15 17 15 41 0 26-19 45t-45 19h-192v384h576q16 0 25 11l160 192q7 10 7 21zm640-416q0 24-15 41l-320 384q-20 23-49 23t-49-23l-320-384q-15-17-15-41 0-26 19-45t45-19h192v-384h-576q-16 0-25-12l-160-192q-7-9-7-20 0-13 9.5-22.5t22.5-9.5h960q8 0 13.5 2t9 7 5.5 8 3 11.5 1 11.5v600h192q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/rmb.svg b/img/icons/font-awesome/rmb.svg
new file mode 100644
index 00000000..a46b2afa
--- /dev/null
+++ b/img/icons/font-awesome/rmb.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M985.5 1536h-172q-13 0-22.5-9t-9.5-23v-330h-288q-13 0-22.5-9t-9.5-23v-103q0-13 9.5-22.5t22.5-9.5h288v-85h-288q-13 0-22.5-9t-9.5-23v-104q0-13 9.5-22.5t22.5-9.5h214l-321-578q-8-16 0-32 10-16 28-16h194q19 0 29 18l215 425q19 38 56 125 10-24 30.5-68t27.5-61l191-420q8-19 29-19h191q17 0 27 16 9 14 1 31l-313 579h215q13 0 22.5 9.5t9.5 22.5v104q0 14-9.5 23t-22.5 9h-290v85h290q13 0 22.5 9.5t9.5 22.5v103q0 14-9.5 23t-22.5 9h-290v330q0 13-9.5 22.5t-22.5 9.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/road.svg b/img/icons/font-awesome/road.svg
new file mode 100644
index 00000000..ba1a895d
--- /dev/null
+++ b/img/icons/font-awesome/road.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1175 996v-4l-24-320q-1-13-11-22.5t-23-9.5h-186q-13 0-23 9.5t-11 22.5l-24 320v4q-1 12 8 20t21 8h244q12 0 21-8t8-20zm759 467q0 73-46 73h-704q13 0 22-9.5t8-22.5l-20-256q-1-13-11-22.5t-23-9.5h-272q-13 0-23 9.5t-11 22.5l-20 256q-1 13 8 22.5t22 9.5h-704q-46 0-46-73 0-54 26-116l417-1044q8-19 26-33t38-14h339q-13 0-23 9.5t-11 22.5l-15 192q-1 14 8 23t22 9h166q13 0 22-9t8-23l-15-192q-1-13-11-22.5t-23-9.5h339q20 0 38 14t26 33l417 1044q26 62 26 116z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/rocket.svg b/img/icons/font-awesome/rocket.svg
new file mode 100644
index 00000000..90750b7c
--- /dev/null
+++ b/img/icons/font-awesome/rocket.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1504 448q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm224-288q0 249-75.5 430.5t-253.5 360.5q-81 80-195 176l-20 379q-2 16-16 26l-384 224q-7 4-16 4-12 0-23-9l-64-64q-13-14-8-32l85-276-281-281-276 85q-3 1-9 1-14 0-23-9l-64-64q-17-19-5-39l224-384q10-14 26-16l379-20q96-114 176-195 188-187 358-258t431-71q14 0 24 9.5t10 22.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/rotate-left.svg b/img/icons/font-awesome/rotate-left.svg
new file mode 100644
index 00000000..5ac328bd
--- /dev/null
+++ b/img/icons/font-awesome/rotate-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 896q0 156-61 298t-164 245-245 164-298 61q-172 0-327-72.5t-264-204.5q-7-10-6.5-22.5t8.5-20.5l137-138q10-9 25-9 16 2 23 12 73 95 179 147t225 52q104 0 198.5-40.5t163.5-109.5 109.5-163.5 40.5-198.5-40.5-198.5-109.5-163.5-163.5-109.5-198.5-40.5q-98 0-188 35.5t-160 101.5l137 138q31 30 14 69-17 40-59 40h-448q-26 0-45-19t-19-45v-448q0-42 40-59 39-17 69 14l130 129q107-101 244.5-156.5t284.5-55.5q156 0 298 61t245 164 164 245 61 298z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/rotate-right.svg b/img/icons/font-awesome/rotate-right.svg
new file mode 100644
index 00000000..5cd779db
--- /dev/null
+++ b/img/icons/font-awesome/rotate-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 256v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39 14-69l138-138q-148-137-349-137-104 0-198.5 40.5t-163.5 109.5-109.5 163.5-40.5 198.5 40.5 198.5 109.5 163.5 163.5 109.5 198.5 40.5q119 0 225-52t179-147q7-10 23-12 15 0 25 9l137 138q9 8 9.5 20.5t-7.5 22.5q-109 132-264 204.5t-327 72.5q-156 0-298-61t-245-164-164-245-61-298 61-298 164-245 245-164 298-61q147 0 284.5 55.5t244.5 156.5l130-129q29-31 70-14 39 17 39 59z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/rouble.svg b/img/icons/font-awesome/rouble.svg
new file mode 100644
index 00000000..a50fcf17
--- /dev/null
+++ b/img/icons/font-awesome/rouble.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1299 565q0-100-65-162t-171-62h-320v448h320q106 0 171-62t65-162zm237 0q0 193-126.5 315t-326.5 122h-340v118h505q14 0 23 9t9 23v128q0 14-9 23t-23 9h-505v192q0 14-9.5 23t-22.5 9h-167q-14 0-23-9t-9-23v-192h-224q-14 0-23-9t-9-23v-128q0-14 9-23t23-9h224v-118h-224q-14 0-23-9t-9-23v-149q0-13 9-22.5t23-9.5h224v-629q0-14 9-23t23-9h539q200 0 326.5 122t126.5 315z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/rss-square.svg b/img/icons/font-awesome/rss-square.svg
new file mode 100644
index 00000000..5d627faf
--- /dev/null
+++ b/img/icons/font-awesome/rss-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M640 1280q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm351 94q-13-233-176.5-396.5t-396.5-176.5q-14-1-24 9t-10 23v128q0 13 8.5 22t21.5 10q154 11 264 121t121 264q1 13 10 21.5t22 8.5h128q13 0 23-10t9-24zm384 1q-5-154-56-297.5t-139.5-260-205-205-260-139.5-297.5-56q-14-1-23 9-10 10-10 23v128q0 13 9 22t22 10q204 7 378 111.5t278.5 278.5 111.5 378q1 13 10 22t22 9h128q13 0 23-10 11-9 9-23zm289-959v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/rss.svg b/img/icons/font-awesome/rss.svg
new file mode 100644
index 00000000..9d4e89ff
--- /dev/null
+++ b/img/icons/font-awesome/rss.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M576 1344q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm512 123q2 28-17 48-18 21-47 21h-135q-25 0-43-16.5t-20-41.5q-22-229-184.5-391.5t-391.5-184.5q-25-2-41.5-20t-16.5-43v-135q0-29 21-47 17-17 43-17h5q160 13 306 80.5t259 181.5q114 113 181.5 259t80.5 306zm512 2q2 27-18 47-18 20-46 20h-143q-26 0-44.5-17.5t-19.5-42.5q-12-215-101-408.5t-231.5-336-336-231.5-408.5-102q-25-1-42.5-19.5t-17.5-43.5v-143q0-28 20-46 18-18 44-18h3q262 13 501.5 120t425.5 294q187 186 294 425.5t120 501.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/rub.svg b/img/icons/font-awesome/rub.svg
new file mode 100644
index 00000000..a50fcf17
--- /dev/null
+++ b/img/icons/font-awesome/rub.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1299 565q0-100-65-162t-171-62h-320v448h320q106 0 171-62t65-162zm237 0q0 193-126.5 315t-326.5 122h-340v118h505q14 0 23 9t9 23v128q0 14-9 23t-23 9h-505v192q0 14-9.5 23t-22.5 9h-167q-14 0-23-9t-9-23v-192h-224q-14 0-23-9t-9-23v-128q0-14 9-23t23-9h224v-118h-224q-14 0-23-9t-9-23v-149q0-13 9-22.5t23-9.5h224v-629q0-14 9-23t23-9h539q200 0 326.5 122t126.5 315z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/ruble.svg b/img/icons/font-awesome/ruble.svg
new file mode 100644
index 00000000..a50fcf17
--- /dev/null
+++ b/img/icons/font-awesome/ruble.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1299 565q0-100-65-162t-171-62h-320v448h320q106 0 171-62t65-162zm237 0q0 193-126.5 315t-326.5 122h-340v118h505q14 0 23 9t9 23v128q0 14-9 23t-23 9h-505v192q0 14-9.5 23t-22.5 9h-167q-14 0-23-9t-9-23v-192h-224q-14 0-23-9t-9-23v-128q0-14 9-23t23-9h224v-118h-224q-14 0-23-9t-9-23v-149q0-13 9-22.5t23-9.5h224v-629q0-14 9-23t23-9h539q200 0 326.5 122t126.5 315z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/rupee.svg b/img/icons/font-awesome/rupee.svg
new file mode 100644
index 00000000..c15c2a62
--- /dev/null
+++ b/img/icons/font-awesome/rupee.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1345 470v102q0 14-9 23t-23 9h-168q-23 144-129 234t-276 110q167 178 459 536 14 16 4 34-8 18-29 18h-195q-16 0-25-12-306-367-498-571-9-9-9-22v-127q0-13 9.5-22.5t22.5-9.5h112q132 0 212.5-43t102.5-125h-427q-14 0-23-9t-9-23v-102q0-14 9-23t23-9h413q-57-113-268-113h-145q-13 0-22.5-9.5t-9.5-22.5v-133q0-14 9-23t23-9h832q14 0 23 9t9 23v102q0 14-9 23t-23 9h-233q47 61 64 144h171q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/s15.svg b/img/icons/font-awesome/s15.svg
new file mode 100644
index 00000000..06384693
--- /dev/null
+++ b/img/icons/font-awesome/s15.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 1088v192q0 169-128 286v194q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-118q-63 22-128 22h-768q-65 0-128-22v110q0 17-9.5 28.5t-22.5 11.5h-64q-13 0-22.5-11.5t-9.5-28.5v-186q-128-117-128-286v-192h1536zm-960-416q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm128 0q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm1088 512v64q0 14-9 23t-23 9h-1728q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96v-640q0-106 75-181t181-75q108 0 184 78 46-19 98-12t93 39l22-22q11-11 22 0l42 42q11 11 0 22l-314 314q-11 11-22 0l-42-42q-11-11 0-22l22-22q-36-46-40.5-104t23.5-108q-37-35-88-35-53 0-90.5 37.5t-37.5 90.5v640h1504q14 0 23 9t9 23zm-896-448q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm192 64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm192 64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm-64-64q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23zm128 0q0 14-9 23t-23 9-23-9-9-23 9-23 23-9 23 9 9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/safari.svg b/img/icons/font-awesome/safari.svg
new file mode 100644
index 00000000..90a543eb
--- /dev/null
+++ b/img/icons/font-awesome/safari.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M949 893q0 26-16.5 45t-41.5 19q-26 0-45-16.5t-19-41.5q0-26 17-45t42-19 44 16.5 19 41.5zm15 58l350-581q-9 8-67.5 62.5t-125.5 116.5-136.5 127-117 110.5-50.5 51.5l-349 580q7-7 67-62t126-116.5 136-127 117-111 50-50.5zm647-55q0 201-104 371-3-2-17-11t-26.5-16.5-16.5-7.5q-13 0-13 13 0 10 59 44-74 112-184.5 190.5t-241.5 110.5l-16-67q-1-10-15-10-5 0-8 5.5t-2 9.5l16 68q-72 15-146 15-199 0-372-105 1-2 13-20.5t21.5-33.5 9.5-19q0-13-13-13-6 0-17 14.5t-22.5 34.5-13.5 23q-113-75-192-187.5t-110-244.5l69-15q10-3 10-15 0-5-5.5-8t-10.5-2l-68 15q-14-72-14-139 0-206 109-379 2 1 18.5 12t30 19 17.5 8q13 0 13-12 0-6-12.5-15.5t-32.5-21.5l-20-12q77-112 189-189t244-107l15 67q2 10 15 10 5 0 8-5.5t2-10.5l-15-66q71-13 134-13 204 0 379 109-39 56-39 65 0 13 12 13 11 0 48-64 111 75 187.5 186t107.5 241l-56 12q-10 2-10 16 0 5 5.5 8t9.5 2l57-13q14 72 14 140zm85 0q0-163-63.5-311t-170.5-255-255-170.5-311-63.5-311 63.5-255 170.5-170.5 255-63.5 311 63.5 311 170.5 255 255 170.5 311 63.5 311-63.5 255-170.5 170.5-255 63.5-311zm96 0q0 182-71 348t-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71 348 71 286 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/save.svg b/img/icons/font-awesome/save.svg
new file mode 100644
index 00000000..26f264de
--- /dev/null
+++ b/img/icons/font-awesome/save.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M512 1536h768v-384h-768v384zm896 0h128v-896q0-14-10-38.5t-20-34.5l-281-281q-10-10-34-20t-39-10v416q0 40-28 68t-68 28h-576q-40 0-68-28t-28-68v-416h-128v1280h128v-416q0-40 28-68t68-28h832q40 0 68 28t28 68v416zm-384-928v-320q0-13-9.5-22.5t-22.5-9.5h-192q-13 0-22.5 9.5t-9.5 22.5v320q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5-9.5t9.5-22.5zm640 32v928q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1344q0-40 28-68t68-28h928q40 0 88 20t76 48l280 280q28 28 48 76t20 88z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/scissors.svg b/img/icons/font-awesome/scissors.svg
new file mode 100644
index 00000000..2c375c47
--- /dev/null
+++ b/img/icons/font-awesome/scissors.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M960 896q26 0 45 19t19 45-19 45-45 19-45-19-19-45 19-45 45-19zm300 64l507 398q28 20 25 56-5 35-35 51l-128 64q-13 7-29 7-17 0-31-8l-690-387-110 66q-8 4-12 5 14 49 10 97-7 77-56 147.5t-132 123.5q-132 84-277 84-136 0-222-78-90-84-79-207 7-76 56-147t131-124q132-84 278-84 83 0 151 31 9-13 22-22l122-73-122-73q-13-9-22-22-68 31-151 31-146 0-278-84-82-53-131-124t-56-147q-5-59 15.5-113t63.5-93q85-79 222-79 145 0 277 84 83 52 132 123t56 148q4 48-10 97 4 1 12 5l110 66 690-387q14-8 31-8 16 0 29 7l128 64q30 16 35 51 3 36-25 56zm-681-260q46-42 21-108t-106-117q-92-59-192-59-74 0-113 36-46 42-21 108t106 117q92 59 192 59 74 0 113-36zm-85 745q81-51 106-117t-21-108q-39-36-113-36-100 0-192 59-81 51-106 117t21 108q39 36 113 36 100 0 192-59zm178-613l96 58v-11q0-36 33-56l14-8-79-47-26 26q-3 3-10 11t-12 12q-2 2-4 3.5t-3 2.5zm224 224l96 32 736-576-128-64-768 431v113l-160 96 9 8q2 2 7 6 4 4 11 12t11 12l26 26zm704 416l128-64-520-408-177 138q-2 3-13 7z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/scribd.svg b/img/icons/font-awesome/scribd.svg
new file mode 100644
index 00000000..ff248d3b
--- /dev/null
+++ b/img/icons/font-awesome/scribd.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1628 1549q0 89-63 152.5t-153 63.5-153.5-63.5-63.5-152.5q0-90 63.5-153.5t153.5-63.5 153 63.5 63 153.5zm-233-281q-115 15-192.5 102.5t-77.5 205.5q0 74 33 138-146 78-379 78-109 0-201-21t-153.5-54.5-110.5-76.5-76-85-44.5-83-23.5-66.5-6-39.5q0-19 4.5-42.5t18.5-56 36.5-58 64-43.5 94.5-18 94 17.5 63 41 35.5 53 17.5 49 4 33.5q0 34-23 81 28 27 82 42t93 17l40 1q115 0 190-51t75-133q0-26-9-48.5t-31.5-44.5-49.5-41-74-44-93.5-47.5-119.5-56.5q-28-13-43-20-116-55-187-100t-122.5-102-72-125.5-20.5-162.5q0-78 20.5-150t66-137.5 112.5-114 166.5-77 221.5-28.5q120 0 220 26t164.5 67 109.5 94 64 105.5 19 103.5q0 46-15 82.5t-36.5 58-48.5 36-49 19.5-39 5h-40l-39-5-44-14-41-28-37-46-24-70.5-10-97.5q-15-16-59-25.5t-81-10.5l-37-1q-68 0-117.5 31t-70.5 70-21 76q0 24 5 43t24 46 53 51 97 53.5 150 58.5q76 25 138.5 53.5t109 55.5 83 59 60.5 59.5 41 62.5 26.5 62 14.5 63.5 6 62 1 62.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/search-minus.svg b/img/icons/font-awesome/search-minus.svg
new file mode 100644
index 00000000..7d6029c9
--- /dev/null
+++ b/img/icons/font-awesome/search-minus.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1088 800v64q0 13-9.5 22.5t-22.5 9.5h-576q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h576q13 0 22.5 9.5t9.5 22.5zm128 32q0-185-131.5-316.5t-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5 316.5-131.5 131.5-316.5zm512 832q0 53-37.5 90.5t-90.5 37.5q-54 0-90-38l-343-342q-179 124-399 124-143 0-273.5-55.5t-225-150-150-225-55.5-273.5 55.5-273.5 150-225 225-150 273.5-55.5 273.5 55.5 225 150 150 225 55.5 273.5q0 220-124 399l343 343q37 37 37 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/search-plus.svg b/img/icons/font-awesome/search-plus.svg
new file mode 100644
index 00000000..cff7bf04
--- /dev/null
+++ b/img/icons/font-awesome/search-plus.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1088 800v64q0 13-9.5 22.5t-22.5 9.5h-224v224q0 13-9.5 22.5t-22.5 9.5h-64q-13 0-22.5-9.5t-9.5-22.5v-224h-224q-13 0-22.5-9.5t-9.5-22.5v-64q0-13 9.5-22.5t22.5-9.5h224v-224q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5v224h224q13 0 22.5 9.5t9.5 22.5zm128 32q0-185-131.5-316.5t-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5 316.5-131.5 131.5-316.5zm512 832q0 53-37.5 90.5t-90.5 37.5q-54 0-90-38l-343-342q-179 124-399 124-143 0-273.5-55.5t-225-150-150-225-55.5-273.5 55.5-273.5 150-225 225-150 273.5-55.5 273.5 55.5 225 150 150 225 55.5 273.5q0 220-124 399l343 343q37 37 37 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/search.svg b/img/icons/font-awesome/search.svg
new file mode 100644
index 00000000..2c6d7acc
--- /dev/null
+++ b/img/icons/font-awesome/search.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1216 832q0-185-131.5-316.5t-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5 316.5-131.5 131.5-316.5zm512 832q0 52-38 90t-90 38q-54 0-90-38l-343-342q-179 124-399 124-143 0-273.5-55.5t-225-150-150-225-55.5-273.5 55.5-273.5 150-225 225-150 273.5-55.5 273.5 55.5 225 150 150 225 55.5 273.5q0 220-124 399l343 343q37 37 37 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sellsy.svg b/img/icons/font-awesome/sellsy.svg
new file mode 100644
index 00000000..b0b18caf
--- /dev/null
+++ b/img/icons/font-awesome/sellsy.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1500 1371v-733q0-21-15-36t-35-15h-93q-20 0-35 15t-15 36v733q0 20 15 35t35 15h93q20 0 35-15t15-35zm-284 0v-531q0-20-15-35t-35-15h-101q-20 0-35 15t-15 35v531q0 20 15 35t35 15h101q20 0 35-15t15-35zm-292 0v-429q0-20-15-35t-35-15h-101q-20 0-35 15t-15 35v429q0 20 15 35t35 15h101q20 0 35-15t15-35zm-292 0v-362q0-20-15-35t-35-15h-101q-20 0-35 15t-15 35v362q0 20 15 35t35 15h101q20 0 35-15t15-35zm1416-146q0 166-118 284t-284 118h-1244q-166 0-284-118t-118-284q0-116 63-214.5t168-148.5q-10-34-10-73 0-113 80.5-193.5t193.5-80.5q102 0 180 67 45-183 194-300t338-117q149 0 275 73.5t199.5 199.5 73.5 275q0 66-14 122 135 33 221 142.5t86 247.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/send-o.svg b/img/icons/font-awesome/send-o.svg
new file mode 100644
index 00000000..e525f088
--- /dev/null
+++ b/img/icons/font-awesome/send-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1764 11q33 24 27 64l-256 1536q-5 29-32 45-14 8-31 8-11 0-24-5l-527-215-298 327q-18 21-47 21-14 0-23-4-19-7-30-23.5t-11-36.5v-452l-472-193q-37-14-40-55-3-39 32-59l1664-960q35-21 68 2zm-342 1499l221-1323-1434 827 336 137 863-639-478 797z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/send.svg b/img/icons/font-awesome/send.svg
new file mode 100644
index 00000000..2b82fd79
--- /dev/null
+++ b/img/icons/font-awesome/send.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1764 11q33 24 27 64l-256 1536q-5 29-32 45-14 8-31 8-11 0-24-5l-453-185-242 295q-18 23-49 23-13 0-22-4-19-7-30.5-23.5t-11.5-36.5v-349l864-1059-1069 925-395-162q-37-14-40-55-2-40 32-59l1664-960q15-9 32-9 20 0 36 11z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/server.svg b/img/icons/font-awesome/server.svg
new file mode 100644
index 00000000..870c3124
--- /dev/null
+++ b/img/icons/font-awesome/server.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M128 1408h1024v-128h-1024v128zm0-512h1024v-128h-1024v128zm1568 448q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm-1568-960h1024v-128h-1024v128zm1568 448q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm0-512q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm96 832v384h-1792v-384h1792zm0-512v384h-1792v-384h1792zm0-512v384h-1792v-384h1792z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/share-alt-square.svg b/img/icons/font-awesome/share-alt-square.svg
new file mode 100644
index 00000000..a7c898dc
--- /dev/null
+++ b/img/icons/font-awesome/share-alt-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 1195q0-88-62.5-151t-150.5-63q-84 0-145 58l-241-120q2-16 2-23t-2-23l241-120q61 58 145 58 88 0 150.5-63t62.5-151-62.5-150.5-150.5-62.5-151 62.5-63 150.5q0 7 2 23l-241 120q-62-57-145-57-88 0-150.5 62.5t-62.5 150.5 62.5 150.5 150.5 62.5q83 0 145-57l241 120q-2 16-2 23 0 88 63 150.5t151 62.5 150.5-62.5 62.5-150.5zm256-779v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/share-alt.svg b/img/icons/font-awesome/share-alt.svg
new file mode 100644
index 00000000..0ca71c42
--- /dev/null
+++ b/img/icons/font-awesome/share-alt.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1344 1024q133 0 226.5 93.5t93.5 226.5-93.5 226.5-226.5 93.5-226.5-93.5-93.5-226.5q0-12 2-34l-360-180q-92 86-218 86-133 0-226.5-93.5t-93.5-226.5 93.5-226.5 226.5-93.5q126 0 218 86l360-180q-2-22-2-34 0-133 93.5-226.5t226.5-93.5 226.5 93.5 93.5 226.5-93.5 226.5-226.5 93.5q-126 0-218-86l-360 180q2 22 2 34t-2 34l360 180q92-86 218-86z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/share-square-o.svg b/img/icons/font-awesome/share-square-o.svg
new file mode 100644
index 00000000..29ff2c98
--- /dev/null
+++ b/img/icons/font-awesome/share-square-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1472 989v259q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h255q13 0 22.5 9.5t9.5 22.5q0 27-26 32-77 26-133 60-10 4-16 4h-112q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113v-214q0-19 18-29 28-13 54-37 16-16 35-8 21 9 21 29zm237-496l-384 384q-18 19-45 19-12 0-25-5-39-17-39-59v-192h-160q-323 0-438 131-119 137-74 473 3 23-20 34-8 2-12 2-16 0-26-13-10-14-21-31t-39.5-68.5-49.5-99.5-38.5-114-17.5-122q0-49 3.5-91t14-90 28-88 47-81.5 68.5-74 94.5-61.5 124.5-48.5 159.5-30.5 196.5-11h160v-192q0-42 39-59 13-5 25-5 26 0 45 19l384 384q19 19 19 45t-19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/share-square.svg b/img/icons/font-awesome/share-square.svg
new file mode 100644
index 00000000..80947c18
--- /dev/null
+++ b/img/icons/font-awesome/share-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1133 1101l352-352q19-19 19-45t-19-45l-352-352q-30-31-69-14-40 17-40 59v160q-119 0-216 19.5t-162.5 51-114 79-76.5 95.5-44.5 109-21.5 111.5-5 110.5q0 181 167 404 11 12 25 12 7 0 13-3 22-9 19-33-44-354 62-473 46-52 130-75.5t224-23.5v160q0 42 40 59 12 5 24 5 26 0 45-19zm531-685v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/share.svg b/img/icons/font-awesome/share.svg
new file mode 100644
index 00000000..e087dd6b
--- /dev/null
+++ b/img/icons/font-awesome/share.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 640q0 26-19 45l-512 512q-19 19-45 19t-45-19-19-45v-256h-224q-98 0-175.5 6t-154 21.5-133 42.5-105.5 69.5-80 101-48.5 138.5-17.5 181q0 55 5 123 0 6 2.5 23.5t2.5 26.5q0 15-8.5 25t-23.5 10q-16 0-28-17-7-9-13-22t-13.5-30-10.5-24q-127-285-127-451 0-199 53-333 162-403 875-403h224v-256q0-26 19-45t45-19 45 19l512 512q19 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/shekel.svg b/img/icons/font-awesome/shekel.svg
new file mode 100644
index 00000000..b4705e51
--- /dev/null
+++ b/img/icons/font-awesome/shekel.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1120 624v496q0 14-9 23t-23 9h-160q-14 0-23-9t-9-23v-496q0-112-80-192t-192-80h-272v1152q0 14-9 23t-23 9h-160q-14 0-23-9t-9-23v-1344q0-14 9-23t23-9h464q135 0 249 66.5t180.5 180.5 66.5 249zm384-464v880q0 135-66.5 249t-180.5 180.5-249 66.5h-464q-14 0-23-9t-9-23v-960q0-14 9-23t23-9h160q14 0 23 9t9 23v768h272q112 0 192-80t80-192v-880q0-14 9-23t23-9h160q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sheqel.svg b/img/icons/font-awesome/sheqel.svg
new file mode 100644
index 00000000..b4705e51
--- /dev/null
+++ b/img/icons/font-awesome/sheqel.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1120 624v496q0 14-9 23t-23 9h-160q-14 0-23-9t-9-23v-496q0-112-80-192t-192-80h-272v1152q0 14-9 23t-23 9h-160q-14 0-23-9t-9-23v-1344q0-14 9-23t23-9h464q135 0 249 66.5t180.5 180.5 66.5 249zm384-464v880q0 135-66.5 249t-180.5 180.5-249 66.5h-464q-14 0-23-9t-9-23v-960q0-14 9-23t23-9h160q14 0 23 9t9 23v768h272q112 0 192-80t80-192v-880q0-14 9-23t23-9h160q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/shield.svg b/img/icons/font-awesome/shield.svg
new file mode 100644
index 00000000..4a6cae83
--- /dev/null
+++ b/img/icons/font-awesome/shield.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1344 960v-640h-448v1137q119-63 213-137 235-184 235-360zm192-768v768q0 86-33.5 170.5t-83 150-118 127.5-126.5 103-121 77.5-89.5 49.5-42.5 20q-12 6-26 6t-26-6q-16-7-42.5-20t-89.5-49.5-121-77.5-126.5-103-118-127.5-83-150-33.5-170.5v-768q0-26 19-45t45-19h1152q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/ship.svg b/img/icons/font-awesome/ship.svg
new file mode 100644
index 00000000..16a3ee0e
--- /dev/null
+++ b/img/icons/font-awesome/ship.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1811 1555q19-19 45-19t45 19l128 128-90 90-83-83-83 83q-18 19-45 19t-45-19l-83-83-83 83q-19 19-45 19t-45-19l-83-83-83 83q-19 19-45 19t-45-19l-83-83-83 83q-19 19-45 19t-45-19l-83-83-83 83q-19 19-45 19t-45-19l-83-83-83 83q-19 19-45 19t-45-19l-83-83-83 83q-19 19-45 19t-45-19l-128-128 90-90 83 83 83-83q19-19 45-19t45 19l83 83 83-83q19-19 45-19t45 19l83 83 83-83q19-19 45-19t45 19l83 83 83-83q19-19 45-19t45 19l83 83 83-83q19-19 45-19t45 19l83 83 83-83q19-19 45-19t45 19l83 83zm-1574-38q-19 19-45 19t-45-19l-128-128 90-90 83 82 83-82q19-19 45-19t45 19l83 82 64-64v-293l-210-314q-17-26-7-56.5t40-40.5l177-58v-299h128v-128h256v-128h256v128h256v128h128v299l177 58q30 10 40 40.5t-7 56.5l-210 314v293l19-18q19-19 45-19t45 19l83 82 83-82q19-19 45-19t45 19l128 128-90 90-83-83-83 83q-18 19-45 19t-45-19l-83-83-83 83q-19 19-45 19t-45-19l-83-83-83 83q-19 19-45 19t-45-19l-83-83-83 83q-19 19-45 19t-45-19l-83-83-83 83q-19 19-45 19t-45-19l-83-83-83 83q-19 19-45 19t-45-19l-83-83zm403-1133v128l384-128 384 128v-128h-128v-128h-512v128h-128z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/shirtsinbulk.svg b/img/icons/font-awesome/shirtsinbulk.svg
new file mode 100644
index 00000000..5e74dd7c
--- /dev/null
+++ b/img/icons/font-awesome/shirtsinbulk.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M128 0h1536v1392l-776 338-760-338v-1392zm1436 1327v-926h-1336v926l661 294zm0-1026v-201h-1336v201h1336zm-1255 298v115h-37v-115h37zm0 148v115h-37v-115h37zm0 148v115h-37v-115h37zm0 148v115h-37v-115h37zm0 148v115h-37v-115h37zm26 143l15-34 105 47-15 33zm136 60l15-34 105 46-15 34zm135 60l15-34 105 46-15 34zm136 59l15-33 104 46-15 34zm183 13l105-46 15 33-105 47zm135-60l105-46 15 34-105 46zm136-60l105-46 15 34-105 46zm135-59l105-47 15 34-105 46zm-944-1200v36h-114v-36h114zm162 0v36h-115v-36h115zm162 0v36h-115v-36h115zm161 0v36h-114v-36h114zm162 0v36h-114v-36h114zm162 0v36h-115v-36h115zm162 0v36h-115v-36h115zm161 0v36h-114v-36h114zm-1210 340v79h-37v-115h115v36h-78zm240-36v36h-115v-36h115zm162 0v36h-115v-36h115zm161 0v36h-114v-36h114zm162 0v36h-114v-36h114zm162 0v36h-115v-36h115zm162 0v36h-115v-36h115zm125 115v-79h-78v-36h115v115h-37zm0 148v-115h37v115h-37zm0 148v-115h37v115h-37zm0 148v-115h37v115h-37zm0 148v-115h37v115h-37zm0 148v-115h37v115h-37zm-595-35q-129 0-221-91.5t-92-221.5q0-129 92-221t221-92q130 0 221.5 92t91.5 221q0 130-91.5 221.5t-221.5 91.5zm-165-381q0 36 19.5 56.5t49.5 25 64 7 64 2 49.5 9 19.5 30.5q0 49-112 49-97 0-123-51h-3l-31 63q67 42 162 42 29 0 56.5-5t55.5-16 45.5-33 17.5-53q0-46-27.5-69.5t-67.5-27-79.5-3-67-5-27.5-25.5q0-21 20.5-33t40.5-15 41-3q34 0 70.5 11t51.5 34h3l30-58q-3-1-21-8.5t-22.5-9-19.5-7-22-7-20-4.5-24-4-23-1q-29 0-56.5 5t-54 16.5-43 34-16.5 53.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/shopping-bag.svg b/img/icons/font-awesome/shopping-bag.svg
new file mode 100644
index 00000000..1b00bcb6
--- /dev/null
+++ b/img/icons/font-awesome/shopping-bag.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1757 1408l35 313q3 28-16 50-19 21-48 21h-1664q-29 0-48-21-19-22-16-50l35-313h1722zm-93-839l86 775h-1708l86-775q3-24 21-40.5t43-16.5h256v128q0 53 37.5 90.5t90.5 37.5 90.5-37.5 37.5-90.5v-128h384v128q0 53 37.5 90.5t90.5 37.5 90.5-37.5 37.5-90.5v-128h256q25 0 43 16.5t21 40.5zm-384-185v256q0 26-19 45t-45 19-45-19-19-45v-256q0-106-75-181t-181-75-181 75-75 181v256q0 26-19 45t-45 19-45-19-19-45v-256q0-159 112.5-271.5t271.5-112.5 271.5 112.5 112.5 271.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/shopping-basket.svg b/img/icons/font-awesome/shopping-basket.svg
new file mode 100644
index 00000000..827b6499
--- /dev/null
+++ b/img/icons/font-awesome/shopping-basket.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1920 768q53 0 90.5 37.5t37.5 90.5-37.5 90.5-90.5 37.5h-15l-115 662q-8 46-44 76t-82 30h-1280q-46 0-82-30t-44-76l-115-662h-15q-53 0-90.5-37.5t-37.5-90.5 37.5-90.5 90.5-37.5h1792zm-1435 800q26-2 43.5-22.5t15.5-46.5l-32-416q-2-26-22.5-43.5t-46.5-15.5-43.5 22.5-15.5 46.5l32 416q2 25 20.5 42t43.5 17h5zm411-64v-416q0-26-19-45t-45-19-45 19-19 45v416q0 26 19 45t45 19 45-19 19-45zm384 0v-416q0-26-19-45t-45-19-45 19-19 45v416q0 26 19 45t45 19 45-19 19-45zm352 5l32-416q2-26-15.5-46.5t-43.5-22.5-46.5 15.5-22.5 43.5l-32 416q-2 26 15.5 46.5t43.5 22.5h5q25 0 43.5-17t20.5-42zm-1156-1217l-93 412h-132l101-441q19-88 89-143.5t160-55.5h167q0-26 19-45t45-19h384q26 0 45 19t19 45h167q90 0 160 55.5t89 143.5l101 441h-132l-93-412q-11-44-45.5-72t-79.5-28h-167q0 26-19 45t-45 19h-384q-26 0-45-19t-19-45h-167q-45 0-79.5 28t-45.5 72z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/shopping-cart.svg b/img/icons/font-awesome/shopping-cart.svg
new file mode 100644
index 00000000..c22dc9f6
--- /dev/null
+++ b/img/icons/font-awesome/shopping-cart.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 1536q0 52-38 90t-90 38-90-38-38-90 38-90 90-38 90 38 38 90zm896 0q0 52-38 90t-90 38-90-38-38-90 38-90 90-38 90 38 38 90zm128-1088v512q0 24-16.5 42.5t-40.5 21.5l-1044 122q13 60 13 70 0 16-24 64h920q26 0 45 19t19 45-19 45-45 19h-1024q-26 0-45-19t-19-45q0-11 8-31.5t16-36 21.5-40 15.5-29.5l-177-823h-204q-26 0-45-19t-19-45 19-45 45-19h256q16 0 28.5 6.5t19.5 15.5 13 24.5 8 26 5.5 29.5 4.5 26h1201q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/shower.svg b/img/icons/font-awesome/shower.svg
new file mode 100644
index 00000000..b821256d
--- /dev/null
+++ b/img/icons/font-awesome/shower.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1497 249q10 10 10 23t-10 23l-626 626q-10 10-23 10t-23-10l-82-82q-10-10-10-23t10-23l44-44q-72-91-81.5-207t46.5-215q-74-71-176-71-106 0-181 75t-75 181v1280h-256v-1280q0-104 40.5-198.5t109.5-163.5 163.5-109.5 198.5-40.5q106 0 201 41t166 115q94-39 197-24.5t185 79.5l44-44q10-10 23-10t23 10zm-89 263q26 0 45 19t19 45-19 45-45 19-45-19-19-45 19-45 45-19zm256 128q-26 0-45-19t-19-45 19-45 45-19 45 19 19 45-19 45-45 19zm256-128q26 0 45 19t19 45-19 45-45 19-45-19-19-45 19-45 45-19zm-640 128q26 0 45 19t19 45-19 45-45 19-45-19-19-45 19-45 45-19zm192 64q0-26 19-45t45-19 45 19 19 45-19 45-45 19-45-19-19-45zm320-64q26 0 45 19t19 45-19 45-45 19-45-19-19-45 19-45 45-19zm-640 128q26 0 45 19t19 45-19 45-45 19-45-19-19-45 19-45 45-19zm256 128q-26 0-45-19t-19-45 19-45 45-19 45 19 19 45-19 45-45 19zm256-128q26 0 45 19t19 45-19 45-45 19-45-19-19-45 19-45 45-19zm-384 256q-26 0-45-19t-19-45 19-45 45-19 45 19 19 45-19 45-45 19zm256-128q26 0 45 19t19 45-19 45-45 19-45-19-19-45 19-45 45-19zm-384 128q26 0 45 19t19 45-19 45-45 19-45-19-19-45 19-45 45-19zm256 0q26 0 45 19t19 45-19 45-45 19-45-19-19-45 19-45 45-19zm-128 128q26 0 45 19t19 45-19 45-45 19-45-19-19-45 19-45 45-19zm-128 128q26 0 45 19t19 45-19 45-45 19-45-19-19-45 19-45 45-19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sign-in.svg b/img/icons/font-awesome/sign-in.svg
new file mode 100644
index 00000000..ff34b149
--- /dev/null
+++ b/img/icons/font-awesome/sign-in.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1312 896q0 26-19 45l-544 544q-19 19-45 19t-45-19-19-45v-288h-448q-26 0-45-19t-19-45v-384q0-26 19-45t45-19h448v-288q0-26 19-45t45-19 45 19l544 544q19 19 19 45zm352-352v704q0 119-84.5 203.5t-203.5 84.5h-320q-13 0-22.5-9.5t-9.5-22.5q0-4-1-20t-.5-26.5 3-23.5 10-19.5 20.5-6.5h320q66 0 113-47t47-113v-704q0-66-47-113t-113-47h-312l-11.5-1-11.5-3-8-5.5-7-9-2-13.5q0-4-1-20t-.5-26.5 3-23.5 10-19.5 20.5-6.5h320q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sign-language.svg b/img/icons/font-awesome/sign-language.svg
new file mode 100644
index 00000000..83eedf55
--- /dev/null
+++ b/img/icons/font-awesome/sign-language.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M895 673q32 0 59 18l222 148q61 40 110 97l146 170q40 46 29 106l-72 413q-6 32-29.5 53.5t-55.5 25.5l-527 56-352 32h-9q-39 0-67.5-28t-28.5-68q0-37 27-64t65-32l260-32h-448q-41 0-69.5-30t-26.5-71q2-39 32-65t69-26l442-1-521-64q-41-5-66-37t-19-73q6-35 34.5-57.5t65.5-22.5h10l481 60-351-94q-38-10-62-41.5t-18-68.5q6-36 33-58.5t62-22.5q6 0 20 2l448 96 217 37q1 0 3 .5t3 .5q23 0 30.5-23t-12.5-36l-186-125q-35-23-42-63.5t18-73.5q27-38 76-38zm-70 202l186 125-218-37-5-2-36-38-238-262q-1-1-2.5-3.5t-2.5-3.5q-24-31-18.5-70t37.5-64q31-23 68-17.5t64 33.5l142 147q-2 1-5 3.5t-4 4.5q-32 45-23 99t55 85zm887-454l15 266q4 73-11 147l-48 219q-12 59-67 87l-106 54q2-62-39-109l-146-170q-53-61-117-103l-222-148q-34-23-76-23-51 0-88 37l-235-312q-25-33-18-73.5t41-63.5q33-22 71.5-14t62.5 40l266 352-262-455q-21-35-10.5-75t47.5-59q35-18 72.5-6t57.5 46l241 420-136-337q-15-35-4.5-74t44.5-56q37-19 76-6t56 51l193 415 101 196q8 15 23 17.5t27-7.5 11-26l-12-224q-2-41 26-71t69-31q39 0 67 28.5t30 67.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sign-out.svg b/img/icons/font-awesome/sign-out.svg
new file mode 100644
index 00000000..0bb0fe87
--- /dev/null
+++ b/img/icons/font-awesome/sign-out.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 1440q0 4 1 20t.5 26.5-3 23.5-10 19.5-20.5 6.5h-320q-119 0-203.5-84.5t-84.5-203.5v-704q0-119 84.5-203.5t203.5-84.5h320q13 0 22.5 9.5t9.5 22.5q0 4 1 20t.5 26.5-3 23.5-10 19.5-20.5 6.5h-320q-66 0-113 47t-47 113v704q0 66 47 113t113 47h312l11.5 1 11.5 3 8 5.5 7 9 2 13.5zm928-544q0 26-19 45l-544 544q-19 19-45 19t-45-19-19-45v-288h-448q-26 0-45-19t-19-45v-384q0-26 19-45t45-19h448v-288q0-26 19-45t45-19 45 19l544 544q19 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/signal.svg b/img/icons/font-awesome/signal.svg
new file mode 100644
index 00000000..caf941d4
--- /dev/null
+++ b/img/icons/font-awesome/signal.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 1440v192q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h192q14 0 23 9t9 23zm384-128v320q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-320q0-14 9-23t23-9h192q14 0 23 9t9 23zm384-256v576q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-576q0-14 9-23t23-9h192q14 0 23 9t9 23zm384-384v960q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-960q0-14 9-23t23-9h192q14 0 23 9t9 23zm384-512v1472q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-1472q0-14 9-23t23-9h192q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/signing.svg b/img/icons/font-awesome/signing.svg
new file mode 100644
index 00000000..83eedf55
--- /dev/null
+++ b/img/icons/font-awesome/signing.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M895 673q32 0 59 18l222 148q61 40 110 97l146 170q40 46 29 106l-72 413q-6 32-29.5 53.5t-55.5 25.5l-527 56-352 32h-9q-39 0-67.5-28t-28.5-68q0-37 27-64t65-32l260-32h-448q-41 0-69.5-30t-26.5-71q2-39 32-65t69-26l442-1-521-64q-41-5-66-37t-19-73q6-35 34.5-57.5t65.5-22.5h10l481 60-351-94q-38-10-62-41.5t-18-68.5q6-36 33-58.5t62-22.5q6 0 20 2l448 96 217 37q1 0 3 .5t3 .5q23 0 30.5-23t-12.5-36l-186-125q-35-23-42-63.5t18-73.5q27-38 76-38zm-70 202l186 125-218-37-5-2-36-38-238-262q-1-1-2.5-3.5t-2.5-3.5q-24-31-18.5-70t37.5-64q31-23 68-17.5t64 33.5l142 147q-2 1-5 3.5t-4 4.5q-32 45-23 99t55 85zm887-454l15 266q4 73-11 147l-48 219q-12 59-67 87l-106 54q2-62-39-109l-146-170q-53-61-117-103l-222-148q-34-23-76-23-51 0-88 37l-235-312q-25-33-18-73.5t41-63.5q33-22 71.5-14t62.5 40l266 352-262-455q-21-35-10.5-75t47.5-59q35-18 72.5-6t57.5 46l241 420-136-337q-15-35-4.5-74t44.5-56q37-19 76-6t56 51l193 415 101 196q8 15 23 17.5t27-7.5 11-26l-12-224q-2-41 26-71t69-31q39 0 67 28.5t30 67.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/simplybuilt.svg b/img/icons/font-awesome/simplybuilt.svg
new file mode 100644
index 00000000..176d6d48
--- /dev/null
+++ b/img/icons/font-awesome/simplybuilt.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M863 1032q0-112-79.5-191.5t-191.5-79.5-191 79.5-79 191.5 79 191 191 79 191.5-79 79.5-191zm863-1q0-112-79-191t-191-79-191.5 79-79.5 191q0 113 79.5 192t191.5 79 191-79.5 79-191.5zm322-809v1348q0 44-31.5 75.5t-76.5 31.5h-1832q-45 0-76.5-31.5t-31.5-75.5v-1348q0-44 31.5-75.5t76.5-31.5h431q44 0 76 31.5t32 75.5v161h754v-161q0-44 32-75.5t76-31.5h431q45 0 76.5 31.5t31.5 75.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sitemap.svg b/img/icons/font-awesome/sitemap.svg
new file mode 100644
index 00000000..d69a3b6d
--- /dev/null
+++ b/img/icons/font-awesome/sitemap.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 1248v320q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-320q0-40 28-68t68-28h96v-192h-512v192h96q40 0 68 28t28 68v320q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-320q0-40 28-68t68-28h96v-192h-512v192h96q40 0 68 28t28 68v320q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-320q0-40 28-68t68-28h96v-192q0-52 38-90t90-38h512v-192h-96q-40 0-68-28t-28-68v-320q0-40 28-68t68-28h320q40 0 68 28t28 68v320q0 40-28 68t-68 28h-96v192h512q52 0 90 38t38 90v192h96q40 0 68 28t28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/skyatlas.svg b/img/icons/font-awesome/skyatlas.svg
new file mode 100644
index 00000000..e1f1486f
--- /dev/null
+++ b/img/icons/font-awesome/skyatlas.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1430 583zm260 204q148 0 253 98.5t105 244.5q0 157-109 261.5t-267 104.5q-85 0-162-27.5t-138-73.5-118-106-109-126-103.5-132.5-108.5-126.5-117-106-136-73.5-159-27.5q-154 0-251.5 91.5t-97.5 244.5q0 157 104 250t263 93q100 0 208-37.5t193-98.5q5-4 21-18.5t30-24 22-9.5q14 0 24.5 10.5t10.5 24.5q0 24-60 77-101 88-234.5 142t-260.5 54q-133 0-245.5-58t-180-165-67.5-241q0-205 141.5-341t347.5-136q120 0 226.5 43.5t185.5 113 151.5 153 139 167.5 133.5 153.5 149.5 113 172.5 43.5q102 0 168.5-61.5t66.5-162.5q0-95-64.5-159t-159.5-64q-30 0-81.5 18.5t-68.5 18.5q-20 0-35.5-15t-15.5-35q0-18 8.5-57t8.5-59q0-159-107.5-263t-266.5-104q-58 0-111.5 18.5t-84 40.5-55.5 40.5-33 18.5q-15 0-25.5-10.5t-10.5-25.5q0-19 25-46 59-67 147-103.5t182-36.5q191 0 318 125.5t127 315.5q0 37-4 66 57-15 115-15z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/skype.svg b/img/icons/font-awesome/skype.svg
new file mode 100644
index 00000000..c71b1371
--- /dev/null
+++ b/img/icons/font-awesome/skype.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1301 1063q0-50-19.5-91.5t-48.5-68.5-73-49-82.5-34-87.5-23l-104-24q-30-7-44-10.5t-35-11.5-30-16-16.5-21-7.5-30q0-77 144-77 43 0 77 12t54 28.5 38 33.5 40 29 48 12q47 0 75.5-32t28.5-77q0-55-56-99.5t-142-67.5-182-23q-68 0-132 15.5t-119.5 47-89 87-33.5 128.5q0 61 19 106.5t56 75.5 80 48.5 103 32.5l146 36q90 22 112 36 32 20 32 60 0 39-40 64.5t-105 25.5q-51 0-91.5-16t-65-38.5-45.5-45-46-38.5-54-16q-50 0-75.5 30t-25.5 75q0 92 122 157.5t291 65.5q73 0 140-18.5t122.5-53.5 88.5-93.5 33-131.5zm363 217q0 159-112.5 271.5t-271.5 112.5q-130 0-234-80-77 16-150 16-143 0-273.5-55.5t-225-150-150-225-55.5-273.5q0-73 16-150-80-104-80-234 0-159 112.5-271.5t271.5-112.5q130 0 234 80 77-16 150-16 143 0 273.5 55.5t225 150 150 225 55.5 273.5q0 73-16 150 80 104 80 234z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/slack.svg b/img/icons/font-awesome/slack.svg
new file mode 100644
index 00000000..cd921544
--- /dev/null
+++ b/img/icons/font-awesome/slack.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1583 776q62 0 103.5 40.5t41.5 101.5q0 97-93 130l-172 59 56 167q7 21 7 47 0 59-42 102t-101 43q-47 0-85.5-27t-53.5-72l-55-165-310 106 55 164q8 24 8 47 0 59-42 102t-102 43q-47 0-85-27t-53-72l-55-163-153 53q-29 9-50 9-61 0-101.5-40t-40.5-101q0-47 27.5-85t71.5-53l156-53-105-313-156 54q-26 8-48 8-60 0-101-40.5t-41-100.5q0-47 27.5-85t71.5-53l157-53-53-159q-8-24-8-47 0-60 42-102.5t102-42.5q47 0 85 27t53 72l54 160 310-105-54-160q-8-24-8-47 0-59 42.5-102t101.5-43q47 0 85.5 27.5t53.5 71.5l53 161 162-55q21-6 43-6 60 0 102.5 39.5t42.5 98.5q0 45-30 81.5t-74 51.5l-157 54 105 316 164-56q24-8 46-8zm-794 262l310-105-105-315-310 107z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sliders.svg b/img/icons/font-awesome/sliders.svg
new file mode 100644
index 00000000..ce6c0599
--- /dev/null
+++ b/img/icons/font-awesome/sliders.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M480 1408v128h-352v-128h352zm352-128q26 0 45 19t19 45v256q0 26-19 45t-45 19h-256q-26 0-45-19t-19-45v-256q0-26 19-45t45-19h256zm160-384v128h-864v-128h864zm-640-512v128h-224v-128h224zm1312 1024v128h-736v-128h736zm-960-1152q26 0 45 19t19 45v256q0 26-19 45t-45 19h-256q-26 0-45-19t-19-45v-256q0-26 19-45t45-19h256zm640 512q26 0 45 19t19 45v256q0 26-19 45t-45 19h-256q-26 0-45-19t-19-45v-256q0-26 19-45t45-19h256zm320 128v128h-224v-128h224zm0-512v128h-864v-128h864z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/slideshare.svg b/img/icons/font-awesome/slideshare.svg
new file mode 100644
index 00000000..85872577
--- /dev/null
+++ b/img/icons/font-awesome/slideshare.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M873 740q0 83-63.5 142.5t-152.5 59.5-152.5-59.5-63.5-142.5q0-84 63.5-143t152.5-59 152.5 59 63.5 143zm502 0q0 83-63 142.5t-153 59.5q-89 0-152.5-59.5t-63.5-142.5q0-84 63.5-143t152.5-59q90 0 153 59t63 143zm225 180v-667q0-87-32-123.5t-111-36.5h-1112q-83 0-112.5 34t-29.5 126v673q43 23 88.5 40t81 28 81 18.5 71 11 70 4 58.5.5 56.5-2 44.5-2q68-1 95 27 6 6 10 9 26 25 61 51 7-91 118-87 5 0 36.5 1.5t43 2 45.5 1 53-1 54.5-4.5 61-8.5 62-13.5 67-19.5 67.5-27 72-34.5zm163-5q-121 149-372 252 84 285-23 465-66 113-183 148-104 32-182-15-86-51-82-164l-1-326v-1q-8-2-24.5-6t-23.5-5l-1 338q4 114-83 164-79 47-183 15-117-36-182-150-105-180-22-463-251-103-372-252-25-37-4-63t60 1q4 2 11.5 7t10.5 8v-694q0-72 47-123t114-51h1257q67 0 114 51t47 123v694l21-15q39-27 60-1t-4 63z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/smile-o.svg b/img/icons/font-awesome/smile-o.svg
new file mode 100644
index 00000000..5979e2e3
--- /dev/null
+++ b/img/icons/font-awesome/smile-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1262 1075q-37 121-138 195t-228 74-228-74-138-195q-8-25 4-48.5t38-31.5q25-8 48.5 4t31.5 38q25 80 92.5 129.5t151.5 49.5 151.5-49.5 92.5-129.5q8-26 32-38t49-4 37 31.5 4 48.5zm-494-435q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm512 0q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm256 256q0-130-51-248.5t-136.5-204-204-136.5-248.5-51-248.5 51-204 136.5-136.5 204-51 248.5 51 248.5 136.5 204 204 136.5 248.5 51 248.5-51 204-136.5 136.5-204 51-248.5zm128 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/snapchat-ghost.svg b/img/icons/font-awesome/snapchat-ghost.svg
new file mode 100644
index 00000000..974d4bc6
--- /dev/null
+++ b/img/icons/font-awesome/snapchat-ghost.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M912 128q134-1 240.5 68.5t163.5 192.5q27 58 27 179 0 47-9 191 14 7 28 7 18 0 51-13.5t51-13.5q29 0 56 18t27 46q0 32-31.5 54t-69 31.5-69 29-31.5 47.5q0 15 12 43 37 82 102.5 150t144.5 101q28 12 80 23 28 6 28 35 0 70-219 103-7 11-11 39t-14 46.5-33 18.5q-20 0-62-6.5t-64-6.5q-37 0-62 5-32 5-63 22.5t-58 38-58 40.5-76 33.5-99 13.5q-52 0-96.5-13.5t-75-33.5-57.5-40.5-58-38-62-22.5q-26-5-63-5-24 0-65.5 7.5t-58.5 7.5q-25 0-35-18.5t-14-47.5-11-40q-219-33-219-103 0-29 28-35 52-11 80-23 78-32 144.5-101t102.5-150q12-28 12-43 0-28-31.5-47.5t-69.5-29.5-69.5-31.5-31.5-52.5q0-27 26-45.5t55-18.5q15 0 48 13t53 13q18 0 32-7-9-142-9-190 0-122 27-180 64-137 172-198t264-63z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/snapchat-square.svg b/img/icons/font-awesome/snapchat-square.svg
new file mode 100644
index 00000000..aa0353bf
--- /dev/null
+++ b/img/icons/font-awesome/snapchat-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 1148q0-22-22-27-67-14-118-58t-80-109q-7-14-7-25 0-15 19.5-26t42.5-17 42.5-20.5 19.5-36.5q0-19-18.5-31.5t-38.5-12.5q-11 0-31 8t-32 8q-4 0-12-2 5-63 5-115 0-78-17-114-36-78-102.5-121.5t-152.5-43.5q-198 0-275 165-18 38-18 115 0 38 6 114-10 2-15 2-11 0-31.5-8t-30.5-8q-20 0-37.5 12.5t-17.5 32.5q0 21 19.5 35.5t42.5 20.5 42.5 17 19.5 26q0 11-7 25-64 138-198 167-22 5-22 27 0 47 138 69 2 5 6 26t11 30.5 23 9.5q13 0 38.5-5t38.5-5q35 0 67.5 15t54.5 32.5 57.5 32.5 76.5 15q43 0 79-15t57.5-32.5 54-32.5 67.5-15q13 0 39 4.5t39 4.5q15 0 22.5-9.5t11.5-31 5-24.5q138-22 138-69zm256-732v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/snapchat.svg b/img/icons/font-awesome/snapchat.svg
new file mode 100644
index 00000000..e3977420
--- /dev/null
+++ b/img/icons/font-awesome/snapchat.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1407 1148q0-22-22-27-67-15-118-59t-80-108q-7-19-7-25 0-15 19.5-26t43-17 43-20.5 19.5-36.5q0-19-18.5-31.5t-38.5-12.5q-12 0-32 8t-31 8q-4 0-12-2 5-95 5-114 0-79-17-114-36-78-103-121.5t-152-43.5q-199 0-275 165-17 35-17 114 0 19 5 114-4 2-14 2-12 0-32-7.5t-30-7.5q-21 0-38.5 12t-17.5 32q0 21 19.5 35.5t43 20.5 43 17 19.5 26q0 6-7 25-64 138-198 167-22 5-22 27 0 46 137 68 2 5 6 26t11.5 30.5 23.5 9.5q12 0 37.5-4.5t39.5-4.5q35 0 67 15t54 32.5 57.5 32.5 76.5 15q43 0 79-15t57.5-32.5 53.5-32.5 67-15q14 0 39.5 4t38.5 4q16 0 23-10t11-30 6-25q137-22 137-68zm257-252q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/snowflake-o.svg b/img/icons/font-awesome/snowflake-o.svg
new file mode 100644
index 00000000..f62d9f52
--- /dev/null
+++ b/img/icons/font-awesome/snowflake-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1630 1117l-167 33 186 107q23 13 29.5 38.5t-6.5 48.5q-14 23-39 29.5t-48-6.5l-186-106 55 160q13 38-12 63.5t-60.5 20.5-48.5-42l-102-300-271-156v313l208 238q16 18 17 39t-11 36.5-28.5 25-37 5.5-36.5-22l-112-128v214q0 26-19 45t-45 19-45-19-19-45v-214l-112 128q-16 18-36.5 22t-37-5.5-28.5-25-11-36.5 17-39l208-238v-313l-271 156-102 300q-13 37-48.5 42t-60.5-20.5-12-63.5l55-160-186 106q-23 13-48 6.5t-39-29.5q-13-23-6.5-48.5t29.5-38.5l186-107-167-33q-29-6-42-29t-8.5-46.5 25.5-40 50-10.5l310 62 271-157-271-157-310 62q-4 1-13 1-27 0-44-18t-19-40 11-43 40-26l167-33-186-107q-23-13-29.5-38.5t6.5-48.5 39-30 48 7l186 106-55-160q-13-38 12-63.5t60.5-20.5 48.5 42l102 300 271 156v-313l-208-238q-16-18-17-39t11-36.5 28.5-25 37-5.5 36.5 22l112 128v-214q0-26 19-45t45-19 45 19 19 45v214l112-128q16-18 36.5-22t37 5.5 28.5 25 11 36.5-17 39l-208 238v313l271-156 102-300q13-37 48.5-42t60.5 20.5 12 63.5l-55 160 186-106q23-13 48-6.5t39 29.5q13 23 6.5 48.5t-29.5 38.5l-186 107 167 33q27 5 40 26t11 43-19 40-44 18q-9 0-13-1l-310-62-271 157 271 157 310-62q29-6 50 10.5t25.5 40-8.5 46.5-42 29z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/soccer-ball-o.svg b/img/icons/font-awesome/soccer-ball-o.svg
new file mode 100644
index 00000000..9d0ce8c7
--- /dev/null
+++ b/img/icons/font-awesome/soccer-ball-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M609 816l287-208 287 208-109 336h-355zm287-816q182 0 348 71t286 191 191 286 71 348-71 348-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71zm619 1350q149-203 149-454v-3l-102 89-240-224 63-323 134 12q-150-206-389-282l53 124-287 159-287-159 53-124q-239 76-389 282l135-12 62 323-240 224-102-89v3q0 251 149 454l30-132 326 40 139 298-116 69q117 39 240 39t240-39l-116-69 139-298 326-40z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sort-alpha-asc.svg b/img/icons/font-awesome/sort-alpha-asc.svg
new file mode 100644
index 00000000..70c2b14e
--- /dev/null
+++ b/img/icons/font-awesome/sort-alpha-asc.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1255 408h177l-72-218-12-47q-2-16-2-20h-4l-3 20q0 1-3.5 18t-7.5 29zm-455 1032q0 12-10 24l-319 319q-10 9-23 9-12 0-23-9l-320-320q-15-16-7-35 8-20 30-20h192v-1376q0-14 9-23t23-9h192q14 0 23 9t9 23v1376h192q14 0 23 9t9 23zm836 119v233h-584v-90l369-529q12-18 21-27l11-9v-3q-2 0-6.5.5t-7.5.5q-12 3-30 3h-232v115h-120v-229h567v89l-369 530q-6 8-21 26l-11 11v2l14-2q9-2 30-2h248v-119h121zm89-897v106h-288v-106h75l-47-144h-243l-47 144h75v106h-287v-106h70l230-662h162l230 662h70z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sort-alpha-desc.svg b/img/icons/font-awesome/sort-alpha-desc.svg
new file mode 100644
index 00000000..847d6551
--- /dev/null
+++ b/img/icons/font-awesome/sort-alpha-desc.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1255 1432h177l-72-218-12-47q-2-16-2-20h-4l-3 20q0 1-3.5 18t-7.5 29zm-455 8q0 12-10 24l-319 319q-10 9-23 9-12 0-23-9l-320-320q-15-16-7-35 8-20 30-20h192v-1376q0-14 9-23t23-9h192q14 0 23 9t9 23v1376h192q14 0 23 9t9 23zm925 246v106h-288v-106h75l-47-144h-243l-47 144h75v106h-287v-106h70l230-662h162l230 662h70zm-89-1151v233h-584v-90l369-529q12-18 21-27l11-9v-3q-2 0-6.5.5t-7.5.5q-12 3-30 3h-232v115h-120v-229h567v89l-369 530q-6 8-21 26l-11 10v3l14-3q9-1 30-1h248v-119h121z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sort-amount-asc.svg b/img/icons/font-awesome/sort-amount-asc.svg
new file mode 100644
index 00000000..62fe5d27
--- /dev/null
+++ b/img/icons/font-awesome/sort-amount-asc.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M736 1440q0 12-10 24l-319 319q-10 9-23 9-12 0-23-9l-320-320q-15-16-7-35 8-20 30-20h192v-1376q0-14 9-23t23-9h192q14 0 23 9t9 23v1376h192q14 0 23 9t9 23zm1056 128v192q0 14-9 23t-23 9h-832q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h832q14 0 23 9t9 23zm-192-512v192q0 14-9 23t-23 9h-640q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h640q14 0 23 9t9 23zm-192-512v192q0 14-9 23t-23 9h-448q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h448q14 0 23 9t9 23zm-192-512v192q0 14-9 23t-23 9h-256q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h256q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sort-amount-desc.svg b/img/icons/font-awesome/sort-amount-desc.svg
new file mode 100644
index 00000000..01f5bc72
--- /dev/null
+++ b/img/icons/font-awesome/sort-amount-desc.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1216 1568v192q0 14-9 23t-23 9h-256q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h256q14 0 23 9t9 23zm-480-128q0 12-10 24l-319 319q-10 9-23 9-12 0-23-9l-320-320q-15-16-7-35 8-20 30-20h192v-1376q0-14 9-23t23-9h192q14 0 23 9t9 23v1376h192q14 0 23 9t9 23zm672-384v192q0 14-9 23t-23 9h-448q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h448q14 0 23 9t9 23zm192-512v192q0 14-9 23t-23 9h-640q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h640q14 0 23 9t9 23zm192-512v192q0 14-9 23t-23 9h-832q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h832q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sort-asc.svg b/img/icons/font-awesome/sort-asc.svg
new file mode 100644
index 00000000..5d7757a2
--- /dev/null
+++ b/img/icons/font-awesome/sort-asc.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 704q0 26-19 45t-45 19h-896q-26 0-45-19t-19-45 19-45l448-448q19-19 45-19t45 19l448 448q19 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sort-desc.svg b/img/icons/font-awesome/sort-desc.svg
new file mode 100644
index 00000000..30536e48
--- /dev/null
+++ b/img/icons/font-awesome/sort-desc.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 1088q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sort-down.svg b/img/icons/font-awesome/sort-down.svg
new file mode 100644
index 00000000..30536e48
--- /dev/null
+++ b/img/icons/font-awesome/sort-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 1088q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sort-numeric-asc.svg b/img/icons/font-awesome/sort-numeric-asc.svg
new file mode 100644
index 00000000..7bce2b3e
--- /dev/null
+++ b/img/icons/font-awesome/sort-numeric-asc.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1474 1313q0-63-44-116t-103-53q-52 0-83 37t-31 94 36.5 95 104.5 38q50 0 85-27t35-68zm-610 127q0 12-10 24l-319 319q-10 9-23 9-12 0-23-9l-320-320q-15-16-7-35 8-20 30-20h192v-1376q0-14 9-23t23-9h192q14 0 23 9t9 23v1376h192q14 0 23 9t9 23zm750-69q0 62-13 121.5t-41 114-68 95.5-98.5 65.5-127.5 24.5q-62 0-108-16-24-8-42-15l39-113q15 7 31 11 37 13 75 13 84 0 134.5-58.5t66.5-145.5h-2q-21 23-61.5 37t-84.5 14q-106 0-173-71.5t-67-172.5q0-105 72-178t181-73q123 0 205 94.5t82 252.5zm-30-717v114h-469v-114h167v-432q0-7 .5-19t.5-17v-16h-2l-7 12q-8 13-26 31l-62 58-82-86 192-185h123v654h165z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sort-numeric-desc.svg b/img/icons/font-awesome/sort-numeric-desc.svg
new file mode 100644
index 00000000..a28d59c5
--- /dev/null
+++ b/img/icons/font-awesome/sort-numeric-desc.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1474 289q0-63-44-116t-103-53q-52 0-83 37t-31 94 36.5 95 104.5 38q50 0 85-27t35-68zm-610 1151q0 12-10 24l-319 319q-10 9-23 9-12 0-23-9l-320-320q-15-16-7-35 8-20 30-20h192v-1376q0-14 9-23t23-9h192q14 0 23 9t9 23v1376h192q14 0 23 9t9 23zm720 238v114h-469v-114h167v-432q0-7 .5-19t.5-17v-16h-2l-7 12q-8 13-26 31l-62 58-82-86 192-185h123v654h165zm30-1331q0 62-13 121.5t-41 114-68 95.5-98.5 65.5-127.5 24.5q-62 0-108-16-24-8-42-15l39-113q15 7 31 11 37 13 75 13 84 0 134.5-58.5t66.5-145.5h-2q-21 23-61.5 37t-84.5 14q-106 0-173-71.5t-67-172.5q0-105 72-178t181-73q123 0 205 94.5t82 252.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sort-up.svg b/img/icons/font-awesome/sort-up.svg
new file mode 100644
index 00000000..5d7757a2
--- /dev/null
+++ b/img/icons/font-awesome/sort-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 704q0 26-19 45t-45 19h-896q-26 0-45-19t-19-45 19-45l448-448q19-19 45-19t45 19l448 448q19 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sort.svg b/img/icons/font-awesome/sort.svg
new file mode 100644
index 00000000..ac990cf5
--- /dev/null
+++ b/img/icons/font-awesome/sort.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 1088q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45zm0-384q0 26-19 45t-45 19h-896q-26 0-45-19t-19-45 19-45l448-448q19-19 45-19t45 19l448 448q19 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/soundcloud.svg b/img/icons/font-awesome/soundcloud.svg
new file mode 100644
index 00000000..d9900cd4
--- /dev/null
+++ b/img/icons/font-awesome/soundcloud.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M784 1372l16-241-16-523q-1-10-7.5-17t-16.5-7q-9 0-16 7t-7 17l-14 523 14 241q1 10 7.5 16.5t15.5 6.5q22 0 24-23zm296-29l11-211-12-586q0-16-13-24-8-5-16-5t-16 5q-13 8-13 24l-1 6-10 579q0 1 11 236v1q0 10 6 17 9 11 23 11 11 0 20-9 9-7 9-20zm-1045-340l20 128-20 126q-2 9-9 9t-9-9l-17-126 17-128q2-9 9-9t9 9zm86-79l26 207-26 203q-2 9-10 9-9 0-9-10l-23-202 23-207q0-9 9-9 8 0 10 9zm280 453zm-188-491l25 245-25 237q0 11-11 11-10 0-12-11l-21-237 21-245q2-12 12-12 11 0 11 12zm94-7l23 252-23 244q-2 13-14 13-13 0-13-13l-21-244 21-252q0-13 13-13 12 0 14 13zm94 18l21 234-21 246q-2 16-16 16-6 0-10.5-4.5t-4.5-11.5l-20-246 20-234q0-6 4.5-10.5t10.5-4.5q14 0 16 15zm383 475zm-289-621l21 380-21 246q0 7-5 12.5t-12 5.5q-16 0-18-18l-18-246 18-380q2-18 18-18 7 0 12 5.5t5 12.5zm94-86l19 468-19 244q0 8-5.5 13.5t-13.5 5.5q-18 0-20-19l-16-244 16-468q2-19 20-19 8 0 13.5 5.5t5.5 13.5zm98-40l18 506-18 242q-2 21-22 21-19 0-21-21l-16-242 16-506q0-9 6.5-15.5t14.5-6.5q9 0 15 6.5t7 15.5zm392 742zm-198-746l15 510-15 239q0 10-7.5 17.5t-17.5 7.5-17-7-8-18l-14-239 14-510q0-11 7.5-18t17.5-7 17.5 7 7.5 18zm99 19l14 492-14 236q0 11-8 19t-19 8-19-8-9-19l-12-236 12-492q1-12 9-20t19-8 18.5 8 8.5 20zm212 492l-14 231q0 13-9 22t-22 9-22-9-10-22l-6-114-6-117 12-636v-3q2-15 12-24 9-7 20-7 8 0 15 5 14 8 16 26zm1112-19q0 117-83 199.5t-200 82.5h-786q-13-2-22-11t-9-22v-899q0-23 28-33 85-34 181-34 195 0 338 131.5t160 323.5q53-22 110-22 117 0 200 83t83 201z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/space-shuttle.svg b/img/icons/font-awesome/space-shuttle.svg
new file mode 100644
index 00000000..f24fd15e
--- /dev/null
+++ b/img/icons/font-awesome/space-shuttle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M684 1120q-110 64-268 64h-128v-64h-64q-13 0-22.5-23.5t-9.5-56.5q0-24 7-49-58-2-96.5-10.5t-38.5-20.5 38.5-20.5 96.5-10.5q-7-25-7-49 0-33 9.5-56.5t22.5-23.5h64v-64h128q158 0 268 64h1113q42 7 106.5 18t80.5 14q89 15 150 40.5t83.5 47.5 22.5 40-22.5 40-83.5 47.5-150 40.5q-16 3-80.5 14t-106.5 18h-1113zm1119-252q53 36 53 92t-53 92l81 30q68-48 68-122t-68-122zm-1114 268h1015q-217 38-456 80-57 0-113 24t-83 48l-28 24-288 288q-26 26-70.5 45t-89.5 19h-96l-93-464h29q157 0 273-64zm-273-416h-29l93-464h96q46 0 90 19t70 45l288 288q4 4 11 10.5t30.5 23 48.5 29 61.5 23 72.5 10.5l456 80h-1015q-116-64-273-64z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/spinner.svg b/img/icons/font-awesome/spinner.svg
new file mode 100644
index 00000000..102b22f3
--- /dev/null
+++ b/img/icons/font-awesome/spinner.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M526 1394q0 53-37.5 90.5t-90.5 37.5q-52 0-90-38t-38-90q0-53 37.5-90.5t90.5-37.5 90.5 37.5 37.5 90.5zm498 206q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm-704-704q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm1202 498q0 52-38 90t-90 38q-53 0-90.5-37.5t-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm-964-996q0 66-47 113t-113 47-113-47-47-113 47-113 113-47 113 47 47 113zm1170 498q0 53-37.5 90.5t-90.5 37.5-90.5-37.5-37.5-90.5 37.5-90.5 90.5-37.5 90.5 37.5 37.5 90.5zm-640-704q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm530 206q0 93-66 158.5t-158 65.5q-93 0-158.5-65.5t-65.5-158.5q0-92 65.5-158t158.5-66q92 0 158 66t66 158z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/spoon.svg b/img/icons/font-awesome/spoon.svg
new file mode 100644
index 00000000..c51696a4
--- /dev/null
+++ b/img/icons/font-awesome/spoon.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1216 528q0 145-57 243.5t-152 135.5l45 821q2 26-16 45t-44 19h-192q-26 0-44-19t-16-45l45-821q-95-37-152-135.5t-57-243.5q0-128 42.5-249.5t117.5-200 160-78.5 160 78.5 117.5 200 42.5 249.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/spotify.svg b/img/icons/font-awesome/spotify.svg
new file mode 100644
index 00000000..35cdf509
--- /dev/null
+++ b/img/icons/font-awesome/spotify.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1255 1210q0-32-30-51-193-115-447-115-133 0-287 34-42 9-42 52 0 20 13.5 34.5t35.5 14.5q5 0 37-8 132-27 243-27 226 0 397 103 19 11 33 11 19 0 33-13.5t14-34.5zm96-215q0-40-35-61-237-141-548-141-153 0-303 42-48 13-48 64 0 25 17.5 42.5t42.5 17.5q7 0 37-8 122-33 251-33 279 0 488 124 24 13 38 13 25 0 42.5-17.5t17.5-42.5zm108-248q0-47-40-70-126-73-293-110.5t-343-37.5q-204 0-364 47-23 7-38.5 25.5t-15.5 48.5q0 31 20.5 52t51.5 21q11 0 40-8 133-37 307-37 159 0 309.5 34t253.5 95q21 12 40 12 29 0 50.5-20.5t21.5-51.5zm205 149q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/square-o.svg b/img/icons/font-awesome/square-o.svg
new file mode 100644
index 00000000..5fdd04b9
--- /dev/null
+++ b/img/icons/font-awesome/square-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1312 256h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113v-832q0-66-47-113t-113-47zm288 160v832q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/square.svg b/img/icons/font-awesome/square.svg
new file mode 100644
index 00000000..148e298b
--- /dev/null
+++ b/img/icons/font-awesome/square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 416v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/stack-exchange.svg b/img/icons/font-awesome/stack-exchange.svg
new file mode 100644
index 00000000..0a9e1e03
--- /dev/null
+++ b/img/icons/font-awesome/stack-exchange.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1515 1253v66q0 85-57.5 144.5t-138.5 59.5h-57l-260 269v-269h-529q-81 0-138.5-59.5t-57.5-144.5v-66h1238zm0-326v255h-1238v-255h1238zm0-328v255h-1238v-255h1238zm0-140v67h-1238v-67q0-84 57.5-143.5t138.5-59.5h846q81 0 138.5 59.5t57.5 143.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/stack-overflow.svg b/img/icons/font-awesome/stack-overflow.svg
new file mode 100644
index 00000000..7d5242c4
--- /dev/null
+++ b/img/icons/font-awesome/stack-overflow.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1417 1632h-1118v-480h-160v640h1438v-640h-160v480zm-942-524l33-157 783 165-33 156zm103-374l67-146 725 339-67 145zm201-356l102-123 614 513-102 123zm397-378l477 641-128 96-477-641zm-718 1471v-159h800v159h-800z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/star-half-empty.svg b/img/icons/font-awesome/star-half-empty.svg
new file mode 100644
index 00000000..8867272a
--- /dev/null
+++ b/img/icons/font-awesome/star-half-empty.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1250 957l257-250-356-52-66-10-30-60-159-322v963l59 31 318 168-60-355-12-66zm452-262l-363 354 86 500q5 33-6 51.5t-34 18.5q-17 0-40-12l-449-236-449 236q-23 12-40 12-23 0-34-18.5t-6-51.5l86-500-364-354q-32-32-23-59.5t54-34.5l502-73 225-455q20-41 49-41 28 0 49 41l225 455 502 73q45 7 54 34.5t-24 59.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/star-half-full.svg b/img/icons/font-awesome/star-half-full.svg
new file mode 100644
index 00000000..8867272a
--- /dev/null
+++ b/img/icons/font-awesome/star-half-full.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1250 957l257-250-356-52-66-10-30-60-159-322v963l59 31 318 168-60-355-12-66zm452-262l-363 354 86 500q5 33-6 51.5t-34 18.5q-17 0-40-12l-449-236-449 236q-23 12-40 12-23 0-34-18.5t-6-51.5l86-500-364-354q-32-32-23-59.5t54-34.5l502-73 225-455q20-41 49-41 28 0 49 41l225 455 502 73q45 7 54 34.5t-24 59.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/star-half-o.svg b/img/icons/font-awesome/star-half-o.svg
new file mode 100644
index 00000000..8867272a
--- /dev/null
+++ b/img/icons/font-awesome/star-half-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1250 957l257-250-356-52-66-10-30-60-159-322v963l59 31 318 168-60-355-12-66zm452-262l-363 354 86 500q5 33-6 51.5t-34 18.5q-17 0-40-12l-449-236-449 236q-23 12-40 12-23 0-34-18.5t-6-51.5l86-500-364-354q-32-32-23-59.5t54-34.5l502-73 225-455q20-41 49-41 28 0 49 41l225 455 502 73q45 7 54 34.5t-24 59.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/star-half.svg b/img/icons/font-awesome/star-half.svg
new file mode 100644
index 00000000..727a70e4
--- /dev/null
+++ b/img/icons/font-awesome/star-half.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1280 32v1339l-449 236q-22 12-40 12-21 0-31.5-14.5t-10.5-35.5q0-6 2-20l86-500-364-354q-25-27-25-48 0-37 56-46l502-73 225-455q19-41 49-41z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/star-o.svg b/img/icons/font-awesome/star-o.svg
new file mode 100644
index 00000000..3ebec69d
--- /dev/null
+++ b/img/icons/font-awesome/star-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1201 1004l306-297-422-62-189-382-189 382-422 62 306 297-73 421 378-199 377 199zm527-357q0 22-26 48l-363 354 86 500q1 7 1 20 0 50-41 50-19 0-40-12l-449-236-449 236q-22 12-40 12-21 0-31.5-14.5t-10.5-35.5q0-6 2-20l86-500-364-354q-25-27-25-48 0-37 56-46l502-73 225-455q19-41 49-41t49 41l225 455 502 73q56 9 56 46z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/star.svg b/img/icons/font-awesome/star.svg
new file mode 100644
index 00000000..1bb2ccf7
--- /dev/null
+++ b/img/icons/font-awesome/star.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1728 647q0 22-26 48l-363 354 86 500q1 7 1 20 0 21-10.5 35.5t-30.5 14.5q-19 0-40-12l-449-236-449 236q-22 12-40 12-21 0-31.5-14.5t-10.5-35.5q0-6 2-20l86-500-364-354q-25-27-25-48 0-37 56-46l502-73 225-455q19-41 49-41t49 41l225 455 502 73q56 9 56 46z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/steam-square.svg b/img/icons/font-awesome/steam-square.svg
new file mode 100644
index 00000000..7cfd45e5
--- /dev/null
+++ b/img/icons/font-awesome/steam-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1370 647q0-80-57-136.5t-137-56.5-136.5 57-56.5 136q0 80 56.5 136.5t136.5 56.5 137-56.5 57-136.5zm-610 588q0 83-58 140.5t-140 57.5q-56 0-103-29t-72-77q52 20 98 40 60 24 120-1.5t85-86.5q24-60-1.5-120t-86.5-84l-82-33q22-5 42-5 82 0 140 57.5t58 140.5zm904-819v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-153l172 69q20 92 93.5 152t168.5 60q104 0 181-70t87-173l345-252q150 0 255.5-105.5t105.5-254.5q0-150-105.5-255.5t-255.5-105.5q-148 0-253 104.5t-107 252.5l-225 322q-9-1-28-1-75 0-137 37l-297-119v-468q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5zm-247 233q0 100-71 170.5t-171 70.5-170.5-70.5-70.5-170.5 70.5-171 170.5-71q101 0 171.5 70.5t70.5 171.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/steam.svg b/img/icons/font-awesome/steam.svg
new file mode 100644
index 00000000..018def60
--- /dev/null
+++ b/img/icons/font-awesome/steam.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1582 582q0 101-71.5 172.5t-172.5 71.5-172.5-71.5-71.5-172.5 71.5-172.5 172.5-71.5 172.5 71.5 71.5 172.5zm-770 742q0-104-73-177t-177-73q-27 0-54 6l104 42q77 31 109.5 106.5t1.5 151.5q-31 77-107 109t-152 1q-21-8-62-24.5t-61-24.5q32 60 91 96.5t130 36.5q104 0 177-73t73-177zm830-741q0-126-89.5-215.5t-215.5-89.5q-127 0-216.5 89.5t-89.5 215.5q0 127 89.5 216t216.5 89q126 0 215.5-89t89.5-216zm150 0q0 189-133.5 322t-321.5 133l-437 319q-12 129-109 218t-229 89q-121 0-214-76t-118-192l-230-92v-429l389 157q79-48 173-48 13 0 35 2l284-407q2-187 135.5-319t320.5-132q188 0 321.5 133.5t133.5 321.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/step-backward.svg b/img/icons/font-awesome/step-backward.svg
new file mode 100644
index 00000000..d38038e3
--- /dev/null
+++ b/img/icons/font-awesome/step-backward.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1363 141q19-19 32-13t13 32v1472q0 26-13 32t-32-13l-710-710q-9-9-13-19v678q0 26-19 45t-45 19h-128q-26 0-45-19t-19-45v-1408q0-26 19-45t45-19h128q26 0 45 19t19 45v678q4-10 13-19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/step-forward.svg b/img/icons/font-awesome/step-forward.svg
new file mode 100644
index 00000000..67d8731f
--- /dev/null
+++ b/img/icons/font-awesome/step-forward.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M429 1651q-19 19-32 13t-13-32v-1472q0-26 13-32t32 13l710 710q9 9 13 19v-678q0-26 19-45t45-19h128q26 0 45 19t19 45v1408q0 26-19 45t-45 19h-128q-26 0-45-19t-19-45v-678q-4 10-13 19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/stethoscope.svg b/img/icons/font-awesome/stethoscope.svg
new file mode 100644
index 00000000..596901bd
--- /dev/null
+++ b/img/icons/font-awesome/stethoscope.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1472 704q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm128 0q0 62-35.5 111t-92.5 70v395q0 159-131.5 271.5t-316.5 112.5-316.5-112.5-131.5-271.5v-132q-164-20-274-128t-110-252v-512q0-26 19-45t45-19q6 0 16 2 17-30 47-48t65-18q53 0 90.5 37.5t37.5 90.5-37.5 90.5-90.5 37.5q-33 0-64-18v402q0 106 94 181t226 75 226-75 94-181v-402q-31 18-64 18-53 0-90.5-37.5t-37.5-90.5 37.5-90.5 90.5-37.5q35 0 65 18t47 48q10-2 16-2 26 0 45 19t19 45v512q0 144-110 252t-274 128v132q0 106 94 181t226 75 226-75 94-181v-395q-57-21-92.5-70t-35.5-111q0-80 56-136t136-56 136 56 56 136z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sticky-note-o.svg b/img/icons/font-awesome/sticky-note-o.svg
new file mode 100644
index 00000000..bed223d6
--- /dev/null
+++ b/img/icons/font-awesome/sticky-note-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1528 1280h-248v248q29-10 41-22l185-185q12-12 22-41zm-280-128h288v-896h-1280v1280h896v-288q0-40 28-68t68-28zm416-928v1024q0 40-20 88t-48 76l-184 184q-28 28-76 48t-88 20h-1024q-40 0-68-28t-28-68v-1344q0-40 28-68t68-28h1344q40 0 68 28t28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sticky-note.svg b/img/icons/font-awesome/sticky-note.svg
new file mode 100644
index 00000000..86682c13
--- /dev/null
+++ b/img/icons/font-awesome/sticky-note.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 1248v416h-928q-40 0-68-28t-28-68v-1344q0-40 28-68t68-28h1344q40 0 68 28t28 68v928h-416q-40 0-68 28t-28 68zm128 32h381q-15 82-65 132l-184 184q-50 50-132 65v-381z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/stop-circle-o.svg b/img/icons/font-awesome/stop-circle-o.svg
new file mode 100644
index 00000000..1e9571de
--- /dev/null
+++ b/img/icons/font-awesome/stop-circle-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 128q209 0 385.5 103t279.5 279.5 103 385.5-103 385.5-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103zm0 1312q148 0 273-73t198-198 73-273-73-273-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73zm-288-224q-14 0-23-9t-9-23v-576q0-14 9-23t23-9h576q14 0 23 9t9 23v576q0 14-9 23t-23 9h-576z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/stop-circle.svg b/img/icons/font-awesome/stop-circle.svg
new file mode 100644
index 00000000..c3816d29
--- /dev/null
+++ b/img/icons/font-awesome/stop-circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1216 1184v-576q0-14-9-23t-23-9h-576q-14 0-23 9t-9 23v576q0 14 9 23t23 9h576q14 0 23-9t9-23zm448-288q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/stop.svg b/img/icons/font-awesome/stop.svg
new file mode 100644
index 00000000..59ac0d3c
--- /dev/null
+++ b/img/icons/font-awesome/stop.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 192v1408q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-1408q0-26 19-45t45-19h1408q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/street-view.svg b/img/icons/font-awesome/street-view.svg
new file mode 100644
index 00000000..12e68a05
--- /dev/null
+++ b/img/icons/font-awesome/street-view.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1536 1536q0 63-61.5 113.5t-164 81-225 46-253.5 15.5-253.5-15.5-225-46-164-81-61.5-113.5q0-49 33-88.5t91-66.5 118-44.5 131-29.5q26-5 48 10.5t26 41.5q5 26-10.5 48t-41.5 26q-58 10-106 23.5t-76.5 25.5-48.5 23.5-27.5 19.5-8.5 12q3 11 27 26.5t73 33 114 32.5 160.5 25 201.5 10 201.5-10 160.5-25 114-33 73-33.5 27-27.5q-1-4-8.5-11t-27.5-19-48.5-23.5-76.5-25-106-23.5q-26-4-41.5-26t-10.5-48q4-26 26-41.5t48-10.5q71 12 131 29.5t118 44.5 91 66.5 33 88.5zm-384-896v384q0 26-19 45t-45 19h-64v384q0 26-19 45t-45 19h-256q-26 0-45-19t-19-45v-384h-64q-26 0-45-19t-19-45v-384q0-53 37.5-90.5t90.5-37.5h384q53 0 90.5 37.5t37.5 90.5zm-96-384q0 93-65.5 158.5t-158.5 65.5-158.5-65.5-65.5-158.5 65.5-158.5 158.5-65.5 158.5 65.5 65.5 158.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/strikethrough.svg b/img/icons/font-awesome/strikethrough.svg
new file mode 100644
index 00000000..1e847754
--- /dev/null
+++ b/img/icons/font-awesome/strikethrough.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1760 896q14 0 23 9t9 23v64q0 14-9 23t-23 9h-1728q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h1728zm-1277-64q-28-35-51-80-48-98-48-188 0-181 134-309 133-127 393-127 50 0 167 19 66 12 177 48 10 38 21 118 14 123 14 183 0 18-5 45l-12 3-84-6-14-2q-50-149-103-205-88-91-210-91-114 0-182 59-67 58-67 146 0 73 66 140t279 129q69 20 173 66 58 28 95 52h-743zm507 256h411q7 39 7 92 0 111-41 212-23 56-71 104-37 35-109 81-80 48-153 66-80 21-203 21-114 0-195-23l-140-40q-57-16-72-28-8-8-8-22v-13q0-108-2-156-1-30 0-68l2-37v-44l102-2q15 34 30 71t22.5 56 12.5 27q35 57 80 94 43 36 105 57 59 22 132 22 64 0 139-27 77-26 122-86 47-61 47-129 0-84-81-157-34-29-137-71z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/stumbleupon-circle.svg b/img/icons/font-awesome/stumbleupon-circle.svg
new file mode 100644
index 00000000..9fd31df0
--- /dev/null
+++ b/img/icons/font-awesome/stumbleupon-circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M994 839l90-27v-62q0-79-58-135t-138-56-138 55.5-58 134.5v283q0 20-14 33.5t-33 13.5-32.5-13.5-13.5-33.5v-120h-151v122q0 82 57.5 139t139.5 57q81 0 138.5-56.5t57.5-136.5v-280q0-19 13.5-33t33.5-14q19 0 32.5 14t13.5 33v54zm333 195v-122h-150v126q0 20-13.5 33.5t-33.5 13.5q-19 0-32.5-14t-13.5-33v-123l-90 26-60-28v123q0 80 58 137t139 57 138.5-57 57.5-139zm337-138q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/stumbleupon.svg b/img/icons/font-awesome/stumbleupon.svg
new file mode 100644
index 00000000..41792165
--- /dev/null
+++ b/img/icons/font-awesome/stumbleupon.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1126 712v-118q0-42-30-72t-72-30-72 30-30 72v612q0 175-126 299t-303 124q-178 0-303.5-125.5t-125.5-303.5v-266h328v262q0 43 30 72.5t72 29.5 72-29.5 30-72.5v-620q0-171 126.5-292t301.5-121q176 0 302 122t126 294v136l-195 58zm530 222h328v266q0 178-125.5 303.5t-303.5 125.5q-177 0-303-124.5t-126-300.5v-268l131 61 195-58v270q0 42 30 71.5t72 29.5 72-29.5 30-71.5v-275z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/subscript.svg b/img/icons/font-awesome/subscript.svg
new file mode 100644
index 00000000..908380fa
--- /dev/null
+++ b/img/icons/font-awesome/subscript.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1025 1369v167h-248l-159-252-24-42q-8-9-11-21h-3q-1 3-2.5 6.5t-3.5 8-3 6.5q-10 20-25 44l-155 250h-258v-167h128l197-291-185-272h-137v-168h276l139 228q2 4 23 42 8 9 11 21h3q3-9 11-21l25-42 140-228h257v168h-125l-184 267 204 296h109zm639 217v206h-514l-4-27q-3-45-3-46 0-64 26-117t65-86.5 84-65 84-54.5 65-54 26-64q0-38-29.5-62.5t-70.5-24.5q-51 0-97 39-14 11-36 38l-105-92q26-37 63-66 80-65 188-65 110 0 178 59.5t68 158.5q0 66-34.5 118.5t-84 86-99.5 62.5-87 63-41 73h232v-80h126z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/subway.svg b/img/icons/font-awesome/subway.svg
new file mode 100644
index 00000000..0cce8080
--- /dev/null
+++ b/img/icons/font-awesome/subway.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1216 0q185 0 316.5 93.5t131.5 226.5v896q0 130-125.5 222t-305.5 97l213 202q16 15 8 35t-30 20h-1056q-22 0-30-20t8-35l213-202q-180-5-305.5-97t-125.5-222v-896q0-133 131.5-226.5t316.5-93.5h640zm-800 1312q66 0 113-47t47-113-47-113-113-47-113 47-47 113 47 113 113 47zm416-544v-512h-544v512h544zm544 544q66 0 113-47t47-113-47-113-113-47-113 47-47 113 47 113 113 47zm160-544v-512h-576v512h576z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/suitcase.svg b/img/icons/font-awesome/suitcase.svg
new file mode 100644
index 00000000..d142c3c0
--- /dev/null
+++ b/img/icons/font-awesome/suitcase.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M640 384h512v-128h-512v128zm-352 0v1280h-64q-92 0-158-66t-66-158v-832q0-92 66-158t158-66h64zm1120 0v1280h-1024v-1280h128v-160q0-40 28-68t68-28h576q40 0 68 28t28 68v160h128zm384 224v832q0 92-66 158t-158 66h-64v-1280h64q92 0 158 66t66 158z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/sun-o.svg b/img/icons/font-awesome/sun-o.svg
new file mode 100644
index 00000000..5d4a2096
--- /dev/null
+++ b/img/icons/font-awesome/sun-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1472 896q0-117-45.5-223.5t-123-184-184-123-223.5-45.5-223.5 45.5-184 123-123 184-45.5 223.5 45.5 223.5 123 184 184 123 223.5 45.5 223.5-45.5 184-123 123-184 45.5-223.5zm276 277q-4 15-20 20l-292 96v306q0 16-13 26-15 10-29 4l-292-94-180 248q-10 13-26 13t-26-13l-180-248-292 94q-14 6-29-4-13-10-13-26v-306l-292-96q-16-5-20-20-5-17 4-29l180-248-180-248q-9-13-4-29 4-15 20-20l292-96v-306q0-16 13-26 15-10 29-4l292 94 180-248q9-12 26-12t26 12l180 248 292-94q14-6 29 4 13 10 13 26v306l292 96q16 5 20 20 5 16-4 29l-180 248 180 248q9 12 4 29z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/superpowers.svg b/img/icons/font-awesome/superpowers.svg
new file mode 100644
index 00000000..caf99b88
--- /dev/null
+++ b/img/icons/font-awesome/superpowers.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1473 929q7-118-33-226.5t-113-189-177-131-221-57.5q-116-7-225.5 32t-192 110.5-135 175-59.5 220.5q-7 118 33 226.5t113 189 177.5 131 221.5 57.5q155 9 293-59t224-195.5 94-283.5zm319-929l-349 348q120 117 180.5 272t50.5 321q-11 183-102 339t-241 255.5-332 124.5l-999 132 347-347q-120-116-180.5-271.5t-50.5-321.5q11-184 102-340t241.5-255.5 332.5-124.5q167-22 500-66t500-66z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/superscript.svg b/img/icons/font-awesome/superscript.svg
new file mode 100644
index 00000000..2d4188c5
--- /dev/null
+++ b/img/icons/font-awesome/superscript.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1025 1369v167h-248l-159-252-24-42q-8-9-11-21h-3q-1 3-2.5 6.5t-3.5 8-3 6.5q-10 20-25 44l-155 250h-258v-167h128l197-291-185-272h-137v-168h276l139 228q2 4 23 42 8 9 11 21h3q3-9 11-21l25-42 140-228h257v168h-125l-184 267 204 296h109zm637-679v206h-514l-3-27q-4-28-4-46 0-64 26-117t65-86.5 84-65 84-54.5 65-54 26-64q0-38-29.5-62.5t-70.5-24.5q-51 0-97 39-14 11-36 38l-105-92q26-37 63-66 83-65 188-65 110 0 178 59.5t68 158.5q0 56-24.5 103t-62 76.5-81.5 58.5-82 50.5-65.5 51.5-30.5 63h232v-80h126z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/support.svg b/img/icons/font-awesome/support.svg
new file mode 100644
index 00000000..a1539f54
--- /dev/null
+++ b/img/icons/font-awesome/support.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 0q182 0 348 71t286 191 191 286 71 348-71 348-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71zm0 128q-190 0-361 90l194 194q82-28 167-28t167 28l194-194q-171-90-361-90zm-678 1129l194-194q-28-82-28-167t28-167l-194-194q-90 171-90 361t90 361zm678 407q190 0 361-90l-194-194q-82 28-167 28t-167-28l-194 194q171 90 361 90zm0-384q159 0 271.5-112.5t112.5-271.5-112.5-271.5-271.5-112.5-271.5 112.5-112.5 271.5 112.5 271.5 271.5 112.5zm484-217l194 194q90-171 90-361t-90-361l-194 194q28 82 28 167t-28 167z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/table.svg b/img/icons/font-awesome/table.svg
new file mode 100644
index 00000000..a48b7003
--- /dev/null
+++ b/img/icons/font-awesome/table.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M576 1376v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47h-1344q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1344q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/tablet.svg b/img/icons/font-awesome/tablet.svg
new file mode 100644
index 00000000..531a8e94
--- /dev/null
+++ b/img/icons/font-awesome/tablet.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M960 1408q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm384-160v-960q0-13-9.5-22.5t-22.5-9.5h-832q-13 0-22.5 9.5t-9.5 22.5v960q0 13 9.5 22.5t22.5 9.5h832q13 0 22.5-9.5t9.5-22.5zm128-960v1088q0 66-47 113t-113 47h-832q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h832q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/tachometer.svg b/img/icons/font-awesome/tachometer.svg
new file mode 100644
index 00000000..6c31d48c
--- /dev/null
+++ b/img/icons/font-awesome/tachometer.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M384 1152q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm192-448q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm428 481l101-382q6-26-7.5-48.5t-38.5-29.5-48 6.5-30 39.5l-101 382q-60 5-107 43.5t-63 98.5q-20 77 20 146t117 89 146-20 89-117q16-60-6-117t-72-91zm660-33q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm-640-640q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm448 192q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm320 448q0 261-141 483-19 29-54 29h-1402q-35 0-54-29-141-221-141-483 0-182 71-348t191-286 286-191 348-71 348 71 286 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/tag.svg b/img/icons/font-awesome/tag.svg
new file mode 100644
index 00000000..d18e3122
--- /dev/null
+++ b/img/icons/font-awesome/tag.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M576 448q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm1067 576q0 53-37 90l-491 492q-39 37-91 37-53 0-90-37l-715-716q-38-37-64.5-101t-26.5-117v-416q0-52 38-90t90-38h416q53 0 117 26.5t102 64.5l715 714q37 39 37 91z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/tags.svg b/img/icons/font-awesome/tags.svg
new file mode 100644
index 00000000..47336956
--- /dev/null
+++ b/img/icons/font-awesome/tags.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M512 448q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm1067 576q0 53-37 90l-491 492q-39 37-91 37-53 0-90-37l-715-716q-38-37-64.5-101t-26.5-117v-416q0-52 38-90t90-38h416q53 0 117 26.5t102 64.5l715 714q37 39 37 91zm384 0q0 53-37 90l-491 492q-39 37-91 37-36 0-59-14t-53-45l470-470q37-37 37-90 0-52-37-91l-715-714q-38-38-102-64.5t-117-26.5h224q53 0 117 26.5t102 64.5l715 714q37 39 37 91z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/tasks.svg b/img/icons/font-awesome/tasks.svg
new file mode 100644
index 00000000..ba3b0444
--- /dev/null
+++ b/img/icons/font-awesome/tasks.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1408h640v-128h-640v128zm-384-512h1024v-128h-1024v128zm640-512h384v-128h-384v128zm512 832v256q0 26-19 45t-45 19h-1664q-26 0-45-19t-19-45v-256q0-26 19-45t45-19h1664q26 0 45 19t19 45zm0-512v256q0 26-19 45t-45 19h-1664q-26 0-45-19t-19-45v-256q0-26 19-45t45-19h1664q26 0 45 19t19 45zm0-512v256q0 26-19 45t-45 19h-1664q-26 0-45-19t-19-45v-256q0-26 19-45t45-19h1664q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/taxi.svg b/img/icons/font-awesome/taxi.svg
new file mode 100644
index 00000000..b610f52b
--- /dev/null
+++ b/img/icons/font-awesome/taxi.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1824 896q93 0 158.5 65.5t65.5 158.5v384q0 14-9 23t-23 9h-96v64q0 80-56 136t-136 56-136-56-56-136v-64h-1024v64q0 80-56 136t-136 56-136-56-56-136v-64h-96q-14 0-23-9t-9-23v-384q0-93 65.5-158.5t158.5-65.5h28l105-419q23-94 104-157.5t179-63.5h128v-224q0-14 9-23t23-9h448q14 0 23 9t9 23v224h128q98 0 179 63.5t104 157.5l105 419h28zm-1504 480q66 0 113-47t47-113-47-113-113-47-113 47-47 113 47 113 113 47zm196-480h1016l-89-357q-2-8-14-17.5t-21-9.5h-768q-9 0-21 9.5t-14 17.5zm1212 480q66 0 113-47t47-113-47-113-113-47-113 47-47 113 47 113 113 47z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/telegram.svg b/img/icons/font-awesome/telegram.svg
new file mode 100644
index 00000000..47e56fbb
--- /dev/null
+++ b/img/icons/font-awesome/telegram.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1189 1307l147-693q9-44-10.5-63t-51.5-7l-864 333q-29 11-39.5 25t-2.5 26.5 32 19.5l221 69 513-323q21-14 32-6 7 5-4 15l-415 375-16 228q23 0 45-22l108-104 224 165q64 36 81-38zm603-411q0 182-71 348t-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71 348 71 286 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/television.svg b/img/icons/font-awesome/television.svg
new file mode 100644
index 00000000..fdebe084
--- /dev/null
+++ b/img/icons/font-awesome/television.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 1248v-960q0-13-9.5-22.5t-22.5-9.5h-1600q-13 0-22.5 9.5t-9.5 22.5v960q0 13 9.5 22.5t22.5 9.5h1600q13 0 22.5-9.5t9.5-22.5zm128-960v960q0 66-47 113t-113 47h-736v128h352q14 0 23 9t9 23v64q0 14-9 23t-23 9h-832q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h352v-128h-736q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h1600q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/tencent-weibo.svg b/img/icons/font-awesome/tencent-weibo.svg
new file mode 100644
index 00000000..5c66e635
--- /dev/null
+++ b/img/icons/font-awesome/tencent-weibo.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1098 572q0 80-57 136.5t-136 56.5q-60 0-111-35-62 67-115 146-247 371-202 859 1 22-12.5 38.5t-34.5 18.5h-5q-20 0-35-13.5t-17-33.5q-14-126-3.5-247.5t29.5-217 54-186 69-155.5 74-125q61-90 132-165-16-35-16-77 0-80 56.5-136.5t136.5-56.5 136.5 56.5 56.5 136.5zm381 11q0 158-78 292t-212.5 212-292.5 78q-64 0-131-14-21-5-32.5-23.5t-6.5-39.5q5-20 23-31.5t39-7.5q51 13 108 13 97 0 186-38t153-102 102-153 38-186-38-186-102-153-153-102-186-38-186 38-153 102-102 153-38 186q0 114 52 218 10 20 3.5 40t-25.5 30-39.5 3-30.5-26q-64-123-64-265 0-119 46.5-227t124.5-186 186-124 226-46q158 0 292.5 78t212.5 212.5 78 292.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/terminal.svg b/img/icons/font-awesome/terminal.svg
new file mode 100644
index 00000000..d90fed5e
--- /dev/null
+++ b/img/icons/font-awesome/terminal.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M649 983l-466 466q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l393-393-393-393q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l466 466q10 10 10 23t-10 23zm1079 457v64q0 14-9 23t-23 9h-960q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h960q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/text-height.svg b/img/icons/font-awesome/text-height.svg
new file mode 100644
index 00000000..7356c60a
--- /dev/null
+++ b/img/icons/font-awesome/text-height.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1744 1408q33 0 42 18.5t-11 44.5l-126 162q-20 26-49 26t-49-26l-126-162q-20-26-11-44.5t42-18.5h80v-1024h-80q-33 0-42-18.5t11-44.5l126-162q20-26 49-26t49 26l126 162q20 26 11 44.5t-42 18.5h-80v1024h80zm-1663-1279l54 27q12 5 211 5 44 0 132-2t132-2q36 0 107.5.5t107.5.5h293q6 0 21 .5t20.5 0 16-3 17.5-9 15-17.5l42-1q4 0 14 .5t14 .5q2 112 2 336 0 80-5 109-39 14-68 18-25-44-54-128-3-9-11-48t-14.5-73.5-7.5-35.5q-6-8-12-12.5t-15.5-6-13-2.5-18-.5-16.5.5q-17 0-66.5-.5t-74.5-.5-64 2-71 6q-9 81-8 136 0 94 2 388t2 455q0 16-2.5 71.5t0 91.5 12.5 69q40 21 124 42.5t120 37.5q5 40 5 50 0 14-3 29l-34 1q-76 2-218-8t-207-10q-50 0-151 9t-152 9q-3-51-3-52v-9q17-27 61.5-43t98.5-29 78-27q19-42 19-383 0-101-3-303t-3-303v-117q0-2 .5-15.5t.5-25-1-25.5-3-24-5-14q-11-12-162-12-33 0-93 12t-80 26q-19 13-34 72.5t-31.5 111-42.5 53.5q-42-26-56-44v-383z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/text-width.svg b/img/icons/font-awesome/text-width.svg
new file mode 100644
index 00000000..2ae5c0ee
--- /dev/null
+++ b/img/icons/font-awesome/text-width.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M209 129l54 27q12 5 211 5 44 0 132-2t132-2q70 0 246.5-1t304.5-.5 247 4.5q33 1 56-31l42-1q4 0 14 .5t14 .5q2 112 2 336 0 80-5 109-39 14-68 18-25-44-54-128-3-9-11-47.5t-15-73.5-7-36q-10-13-27-19-5-2-66-2-30 0-93-1t-103-1-94 2-96 7q-9 81-8 136l1 152v-52q0 55 1 154t1.5 180 .5 153q0 16-2.5 71.5t0 91.5 12.5 69q40 21 124 42.5t120 37.5q5 40 5 50 0 14-3 29l-34 1q-76 2-218-8t-207-10q-50 0-151 9t-152 9q-3-51-3-52v-9q17-27 61.5-43t98.5-29 78-27q7-16 11.5-74t6-145.5 1.5-155-.5-153.5-.5-89q0-7-2.5-21.5t-2.5-22.5q0-7 .5-44t1-73 0-76.5-3-67.5-6.5-32q-11-12-162-12-41 0-163 13.5t-138 24.5q-19 12-34 71.5t-31.5 111.5-42.5 54q-42-26-56-44v-383zm1229 1282q12 0 42 19.5t57.5 41.5 59.5 49 36 30q26 21 26 49t-26 49q-4 3-36 30t-59.5 49-57.5 41.5-42 19.5q-13 0-20.5-10.5t-10-28.5-2.5-33.5 1.5-33 1.5-19.5h-1024q0 2 1.5 19.5t1.5 33-2.5 33.5-10 28.5-20.5 10.5q-12 0-42-19.5t-57.5-41.5-59.5-49-36-30q-26-21-26-49t26-49q4-3 36-30t59.5-49 57.5-41.5 42-19.5q13 0 20.5 10.5t10 28.5 2.5 33.5-1.5 33-1.5 19.5h1024q0-2-1.5-19.5t-1.5-33 2.5-33.5 10-28.5 20.5-10.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/th-large.svg b/img/icons/font-awesome/th-large.svg
new file mode 100644
index 00000000..956dc477
--- /dev/null
+++ b/img/icons/font-awesome/th-large.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M832 1024v384q0 52-38 90t-90 38h-512q-52 0-90-38t-38-90v-384q0-52 38-90t90-38h512q52 0 90 38t38 90zm0-768v384q0 52-38 90t-90 38h-512q-52 0-90-38t-38-90v-384q0-52 38-90t90-38h512q52 0 90 38t38 90zm896 768v384q0 52-38 90t-90 38h-512q-52 0-90-38t-38-90v-384q0-52 38-90t90-38h512q52 0 90 38t38 90zm0-768v384q0 52-38 90t-90 38h-512q-52 0-90-38t-38-90v-384q0-52 38-90t90-38h512q52 0 90 38t38 90z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/th-list.svg b/img/icons/font-awesome/th-list.svg
new file mode 100644
index 00000000..6d4d1b8a
--- /dev/null
+++ b/img/icons/font-awesome/th-list.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M512 1248v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm1280 512v192q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h960q40 0 68 28t28 68zm-1280-1024v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm1280 512v192q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h960q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h960q40 0 68 28t28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/th.svg b/img/icons/font-awesome/th.svg
new file mode 100644
index 00000000..9a336919
--- /dev/null
+++ b/img/icons/font-awesome/th.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M512 1248v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm640 512v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm-640-1024v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm640 512v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm640 512v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm-640-1024v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm640 512v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/themeisle.svg b/img/icons/font-awesome/themeisle.svg
new file mode 100644
index 00000000..7a11268f
--- /dev/null
+++ b/img/icons/font-awesome/themeisle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M852 309q0 29-17 52.5t-45 23.5-45-23.5-17-52.5 17-52.5 45-23.5 45 23.5 17 52.5zm-164 1376v-114q0-30-20.5-51.5t-50.5-21.5-50 21.5-20 51.5v114q0 30 20.5 52t49.5 22q30 0 50.5-22t20.5-52zm172 0v-114q0-30-20-51.5t-50-21.5-50.5 21.5-20.5 51.5v114q0 30 20.5 52t50.5 22q29 0 49.5-22t20.5-52zm174 0v-114q0-30-20.5-51.5t-50.5-21.5-50.5 21.5-20.5 51.5v114q0 30 20.5 52t50.5 22 50.5-22 20.5-52zm174 0v-114q0-30-20.5-51.5t-50.5-21.5-50.5 21.5-20.5 51.5v114q0 30 20.5 52t50.5 22 50.5-22 20.5-52zm268-684q-84 160-232 259.5t-323 99.5q-123 0-229.5-51.5t-178.5-137-113-197.5-41-232q0-88 21-174-104 175-104 390 0 162 65 312t185 251q30-57 91-57 56 0 86 50 32-50 87-50 56 0 86 50 32-50 87-50t87 50q30-50 86-50 28 0 52.5 15.5t37.5 40.5q112-94 177-231.5t73-287.5zm-150-29q0-75-72-75-17 0-47 6-95 19-149 19-226 0-226-243 0-86 30-204-83 127-83 275 0 150 89 260.5t235 110.5q111 0 210-70 13-48 13-79zm-442-659q0-50-32-89.5t-81-39.5-81 39.5-32 89.5q0 51 31.5 90.5t81.5 39.5 81.5-39.5 31.5-90.5zm629 339q0-96-37.5-179t-113-137-173.5-54q-77 0-149 35t-127 94q-48 159-48 268 0 104 45.5 157t147.5 53q53 0 142-19 36-6 53-6 51 0 77.5 28t26.5 80q0 26-4 46 75-68 117.5-165.5t42.5-200.5zm279 217q0 111-33.5 249.5t-93.5 204.5q-58 64-195 142.5t-228 104.5l-4 1v114q0 43-29.5 75t-72.5 32q-56 0-86-50-32 50-87 50t-87-50q-30 50-86 50-55 0-87-50-30 50-86 50-47 0-75-33.5t-28-81.5q-90 68-198 68-118 0-211-80 54-1 106-20-113-31-182-127 32 7 71 7 89 0 164-46-192-192-240-306-24-56-24-160 0-57 9-125.5t31.5-146.5 55-141 86.5-105 120-42q59 0 81 52 19-29 42-54 2-3 12-13t13-16q10-15 23-38t25-42 28-39q87-111 211.5-177t260.5-66q35 0 62 4 59-64 146-64 83 0 140 57 5 5 5 12 0 5-6 13.5t-12.5 16-16 17l-10.5 10.5q17 6 36 18t19 24q0 6-16 25 157 138 197 378 25-30 60-30 45 0 100 49 90 80 90 279z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thermometer-0.svg b/img/icons/font-awesome/thermometer-0.svg
new file mode 100644
index 00000000..5dc8e16c
--- /dev/null
+++ b/img/icons/font-awesome/thermometer-0.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1344q0 80-56 136t-136 56-136-56-56-136q0-79 56-135.5t136-56.5 136 56.5 56 135.5zm128 0q0-77-34-144t-94-112v-768q0-80-56-136t-136-56-136 56-56 136v768q-60 45-94 112t-34 144q0 133 93.5 226.5t226.5 93.5 226.5-93.5 93.5-226.5zm128 0q0 185-131.5 316.5t-316.5 131.5-316.5-131.5-131.5-316.5q0-182 128-313v-711q0-133 93.5-226.5t226.5-93.5 226.5 93.5 93.5 226.5v711q128 131 128 313zm128-576v128h-192v-128h192zm0-256v128h-192v-128h192zm0-256v128h-192v-128h192z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thermometer-1.svg b/img/icons/font-awesome/thermometer-1.svg
new file mode 100644
index 00000000..dbd8881a
--- /dev/null
+++ b/img/icons/font-awesome/thermometer-1.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1344q0 80-56 136t-136 56-136-56-56-136q0-60 35-110t93-71v-139h128v139q58 21 93 71t35 110zm128 0q0-77-34-144t-94-112v-768q0-80-56-136t-136-56-136 56-56 136v768q-60 45-94 112t-34 144q0 133 93.5 226.5t226.5 93.5 226.5-93.5 93.5-226.5zm128 0q0 185-131.5 316.5t-316.5 131.5-316.5-131.5-131.5-316.5q0-182 128-313v-711q0-133 93.5-226.5t226.5-93.5 226.5 93.5 93.5 226.5v711q128 131 128 313zm128-576v128h-192v-128h192zm0-256v128h-192v-128h192zm0-256v128h-192v-128h192z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thermometer-2.svg b/img/icons/font-awesome/thermometer-2.svg
new file mode 100644
index 00000000..8f9f8436
--- /dev/null
+++ b/img/icons/font-awesome/thermometer-2.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1344q0 80-56 136t-136 56-136-56-56-136q0-60 35-110t93-71v-395h128v395q58 21 93 71t35 110zm128 0q0-77-34-144t-94-112v-768q0-80-56-136t-136-56-136 56-56 136v768q-60 45-94 112t-34 144q0 133 93.5 226.5t226.5 93.5 226.5-93.5 93.5-226.5zm128 0q0 185-131.5 316.5t-316.5 131.5-316.5-131.5-131.5-316.5q0-182 128-313v-711q0-133 93.5-226.5t226.5-93.5 226.5 93.5 93.5 226.5v711q128 131 128 313zm128-576v128h-192v-128h192zm0-256v128h-192v-128h192zm0-256v128h-192v-128h192z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thermometer-3.svg b/img/icons/font-awesome/thermometer-3.svg
new file mode 100644
index 00000000..7ed49a8a
--- /dev/null
+++ b/img/icons/font-awesome/thermometer-3.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1344q0 80-56 136t-136 56-136-56-56-136q0-60 35-110t93-71v-651h128v651q58 21 93 71t35 110zm128 0q0-77-34-144t-94-112v-768q0-80-56-136t-136-56-136 56-56 136v768q-60 45-94 112t-34 144q0 133 93.5 226.5t226.5 93.5 226.5-93.5 93.5-226.5zm128 0q0 185-131.5 316.5t-316.5 131.5-316.5-131.5-131.5-316.5q0-182 128-313v-711q0-133 93.5-226.5t226.5-93.5 226.5 93.5 93.5 226.5v711q128 131 128 313zm128-576v128h-192v-128h192zm0-256v128h-192v-128h192zm0-256v128h-192v-128h192z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thermometer-4.svg b/img/icons/font-awesome/thermometer-4.svg
new file mode 100644
index 00000000..714e5498
--- /dev/null
+++ b/img/icons/font-awesome/thermometer-4.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1344q0 80-56 136t-136 56-136-56-56-136q0-60 35-110t93-71v-907h128v907q58 21 93 71t35 110zm128 0q0-77-34-144t-94-112v-768q0-80-56-136t-136-56-136 56-56 136v768q-60 45-94 112t-34 144q0 133 93.5 226.5t226.5 93.5 226.5-93.5 93.5-226.5zm128 0q0 185-131.5 316.5t-316.5 131.5-316.5-131.5-131.5-316.5q0-182 128-313v-711q0-133 93.5-226.5t226.5-93.5 226.5 93.5 93.5 226.5v711q128 131 128 313zm128-576v128h-192v-128h192zm0-256v128h-192v-128h192zm0-256v128h-192v-128h192z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thermometer-empty.svg b/img/icons/font-awesome/thermometer-empty.svg
new file mode 100644
index 00000000..5dc8e16c
--- /dev/null
+++ b/img/icons/font-awesome/thermometer-empty.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1344q0 80-56 136t-136 56-136-56-56-136q0-79 56-135.5t136-56.5 136 56.5 56 135.5zm128 0q0-77-34-144t-94-112v-768q0-80-56-136t-136-56-136 56-56 136v768q-60 45-94 112t-34 144q0 133 93.5 226.5t226.5 93.5 226.5-93.5 93.5-226.5zm128 0q0 185-131.5 316.5t-316.5 131.5-316.5-131.5-131.5-316.5q0-182 128-313v-711q0-133 93.5-226.5t226.5-93.5 226.5 93.5 93.5 226.5v711q128 131 128 313zm128-576v128h-192v-128h192zm0-256v128h-192v-128h192zm0-256v128h-192v-128h192z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thermometer-full.svg b/img/icons/font-awesome/thermometer-full.svg
new file mode 100644
index 00000000..714e5498
--- /dev/null
+++ b/img/icons/font-awesome/thermometer-full.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1344q0 80-56 136t-136 56-136-56-56-136q0-60 35-110t93-71v-907h128v907q58 21 93 71t35 110zm128 0q0-77-34-144t-94-112v-768q0-80-56-136t-136-56-136 56-56 136v768q-60 45-94 112t-34 144q0 133 93.5 226.5t226.5 93.5 226.5-93.5 93.5-226.5zm128 0q0 185-131.5 316.5t-316.5 131.5-316.5-131.5-131.5-316.5q0-182 128-313v-711q0-133 93.5-226.5t226.5-93.5 226.5 93.5 93.5 226.5v711q128 131 128 313zm128-576v128h-192v-128h192zm0-256v128h-192v-128h192zm0-256v128h-192v-128h192z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thermometer-half.svg b/img/icons/font-awesome/thermometer-half.svg
new file mode 100644
index 00000000..8f9f8436
--- /dev/null
+++ b/img/icons/font-awesome/thermometer-half.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1344q0 80-56 136t-136 56-136-56-56-136q0-60 35-110t93-71v-395h128v395q58 21 93 71t35 110zm128 0q0-77-34-144t-94-112v-768q0-80-56-136t-136-56-136 56-56 136v768q-60 45-94 112t-34 144q0 133 93.5 226.5t226.5 93.5 226.5-93.5 93.5-226.5zm128 0q0 185-131.5 316.5t-316.5 131.5-316.5-131.5-131.5-316.5q0-182 128-313v-711q0-133 93.5-226.5t226.5-93.5 226.5 93.5 93.5 226.5v711q128 131 128 313zm128-576v128h-192v-128h192zm0-256v128h-192v-128h192zm0-256v128h-192v-128h192z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thermometer-quarter.svg b/img/icons/font-awesome/thermometer-quarter.svg
new file mode 100644
index 00000000..dbd8881a
--- /dev/null
+++ b/img/icons/font-awesome/thermometer-quarter.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1344q0 80-56 136t-136 56-136-56-56-136q0-60 35-110t93-71v-139h128v139q58 21 93 71t35 110zm128 0q0-77-34-144t-94-112v-768q0-80-56-136t-136-56-136 56-56 136v768q-60 45-94 112t-34 144q0 133 93.5 226.5t226.5 93.5 226.5-93.5 93.5-226.5zm128 0q0 185-131.5 316.5t-316.5 131.5-316.5-131.5-131.5-316.5q0-182 128-313v-711q0-133 93.5-226.5t226.5-93.5 226.5 93.5 93.5 226.5v711q128 131 128 313zm128-576v128h-192v-128h192zm0-256v128h-192v-128h192zm0-256v128h-192v-128h192z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thermometer-three-quarters.svg b/img/icons/font-awesome/thermometer-three-quarters.svg
new file mode 100644
index 00000000..7ed49a8a
--- /dev/null
+++ b/img/icons/font-awesome/thermometer-three-quarters.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1344q0 80-56 136t-136 56-136-56-56-136q0-60 35-110t93-71v-651h128v651q58 21 93 71t35 110zm128 0q0-77-34-144t-94-112v-768q0-80-56-136t-136-56-136 56-56 136v768q-60 45-94 112t-34 144q0 133 93.5 226.5t226.5 93.5 226.5-93.5 93.5-226.5zm128 0q0 185-131.5 316.5t-316.5 131.5-316.5-131.5-131.5-316.5q0-182 128-313v-711q0-133 93.5-226.5t226.5-93.5 226.5 93.5 93.5 226.5v711q128 131 128 313zm128-576v128h-192v-128h192zm0-256v128h-192v-128h192zm0-256v128h-192v-128h192z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thermometer.svg b/img/icons/font-awesome/thermometer.svg
new file mode 100644
index 00000000..714e5498
--- /dev/null
+++ b/img/icons/font-awesome/thermometer.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1344q0 80-56 136t-136 56-136-56-56-136q0-60 35-110t93-71v-907h128v907q58 21 93 71t35 110zm128 0q0-77-34-144t-94-112v-768q0-80-56-136t-136-56-136 56-56 136v768q-60 45-94 112t-34 144q0 133 93.5 226.5t226.5 93.5 226.5-93.5 93.5-226.5zm128 0q0 185-131.5 316.5t-316.5 131.5-316.5-131.5-131.5-316.5q0-182 128-313v-711q0-133 93.5-226.5t226.5-93.5 226.5 93.5 93.5 226.5v711q128 131 128 313zm128-576v128h-192v-128h192zm0-256v128h-192v-128h192zm0-256v128h-192v-128h192z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thumb-tack.svg b/img/icons/font-awesome/thumb-tack.svg
new file mode 100644
index 00000000..b88742b3
--- /dev/null
+++ b/img/icons/font-awesome/thumb-tack.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M800 864v-448q0-14-9-23t-23-9-23 9-9 23v448q0 14 9 23t23 9 23-9 9-23zm672 352q0 26-19 45t-45 19h-429l-51 483q-2 12-10.5 20.5t-20.5 8.5h-1q-27 0-32-27l-76-485h-404q-26 0-45-19t-19-45q0-123 78.5-221.5t177.5-98.5v-512q-52 0-90-38t-38-90 38-90 90-38h640q52 0 90 38t38 90-38 90-90 38v512q99 0 177.5 98.5t78.5 221.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thumbs-down.svg b/img/icons/font-awesome/thumbs-down.svg
new file mode 100644
index 00000000..49025fff
--- /dev/null
+++ b/img/icons/font-awesome/thumbs-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M320 576q0 26-19 45t-45 19q-27 0-45.5-19t-18.5-45q0-27 18.5-45.5t45.5-18.5q26 0 45 18.5t19 45.5zm160 512v-640q0-26-19-45t-45-19h-288q-26 0-45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45-19t19-45zm1129-149q55 61 55 149-1 78-57.5 135t-134.5 57h-277q4 14 8 24t11 22 10 18q18 37 27 57t19 58.5 10 76.5q0 24-.5 39t-5 45-12 50-24 45-40 40.5-60 26-82.5 10.5q-26 0-45-19-20-20-34-50t-19.5-52-12.5-61q-9-42-13.5-60.5t-17.5-48.5-31-48q-33-33-101-120-49-64-101-121t-76-59q-25-2-43-20.5t-18-43.5v-641q0-26 19-44.5t45-19.5q35-1 158-44 77-26 120.5-39.5t121.5-29 144-15.5h129q133 2 197 78 58 69 49 181 39 37 54 94 17 61 0 117 46 61 43 137 0 32-15 76z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thumbs-o-down.svg b/img/icons/font-awesome/thumbs-o-down.svg
new file mode 100644
index 00000000..281dc073
--- /dev/null
+++ b/img/icons/font-awesome/thumbs-o-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M384 448q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm1152 576q0-35-21.5-81t-53.5-47q15-17 25-47.5t10-55.5q0-69-53-119 18-31 18-69 0-37-17.5-73.5t-47.5-52.5q5-30 5-56 0-85-49-126t-136-41h-128q-131 0-342 73-5 2-29 10.5t-35.5 12.5-35 11.5-38 11-33 6.5-31.5 3h-32v640h32q16 0 35.5 9t40 27 38.5 35.5 40 44 34.5 42.5 31.5 41 23 30q55 68 77 91 41 43 59.5 109.5t30.5 125.5 38 85q96 0 128-47t32-145q0-59-48-160.5t-48-159.5h352q50 0 89-38.5t39-89.5zm128 1q0 103-76 179t-180 76h-176q48 99 48 192 0 118-35 186-35 69-102 101.5t-151 32.5q-51 0-90-37-34-33-54-82t-25.5-90.5-17.5-84.5-31-64q-48-50-107-127-101-131-137-155h-274q-53 0-90.5-37.5t-37.5-90.5v-640q0-53 37.5-90.5t90.5-37.5h288q22 0 138-40 128-44 223-66t200-22h112q140 0 226.5 79t85.5 216v5q60 77 60 178 0 22-3 43 38 67 38 144 0 36-9 69 49 73 49 163z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thumbs-o-up.svg b/img/icons/font-awesome/thumbs-o-up.svg
new file mode 100644
index 00000000..242e9539
--- /dev/null
+++ b/img/icons/font-awesome/thumbs-o-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M384 1344q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm1152-576q0-51-39-89.5t-89-38.5h-352q0-58 48-159.5t48-160.5q0-98-32-145t-128-47q-26 26-38 85t-30.5 125.5-59.5 109.5q-22 23-77 91-4 5-23 30t-31.5 41-34.5 42.5-40 44-38.5 35.5-40 27-35.5 9h-32v640h32q13 0 31.5 3t33 6.5 38 11 35 11.5 35.5 12.5 29 10.5q211 73 342 73h121q192 0 192-167 0-26-5-56 30-16 47.5-52.5t17.5-73.5-18-69q53-50 53-119 0-25-10-55.5t-25-47.5q32-1 53.5-47t21.5-81zm128-1q0 89-49 163 9 33 9 69 0 77-38 144 3 21 3 43 0 101-60 178 1 139-85 219.5t-227 80.5h-129q-96 0-189.5-22.5t-216.5-65.5q-116-40-138-40h-288q-53 0-90.5-37.5t-37.5-90.5v-640q0-53 37.5-90.5t90.5-37.5h274q36-24 137-155 58-75 107-128 24-25 35.5-85.5t30.5-126.5 62-108q39-37 90-37 84 0 151 32.5t102 101.5 35 186q0 93-48 192h176q104 0 180 76t76 179z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/thumbs-up.svg b/img/icons/font-awesome/thumbs-up.svg
new file mode 100644
index 00000000..542ab64a
--- /dev/null
+++ b/img/icons/font-awesome/thumbs-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M320 1344q0-26-19-45t-45-19q-27 0-45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45-18.5t19-45.5zm160-512v640q0 26-19 45t-45 19h-288q-26 0-45-19t-19-45v-640q0-26 19-45t45-19h288q26 0 45 19t19 45zm1184 0q0 86-55 149 15 44 15 76 3 76-43 137 17 56 0 117-15 57-54 94 9 112-49 181-64 76-197 78h-129q-66 0-144-15.5t-121.5-29-120.5-39.5q-123-43-158-44-26-1-45-19.5t-19-44.5v-641q0-25 18-43.5t43-20.5q24-2 76-59t101-121q68-87 101-120 18-18 31-48t17.5-48.5 13.5-60.5q7-39 12.5-61t19.5-52 34-50q19-19 45-19 46 0 82.5 10.5t60 26 40 40.5 24 45 12 50 5 45 .5 39q0 38-9.5 76t-19 60-27.5 56q-3 6-10 18t-11 22-8 24h277q78 0 135 57t57 135z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/ticket.svg b/img/icons/font-awesome/ticket.svg
new file mode 100644
index 00000000..18d91b40
--- /dev/null
+++ b/img/icons/font-awesome/ticket.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 452l316 316-572 572-316-316zm-211 979l618-618q19-19 19-45t-19-45l-362-362q-18-18-45-18t-45 18l-618 618q-19 19-19 45t19 45l362 362q18 18 45 18t45-18zm889-637l-907 908q-37 37-90.5 37t-90.5-37l-126-126q56-56 56-136t-56-136-136-56-136 56l-125-126q-37-37-37-90.5t37-90.5l907-906q37-37 90.5-37t90.5 37l125 125q-56 56-56 136t56 136 136 56 136-56l126 125q37 37 37 90.5t-37 90.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/times-circle-o.svg b/img/icons/font-awesome/times-circle-o.svg
new file mode 100644
index 00000000..016d4efe
--- /dev/null
+++ b/img/icons/font-awesome/times-circle-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1225 1079l-146 146q-10 10-23 10t-23-10l-137-137-137 137q-10 10-23 10t-23-10l-146-146q-10-10-10-23t10-23l137-137-137-137q-10-10-10-23t10-23l146-146q10-10 23-10t23 10l137 137 137-137q10-10 23-10t23 10l146 146q10 10 10 23t-10 23l-137 137 137 137q10 10 10 23t-10 23zm215-183q0-148-73-273t-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273zm224 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/times-circle.svg b/img/icons/font-awesome/times-circle.svg
new file mode 100644
index 00000000..f8f39170
--- /dev/null
+++ b/img/icons/font-awesome/times-circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1277 1122q0-26-19-45l-181-181 181-181q19-19 19-45 0-27-19-46l-90-90q-19-19-46-19-26 0-45 19l-181 181-181-181q-19-19-45-19-27 0-46 19l-90 90q-19 19-19 46 0 26 19 45l181 181-181 181q-19 19-19 45 0 27 19 46l90 90q19 19 46 19 26 0 45-19l181-181 181 181q19 19 45 19 27 0 46-19l90-90q19-19 19-46zm387-226q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/times-rectangle-o.svg b/img/icons/font-awesome/times-rectangle-o.svg
new file mode 100644
index 00000000..374535cb
--- /dev/null
+++ b/img/icons/font-awesome/times-rectangle-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1257 1111l-146 146q-10 10-23 10t-23-10l-169-169-169 169q-10 10-23 10t-23-10l-146-146q-10-10-10-23t10-23l169-169-169-169q-10-10-10-23t10-23l146-146q10-10 23-10t23 10l169 169 169-169q10-10 23-10t23 10l146 146q10 10 10 23t-10 23l-169 169 169 169q10 10 10 23t-10 23zm-1001 297h1280v-1024h-1280v1024zm1536-1120v1216q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1472q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/times-rectangle.svg b/img/icons/font-awesome/times-rectangle.svg
new file mode 100644
index 00000000..83a72532
--- /dev/null
+++ b/img/icons/font-awesome/times-rectangle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1175 1321l146-146q10-10 10-23t-10-23l-233-233 233-233q10-10 10-23t-10-23l-146-146q-10-10-23-10t-23 10l-233 233-233-233q-10-10-23-10t-23 10l-146 146q-10 10-10 23t10 23l233 233-233 233q-10 10-10 23t10 23l146 146q10 10 23 10t23-10l233-233 233 233q10 10 23 10t23-10zm617-1033v1216q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1472q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/times.svg b/img/icons/font-awesome/times.svg
new file mode 100644
index 00000000..3e9c0655
--- /dev/null
+++ b/img/icons/font-awesome/times.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1490 1322q0 40-28 68l-136 136q-28 28-68 28t-68-28l-294-294-294 294q-28 28-68 28t-68-28l-136-136q-28-28-28-68t28-68l294-294-294-294q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 294 294-294q28-28 68-28t68 28l136 136q28 28 28 68t-28 68l-294 294 294 294q28 28 28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/tint.svg b/img/icons/font-awesome/tint.svg
new file mode 100644
index 00000000..8f2c895f
--- /dev/null
+++ b/img/icons/font-awesome/tint.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 1152q0-36-20-69-1-1-15.5-22.5t-25.5-38-25-44-21-50.5q-4-16-21-16t-21 16q-7 23-21 50.5t-25 44-25.5 38-15.5 22.5q-20 33-20 69 0 53 37.5 90.5t90.5 37.5 90.5-37.5 37.5-90.5zm512-128q0 212-150 362t-362 150-362-150-150-362q0-145 81-275 6-9 62.5-90.5t101-151 99.5-178 83-201.5q9-30 34-47t51-17 51.5 17 33.5 47q28 93 83 201.5t99.5 178 101 151 62.5 90.5q81 127 81 275z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/toggle-down.svg b/img/icons/font-awesome/toggle-down.svg
new file mode 100644
index 00000000..1a8ce92a
--- /dev/null
+++ b/img/icons/font-awesome/toggle-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1273 675q18 35-5 66l-320 448q-19 27-52 27t-52-27l-320-448q-23-31-5-66 17-35 57-35h640q40 0 57 35zm135 701v-960q0-13-9.5-22.5t-22.5-9.5h-960q-13 0-22.5 9.5t-9.5 22.5v960q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5-9.5t9.5-22.5zm256-960v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/toggle-left.svg b/img/icons/font-awesome/toggle-left.svg
new file mode 100644
index 00000000..8431db28
--- /dev/null
+++ b/img/icons/font-awesome/toggle-left.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 576v640q0 26-19 45t-45 19q-20 0-37-12l-448-320q-27-19-27-52t27-52l448-320q17-12 37-12 26 0 45 19t19 45zm256 800v-960q0-13-9.5-22.5t-22.5-9.5h-960q-13 0-22.5 9.5t-9.5 22.5v960q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5-9.5t9.5-22.5zm256-960v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/toggle-off.svg b/img/icons/font-awesome/toggle-off.svg
new file mode 100644
index 00000000..d3f96b93
--- /dev/null
+++ b/img/icons/font-awesome/toggle-off.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 896q0-104-40.5-198.5t-109.5-163.5-163.5-109.5-198.5-40.5-198.5 40.5-163.5 109.5-109.5 163.5-40.5 198.5 40.5 198.5 109.5 163.5 163.5 109.5 198.5 40.5 198.5-40.5 163.5-109.5 109.5-163.5 40.5-198.5zm768 0q0-104-40.5-198.5t-109.5-163.5-163.5-109.5-198.5-40.5h-386q119 90 188.5 224t69.5 288-69.5 288-188.5 224h386q104 0 198.5-40.5t163.5-109.5 109.5-163.5 40.5-198.5zm128 0q0 130-51 248.5t-136.5 204-204 136.5-248.5 51h-768q-130 0-248.5-51t-204-136.5-136.5-204-51-248.5 51-248.5 136.5-204 204-136.5 248.5-51h768q130 0 248.5 51t204 136.5 136.5 204 51 248.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/toggle-on.svg b/img/icons/font-awesome/toggle-on.svg
new file mode 100644
index 00000000..a0000254
--- /dev/null
+++ b/img/icons/font-awesome/toggle-on.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M0 896q0-130 51-248.5t136.5-204 204-136.5 248.5-51h768q130 0 248.5 51t204 136.5 136.5 204 51 248.5-51 248.5-136.5 204-204 136.5-248.5 51h-768q-130 0-248.5-51t-204-136.5-136.5-204-51-248.5zm1408 512q104 0 198.5-40.5t163.5-109.5 109.5-163.5 40.5-198.5-40.5-198.5-109.5-163.5-163.5-109.5-198.5-40.5-198.5 40.5-163.5 109.5-109.5 163.5-40.5 198.5 40.5 198.5 109.5 163.5 163.5 109.5 198.5 40.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/toggle-right.svg b/img/icons/font-awesome/toggle-right.svg
new file mode 100644
index 00000000..4a704fca
--- /dev/null
+++ b/img/icons/font-awesome/toggle-right.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1216 896q0 33-27 52l-448 320q-31 23-66 5-35-17-35-57v-640q0-40 35-57 35-18 66 5l448 320q27 19 27 52zm192 480v-960q0-14-9-23t-23-9h-960q-14 0-23 9t-9 23v960q0 14 9 23t23 9h960q14 0 23-9t9-23zm256-960v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/toggle-up.svg b/img/icons/font-awesome/toggle-up.svg
new file mode 100644
index 00000000..c3e658f7
--- /dev/null
+++ b/img/icons/font-awesome/toggle-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1273 1117q-17 35-57 35h-640q-40 0-57-35-18-35 5-66l320-448q19-27 52-27t52 27l320 448q23 31 5 66zm135 259v-960q0-13-9.5-22.5t-22.5-9.5h-960q-13 0-22.5 9.5t-9.5 22.5v960q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5-9.5t9.5-22.5zm256-960v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/trademark.svg b/img/icons/font-awesome/trademark.svg
new file mode 100644
index 00000000..9bf54d57
--- /dev/null
+++ b/img/icons/font-awesome/trademark.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M894.5 544v117q0 13-9.5 22t-22.5 9h-298v812q0 13-9 22.5t-22 9.5h-135q-13 0-22.5-9t-9.5-23v-812h-297q-13 0-22.5-9t-9.5-22v-117q0-14 9-23t23-9h793q13 0 22.5 9.5t9.5 22.5zm1038-3l77 961q1 13-8 24-10 10-23 10h-134q-12 0-21-8.5t-10-20.5l-46-588-189 425q-8 19-29 19h-120q-20 0-29-19l-188-427-45 590q-1 12-10 20.5t-21 8.5h-135q-13 0-23-10-9-10-9-24l78-961q1-12 10-20.5t21-8.5h142q20 0 29 19l220 520q10 24 20 51 3-7 9.5-24.5t10.5-26.5l221-520q9-19 29-19h141q13 0 22 8.5t10 20.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/train.svg b/img/icons/font-awesome/train.svg
new file mode 100644
index 00000000..5bf21437
--- /dev/null
+++ b/img/icons/font-awesome/train.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1216 0q185 0 316.5 93.5t131.5 226.5v896q0 130-125.5 222t-305.5 97l213 202q16 15 8 35t-30 20h-1056q-22 0-30-20t8-35l213-202q-180-5-305.5-97t-125.5-222v-896q0-133 131.5-226.5t316.5-93.5h640zm-320 1344q80 0 136-56t56-136-56-136-136-56-136 56-56 136 56 136 136 56zm576-576v-512h-1152v512h1152z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/transgender-alt.svg b/img/icons/font-awesome/transgender-alt.svg
new file mode 100644
index 00000000..82197de2
--- /dev/null
+++ b/img/icons/font-awesome/transgender-alt.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1280 32q0-14 9-23t23-9h288q26 0 45 19t19 45v288q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-134l-254 255q126 158 126 359 0 221-147.5 384.5t-364.5 187.5v132h96q14 0 23 9t9 23v64q0 14-9 23t-23 9h-96v96q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-96h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96v-132q-217-24-364.5-187.5t-147.5-384.5q0-201 126-359l-52-53-101 111q-9 10-22 10.5t-23-7.5l-48-44q-10-8-10.5-21.5t8.5-23.5l105-115-111-112v134q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-288q0-26 19-45t45-19h288q14 0 23 9t9 23v64q0 14-9 23t-23 9h-133l106 107 86-94q9-10 22-10.5t23 7.5l48 44q10 8 10.5 21.5t-8.5 23.5l-90 99 57 56q158-126 359-126t359 126l255-254h-134q-14 0-23-9t-9-23v-64zm-448 1248q185 0 316.5-131.5t131.5-316.5-131.5-316.5-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/transgender.svg b/img/icons/font-awesome/transgender.svg
new file mode 100644
index 00000000..7e7dc408
--- /dev/null
+++ b/img/icons/font-awesome/transgender.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1152 32q0-14 9-23t23-9h288q26 0 45 19t19 45v288q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-134l-254 255q126 158 126 359 0 221-147.5 384.5t-364.5 187.5v132h96q14 0 23 9t9 23v64q0 14-9 23t-23 9h-96v96q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-96h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96v-132q-149-16-270.5-103t-186.5-223.5-53-291.5q16-204 160-353.5t347-172.5q118-14 228 19t198 103l255-254h-134q-14 0-23-9t-9-23v-64zm-448 1248q185 0 316.5-131.5t131.5-316.5-131.5-316.5-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/trash-o.svg b/img/icons/font-awesome/trash-o.svg
new file mode 100644
index 00000000..3a2d079c
--- /dev/null
+++ b/img/icons/font-awesome/trash-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 736v576q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-576q0-14 9-23t23-9h64q14 0 23 9t9 23zm256 0v576q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-576q0-14 9-23t23-9h64q14 0 23 9t9 23zm256 0v576q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-576q0-14 9-23t23-9h64q14 0 23 9t9 23zm128 724v-948h-896v948q0 22 7 40.5t14.5 27 10.5 8.5h832q3 0 10.5-8.5t14.5-27 7-40.5zm-672-1076h448l-48-117q-7-9-17-11h-317q-10 2-17 11zm928 32v64q0 14-9 23t-23 9h-96v948q0 83-47 143.5t-113 60.5h-832q-66 0-113-58.5t-47-141.5v-952h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h309l70-167q15-37 54-63t79-26h320q40 0 79 26t54 63l70 167h309q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/trash.svg b/img/icons/font-awesome/trash.svg
new file mode 100644
index 00000000..c8c3aa6c
--- /dev/null
+++ b/img/icons/font-awesome/trash.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 1376v-704q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v704q0 14 9 23t23 9h64q14 0 23-9t9-23zm256 0v-704q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v704q0 14 9 23t23 9h64q14 0 23-9t9-23zm256 0v-704q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v704q0 14 9 23t23 9h64q14 0 23-9t9-23zm-544-992h448l-48-117q-7-9-17-11h-317q-10 2-17 11zm928 32v64q0 14-9 23t-23 9h-96v948q0 83-47 143.5t-113 60.5h-832q-66 0-113-58.5t-47-141.5v-952h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h309l70-167q15-37 54-63t79-26h320q40 0 79 26t54 63l70 167h309q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/tree.svg b/img/icons/font-awesome/tree.svg
new file mode 100644
index 00000000..bf935fa7
--- /dev/null
+++ b/img/icons/font-awesome/tree.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1632 1472q0 26-19 45t-45 19h-462q1 17 6 87.5t5 108.5q0 25-18 42.5t-43 17.5h-320q-25 0-43-17.5t-18-42.5q0-38 5-108.5t6-87.5h-462q-26 0-45-19t-19-45 19-45l402-403h-229q-26 0-45-19t-19-45 19-45l402-403h-197q-26 0-45-19t-19-45 19-45l384-384q19-19 45-19t45 19l384 384q19 19 19 45t-19 45-45 19h-197l402 403q19 19 19 45t-19 45-45 19h-229l402 403q19 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/trello.svg b/img/icons/font-awesome/trello.svg
new file mode 100644
index 00000000..78fdfcd2
--- /dev/null
+++ b/img/icons/font-awesome/trello.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M832 1344v-1024q0-14-9-23t-23-9h-480q-14 0-23 9t-9 23v1024q0 14 9 23t23 9h480q14 0 23-9t9-23zm672-384v-640q0-14-9-23t-23-9h-480q-14 0-23 9t-9 23v640q0 14 9 23t23 9h480q14 0 23-9t9-23zm160-768v1408q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-1408q0-26 19-45t45-19h1408q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/tripadvisor.svg b/img/icons/font-awesome/tripadvisor.svg
new file mode 100644
index 00000000..873929a0
--- /dev/null
+++ b/img/icons/font-awesome/tripadvisor.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M651 997q0 39-27.5 66.5t-65.5 27.5q-39 0-66.5-27.5t-27.5-66.5q0-38 27.5-65.5t66.5-27.5q38 0 65.5 27.5t27.5 65.5zm1154-1q0 39-27.5 66.5t-66.5 27.5-66.5-27.5-27.5-66.5 27.5-66 66.5-27 66.5 27 27.5 66zm-1040 1q0-79-56.5-136t-136.5-57-136.5 56.5-56.5 136.5 56.5 136.5 136.5 56.5 136.5-56.5 56.5-136.5zm1153-1q0-80-56.5-136.5t-136.5-56.5q-79 0-136 56.5t-57 136.5 56.5 136.5 136.5 56.5 136.5-56.5 56.5-136.5zm-1068 1q0 116-81.5 197.5t-196.5 81.5q-116 0-197.5-82t-81.5-197 82-196.5 197-81.5 196.5 81.5 81.5 196.5zm1154-1q0 115-81.5 196.5t-197.5 81.5q-115 0-196.5-81.5t-81.5-196.5 81.5-196.5 196.5-81.5q116 0 197.5 81.5t81.5 196.5zm-964 3q0-191-135.5-326.5t-326.5-135.5q-125 0-231 62t-168 168.5-62 231.5 62 231.5 168 168.5 231 62q191 0 326.5-135.5t135.5-326.5zm668-573q-254-111-556-111-319 0-573 110 117 0 223 45.5t182.5 122.5 122 183 45.5 223q0-115 43.5-219.5t118-180.5 177.5-123 217-50zm479 573q0-191-135-326.5t-326-135.5-326.5 135.5-135.5 326.5 135.5 326.5 326.5 135.5 326-135.5 135-326.5zm-266-566h383q-44 51-75 114.5t-40 114.5q110 151 110 337 0 156-77 288t-209 208.5-287 76.5q-133 0-249-56t-196-155q-47 56-129 179-11-22-53.5-82.5t-74.5-97.5q-80 99-196.5 155.5t-249.5 56.5q-155 0-287-76.5t-209-208.5-77-288q0-186 110-337-9-51-40-114.5t-75-114.5h365q149-100 355-156.5t432-56.5q224 0 421 56t348 157z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/trophy.svg b/img/icons/font-awesome/trophy.svg
new file mode 100644
index 00000000..0c8ecf02
--- /dev/null
+++ b/img/icons/font-awesome/trophy.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M522 883q-74-162-74-371h-256v96q0 78 94.5 162t235.5 113zm1078-275v-96h-256q0 209-74 371 141-29 235.5-113t94.5-162zm128-128v128q0 71-41.5 143t-112 130-173 97.5-215.5 44.5q-42 54-95 95-38 34-52.5 72.5t-14.5 89.5q0 54 30.5 91t97.5 37q75 0 133.5 45.5t58.5 114.5v64q0 14-9 23t-23 9h-832q-14 0-23-9t-9-23v-64q0-69 58.5-114.5t133.5-45.5q67 0 97.5-37t30.5-91q0-51-14.5-89.5t-52.5-72.5q-53-41-95-95-113-5-215.5-44.5t-173-97.5-112-130-41.5-143v-128q0-40 28-68t68-28h288v-96q0-66 47-113t113-47h576q66 0 113 47t47 113v96h288q40 0 68 28t28 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/truck.svg b/img/icons/font-awesome/truck.svg
new file mode 100644
index 00000000..028cf34b
--- /dev/null
+++ b/img/icons/font-awesome/truck.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M640 1408q0-52-38-90t-90-38-90 38-38 90 38 90 90 38 90-38 38-90zm-384-512h384v-256h-158q-13 0-22 9l-195 195q-9 9-9 22v30zm1280 512q0-52-38-90t-90-38-90 38-38 90 38 90 90 38 90-38 38-90zm256-1088v1024q0 15-4 26.5t-13.5 18.5-16.5 11.5-23.5 6-22.5 2-25.5 0-22.5-.5q0 106-75 181t-181 75-181-75-75-181h-384q0 106-75 181t-181 75-181-75-75-181h-64q-3 0-22.5.5t-25.5 0-22.5-2-23.5-6-16.5-11.5-13.5-18.5-4-26.5q0-26 19-45t45-19v-320q0-8-.5-35t0-38 2.5-34.5 6.5-37 14-30.5 22.5-30l198-198q19-19 50.5-32t58.5-13h160v-192q0-26 19-45t45-19h1024q26 0 45 19t19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/try.svg b/img/icons/font-awesome/try.svg
new file mode 100644
index 00000000..ba3e9e23
--- /dev/null
+++ b/img/icons/font-awesome/try.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1472 832q0 191-94.5 353t-256.5 256.5-353 94.5h-160q-14 0-23-9t-9-23v-611l-215 66q-3 1-9 1-10 0-19-6-13-10-13-26v-128q0-23 23-31l233-71v-93l-215 66q-3 1-9 1-10 0-19-6-13-10-13-26v-128q0-23 23-31l233-71v-250q0-14 9-23t23-9h160q14 0 23 9t9 23v181l375-116q15-5 28 5t13 26v128q0 23-23 31l-393 121v93l375-116q15-5 28 5t13 26v128q0 23-23 31l-393 121v487q188-13 318-151t130-328q0-14 9-23t23-9h160q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/tty.svg b/img/icons/font-awesome/tty.svg
new file mode 100644
index 00000000..512b29cb
--- /dev/null
+++ b/img/icons/font-awesome/tty.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M448 1312v192q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h192q14 0 23 9t9 23zm-192-384v192q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h192q14 0 23 9t9 23zm576 384v192q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h192q14 0 23 9t9 23zm-192-384v192q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h192q14 0 23 9t9 23zm-574-160q-28 0-47-19t-19-46v-129h514v129q0 27-19 46t-46 19h-383zm1150 544v192q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h192q14 0 23 9t9 23zm-192-384v192q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h192q14 0 23 9t9 23zm576 384v192q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h192q14 0 23 9t9 23zm-192-384v192q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h192q14 0 23 9t9 23zm384-408v13h-514v-10q0-104-382-102-382 1-382 102v10h-514v-13q0-17 8.5-43t34-64 65.5-75.5 110.5-76 160-67.5 224-47.5 293.5-18.5 293 18.5 224 47.5 160.5 67.5 110.5 76 65.5 75.5 34 64 8.5 43zm0 408v192q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h192q14 0 23 9t9 23zm0-354v129q0 27-19 46t-46 19h-384q-27 0-46-19t-19-46v-129h514z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/tumblr-square.svg b/img/icons/font-awesome/tumblr-square.svg
new file mode 100644
index 00000000..97686442
--- /dev/null
+++ b/img/icons/font-awesome/tumblr-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1264 1461l-62-183q-44 22-103 22-36 1-62-10.5t-38.5-31.5-17.5-40.5-5-43.5v-398h257v-194h-256v-326h-188q-8 0-9 10-5 44-17.5 87t-39 95-77 95-118.5 68v165h130v418q0 57 21.5 115t65 111 121 85.5 176.5 30.5q69-1 136.5-25t85.5-50zm400-1045v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/tumblr.svg b/img/icons/font-awesome/tumblr.svg
new file mode 100644
index 00000000..f4c6de22
--- /dev/null
+++ b/img/icons/font-awesome/tumblr.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1328 1329l80 237q-23 35-111 66t-177 32q-104 2-190.5-26t-142.5-74-95-106-55.5-120-16.5-118v-544h-168v-215q72-26 129-69.5t91-90 58-102 34-99 15-88.5q1-5 4.5-8.5t7.5-3.5h244v424h333v252h-334v518q0 30 6.5 56t22.5 52.5 49.5 41.5 81.5 14q78-2 134-29z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/turkish-lira.svg b/img/icons/font-awesome/turkish-lira.svg
new file mode 100644
index 00000000..ba3e9e23
--- /dev/null
+++ b/img/icons/font-awesome/turkish-lira.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1472 832q0 191-94.5 353t-256.5 256.5-353 94.5h-160q-14 0-23-9t-9-23v-611l-215 66q-3 1-9 1-10 0-19-6-13-10-13-26v-128q0-23 23-31l233-71v-93l-215 66q-3 1-9 1-10 0-19-6-13-10-13-26v-128q0-23 23-31l233-71v-250q0-14 9-23t23-9h160q14 0 23 9t9 23v181l375-116q15-5 28 5t13 26v128q0 23-23 31l-393 121v93l375-116q15-5 28 5t13 26v128q0 23-23 31l-393 121v487q188-13 318-151t130-328q0-14 9-23t23-9h160q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/tv.svg b/img/icons/font-awesome/tv.svg
new file mode 100644
index 00000000..fdebe084
--- /dev/null
+++ b/img/icons/font-awesome/tv.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 1248v-960q0-13-9.5-22.5t-22.5-9.5h-1600q-13 0-22.5 9.5t-9.5 22.5v960q0 13 9.5 22.5t22.5 9.5h1600q13 0 22.5-9.5t9.5-22.5zm128-960v960q0 66-47 113t-113 47h-736v128h352q14 0 23 9t9 23v64q0 14-9 23t-23 9h-832q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h352v-128h-736q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h1600q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/twitch.svg b/img/icons/font-awesome/twitch.svg
new file mode 100644
index 00000000..9d7086aa
--- /dev/null
+++ b/img/icons/font-awesome/twitch.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 434v434h-145v-434h145zm398 0v434h-145v-434h145zm0 760l253-254v-795h-1194v1049h326v217l217-217h398zm398-1194v1013l-434 434h-326l-217 217h-217v-217h-398v-1158l109-289h1483z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/twitter-square.svg b/img/icons/font-awesome/twitter-square.svg
new file mode 100644
index 00000000..3a85489f
--- /dev/null
+++ b/img/icons/font-awesome/twitter-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 610q-56 25-121 34 68-40 93-117-65 38-134 51-61-66-153-66-87 0-148.5 61.5t-61.5 148.5q0 29 5 48-129-7-242-65t-192-155q-29 50-29 106 0 114 91 175-47-1-100-26v2q0 75 50 133.5t123 72.5q-29 8-51 8-13 0-39-4 21 63 74.5 104t121.5 42q-116 90-261 90-26 0-50-3 148 94 322 94 112 0 210-35.5t168-95 120.5-137 75-162 24.5-168.5q0-18-1-27 63-45 105-109zm256-194v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/twitter.svg b/img/icons/font-awesome/twitter.svg
new file mode 100644
index 00000000..943ae041
--- /dev/null
+++ b/img/icons/font-awesome/twitter.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1684 408q-67 98-162 167 1 14 1 42 0 130-38 259.5t-115.5 248.5-184.5 210.5-258 146-323 54.5q-271 0-496-145 35 4 78 4 225 0 401-138-105-2-188-64.5t-114-159.5q33 5 61 5 43 0 85-11-112-23-185.5-111.5t-73.5-205.5v-4q68 38 146 41-66-44-105-115t-39-154q0-88 44-163 121 149 294.5 238.5t371.5 99.5q-8-38-8-74 0-134 94.5-228.5t228.5-94.5q140 0 236 102 109-21 205-78-37 115-142 178 93-10 186-50z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/umbrella.svg b/img/icons/font-awesome/umbrella.svg
new file mode 100644
index 00000000..80c67b4e
--- /dev/null
+++ b/img/icons/font-awesome/umbrella.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M960 828v580q0 104-76 180t-180 76-180-76-76-180q0-26 19-45t45-19 45 19 19 45q0 50 39 89t89 39 89-39 39-89v-580q33-11 64-11t64 11zm768 27q0 13-9.5 22.5t-22.5 9.5q-11 0-23-10-49-46-93-69t-102-23q-68 0-128 37t-103 97q-7 10-17.5 28t-14.5 24q-11 17-28 17-18 0-29-17-4-6-14.5-24t-17.5-28q-43-60-102.5-97t-127.5-37-127.5 37-102.5 97q-7 10-17.5 28t-14.5 24q-11 17-29 17-17 0-28-17-4-6-14.5-24t-17.5-28q-43-60-103-97t-128-37q-58 0-102 23t-93 69q-12 10-23 10-13 0-22.5-9.5t-9.5-22.5q0-5 1-7 45-183 172.5-319.5t298-204.5 360.5-68q140 0 274.5 40t246.5 113.5 194.5 187 115.5 251.5q1 2 1 7zm-768-727v98q-42-2-64-2t-64 2v-98q0-26 19-45t45-19 45 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/underline.svg b/img/icons/font-awesome/underline.svg
new file mode 100644
index 00000000..435ea37b
--- /dev/null
+++ b/img/icons/font-awesome/underline.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M176 223q-37-2-45-4l-3-88q13-1 40-1 60 0 112 4 132 7 166 7 86 0 168-3 116-4 146-5 56 0 86-2l-1 14 2 64v9q-60 9-124 9-60 0-79 25-13 14-13 132 0 13 .5 32.5t.5 25.5l1 229 14 280q6 124 51 202 35 59 96 92 88 47 177 47 104 0 191-28 56-18 99-51 48-36 65-64 36-56 53-114 21-73 21-229 0-79-3.5-128t-11-122.5-13.5-159.5l-4-59q-5-67-24-88-34-35-77-34l-100 2-14-3 2-86h84l205 10q76 3 196-10l18 2q6 38 6 51 0 7-4 31-45 12-84 13-73 11-79 17-15 15-15 41 0 7 1.5 27t1.5 31q8 19 22 396 6 195-15 304-15 76-41 122-38 65-112 123-75 57-182 89-109 33-255 33-167 0-284-46-119-47-179-122-61-76-83-195-16-80-16-237v-333q0-188-17-213-25-36-147-39zm1488 1409v-64q0-14-9-23t-23-9h-1472q-14 0-23 9t-9 23v64q0 14 9 23t23 9h1472q14 0 23-9t9-23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/undo.svg b/img/icons/font-awesome/undo.svg
new file mode 100644
index 00000000..5ac328bd
--- /dev/null
+++ b/img/icons/font-awesome/undo.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 896q0 156-61 298t-164 245-245 164-298 61q-172 0-327-72.5t-264-204.5q-7-10-6.5-22.5t8.5-20.5l137-138q10-9 25-9 16 2 23 12 73 95 179 147t225 52q104 0 198.5-40.5t163.5-109.5 109.5-163.5 40.5-198.5-40.5-198.5-109.5-163.5-163.5-109.5-198.5-40.5q-98 0-188 35.5t-160 101.5l137 138q31 30 14 69-17 40-59 40h-448q-26 0-45-19t-19-45v-448q0-42 40-59 39-17 69 14l130 129q107-101 244.5-156.5t284.5-55.5q156 0 298 61t245 164 164 245 61 298z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/universal-access.svg b/img/icons/font-awesome/universal-access.svg
new file mode 100644
index 00000000..3a8b1c31
--- /dev/null
+++ b/img/icons/font-awesome/universal-access.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1374 657q-6-26-28.5-39.5t-48.5-7.5q-261 62-401 62t-401-62q-26-6-48.5 7.5t-28.5 39.5 7.5 48.5 39.5 28.5q194 46 303 58-2 158-15.5 269t-26.5 155.5-41 115.5l-9 21q-10 25 1 49t36 34q9 4 23 4 44 0 60-41l8-20q54-139 71-259h42q17 120 71 259l8 20q16 41 60 41 14 0 23-4 25-10 36-34t1-49l-9-21q-28-71-41-115.5t-26.5-155.5-15.5-269q109-12 303-58 26-6 39.5-28.5t7.5-48.5zm-350-145q0-53-37.5-90.5t-90.5-37.5-90.5 37.5-37.5 90.5 37.5 90.5 90.5 37.5 90.5-37.5 37.5-90.5zm576 384q0 143-55.5 273.5t-150 225-225 150-273.5 55.5-273.5-55.5-225-150-150-225-55.5-273.5 55.5-273.5 150-225 225-150 273.5-55.5 273.5 55.5 225 150 150 225 55.5 273.5zm-704-768q-156 0-298 61t-245 164-164 245-61 298 61 298 164 245 245 164 298 61 298-61 245-164 164-245 61-298-61-298-164-245-245-164-298-61zm896 768q0 182-71 348t-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71 348 71 286 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/university.svg b/img/icons/font-awesome/university.svg
new file mode 100644
index 00000000..4c514037
--- /dev/null
+++ b/img/icons/font-awesome/university.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M960 0l960 384v128h-128q0 26-20.5 45t-48.5 19h-1526q-28 0-48.5-19t-20.5-45h-128v-128zm-704 640h256v768h128v-768h256v768h128v-768h256v768h128v-768h256v768h59q28 0 48.5 19t20.5 45v64h-1664v-64q0-26 20.5-45t48.5-19h59v-768zm1595 960q28 0 48.5 19t20.5 45v128h-1920v-128q0-26 20.5-45t48.5-19h1782z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/unlink.svg b/img/icons/font-awesome/unlink.svg
new file mode 100644
index 00000000..4c6b9f4c
--- /dev/null
+++ b/img/icons/font-awesome/unlink.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M503 1271l-256 256q-11 9-23 9t-23-9q-9-10-9-23t9-23l256-256q10-9 23-9t23 9q9 10 9 23t-9 23zm169 41v320q0 14-9 23t-23 9-23-9-9-23v-320q0-14 9-23t23-9 23 9 9 23zm-224-224q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23 9-23 23-9h320q14 0 23 9t9 23zm1264 128q0 120-85 203l-147 146q-83 83-203 83-121 0-204-85l-334-335q-21-21-42-56l239-18 273 274q27 27 68 27.5t68-26.5l147-146q28-28 28-67 0-40-28-68l-274-275 18-239q35 21 56 42l336 336q84 86 84 204zm-617-724l-239 18-273-274q-28-28-68-28-39 0-68 27l-147 146q-28 28-28 67 0 40 28 68l274 274-18 240q-35-21-56-42l-336-336q-84-86-84-204 0-120 85-203l147-146q83-83 203-83 121 0 204 85l334 335q21 21 42 56zm633 84q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23 9-23 23-9h320q14 0 23 9t9 23zm-544-544v320q0 14-9 23t-23 9-23-9-9-23v-320q0-14 9-23t23-9 23 9 9 23zm407 151l-256 256q-11 9-23 9t-23-9q-9-10-9-23t9-23l256-256q10-9 23-9t23 9q9 10 9 23t-9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/unlock-alt.svg b/img/icons/font-awesome/unlock-alt.svg
new file mode 100644
index 00000000..4d197178
--- /dev/null
+++ b/img/icons/font-awesome/unlock-alt.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1376 768q40 0 68 28t28 68v576q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-576q0-40 28-68t68-28h32v-320q0-185 131.5-316.5t316.5-131.5 316.5 131.5 131.5 316.5q0 26-19 45t-45 19h-64q-26 0-45-19t-19-45q0-106-75-181t-181-75-181 75-75 181v320h736z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/unlock.svg b/img/icons/font-awesome/unlock.svg
new file mode 100644
index 00000000..971eaf2d
--- /dev/null
+++ b/img/icons/font-awesome/unlock.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1728 576v256q0 26-19 45t-45 19h-64q-26 0-45-19t-19-45v-256q0-106-75-181t-181-75-181 75-75 181v192h96q40 0 68 28t28 68v576q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-576q0-40 28-68t68-28h672v-192q0-185 131.5-316.5t316.5-131.5 316.5 131.5 131.5 316.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/unsorted.svg b/img/icons/font-awesome/unsorted.svg
new file mode 100644
index 00000000..ac990cf5
--- /dev/null
+++ b/img/icons/font-awesome/unsorted.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 1088q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45zm0-384q0 26-19 45t-45 19h-896q-26 0-45-19t-19-45 19-45l448-448q19-19 45-19t45 19l448 448q19 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/upload.svg b/img/icons/font-awesome/upload.svg
new file mode 100644
index 00000000..10e942bd
--- /dev/null
+++ b/img/icons/font-awesome/upload.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1344 1472q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm256 0q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm128-224v320q0 40-28 68t-68 28h-1472q-40 0-68-28t-28-68v-320q0-40 28-68t68-28h427q21 56 70.5 92t110.5 36h256q61 0 110.5-36t70.5-92h427q40 0 68 28t28 68zm-325-648q-17 40-59 40h-256v448q0 26-19 45t-45 19h-256q-26 0-45-19t-19-45v-448h-256q-42 0-59-40-17-39 14-69l448-448q18-19 45-19t45 19l448 448q31 30 14 69z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/usb.svg b/img/icons/font-awesome/usb.svg
new file mode 100644
index 00000000..38864a4d
--- /dev/null
+++ b/img/icons/font-awesome/usb.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M2288 805q16 8 16 27t-16 27l-320 192q-8 5-16 5-9 0-16-4-16-10-16-28v-128h-858q37 58 83 165 16 37 24.5 55t24 49 27 47 27 34 31.5 26 33 8h96v-96q0-14 9-23t23-9h320q14 0 23 9t9 23v320q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23v-96h-96q-32 0-61-10t-51-23.5-45-40.5-37-46-33.5-57-28.5-57.5-28-60.5q-23-53-37-81.5t-36-65-44.5-53.5-46.5-17h-360q-22 84-91 138t-157 54q-106 0-181-75t-75-181 75-181 181-75q88 0 157 54t91 138h104q24 0 46.5-17t44.5-53.5 36-65 37-81.5q19-41 28-60.5t28.5-57.5 33.5-57 37-46 45-40.5 51-23.5 61-10h107q21-57 70-92.5t111-35.5q80 0 136 56t56 136-56 136-136 56q-62 0-111-35.5t-70-92.5h-107q-17 0-33 8t-31.5 26-27 34-27 47-24 49-24.5 55q-46 107-83 165h1114v-128q0-18 16-28t32 1z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/usd.svg b/img/icons/font-awesome/usd.svg
new file mode 100644
index 00000000..b1d28802
--- /dev/null
+++ b/img/icons/font-awesome/usd.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1362 1185q0 153-99.5 263.5t-258.5 136.5v175q0 14-9 23t-23 9h-135q-13 0-22.5-9.5t-9.5-22.5v-175q-66-9-127.5-31t-101.5-44.5-74-48-46.5-37.5-17.5-18q-17-21-2-41l103-135q7-10 23-12 15-2 24 9l2 2q113 99 243 125 37 8 74 8 81 0 142.5-43t61.5-122q0-28-15-53t-33.5-42-58.5-37.5-66-32-80-32.5q-39-16-61.5-25t-61.5-26.5-62.5-31-56.5-35.5-53.5-42.5-43.5-49-35.5-58-21-66.5-8.5-78q0-138 98-242t255-134v-180q0-13 9.5-22.5t22.5-9.5h135q14 0 23 9t9 23v176q57 6 110.5 23t87 33.5 63.5 37.5 39 29 15 14q17 18 5 38l-81 146q-8 15-23 16-14 3-27-7-3-3-14.5-12t-39-26.5-58.5-32-74.5-26-85.5-11.5q-95 0-155 43t-60 111q0 26 8.5 48t29.5 41.5 39.5 33 56 31 60.5 27 70 27.5q53 20 81 31.5t76 35 75.5 42.5 62 50 53 63.5 31.5 76.5 13 94z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/user-circle-o.svg b/img/icons/font-awesome/user-circle-o.svg
new file mode 100644
index 00000000..0599412f
--- /dev/null
+++ b/img/icons/font-awesome/user-circle-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 0q182 0 348 71t286 191 191 286 71 348q0 181-70.5 347t-190.5 286-286 191.5-349 71.5-349-71-285.5-191.5-190.5-286-71-347.5 71-348 191-286 286-191 348-71zm619 1351q149-205 149-455 0-156-61-298t-164-245-245-164-298-61-298 61-245 164-164 245-61 298q0 250 149 455 66-327 306-327 131 128 313 128t313-128q240 0 306 327zm-235-647q0-159-112.5-271.5t-271.5-112.5-271.5 112.5-112.5 271.5 112.5 271.5 271.5 112.5 271.5-112.5 112.5-271.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/user-circle.svg b/img/icons/font-awesome/user-circle.svg
new file mode 100644
index 00000000..2e30521c
--- /dev/null
+++ b/img/icons/font-awesome/user-circle.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1523 1339q-22-155-87.5-257.5t-184.5-118.5q-67 74-159.5 115.5t-195.5 41.5-195.5-41.5-159.5-115.5q-119 16-184.5 118.5t-87.5 257.5q106 150 271 237.5t356 87.5 356-87.5 271-237.5zm-243-699q0-159-112.5-271.5t-271.5-112.5-271.5 112.5-112.5 271.5 112.5 271.5 271.5 112.5 271.5-112.5 112.5-271.5zm512 256q0 182-71 347.5t-190.5 286-285.5 191.5-349 71q-182 0-348-71t-286-191-191-286-71-348 71-348 191-286 286-191 348-71 348 71 286 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/user-md.svg b/img/icons/font-awesome/user-md.svg
new file mode 100644
index 00000000..f1f28401
--- /dev/null
+++ b/img/icons/font-awesome/user-md.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M576 1344q0 26-19 45t-45 19-45-19-19-45 19-45 45-19 45 19 19 45zm1024 61q0 121-73 190t-194 69h-874q-121 0-194-69t-73-190q0-68 5.5-131t24-138 47.5-132.5 81-103 120-60.5q-22 52-22 120v203q-58 20-93 70t-35 111q0 80 56 136t136 56 136-56 56-136q0-61-35.5-111t-92.5-70v-203q0-62 25-93 132 104 295 104t295-104q25 31 25 93v64q-106 0-181 75t-75 181v89q-32 29-32 71 0 40 28 68t68 28 68-28 28-68q0-42-32-71v-89q0-52 38-90t90-38 90 38 38 90v89q-32 29-32 71 0 40 28 68t68 28 68-28 28-68q0-42-32-71v-89q0-68-34.5-127.5t-93.5-93.5q0-10 .5-42.5t0-48-2.5-41.5-7-47-13-40q68 15 120 60.5t81 103 47.5 132.5 24 138 5.5 131zm-320-893q0 159-112.5 271.5t-271.5 112.5-271.5-112.5-112.5-271.5 112.5-271.5 271.5-112.5 271.5 112.5 112.5 271.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/user-o.svg b/img/icons/font-awesome/user-o.svg
new file mode 100644
index 00000000..f181d52f
--- /dev/null
+++ b/img/icons/font-awesome/user-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1329 784q47 14 89.5 38t89 73 79.5 115.5 55 172 22 236.5q0 154-100 263.5t-241 109.5h-854q-141 0-241-109.5t-100-263.5q0-131 22-236.5t55-172 79.5-115.5 89-73 89.5-38q-79-125-79-272 0-104 40.5-198.5t109.5-163.5 163.5-109.5 198.5-40.5 198.5 40.5 163.5 109.5 109.5 163.5 40.5 198.5q0 147-79 272zm-433-656q-159 0-271.5 112.5t-112.5 271.5 112.5 271.5 271.5 112.5 271.5-112.5 112.5-271.5-112.5-271.5-271.5-112.5zm427 1536q88 0 150.5-71.5t62.5-173.5q0-239-78.5-377t-225.5-145q-145 127-336 127t-336-127q-147 7-225.5 145t-78.5 377q0 102 62.5 173.5t150.5 71.5h854z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/user-plus.svg b/img/icons/font-awesome/user-plus.svg
new file mode 100644
index 00000000..098ff06b
--- /dev/null
+++ b/img/icons/font-awesome/user-plus.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 896q-159 0-271.5-112.5t-112.5-271.5 112.5-271.5 271.5-112.5 271.5 112.5 112.5 271.5-112.5 271.5-271.5 112.5zm960 128h352q13 0 22.5 9.5t9.5 22.5v192q0 13-9.5 22.5t-22.5 9.5h-352v352q0 13-9.5 22.5t-22.5 9.5h-192q-13 0-22.5-9.5t-9.5-22.5v-352h-352q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h352v-352q0-13 9.5-22.5t22.5-9.5h192q13 0 22.5 9.5t9.5 22.5v352zm-736 224q0 52 38 90t90 38h256v238q-68 50-171 50h-874q-121 0-194-69t-73-190q0-53 3.5-103.5t14-109 26.5-108.5 43-97.5 62-81 85.5-53.5 111.5-20q19 0 39 17 79 61 154.5 91.5t164.5 30.5 164.5-30.5 154.5-91.5q20-17 39-17 132 0 217 96h-223q-52 0-90 38t-38 90v192z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/user-secret.svg b/img/icons/font-awesome/user-secret.svg
new file mode 100644
index 00000000..487342ef
--- /dev/null
+++ b/img/icons/font-awesome/user-secret.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 1536l96-448-96-128-128-64zm256 0l128-640-128 64-96 128zm160-1010q-2-4-4-6-10-8-96-8-70 0-167 19-7 2-21 2t-21-2q-97-19-167-19-86 0-96 8-2 2-4 6 2 18 4 27 2 3 7.5 6.5t7.5 10.5q2 4 7.5 20.5t7 20.5 7.5 17 8.5 17 9 14 12 13.5 14 9.5 17.5 8 20.5 4 24.5 2q36 0 59-12.5t32.5-30 14.5-34.5 11.5-29.5 17.5-12.5h12q11 0 17.5 12.5t11.5 29.5 14.5 34.5 32.5 30 59 12.5q13 0 24.5-2t20.5-4 17.5-8 14-9.5 12-13.5 9-14 8.5-17 7.5-17 7-20.5 7.5-20.5q2-7 7.5-10.5t7.5-6.5q2-9 4-27zm416 879q0 121-73 190t-194 69h-874q-121 0-194-69t-73-190q0-61 4.5-118t19-125.5 37.5-123.5 63.5-103.5 93.5-74.5l-90-220h214q-22-64-22-128 0-12 2-32-194-40-194-96 0-57 210-99 17-62 51.5-134t70.5-114q32-37 76-37 30 0 84 31t84 31 84-31 84-31q44 0 76 37 36 42 70.5 114t51.5 134q210 42 210 99 0 56-194 96 7 81-20 160h214l-82 225q63 33 107.5 96.5t65.5 143.5 29 151.5 8 148.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/user-times.svg b/img/icons/font-awesome/user-times.svg
new file mode 100644
index 00000000..8b61e007
--- /dev/null
+++ b/img/icons/font-awesome/user-times.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M704 896q-159 0-271.5-112.5t-112.5-271.5 112.5-271.5 271.5-112.5 271.5 112.5 112.5 271.5-112.5 271.5-271.5 112.5zm1077 320l249 249q9 9 9 23 0 13-9 22l-136 136q-9 9-22 9-14 0-23-9l-249-249-249 249q-9 9-23 9-13 0-22-9l-136-136q-9-9-9-22 0-14 9-23l249-249-249-249q-9-9-9-23 0-13 9-22l136-136q9-9 22-9 14 0 23 9l249 249 249-249q9-9 23-9 13 0 22 9l136 136q9 9 9 22 0 14-9 23zm-498 0l-181 181q-37 37-37 91 0 53 37 90l83 83q-21 3-44 3h-874q-121 0-194-69t-73-190q0-53 3.5-103.5t14-109 26.5-108.5 43-97.5 62-81 85.5-53.5 111.5-20q19 0 39 17 154 122 319 122t319-122q20-17 39-17 28 0 57 6-28 27-41 50t-13 56q0 54 37 91z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/user.svg b/img/icons/font-awesome/user.svg
new file mode 100644
index 00000000..ecebdbc6
--- /dev/null
+++ b/img/icons/font-awesome/user.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1536 1399q0 109-62.5 187t-150.5 78h-854q-88 0-150.5-78t-62.5-187q0-85 8.5-160.5t31.5-152 58.5-131 94-89 134.5-34.5q131 128 313 128t313-128q76 0 134.5 34.5t94 89 58.5 131 31.5 152 8.5 160.5zm-256-887q0 159-112.5 271.5t-271.5 112.5-271.5-112.5-112.5-271.5 112.5-271.5 271.5-112.5 271.5 112.5 112.5 271.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/users.svg b/img/icons/font-awesome/users.svg
new file mode 100644
index 00000000..1036013c
--- /dev/null
+++ b/img/icons/font-awesome/users.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M657 896q-162 5-265 128h-134q-82 0-138-40.5t-56-118.5q0-353 124-353 6 0 43.5 21t97.5 42.5 119 21.5q67 0 133-23-5 37-5 66 0 139 81 256zm1071 637q0 120-73 189.5t-194 69.5h-874q-121 0-194-69.5t-73-189.5q0-53 3.5-103.5t14-109 26.5-108.5 43-97.5 62-81 85.5-53.5 111.5-20q10 0 43 21.5t73 48 107 48 135 21.5 135-21.5 107-48 73-48 43-21.5q61 0 111.5 20t85.5 53.5 62 81 43 97.5 26.5 108.5 14 109 3.5 103.5zm-1024-1277q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75 75 181zm704 384q0 159-112.5 271.5t-271.5 112.5-271.5-112.5-112.5-271.5 112.5-271.5 271.5-112.5 271.5 112.5 112.5 271.5zm576 225q0 78-56 118.5t-138 40.5h-134q-103-123-265-128 81-117 81-256 0-29-5-66 66 23 133 23 59 0 119-21.5t97.5-42.5 43.5-21q124 0 124 353zm-128-609q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75 75 181z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/vcard-o.svg b/img/icons/font-awesome/vcard-o.svg
new file mode 100644
index 00000000..4d9ad682
--- /dev/null
+++ b/img/icons/font-awesome/vcard-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1131q0 64-37 106.5t-91 42.5h-512q-54 0-91-42.5t-37-106.5 9-117.5 29.5-103 60.5-78 97-28.5q6 4 30 18t37.5 21.5 35.5 17.5 43 14.5 42 4.5 42-4.5 43-14.5 35.5-17.5 37.5-21.5 30-18q57 0 97 28.5t60.5 78 29.5 103 9 117.5zm-157-520q0 94-66.5 160.5t-160.5 66.5-160.5-66.5-66.5-160.5 66.5-160.5 160.5-66.5 160.5 66.5 66.5 160.5zm925 445v64q0 14-9 23t-23 9h-576q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h576q14 0 23 9t9 23zm0-252v56q0 15-10.5 25.5t-25.5 10.5h-568q-15 0-25.5-10.5t-10.5-25.5v-56q0-15 10.5-25.5t25.5-10.5h568q15 0 25.5 10.5t10.5 25.5zm0-260v64q0 14-9 23t-23 9h-576q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h576q14 0 23 9t9 23zm128 960v-1216q0-13-9.5-22.5t-22.5-9.5h-1728q-13 0-22.5 9.5t-9.5 22.5v1216q0 13 9.5 22.5t22.5 9.5h352v-96q0-14 9-23t23-9h64q14 0 23 9t9 23v96h768v-96q0-14 9-23t23-9h64q14 0 23 9t9 23v96h352q13 0 22.5-9.5t9.5-22.5zm128-1216v1216q0 66-47 113t-113 47h-1728q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1728q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/vcard.svg b/img/icons/font-awesome/vcard.svg
new file mode 100644
index 00000000..8565bc82
--- /dev/null
+++ b/img/icons/font-awesome/vcard.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1131q0-64-9-117.5t-29.5-103-60.5-78-97-28.5q-6 4-30 18t-37.5 21.5-35.5 17.5-43 14.5-42 4.5-42-4.5-43-14.5-35.5-17.5-37.5-21.5-30-18q-57 0-97 28.5t-60.5 78-29.5 103-9 117.5 37 106.5 91 42.5h512q54 0 91-42.5t37-106.5zm-157-520q0-94-66.5-160.5t-160.5-66.5-160.5 66.5-66.5 160.5 66.5 160.5 160.5 66.5 160.5-66.5 66.5-160.5zm925 509v-64q0-14-9-23t-23-9h-576q-14 0-23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23-9t9-23zm0-260v-56q0-15-10.5-25.5t-25.5-10.5h-568q-15 0-25.5 10.5t-10.5 25.5v56q0 15 10.5 25.5t25.5 10.5h568q15 0 25.5-10.5t10.5-25.5zm0-252v-64q0-14-9-23t-23-9h-576q-14 0-23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23-9t9-23zm256-320v1216q0 66-47 113t-113 47h-352v-96q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v96h-768v-96q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v96h-352q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1728q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/venus-double.svg b/img/icons/font-awesome/venus-double.svg
new file mode 100644
index 00000000..f174f578
--- /dev/null
+++ b/img/icons/font-awesome/venus-double.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1790 529q12 155-52.5 292t-186 224-271.5 103v260h224q14 0 23 9t9 23v64q0 14-9 23t-23 9h-224v224q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-224h-512v224q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-224h-224q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h224v-260q-150-16-271.5-103t-186-224-52.5-292q17-206 164.5-356.5t352.5-169.5q206-21 377 94 171-115 377-94 205 19 352.5 169.5t164.5 356.5zm-894 360q128-131 128-313t-128-313q-128 131-128 313t128 313zm-320 135q115 0 218-57-154-165-154-391 0-224 154-391-103-57-218-57-185 0-316.5 131.5t-131.5 316.5 131.5 316.5 316.5 131.5zm576 384v-260q-137-15-256-94-119 79-256 94v260h512zm64-384q185 0 316.5-131.5t131.5-316.5-131.5-316.5-316.5-131.5q-115 0-218 57 154 167 154 391 0 226-154 391 103 57 218 57z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/venus-mars.svg b/img/icons/font-awesome/venus-mars.svg
new file mode 100644
index 00000000..51687019
--- /dev/null
+++ b/img/icons/font-awesome/venus-mars.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 32q0-14 9-23t23-9h288q26 0 45 19t19 45v288q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-134l-254 255q76 95 107.5 214t9.5 247q-32 180-164.5 310t-313.5 157q-223 34-409-90-117 78-256 93v132h96q14 0 23 9t9 23v64q0 14-9 23t-23 9h-96v96q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-96h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h96v-132q-155-17-279.5-109.5t-187-237.5-39.5-307q25-187 159.5-322.5t320.5-164.5q224-34 410 90 146-97 320-97 201 0 359 126l255-254h-134q-14 0-23-9t-9-23v-64zm-768 1113q128-131 128-313t-128-313q-128 131-128 313t128 313zm-768-313q0 185 131.5 316.5t316.5 131.5q117 0 218-57-154-167-154-391t154-391q-101-57-218-57-185 0-316.5 131.5t-131.5 316.5zm1088 448q185 0 316.5-131.5t131.5-316.5-131.5-316.5-316.5-131.5q-117 0-218 57 154 167 154 391t-154 391q101 57 218 57z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/venus.svg b/img/icons/font-awesome/venus.svg
new file mode 100644
index 00000000..9671040c
--- /dev/null
+++ b/img/icons/font-awesome/venus.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 576q0 221-147.5 384.5t-364.5 187.5v260h224q14 0 23 9t9 23v64q0 14-9 23t-23 9h-224v224q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-224h-224q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h224v-260q-150-16-271.5-103t-186-224-52.5-292q11-134 80.5-249t182-188 245.5-88q170-19 319 54t236 212 87 306zm-1024 0q0 185 131.5 316.5t316.5 131.5 316.5-131.5 131.5-316.5-131.5-316.5-316.5-131.5-316.5 131.5-131.5 316.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/viacoin.svg b/img/icons/font-awesome/viacoin.svg
new file mode 100644
index 00000000..a1186256
--- /dev/null
+++ b/img/icons/font-awesome/viacoin.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1664 0l-192 448h192v192h-274l-55 128h329v192h-411l-357 832-357-832h-411v-192h329l-55-128h-274v-192h192l-192-448h256l323 768h378l323-768h256zm-768 1216l108-256h-216z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/viadeo-square.svg b/img/icons/font-awesome/viadeo-square.svg
new file mode 100644
index 00000000..ed993311
--- /dev/null
+++ b/img/icons/font-awesome/viadeo-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1178 1041q0-78-28-147-41 25-85 34 22 50 22 114 0 117-77 198.5t-193 81.5-193.5-81.5-77.5-198.5q0-115 78-199.5t193-84.5q53 0 98 19 4-43 27-87-60-21-125-21-154 0-257.5 108.5t-103.5 263.5 103.5 261 257.5 106 257.5-106.5 103.5-260.5zm-178-355q2 24 2 71 0 63-5 123t-20.5 132.5-40.5 130-68.5 106-100.5 70.5q21 3 42 3h10q219-139 219-411 0-116-38-225zm0 0q-4-80-44-171.5t-98-130.5q92 156 142 302zm335-105q0-102-51-174-41 86-124 109-69 19-109 53.5t-40 99.5q0 40 24 77 74-17 140.5-67t95.5-115q-4 52-74.5 111.5t-138.5 97.5q52 52 110 52 51 0 90-37t60-90q17-42 17-117zm329-165v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/viadeo.svg b/img/icons/font-awesome/viadeo.svg
new file mode 100644
index 00000000..a682f8a5
--- /dev/null
+++ b/img/icons/font-awesome/viadeo.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1306 1106q0 215-147 374-148 161-378 161-232 0-378-161-147-159-147-374 0-147 68-270.5t189-196.5 268-73q96 0 182 31-32 62-39 126-66-28-143-28-167 0-280.5 123t-113.5 291q0 170 112.5 288.5t281.5 118.5 281-118.5 112-288.5q0-89-32-166 66-13 123-49 41 98 41 212zm-204-189q0 192-79.5 345t-238.5 253l-14 1q-29 0-62-5 83-32 146.5-102.5t99.5-154.5 58.5-189 30-192.5 7.5-178.5q0-69-3-103 55 160 55 326zm-55-328v2q-73-214-206-440 88 59 142.5 186.5t63.5 251.5zm244 203q-83 0-160-75 218-120 290-247 19-37 21-56-42 94-139.5 166.5t-204.5 97.5q-35-54-35-113 0-37 17-79t43-68q46-44 157-74 59-16 106-58.5t74-100.5q74 105 74 253 0 109-24 170-32 77-88.5 130.5t-130.5 53.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/video-camera.svg b/img/icons/font-awesome/video-camera.svg
new file mode 100644
index 00000000..8cb3a48f
--- /dev/null
+++ b/img/icons/font-awesome/video-camera.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 352v1088q0 42-39 59-13 5-25 5-27 0-45-19l-403-403v166q0 119-84.5 203.5t-203.5 84.5h-704q-119 0-203.5-84.5t-84.5-203.5v-704q0-119 84.5-203.5t203.5-84.5h704q119 0 203.5 84.5t84.5 203.5v165l403-402q18-19 45-19 12 0 25 5 39 17 39 59z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/vimeo-square.svg b/img/icons/font-awesome/vimeo-square.svg
new file mode 100644
index 00000000..d3fbba4b
--- /dev/null
+++ b/img/icons/font-awesome/vimeo-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1420 638q10-216-161-222-231-8-312 261 44-19 82-19 85 0 74 96-4 57-74 167t-105 110q-43 0-82-169-13-54-45-255-30-189-160-177-59 7-164 100l-81 72-81 72 52 67q76-52 87-52 57 0 107 179 15 55 45 164.5t45 164.5q68 179 164 179 157 0 383-294 220-283 226-444zm244-222v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/vimeo.svg b/img/icons/font-awesome/vimeo.svg
new file mode 100644
index 00000000..0d783301
--- /dev/null
+++ b/img/icons/font-awesome/vimeo.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1709 518q-10 236-332 651-333 431-562 431-142 0-240-263-44-160-132-482-72-262-157-262-18 0-127 76l-77-98q24-21 108-96.5t130-115.5q156-138 241-146 95-9 153 55.5t81 203.5q44 287 66 373 55 249 120 249 51 0 154-161 101-161 109-246 13-139-109-139-57 0-121 26 120-393 459-382 251 8 236 326z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/vine.svg b/img/icons/font-awesome/vine.svg
new file mode 100644
index 00000000..0fcc0fb0
--- /dev/null
+++ b/img/icons/font-awesome/vine.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1625 827v198q-101 23-198 23-65 136-165.5 271t-181.5 215.5-128 106.5q-80 45-162-3-28-17-60.5-43.5t-85-83.5-102.5-128.5-107.5-184-105.5-244-91.5-314.5-70.5-390h283q26 218 70 398.5t104.5 317 121.5 235.5 140 195q169-169 287-406-142-72-223-220t-81-333q0-192 104-314.5t284-122.5q178 0 273 105.5t95 297.5q0 159-58 286-7 1-19.5 3t-46 2-63-6-62-25.5-50.5-51.5q31-103 31-184 0-87-29-132t-79-45q-53 0-85 49.5t-32 140.5q0 186 105 293.5t267 107.5q62 0 121-14z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/vk.svg b/img/icons/font-awesome/vk.svg
new file mode 100644
index 00000000..436d2f41
--- /dev/null
+++ b/img/icons/font-awesome/vk.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1981 520q23 64-150 294-24 32-65 85-40 51-55 72t-30.5 49.5-12 42 13 34.5 32.5 43 57 53q4 2 5 4 141 131 191 221 3 5 6.5 12.5t7 26.5-.5 34-25 27.5-59 12.5l-256 4q-24 5-56-5t-52-22l-20-12q-30-21-70-64t-68.5-77.5-61-58-56.5-15.5q-3 1-8 3.5t-17 14.5-21.5 29.5-17 52-6.5 77.5q0 15-3.5 27.5t-7.5 18.5l-4 5q-18 19-53 22h-115q-71 4-146-16.5t-131.5-53-103-66-70.5-57.5l-25-24q-10-10-27.5-30t-71.5-91-106-151-122.5-211-130.5-272q-6-16-6-27t3-16l4-6q15-19 57-19l274-2q12 2 23 6.5t16 8.5l5 3q16 11 24 32 20 50 46 103.5t41 81.5l16 29q29 60 56 104t48.5 68.5 41.5 38.5 34 14 27-5q2-1 5-5t12-22 13.5-47 9.5-81 0-125q-2-40-9-73t-14-46l-6-12q-25-34-85-43-13-2 5-24 16-19 38-30 53-26 239-24 82 1 135 13 20 5 33.5 13.5t20.5 24 10.5 32 3.5 45.5-1 55-2.5 70.5-1.5 82.5q0 11-1 42t-.5 48 3.5 40.5 11.5 39 22.5 24.5q8 2 17 4t26-11 38-34.5 52-67 68-107.5q60-104 107-225 4-10 10-17.5t11-10.5l4-3 5-2.5 13-3 20-.5 288-2q39-5 64 2.5t31 16.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/volume-control-phone.svg b/img/icons/font-awesome/volume-control-phone.svg
new file mode 100644
index 00000000..49321e31
--- /dev/null
+++ b/img/icons/font-awesome/volume-control-phone.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M809 1689q0-11-13-58t-31-107-20-69q-1-4-5-26.5t-8.5-36-13.5-21.5q-15-14-51-14-23 0-70 5.5t-71 5.5q-34 0-47-11-6-5-11-15.5t-7.5-20-6.5-24-5-18.5q-37-128-37-255t37-255q1-4 5-18.5t6.5-24 7.5-20 11-15.5q13-11 47-11 24 0 71 5.5t70 5.5q36 0 51-14 9-8 13.5-21.5t8.5-36 5-26.5q2-9 20-69t31-107 13-58q0-22-43.5-52.5t-75.5-42.5q-20-8-45-8-34 0-98 18-57 17-96.5 40.5t-71 66-46 70-45.5 94.5q-6 12-9 19-49 107-68 216t-19 244 19 244 68 216q56 122 83 161 63 91 179 127l6 2q64 18 98 18 25 0 45-8 32-12 75.5-42.5t43.5-52.5zm159-913q-26 0-45-19t-19-45.5 19-45.5q37-37 37-90 0-52-37-91-19-19-19-45t19-45 45-19 45 19q75 75 75 181t-75 181q-21 19-45 19zm181 181q-27 0-45-19-19-19-19-45t19-45q112-114 112-272t-112-272q-19-19-19-45t19-45 45-19 45 19q150 150 150 362t-150 362q-18 19-45 19zm181 181q-27 0-45-19-19-19-19-45t19-45q90-91 138.5-208t48.5-245-48.5-245-138.5-208q-19-19-19-45t19-45 45-19 45 19q109 109 167 249t58 294-58 294-167 249q-18 19-45 19z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/volume-down.svg b/img/icons/font-awesome/volume-down.svg
new file mode 100644
index 00000000..0267f9a2
--- /dev/null
+++ b/img/icons/font-awesome/volume-down.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1088 352v1088q0 26-19 45t-45 19-45-19l-333-333h-262q-26 0-45-19t-19-45v-384q0-26 19-45t45-19h262l333-333q19-19 45-19t45 19 19 45zm384 544q0 76-42.5 141.5t-112.5 93.5q-10 5-25 5-26 0-45-18.5t-19-45.5q0-21 12-35.5t29-25 34-23 29-36 12-56.5-12-56.5-29-36-34-23-29-25-12-35.5q0-27 19-45.5t45-18.5q15 0 25 5 70 27 112.5 93t42.5 142z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/volume-off.svg b/img/icons/font-awesome/volume-off.svg
new file mode 100644
index 00000000..53ea7694
--- /dev/null
+++ b/img/icons/font-awesome/volume-off.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1280 352v1088q0 26-19 45t-45 19-45-19l-333-333h-262q-26 0-45-19t-19-45v-384q0-26 19-45t45-19h262l333-333q19-19 45-19t45 19 19 45z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/volume-up.svg b/img/icons/font-awesome/volume-up.svg
new file mode 100644
index 00000000..138fc693
--- /dev/null
+++ b/img/icons/font-awesome/volume-up.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M832 352v1088q0 26-19 45t-45 19-45-19l-333-333h-262q-26 0-45-19t-19-45v-384q0-26 19-45t45-19h262l333-333q19-19 45-19t45 19 19 45zm384 544q0 76-42.5 141.5t-112.5 93.5q-10 5-25 5-26 0-45-18.5t-19-45.5q0-21 12-35.5t29-25 34-23 29-36 12-56.5-12-56.5-29-36-34-23-29-25-12-35.5q0-27 19-45.5t45-18.5q15 0 25 5 70 27 112.5 93t42.5 142zm256 0q0 153-85 282.5t-225 188.5q-13 5-25 5-27 0-46-19t-19-45q0-39 39-59 56-29 76-44 74-54 115.5-135.5t41.5-173.5-41.5-173.5-115.5-135.5q-20-15-76-44-39-20-39-59 0-26 19-45t45-19q13 0 26 5 140 59 225 188.5t85 282.5zm256 0q0 230-127 422.5t-338 283.5q-13 5-26 5-26 0-45-19t-19-45q0-36 39-59 7-4 22.5-10.5t22.5-10.5q46-25 82-51 123-91 192-227t69-289-69-289-192-227q-36-26-82-51-7-4-22.5-10.5t-22.5-10.5q-39-23-39-59 0-26 19-45t45-19q13 0 26 5 211 91 338 283.5t127 422.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/warning.svg b/img/icons/font-awesome/warning.svg
new file mode 100644
index 00000000..56e26986
--- /dev/null
+++ b/img/icons/font-awesome/warning.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1375v-190q0-14-9.5-23.5t-22.5-9.5h-192q-13 0-22.5 9.5t-9.5 23.5v190q0 14 9.5 23.5t22.5 9.5h192q13 0 22.5-9.5t9.5-23.5zm-2-374l18-459q0-12-10-19-13-11-24-11h-220q-11 0-24 11-10 7-10 21l17 457q0 10 10 16.5t24 6.5h185q14 0 23.5-6.5t10.5-16.5zm-14-934l768 1408q35 63-2 126-17 29-46.5 46t-63.5 17h-1536q-34 0-63.5-17t-46.5-46q-37-63-2-126l768-1408q17-31 47-49t65-18 65 18 47 49z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/wechat.svg b/img/icons/font-awesome/wechat.svg
new file mode 100644
index 00000000..e9bbab45
--- /dev/null
+++ b/img/icons/font-awesome/wechat.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M580 461q0-41-25-66t-66-25q-43 0-76 25.5t-33 65.5q0 39 33 64.5t76 25.5q41 0 66-24.5t25-65.5zm743 507q0-28-25.5-50t-65.5-22q-27 0-49.5 22.5t-22.5 49.5q0 28 22.5 50.5t49.5 22.5q40 0 65.5-22t25.5-51zm-236-507q0-41-24.5-66t-65.5-25q-43 0-76 25.5t-33 65.5q0 39 33 64.5t76 25.5q41 0 65.5-24.5t24.5-65.5zm635 507q0-28-26-50t-65-22q-27 0-49.5 22.5t-22.5 49.5q0 28 22.5 50.5t49.5 22.5q39 0 65-22t26-51zm-266-397q-31-4-70-4-169 0-311 77t-223.5 208.5-81.5 287.5q0 78 23 152-35 3-68 3-26 0-50-1.5t-55-6.5-44.5-7-54.5-10.5-50-10.5l-253 127 72-218q-290-203-290-490 0-169 97.5-311t264-223.5 363.5-81.5q176 0 332.5 66t262 182.5 136.5 260.5zm592 561q0 117-68.5 223.5t-185.5 193.5l55 181-199-109q-150 37-218 37-169 0-311-70.5t-223.5-191.5-81.5-264 81.5-264 223.5-191.5 311-70.5q161 0 303 70.5t227.5 192 85.5 263.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/weibo.svg b/img/icons/font-awesome/weibo.svg
new file mode 100644
index 00000000..a3f61980
--- /dev/null
+++ b/img/icons/font-awesome/weibo.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M675 1284q21-34 11-69t-45-50q-34-14-73-1t-60 46q-22 34-13 68.5t43 50.5 74.5 2.5 62.5-47.5zm94-121q8-13 3.5-26.5t-17.5-18.5q-14-5-28.5.5t-21.5 18.5q-17 31 13 45 14 5 29-.5t22-18.5zm174 107q-45 102-158 150t-224 12q-107-34-147.5-126.5t6.5-187.5q47-93 151.5-139t210.5-19q111 29 158.5 119.5t2.5 190.5zm312-160q-9-96-89-170t-208.5-109-274.5-21q-223 23-369.5 141.5t-132.5 264.5q9 96 89 170t208.5 109 274.5 21q223-23 369.5-141.5t132.5-264.5zm308 4q0 68-37 139.5t-109 137-168.5 117.5-226 83-270.5 31-275-33.5-240.5-93-171.5-151-65-199.5q0-115 69.5-245t197.5-258q169-169 341.5-236t246.5 7q65 64 20 209-4 14-1 20t10 7 14.5-.5 13.5-3.5l6-2q139-59 246-59t153 61q45 63 0 178-2 13-4.5 20t4.5 12.5 12 7.5 17 6q57 18 103 47t80 81.5 34 116.5zm-74-624q42 47 54.5 108.5t-6.5 117.5q-8 23-29.5 34t-44.5 4q-23-8-34-29.5t-4-44.5q20-63-24-111t-107-35q-24 5-45-8t-25-37q-5-24 8-44.5t37-25.5q60-13 119 5.5t101 65.5zm181-163q87 96 112.5 222.5t-13.5 241.5q-9 27-34 40t-52 4-40-34-5-52q28-82 10-172t-80-158q-62-69-148-95.5t-173-8.5q-28 6-52-9.5t-30-43.5 9.5-51.5 43.5-29.5q123-26 244 11.5t208 134.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/weixin.svg b/img/icons/font-awesome/weixin.svg
new file mode 100644
index 00000000..e9bbab45
--- /dev/null
+++ b/img/icons/font-awesome/weixin.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M580 461q0-41-25-66t-66-25q-43 0-76 25.5t-33 65.5q0 39 33 64.5t76 25.5q41 0 66-24.5t25-65.5zm743 507q0-28-25.5-50t-65.5-22q-27 0-49.5 22.5t-22.5 49.5q0 28 22.5 50.5t49.5 22.5q40 0 65.5-22t25.5-51zm-236-507q0-41-24.5-66t-65.5-25q-43 0-76 25.5t-33 65.5q0 39 33 64.5t76 25.5q41 0 65.5-24.5t24.5-65.5zm635 507q0-28-26-50t-65-22q-27 0-49.5 22.5t-22.5 49.5q0 28 22.5 50.5t49.5 22.5q39 0 65-22t26-51zm-266-397q-31-4-70-4-169 0-311 77t-223.5 208.5-81.5 287.5q0 78 23 152-35 3-68 3-26 0-50-1.5t-55-6.5-44.5-7-54.5-10.5-50-10.5l-253 127 72-218q-290-203-290-490 0-169 97.5-311t264-223.5 363.5-81.5q176 0 332.5 66t262 182.5 136.5 260.5zm592 561q0 117-68.5 223.5t-185.5 193.5l55 181-199-109q-150 37-218 37-169 0-311-70.5t-223.5-191.5-81.5-264 81.5-264 223.5-191.5 311-70.5q161 0 303 70.5t227.5 192 85.5 263.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/whatsapp.svg b/img/icons/font-awesome/whatsapp.svg
new file mode 100644
index 00000000..e5fda532
--- /dev/null
+++ b/img/icons/font-awesome/whatsapp.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1113 974q13 0 97.5 44t89.5 53q2 5 2 15 0 33-17 76-16 39-71 65.5t-102 26.5q-57 0-190-62-98-45-170-118t-148-185q-72-107-71-194v-8q3-91 74-158 24-22 52-22 6 0 18 1.5t19 1.5q19 0 26.5 6.5t15.5 27.5q8 20 33 88t25 75q0 21-34.5 57.5t-34.5 46.5q0 7 5 15 34 73 102 137 56 53 151 101 12 7 22 7 15 0 54-48.5t52-48.5zm-203 530q127 0 243.5-50t200.5-134 134-200.5 50-243.5-50-243.5-134-200.5-200.5-134-243.5-50-243.5 50-200.5 134-134 200.5-50 243.5q0 203 120 368l-79 233 242-77q158 104 345 104zm0-1382q153 0 292.5 60t240.5 161 161 240.5 60 292.5-60 292.5-161 240.5-240.5 161-292.5 60q-195 0-365-94l-417 134 136-405q-108-178-108-389 0-153 60-292.5t161-240.5 240.5-161 292.5-60z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/wheelchair-alt.svg b/img/icons/font-awesome/wheelchair-alt.svg
new file mode 100644
index 00000000..cc7ba56a
--- /dev/null
+++ b/img/icons/font-awesome/wheelchair-alt.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1566 813q34 35 29 82l-44 551q-4 42-34.5 70t-71.5 28q-6 0-9-1-44-3-72.5-36.5t-25.5-77.5l35-429-143 8q55 113 55 240 0 216-148 372l-137-137q91-101 91-235 0-145-102.5-248t-247.5-103q-134 0-236 92l-137-138q120-114 284-141l264-300-149-87-181 161q-33 30-77 27.5t-73-35.5-26.5-77 34.5-73l239-213q26-23 60-26.5t64 14.5l488 283q36 21 48 68 17 67-26 117l-205 232 371-20q49-3 83 32zm-198-457q-74 0-126-52t-52-126 52-126 126-52 126.5 52 52.5 126-52.5 126-126.5 52zm-627 1242q106 0 196-61l139 139q-146 116-335 116-148 0-273.5-73t-198.5-198-73-273q0-188 116-336l139 139q-60 88-60 197 0 145 102.5 247.5t247.5 102.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/wheelchair.svg b/img/icons/font-awesome/wheelchair.svg
new file mode 100644
index 00000000..8a88ce7f
--- /dev/null
+++ b/img/icons/font-awesome/wheelchair.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1087 1187l102 204q-58 179-210 290t-339 111q-156 0-288.5-77.5t-210-210-77.5-288.5q0-181 104.5-330t274.5-211l17 131q-122 54-195 165.5t-73 244.5q0 185 131.5 316.5t316.5 131.5q126 0 232.5-65t165-175.5 49.5-236.5zm548 100l58 114-256 128q-13 7-29 7-40 0-57-35l-239-477h-472q-24 0-42.5-16.5t-21.5-40.5l-96-779q-2-17 6-42 14-51 57-82.5t97-31.5q66 0 113 47t47 113q0 69-52 117.5t-120 41.5l37 289h423v128h-407l16 128h455q40 0 57 35l228 455z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/wifi.svg b/img/icons/font-awesome/wifi.svg
new file mode 100644
index 00000000..42fdc06e
--- /dev/null
+++ b/img/icons/font-awesome/wifi.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1024 1523q-20 0-93-73.5t-73-93.5q0-32 62.5-54t103.5-22 103.5 22 62.5 54q0 20-73 93.5t-93 73.5zm270-271q-2 0-40-25t-101.5-50-128.5-25-128.5 25-101 50-40.5 25q-18 0-93.5-75t-75.5-93q0-13 10-23 78-77 196-121t233-44 233 44 196 121q10 10 10 23 0 18-75.5 93t-93.5 75zm273-272q-11 0-23-8-136-105-252-154.5t-268-49.5q-85 0-170.5 22t-149 53-113.5 62-79 53-31 22q-17 0-92-75t-75-93q0-12 10-22 132-132 320-205t380-73 380 73 320 205q10 10 10 22 0 18-75 93t-92 75zm271-271q-11 0-22-9-179-157-371.5-236.5t-420.5-79.5-420.5 79.5-371.5 236.5q-11 9-22 9-17 0-92.5-75t-75.5-93q0-13 10-23 187-186 445-288t527-102 527 102 445 288q10 10 10 23 0 18-75.5 93t-92.5 75z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/wikipedia-w.svg b/img/icons/font-awesome/wikipedia-w.svg
new file mode 100644
index 00000000..5cab3666
--- /dev/null
+++ b/img/icons/font-awesome/wikipedia-w.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2304" height="1792" viewBox="0 0 2304 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1494 1639l-295-695q-25 49-158.5 305.5t-198.5 389.5q-1 1-27.5.5t-26.5-1.5q-82-193-255.5-587t-259.5-596q-21-50-66.5-107.5t-103.5-100.5-102-43q0-5-.5-24t-.5-27h583v50q-39 2-79.5 16t-66.5 43-10 64q26 59 216.5 499t235.5 540q31-61 140-266.5t131-247.5q-19-39-126-281t-136-295q-38-69-201-71v-50l513 1v47q-60 2-93.5 25t-12.5 69q33 70 87 189.5t86 187.5q110-214 173-363 24-55-10-79.5t-129-26.5q1-7 1-25v-24q64 0 170.5-.5t180-1 92.5-.5v49q-62 2-119 33t-90 81l-213 442q13 33 127.5 290t121.5 274l441-1017q-14-38-49.5-62.5t-65-31.5-55.5-8v-50l460 4 1 2-1 44q-139 4-201 145-526 1216-559 1291h-49z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/window-close-o.svg b/img/icons/font-awesome/window-close-o.svg
new file mode 100644
index 00000000..374535cb
--- /dev/null
+++ b/img/icons/font-awesome/window-close-o.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1257 1111l-146 146q-10 10-23 10t-23-10l-169-169-169 169q-10 10-23 10t-23-10l-146-146q-10-10-10-23t10-23l169-169-169-169q-10-10-10-23t10-23l146-146q10-10 23-10t23 10l169 169 169-169q10-10 23-10t23 10l146 146q10 10 10 23t-10 23l-169 169 169 169q10 10 10 23t-10 23zm-1001 297h1280v-1024h-1280v1024zm1536-1120v1216q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1472q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/window-close.svg b/img/icons/font-awesome/window-close.svg
new file mode 100644
index 00000000..83a72532
--- /dev/null
+++ b/img/icons/font-awesome/window-close.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1175 1321l146-146q10-10 10-23t-10-23l-233-233 233-233q10-10 10-23t-10-23l-146-146q-10-10-23-10t-23 10l-233 233-233-233q-10-10-23-10t-23 10l-146 146q-10 10-10 23t10 23l233 233-233 233q-10 10-10 23t10 23l146 146q10 10 23 10t23-10l233-233 233 233q10 10 23 10t23-10zm617-1033v1216q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1472q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/window-maximize.svg b/img/icons/font-awesome/window-maximize.svg
new file mode 100644
index 00000000..8b3cf497
--- /dev/null
+++ b/img/icons/font-awesome/window-maximize.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 1408h1280v-768h-1280v768zm1536-1120v1216q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1472q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/window-minimize.svg b/img/icons/font-awesome/window-minimize.svg
new file mode 100644
index 00000000..88279f5a
--- /dev/null
+++ b/img/icons/font-awesome/window-minimize.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 1312v192q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-192q0-66 47-113t113-47h1472q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/window-restore.svg b/img/icons/font-awesome/window-restore.svg
new file mode 100644
index 00000000..55c8b43e
--- /dev/null
+++ b/img/icons/font-awesome/window-restore.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="2048" height="1792" viewBox="0 0 2048 1792" xmlns="http://www.w3.org/2000/svg"><path d="M256 1536h768v-512h-768v512zm1024-512h512v-768h-768v256h96q66 0 113 47t47 113v352zm768-864v960q0 66-47 113t-113 47h-608v352q0 66-47 113t-113 47h-960q-66 0-113-47t-47-113v-960q0-66 47-113t113-47h608v-352q0-66 47-113t113-47h960q66 0 113 47t47 113z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/windows.svg b/img/icons/font-awesome/windows.svg
new file mode 100644
index 00000000..7b36f100
--- /dev/null
+++ b/img/icons/font-awesome/windows.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M746 1006v651l-682-94v-557h682zm0-743v659h-682v-565zm982 743v786l-907-125v-661h907zm0-878v794h-907v-669z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/won.svg b/img/icons/font-awesome/won.svg
new file mode 100644
index 00000000..8167b53f
--- /dev/null
+++ b/img/icons/font-awesome/won.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M514 1195l81-299h-159l75 300q1 1 1 3t1 3q0-1 .5-3.5t.5-3.5zm116-427l35-128h-292l32 128h225zm192 0h139l-35-128h-70zm449 428l78-300h-162l81 299q0 1 .5 3.5t1.5 3.5q0-1 .5-3t.5-3zm111-428l33-128h-297l34 128h230zm410 32v64q0 14-9 23t-23 9h-213l-164 616q-7 24-31 24h-159q-24 0-31-24l-166-616h-209l-167 616q-7 24-31 24h-159q-11 0-19.5-7t-10.5-17l-160-616h-208q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h175l-33-128h-142q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h109l-89-344q-5-15 5-28 10-12 26-12h137q26 0 31 24l90 360h359l97-360q7-24 31-24h126q24 0 31 24l98 360h365l93-360q5-24 31-24h137q16 0 26 12 10 13 5 28l-91 344h111q14 0 23 9t9 23v64q0 14-9 23t-23 9h-145l-34 128h179q14 0 23 9t9 23z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/wordpress.svg b/img/icons/font-awesome/wordpress.svg
new file mode 100644
index 00000000..f97ac205
--- /dev/null
+++ b/img/icons/font-awesome/wordpress.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M127 896q0-163 67-313l367 1005q-196-95-315-281t-119-411zm1288-39q0 19-2.5 38.5t-10 49.5-11.5 44-17.5 59-17.5 58l-76 256-278-826q46-3 88-8 19-2 26-18.5t-2.5-31-28.5-13.5l-205 10q-75-1-202-10-12-1-20.5 5t-11.5 15-1.5 18.5 9 16.5 19.5 8l80 8 120 328-168 504-280-832q46-3 88-8 19-2 26-18.5t-2.5-31-28.5-13.5l-205 10q-7 0-23-.5t-26-.5q105-160 274.5-253.5t367.5-93.5q147 0 280.5 53t238.5 149h-10q-55 0-92 40.5t-37 95.5q0 12 2 24t4 21.5 8 23 9 21 12 22.5 12.5 21 14.5 24 14 23q63 107 63 212zm-506 106l237 647q1 6 5 11-126 44-255 44-112 0-217-32zm661-436q95 174 95 369 0 209-104 385.5t-279 278.5l235-678q59-169 59-276 0-42-6-79zm-674-527q182 0 348 71t286 191 191 286 71 348-71 348-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71zm0 1751q173 0 331.5-68t273-182.5 182.5-273 68-331.5-68-331.5-182.5-273-273-182.5-331.5-68-331.5 68-273 182.5-182.5 273-68 331.5 68 331.5 182.5 273 273 182.5 331.5 68z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/wpbeginner.svg b/img/icons/font-awesome/wpbeginner.svg
new file mode 100644
index 00000000..cf3fc6f1
--- /dev/null
+++ b/img/icons/font-awesome/wpbeginner.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M384 832h160v-224h-160v224zm837 332v-92q-104 36-243 38-135 1-259.5-46.5t-220.5-122.5l1 96q88 80 212 128.5t272 47.5q129 0 238-49zm-581-332h640v-224h-640v224zm1152-32q0 187-99 352 89 102 89 229 0 157-129.5 268t-313.5 111q-122 0-225-52.5t-161-140.5q-19 1-57 1t-57-1q-58 88-161 140.5t-225 52.5q-184 0-313.5-111t-129.5-268q0-127 89-229-99-165-99-352 0-209 120-385.5t326.5-279.5 449.5-103 449.5 103 326.5 279.5 120 385.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/wpexplorer.svg b/img/icons/font-awesome/wpexplorer.svg
new file mode 100644
index 00000000..852e5e2c
--- /dev/null
+++ b/img/icons/font-awesome/wpexplorer.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M948 1028l163 329h-51l-175-350-171 350h-49l179-374-78-33 21-49 240 102-21 50zm-385-592l304 130-130 304-304-130zm344 185l240 103-103 239-239-102zm281 150l191 81-82 190-190-81zm492 125q0-159-62-304t-167.5-250.5-250.5-167.5-304-62-304 62-250.5 167.5-167.5 250.5-62 304 62 304 167.5 250.5 250.5 167.5 304 62 304-62 250.5-167.5 167.5-250.5 62-304zm112 0q0 182-71 348t-191 286-286 191-348 71-348-71-286-191-191-286-71-348 71-348 191-286 286-191 348-71 348 71 286 191 191 286 71 348z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/wpforms.svg b/img/icons/font-awesome/wpforms.svg
new file mode 100644
index 00000000..9e96ae21
--- /dev/null
+++ b/img/icons/font-awesome/wpforms.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M643 911v128h-252v-128h252zm0-255v127h-252v-127h252zm758 511v128h-341v-128h341zm0-256v128h-672v-128h672zm0-255v127h-672v-127h672zm135 860v-1240q0-8-6-14t-14-6h-32l-378 256-210-171-210 171-378-256h-32q-8 0-14 6t-6 14v1240q0 8 6 14t14 6h1240q8 0 14-6t6-14zm-855-1110l185-150h-406zm430 0l221-150h-406zm553-130v1240q0 62-43 105t-105 43h-1240q-62 0-105-43t-43-105v-1240q0-62 43-105t105-43h1240q62 0 105 43t43 105z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/wrench.svg b/img/icons/font-awesome/wrench.svg
new file mode 100644
index 00000000..b6aa318c
--- /dev/null
+++ b/img/icons/font-awesome/wrench.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M448 1472q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm644-420l-682 682q-37 37-90 37-52 0-91-37l-106-108q-38-36-38-90 0-53 38-91l681-681q39 98 114.5 173.5t173.5 114.5zm634-435q0 39-23 106-47 134-164.5 217.5t-258.5 83.5q-185 0-316.5-131.5t-131.5-316.5 131.5-316.5 316.5-131.5q58 0 121.5 16.5t107.5 46.5q16 11 16 28t-16 28l-293 169v224l193 107q5-3 79-48.5t135.5-81 70.5-35.5q15 0 23.5 10t8.5 25z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/xing-square.svg b/img/icons/font-awesome/xing-square.svg
new file mode 100644
index 00000000..c4f4def7
--- /dev/null
+++ b/img/icons/font-awesome/xing-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M813 765q0-1-126-222-21-34-52-34h-184q-18 0-26 11-7 12 1 29l125 216v1l-196 346q-9 14 0 28 8 13 24 13h185q31 0 50-36zm624-497q-7-12-24-12h-187q-30 0-49 35l-411 729q1 2 262 481 20 35 52 35h184q18 0 25-12 8-13-1-28l-260-476v-1l409-723q8-16 0-28zm227 148v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/xing.svg b/img/icons/font-awesome/xing.svg
new file mode 100644
index 00000000..f2e70004
--- /dev/null
+++ b/img/icons/font-awesome/xing.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M789 667q-10 18-257 456-27 46-65 46h-239q-21 0-31-17t0-36l253-448q1 0 0-1l-161-279q-12-22-1-37 9-15 32-15h239q40 0 66 45zm806-642q11 16 0 37l-528 934v1l336 615q11 20 1 37-10 15-32 15h-239q-42 0-66-45l-339-622q18-32 531-942 25-45 64-45h241q22 0 31 15z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/y-combinator-square.svg b/img/icons/font-awesome/y-combinator-square.svg
new file mode 100644
index 00000000..0340b760
--- /dev/null
+++ b/img/icons/font-awesome/y-combinator-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M937 1004l266-499h-112l-157 312q-24 48-44 92l-42-92-155-312h-120l263 493v324h101v-318zm727-588v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/y-combinator.svg b/img/icons/font-awesome/y-combinator.svg
new file mode 100644
index 00000000..ea9f3d55
--- /dev/null
+++ b/img/icons/font-awesome/y-combinator.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M937 1004l266-499h-112l-157 312q-24 48-44 92l-42-92-155-312h-120l263 493v324h101v-318zm727-876v1536h-1536v-1536h1536z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/yahoo.svg b/img/icons/font-awesome/yahoo.svg
new file mode 100644
index 00000000..612ccb68
--- /dev/null
+++ b/img/icons/font-awesome/yahoo.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M987 957l13 707q-62-11-105-11-41 0-105 11l13-707q-40-69-168.5-295.5t-216.5-374.5-181-287q58 15 108 15 44 0 111-15 63 111 133.5 229.5t167 276.5 138.5 227q37-61 109.5-177.5t117.5-190 105-176 107-189.5q54 14 107 14 56 0 114-14-28 39-60 88.5t-49.5 78.5-56.5 96-49 84q-146 248-353 610z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/yc-square.svg b/img/icons/font-awesome/yc-square.svg
new file mode 100644
index 00000000..0340b760
--- /dev/null
+++ b/img/icons/font-awesome/yc-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M937 1004l266-499h-112l-157 312q-24 48-44 92l-42-92-155-312h-120l263 493v324h101v-318zm727-588v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/yc.svg b/img/icons/font-awesome/yc.svg
new file mode 100644
index 00000000..ea9f3d55
--- /dev/null
+++ b/img/icons/font-awesome/yc.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M937 1004l266-499h-112l-157 312q-24 48-44 92l-42-92-155-312h-120l263 493v324h101v-318zm727-876v1536h-1536v-1536h1536z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/yelp.svg b/img/icons/font-awesome/yelp.svg
new file mode 100644
index 00000000..d7e6889d
--- /dev/null
+++ b/img/icons/font-awesome/yelp.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M901 1319v127q-1 292-6 305-12 32-51 40-54 9-181.5-38t-162.5-89q-13-15-17-36-1-12 4-26 4-10 34-47t181-216q1 0 60-70 15-19 39.5-24.5t49.5 3.5q24 10 37.5 29t12.5 42zm-149-251q-3 55-52 70l-120 39q-275 88-292 88-35-2-54-36-12-25-17-75-8-76 1-166.5t30-124.5 56-32q13 0 202 77 71 29 115 47l84 34q23 9 35.5 30.5t11.5 48.5zm826 297q-7 54-91.5 161t-135.5 127q-37 14-63-7-14-10-184-287l-47-77q-14-21-11.5-46t19.5-46q35-43 83-26 1 1 119 40 203 66 242 79.5t47 20.5q28 22 22 61zm-672-632q5 102-54 122-58 17-114-71l-378-598q-8-35 19-62 41-43 207.5-89.5t224.5-31.5q40 10 49 45 3 18 22 305.5t24 379.5zm662 108q3 39-26 59-15 10-329 86-67 15-91 23l1-2q-23 6-46-4t-37-32q-30-47 0-87 1-1 75-102 125-171 150-204t34-39q28-19 65-2 48 23 123 133.5t81 167.5v3z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/yen.svg b/img/icons/font-awesome/yen.svg
new file mode 100644
index 00000000..a46b2afa
--- /dev/null
+++ b/img/icons/font-awesome/yen.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M985.5 1536h-172q-13 0-22.5-9t-9.5-23v-330h-288q-13 0-22.5-9t-9.5-23v-103q0-13 9.5-22.5t22.5-9.5h288v-85h-288q-13 0-22.5-9t-9.5-23v-104q0-13 9.5-22.5t22.5-9.5h214l-321-578q-8-16 0-32 10-16 28-16h194q19 0 29 18l215 425q19 38 56 125 10-24 30.5-68t27.5-61l191-420q8-19 29-19h191q17 0 27 16 9 14 1 31l-313 579h215q13 0 22.5 9.5t9.5 22.5v104q0 14-9.5 23t-22.5 9h-290v85h290q13 0 22.5 9.5t9.5 22.5v103q0 14-9.5 23t-22.5 9h-290v330q0 13-9.5 22.5t-22.5 9.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/yoast.svg b/img/icons/font-awesome/yoast.svg
new file mode 100644
index 00000000..7169780c
--- /dev/null
+++ b/img/icons/font-awesome/yoast.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M403 218h691l-26 72h-665q-110 0-188.5 79t-78.5 189v771q0 95 60.5 169.5t153.5 93.5q23 5 98 5v72h-45q-140 0-239.5-100t-99.5-240v-771q0-140 99.5-240t239.5-100zm851-218h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106l-285-733h228l187 585zm474 558v1111h-795q37-55 45-73h678v-1038q0-85-49.5-155t-129.5-99l25-67q101 34 163.5 123.5t62.5 197.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/youtube-play.svg b/img/icons/font-awesome/youtube-play.svg
new file mode 100644
index 00000000..945a5763
--- /dev/null
+++ b/img/icons/font-awesome/youtube-play.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M711 1128l484-250-484-253v503zm185-862q168 0 324.5 4.5t229.5 9.5l73 4q1 0 17 1.5t23 3 23.5 4.5 28.5 8 28 13 31 19.5 29 26.5q6 6 15.5 18.5t29 58.5 26.5 101q8 64 12.5 136.5t5.5 113.5v176q1 145-18 290-7 55-25 99.5t-32 61.5l-14 17q-14 15-29 26.5t-31 19-28 12.5-28.5 8-24 4.5-23 3-16.5 1.5q-251 19-627 19-207-2-359.5-6.5t-200.5-7.5l-49-4-36-4q-36-5-54.5-10t-51-21-56.5-41q-6-6-15.5-18.5t-29-58.5-26.5-101q-8-64-12.5-136.5t-5.5-113.5v-176q-1-145 18-290 7-55 25-99.5t32-61.5l14-17q14-15 29-26.5t31-19.5 28-13 28.5-8 23.5-4.5 23-3 17-1.5q251-18 627-18z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/youtube-square.svg b/img/icons/font-awesome/youtube-square.svg
new file mode 100644
index 00000000..c6024aa4
--- /dev/null
+++ b/img/icons/font-awesome/youtube-square.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1047 1303v-157q0-50-29-50-17 0-33 16v224q16 16 33 16 29 0 29-49zm184-122h66v-34q0-51-33-51t-33 51v34zm-571-266v70h-80v423h-74v-423h-78v-70h232zm201 126v367h-67v-40q-39 45-76 45-33 0-42-28-6-17-6-54v-290h66v270q0 24 1 26 1 15 15 15 20 0 42-31v-280h67zm252 111v146q0 52-7 73-12 42-53 42-35 0-68-41v36h-67v-493h67v161q32-40 68-40 41 0 53 42 7 21 7 74zm251 129v9q0 29-2 43-3 22-15 40-27 40-80 40-52 0-81-38-21-27-21-86v-129q0-59 20-86 29-38 80-38t78 38q21 29 21 86v76h-133v65q0 51 34 51 24 0 30-26 0-1 .5-7t.5-16.5v-21.5h68zm-451-824v156q0 51-32 51t-32-51v-156q0-52 32-52t32 52zm533 713q0-177-19-260-10-44-43-73.5t-76-34.5q-136-15-412-15-275 0-411 15-44 5-76.5 34.5t-42.5 73.5q-20 87-20 260 0 176 20 260 10 43 42.5 73t75.5 35q137 15 412 15t412-15q43-5 75.5-35t42.5-73q20-84 20-260zm-755-651l90-296h-75l-51 195-53-195h-78q7 23 23 69l24 69q35 103 46 158v201h74v-201zm289 81v-130q0-58-21-87-29-38-78-38-51 0-78 38-21 29-21 87v130q0 58 21 87 27 38 78 38 49 0 78-38 21-27 21-87zm181 120h67v-370h-67v283q-22 31-42 31-15 0-16-16-1-2-1-26v-272h-67v293q0 37 6 55 11 27 43 27 36 0 77-45v40zm503-304v960q0 119-84.5 203.5t-203.5 84.5h-960q-119 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5 84.5t84.5 203.5z"/></svg> \ No newline at end of file
diff --git a/img/icons/font-awesome/youtube.svg b/img/icons/font-awesome/youtube.svg
new file mode 100644
index 00000000..0e524f5e
--- /dev/null
+++ b/img/icons/font-awesome/youtube.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1099 1244v211q0 67-39 67-23 0-45-22v-301q22-22 45-22 39 0 39 67zm338 1v46h-90v-46q0-68 45-68t45 68zm-966-218h107v-94h-312v94h105v569h100v-569zm288 569h89v-494h-89v378q-30 42-57 42-18 0-21-21-1-3-1-35v-364h-89v391q0 49 8 73 12 37 58 37 48 0 102-61v54zm429-148v-197q0-73-9-99-17-56-71-56-50 0-93 54v-217h-89v663h89v-48q45 55 93 55 54 0 71-55 9-27 9-100zm338-10v-13h-91q0 51-2 61-7 36-40 36-46 0-46-69v-87h179v-103q0-79-27-116-39-51-106-51-68 0-107 51-28 37-28 116v173q0 79 29 116 39 51 108 51 72 0 108-53 18-27 21-54 2-9 2-58zm-608-913v-210q0-69-43-69t-43 69v210q0 70 43 70t43-70zm719 751q0 234-26 350-14 59-58 99t-102 46q-184 21-555 21t-555-21q-58-6-102.5-46t-57.5-99q-26-112-26-350 0-234 26-350 14-59 58-99t103-47q183-20 554-20t555 20q58 7 102.5 47t57.5 99q26 112 26 350zm-998-1276h102l-121 399v271h-100v-271q-14-74-61-212-37-103-65-187h106l71 263zm370 333v175q0 81-28 118-38 51-106 51-67 0-105-51-28-38-28-118v-175q0-80 28-117 38-51 105-51 68 0 106 51 28 37 28 117zm335-162v499h-91v-55q-53 62-103 62-46 0-59-37-8-24-8-75v-394h91v367q0 33 1 35 3 22 21 22 27 0 57-43v-381h91z"/></svg> \ No newline at end of file
diff --git a/js/passman.min.js b/js/passman.min.js
index 9ba6bd56..e922b2a4 100644
--- a/js/passman.min.js
+++ b/js/passman.min.js
@@ -1,4 +1,4 @@
-/*! Passman 2017-07-30 */
+/*! Passman 2018-12-19 */
function _a1(b,a){this.count=b,this._fc=a,this.__defineGetter__("Count",function(){return this.count}),this.__defineGetter__("_dm",function(){return this._fc})}function _a2(a,c,b){this._bm=a,b?this._do=new Array(c,b):this._do=new Array(c),this.__defineGetter__("_bo",function(){return this._bm}),this.__defineGetter__("_dn",function(){return this._bm*this._fo}),this.__defineGetter__("_fo",function(){for(var e=0,d=0;d<this._do.length;d++)e+=this._do[d].length;return e}),this._fb=function(){return this._do}}function _a3(k,l,h,g,f,e){this._bs=k,this._ar=l,this._do=new Array(h,g,f,e);for(var j=0,b=h._bo,a=h._fb(),d=0;d<a.length;d++){var c=a[d];j+=c.Count*(c._dm+b)}this._br=j,this.__defineGetter__("_fd",function(){return this._bs}),this.__defineGetter__("_as",function(){return this._ar}),this.__defineGetter__("_dp",function(){return this._br}),this.__defineGetter__("_cr",function(){return 17+4*this._bs}),this._aq=function(){var r=this._cr,o=new _ac(r);o._bq(0,0,9,9),o._bq(r-8,0,8,9),o._bq(0,r-8,9,8);for(var n=this._ar.length,m=0;m<n;m++)for(var q=this._ar[m]-2,s=0;s<n;s++)0==m&&(0==s||s==n-1)||m==n-1&&0==s||o._bq(this._ar[s]-2,q,5,5);return o._bq(6,9,1,r-17),o._bq(9,6,r-17,1),this._bs>6&&(o._bq(r-11,0,3,6),o._bq(0,r-11,6,3)),o},this._bu=function(i){return this._do[i.ordinal()]}}function _ay(){return new Array(new _a3(1,new Array,new _a2(7,new _a1(1,19)),new _a2(10,new _a1(1,16)),new _a2(13,new _a1(1,13)),new _a2(17,new _a1(1,9))),new _a3(2,new Array(6,18),new _a2(10,new _a1(1,34)),new _a2(16,new _a1(1,28)),new _a2(22,new _a1(1,22)),new _a2(28,new _a1(1,16))),new _a3(3,new Array(6,22),new _a2(15,new _a1(1,55)),new _a2(26,new _a1(1,44)),new _a2(18,new _a1(2,17)),new _a2(22,new _a1(2,13))),new _a3(4,new Array(6,26),new _a2(20,new _a1(1,80)),new _a2(18,new _a1(2,32)),new _a2(26,new _a1(2,24)),new _a2(16,new _a1(4,9))),new _a3(5,new Array(6,30),new _a2(26,new _a1(1,108)),new _a2(24,new _a1(2,43)),new _a2(18,new _a1(2,15),new _a1(2,16)),new _a2(22,new _a1(2,11),new _a1(2,12))),new _a3(6,new Array(6,34),new _a2(18,new _a1(2,68)),new _a2(16,new _a1(4,27)),new _a2(24,new _a1(4,19)),new _a2(28,new _a1(4,15))),new _a3(7,new Array(6,22,38),new _a2(20,new _a1(2,78)),new _a2(18,new _a1(4,31)),new _a2(18,new _a1(2,14),new _a1(4,15)),new _a2(26,new _a1(4,13),new _a1(1,14))),new _a3(8,new Array(6,24,42),new _a2(24,new _a1(2,97)),new _a2(22,new _a1(2,38),new _a1(2,39)),new _a2(22,new _a1(4,18),new _a1(2,19)),new _a2(26,new _a1(4,14),new _a1(2,15))),new _a3(9,new Array(6,26,46),new _a2(30,new _a1(2,116)),new _a2(22,new _a1(3,36),new _a1(2,37)),new _a2(20,new _a1(4,16),new _a1(4,17)),new _a2(24,new _a1(4,12),new _a1(4,13))),new _a3(10,new Array(6,28,50),new _a2(18,new _a1(2,68),new _a1(2,69)),new _a2(26,new _a1(4,43),new _a1(1,44)),new _a2(24,new _a1(6,19),new _a1(2,20)),new _a2(28,new _a1(6,15),new _a1(2,16))),new _a3(11,new Array(6,30,54),new _a2(20,new _a1(4,81)),new _a2(30,new _a1(1,50),new _a1(4,51)),new _a2(28,new _a1(4,22),new _a1(4,23)),new _a2(24,new _a1(3,12),new _a1(8,13))),new _a3(12,new Array(6,32,58),new _a2(24,new _a1(2,92),new _a1(2,93)),new _a2(22,new _a1(6,36),new _a1(2,37)),new _a2(26,new _a1(4,20),new _a1(6,21)),new _a2(28,new _a1(7,14),new _a1(4,15))),new _a3(13,new Array(6,34,62),new _a2(26,new _a1(4,107)),new _a2(22,new _a1(8,37),new _a1(1,38)),new _a2(24,new _a1(8,20),new _a1(4,21)),new _a2(22,new _a1(12,11),new _a1(4,12))),new _a3(14,new Array(6,26,46,66),new _a2(30,new _a1(3,115),new _a1(1,116)),new _a2(24,new _a1(4,40),new _a1(5,41)),new _a2(20,new _a1(11,16),new _a1(5,17)),new _a2(24,new _a1(11,12),new _a1(5,13))),new _a3(15,new Array(6,26,48,70),new _a2(22,new _a1(5,87),new _a1(1,88)),new _a2(24,new _a1(5,41),new _a1(5,42)),new _a2(30,new _a1(5,24),new _a1(7,25)),new _a2(24,new _a1(11,12),new _a1(7,13))),new _a3(16,new Array(6,26,50,74),new _a2(24,new _a1(5,98),new _a1(1,99)),new _a2(28,new _a1(7,45),new _a1(3,46)),new _a2(24,new _a1(15,19),new _a1(2,20)),new _a2(30,new _a1(3,15),new _a1(13,16))),new _a3(17,new Array(6,30,54,78),new _a2(28,new _a1(1,107),new _a1(5,108)),new _a2(28,new _a1(10,46),new _a1(1,47)),new _a2(28,new _a1(1,22),new _a1(15,23)),new _a2(28,new _a1(2,14),new _a1(17,15))),new _a3(18,new Array(6,30,56,82),new _a2(30,new _a1(5,120),new _a1(1,121)),new _a2(26,new _a1(9,43),new _a1(4,44)),new _a2(28,new _a1(17,22),new _a1(1,23)),new _a2(28,new _a1(2,14),new _a1(19,15))),new _a3(19,new Array(6,30,58,86),new _a2(28,new _a1(3,113),new _a1(4,114)),new _a2(26,new _a1(3,44),new _a1(11,45)),new _a2(26,new _a1(17,21),new _a1(4,22)),new _a2(26,new _a1(9,13),new _a1(16,14))),new _a3(20,new Array(6,34,62,90),new _a2(28,new _a1(3,107),new _a1(5,108)),new _a2(26,new _a1(3,41),new _a1(13,42)),new _a2(30,new _a1(15,24),new _a1(5,25)),new _a2(28,new _a1(15,15),new _a1(10,16))),new _a3(21,new Array(6,28,50,72,94),new _a2(28,new _a1(4,116),new _a1(4,117)),new _a2(26,new _a1(17,42)),new _a2(28,new _a1(17,22),new _a1(6,23)),new _a2(30,new _a1(19,16),new _a1(6,17))),new _a3(22,new Array(6,26,50,74,98),new _a2(28,new _a1(2,111),new _a1(7,112)),new _a2(28,new _a1(17,46)),new _a2(30,new _a1(7,24),new _a1(16,25)),new _a2(24,new _a1(34,13))),new _a3(23,new Array(6,30,54,74,102),new _a2(30,new _a1(4,121),new _a1(5,122)),new _a2(28,new _a1(4,47),new _a1(14,48)),new _a2(30,new _a1(11,24),new _a1(14,25)),new _a2(30,new _a1(16,15),new _a1(14,16))),new _a3(24,new Array(6,28,54,80,106),new _a2(30,new _a1(6,117),new _a1(4,118)),new _a2(28,new _a1(6,45),new _a1(14,46)),new _a2(30,new _a1(11,24),new _a1(16,25)),new _a2(30,new _a1(30,16),new _a1(2,17))),new _a3(25,new Array(6,32,58,84,110),new _a2(26,new _a1(8,106),new _a1(4,107)),new _a2(28,new _a1(8,47),new _a1(13,48)),new _a2(30,new _a1(7,24),new _a1(22,25)),new _a2(30,new _a1(22,15),new _a1(13,16))),new _a3(26,new Array(6,30,58,86,114),new _a2(28,new _a1(10,114),new _a1(2,115)),new _a2(28,new _a1(19,46),new _a1(4,47)),new _a2(28,new _a1(28,22),new _a1(6,23)),new _a2(30,new _a1(33,16),new _a1(4,17))),new _a3(27,new Array(6,34,62,90,118),new _a2(30,new _a1(8,122),new _a1(4,123)),new _a2(28,new _a1(22,45),new _a1(3,46)),new _a2(30,new _a1(8,23),new _a1(26,24)),new _a2(30,new _a1(12,15),new _a1(28,16))),new _a3(28,new Array(6,26,50,74,98,122),new _a2(30,new _a1(3,117),new _a1(10,118)),new _a2(28,new _a1(3,45),new _a1(23,46)),new _a2(30,new _a1(4,24),new _a1(31,25)),new _a2(30,new _a1(11,15),new _a1(31,16))),new _a3(29,new Array(6,30,54,78,102,126),new _a2(30,new _a1(7,116),new _a1(7,117)),new _a2(28,new _a1(21,45),new _a1(7,46)),new _a2(30,new _a1(1,23),new _a1(37,24)),new _a2(30,new _a1(19,15),new _a1(26,16))),new _a3(30,new Array(6,26,52,78,104,130),new _a2(30,new _a1(5,115),new _a1(10,116)),new _a2(28,new _a1(19,47),new _a1(10,48)),new _a2(30,new _a1(15,24),new _a1(25,25)),new _a2(30,new _a1(23,15),new _a1(25,16))),new _a3(31,new Array(6,30,56,82,108,134),new _a2(30,new _a1(13,115),new _a1(3,116)),new _a2(28,new _a1(2,46),new _a1(29,47)),new _a2(30,new _a1(42,24),new _a1(1,25)),new _a2(30,new _a1(23,15),new _a1(28,16))),new _a3(32,new Array(6,34,60,86,112,138),new _a2(30,new _a1(17,115)),new _a2(28,new _a1(10,46),new _a1(23,47)),new _a2(30,new _a1(10,24),new _a1(35,25)),new _a2(30,new _a1(19,15),new _a1(35,16))),new _a3(33,new Array(6,30,58,86,114,142),new _a2(30,new _a1(17,115),new _a1(1,116)),new _a2(28,new _a1(14,46),new _a1(21,47)),new _a2(30,new _a1(29,24),new _a1(19,25)),new _a2(30,new _a1(11,15),new _a1(46,16))),new _a3(34,new Array(6,34,62,90,118,146),new _a2(30,new _a1(13,115),new _a1(6,116)),new _a2(28,new _a1(14,46),new _a1(23,47)),new _a2(30,new _a1(44,24),new _a1(7,25)),new _a2(30,new _a1(59,16),new _a1(1,17))),new _a3(35,new Array(6,30,54,78,102,126,150),new _a2(30,new _a1(12,121),new _a1(7,122)),new _a2(28,new _a1(12,47),new _a1(26,48)),new _a2(30,new _a1(39,24),new _a1(14,25)),new _a2(30,new _a1(22,15),new _a1(41,16))),new _a3(36,new Array(6,24,50,76,102,128,154),new _a2(30,new _a1(6,121),new _a1(14,122)),new _a2(28,new _a1(6,47),new _a1(34,48)),new _a2(30,new _a1(46,24),new _a1(10,25)),new _a2(30,new _a1(2,15),new _a1(64,16))),new _a3(37,new Array(6,28,54,80,106,132,158),new _a2(30,new _a1(17,122),new _a1(4,123)),new _a2(28,new _a1(29,46),new _a1(14,47)),new _a2(30,new _a1(49,24),new _a1(10,25)),new _a2(30,new _a1(24,15),new _a1(46,16))),new _a3(38,new Array(6,32,58,84,110,136,162),new _a2(30,new _a1(4,122),new _a1(18,123)),new _a2(28,new _a1(13,46),new _a1(32,47)),new _a2(30,new _a1(48,24),new _a1(14,25)),new _a2(30,new _a1(42,15),new _a1(32,16))),new _a3(39,new Array(6,26,54,82,110,138,166),new _a2(30,new _a1(20,117),new _a1(4,118)),new _a2(28,new _a1(40,47),new _a1(7,48)),new _a2(30,new _a1(43,24),new _a1(22,25)),new _a2(30,new _a1(10,15),new _a1(67,16))),new _a3(40,new Array(6,30,58,86,114,142,170),new _a2(30,new _a1(19,118),new _a1(6,119)),new _a2(28,new _a1(18,47),new _a1(31,48)),new _a2(30,new _a1(34,24),new _a1(34,25)),new _a2(30,new _a1(20,15),new _a1(61,16))))}function _ae(i,f,c,h,e,b,g,d,a){this.a11=i,this.a12=h,this.a13=g,this.a21=f,this.a22=e,this.a23=d,this.a31=c,this.a32=b,this.a33=a,this._ad=function(w){for(var t=w.length,A=this.a11,z=this.a12,v=this.a13,r=this.a21,q=this.a22,o=this.a23,m=this.a31,k=this.a32,j=this.a33,n=0;n<t;n+=2){var u=w[n],s=w[n+1],l=v*u+o*s+j;w[n]=(A*u+r*s+m)/l,w[n+1]=(z*u+q*s+k)/l}},this._fp=function(m,k){for(var r=m.length,l=0;l<r;l++){var j=m[l],q=k[l],o=this.a13*j+this.a23*q+this.a33;m[l]=(this.a11*j+this.a21*q+this.a31)/o,k[l]=(this.a12*j+this.a22*q+this.a32)/o}},this._fr=function(){return new _ae(this.a22*this.a33-this.a23*this.a32,this.a23*this.a31-this.a21*this.a33,this.a21*this.a32-this.a22*this.a31,this.a13*this.a32-this.a12*this.a33,this.a11*this.a33-this.a13*this.a31,this.a12*this.a31-this.a11*this.a32,this.a12*this.a23-this.a13*this.a22,this.a13*this.a21-this.a11*this.a23,this.a11*this.a22-this.a12*this.a21)},this.times=function(j){return new _ae(this.a11*j.a11+this.a21*j.a12+this.a31*j.a13,this.a11*j.a21+this.a21*j.a22+this.a31*j.a23,this.a11*j.a31+this.a21*j.a32+this.a31*j.a33,this.a12*j.a11+this.a22*j.a12+this.a32*j.a13,this.a12*j.a21+this.a22*j.a22+this.a32*j.a23,this.a12*j.a31+this.a22*j.a32+this.a32*j.a33,this.a13*j.a11+this.a23*j.a12+this.a33*j.a13,this.a13*j.a21+this.a23*j.a22+this.a33*j.a23,this.a13*j.a31+this.a23*j.a32+this.a33*j.a33)}}function _bg(b,a){this.bits=b,this.points=a}function Detector(a){this.image=a,this._am=null,this._bi=function(m,l,c,b){var d=Math.abs(b-l)>Math.abs(c-m);if(d){var s=m;m=l,l=s,s=c,c=b,b=s}for(var j=Math.abs(c-m),i=Math.abs(b-l),q=-j>>1,v=l<b?1:-1,f=m<c?1:-1,e=0,h=m,g=l;h!=c;h+=f){var u=d?g:h,t=d?h:g;if(1==e?this.image[u+t*qrcode.width]&&e++:this.image[u+t*qrcode.width]||e++,3==e){var o=h-m,n=g-l;return Math.sqrt(o*o+n*n)}if(q+=i,q>0){if(g==b)break;g+=v,q-=j}}var k=c-m,r=b-l;return Math.sqrt(k*k+r*r)},this._bh=function(i,g,h,f){var b=this._bi(i,g,h,f),e=1,d=i-(h-i);d<0?(e=i/(i-d),d=0):d>=qrcode.width&&(e=(qrcode.width-1-i)/(d-i),d=qrcode.width-1);var c=Math.floor(g-(f-g)*e);return e=1,c<0?(e=g/(g-c),c=0):c>=qrcode.height&&(e=(qrcode.height-1-g)/(c-g),c=qrcode.height-1),d=Math.floor(i+(d-i)*e),b+=this._bi(i,g,d,c),b-1},this._bj=function(c,d){var b=this._bh(Math.floor(c.X),Math.floor(c.Y),Math.floor(d.X),Math.floor(d.Y)),e=this._bh(Math.floor(d.X),Math.floor(d.Y),Math.floor(c.X),Math.floor(c.Y));return isNaN(b)?e/7:isNaN(e)?b/7:(b+e)/14},this._bk=function(d,c,b){return(this._bj(d,c)+this._bj(d,b))/2},this.distance=function(c,b){return xDiff=c.X-b.X,yDiff=c.Y-b.Y,Math.sqrt(xDiff*xDiff+yDiff*yDiff)},this._bx=function(g,f,d,e){var b=Math.round(this.distance(g,f)/e),c=Math.round(this.distance(g,d)/e),h=(b+c>>1)+7;switch(3&h){case 0:h++;break;case 2:h--;break;case 3:throw"Error"}return h},this._bl=function(g,f,d,j){var k=Math.floor(j*g),h=Math.max(0,f-k),i=Math.min(qrcode.width-1,f+k);if(i-h<3*g)throw"Error";var b=Math.max(0,d-k),c=Math.min(qrcode.height-1,d+k),e=new _ak(this.image,h,b,i-h,c-b,g,this._am);return e.find()},this.createTransform=function(l,h,k,b,g){var i,f,e,c,j=g-3.5;null!=b?(i=b.X,f=b.Y,e=c=j-3):(i=h.X-l.X+k.X,f=h.Y-l.Y+k.Y,e=c=j);var d=_ae._ag(3.5,3.5,j,3.5,e,c,3.5,j,l.X,l.Y,h.X,h.Y,i,f,k.X,k.Y);return d},this._bz=function(e,b,d){var c=_aa;return c._af(e,d,b)},this._cd=function(r){var j=r._gq,h=r._gs,n=r._gp,d=this._bk(j,h,n);if(d<1)throw"Error";var s=this._bx(j,h,n,d),b=_a3._at(s),k=b._cr-7,l=null;if(b._as.length>0)for(var f=h.X-j.X+n.X,e=h.Y-j.Y+n.Y,c=1-3/k,u=Math.floor(j.X+c*(f-j.X)),t=Math.floor(j.Y+c*(e-j.Y)),q=4;q<=16;q<<=1){l=this._bl(d,u,t,q);break}var o,g=this.createTransform(j,h,n,l,s),m=this._bz(this.image,g,s);return o=null==l?new Array(n,j,h):new Array(n,j,h,l),new _bg(m,o)},this.detect=function(){var b=(new _cc)._ce(this.image);return this._cd(b)}}function _ax(a){this._cf=_cg.forBits(a>>3&3),this._fe=7&a,this.__defineGetter__("_cg",function(){return this._cf}),this.__defineGetter__("_dx",function(){return this._fe}),this.GetHashCode=function(){return this._cf.ordinal()<<3|_fe},this.Equals=function(c){var b=c;return this._cf==b._cf&&this._fe==b._fe}}function _cg(a,c,b){this._ff=a,this.bits=c,this.name=b,this.__defineGetter__("Bits",function(){return this.bits}),this.__defineGetter__("Name",function(){return this.name}),this.ordinal=function(){return this._ff}}function _ac(d,a){if(a||(a=d),d<1||a<1)throw"Both dimensions must be greater than 0";this.width=d,this.height=a;var c=d>>5;0!=(31&d)&&c++,this.rowSize=c,this.bits=new Array(c*a);for(var b=0;b<this.bits.length;b++)this.bits[b]=0;this.__defineGetter__("Width",function(){return this.width}),this.__defineGetter__("Height",function(){return this.height}),this.__defineGetter__("Dimension",function(){if(this.width!=this.height)throw"Can't call getDimension() on a non-square matrix";return this.width}),this._ds=function(e,g){var f=g*this.rowSize+(e>>5);return 0!=(1&_ew(this.bits[f],31&e))},this._dq=function(e,g){var f=g*this.rowSize+(e>>5);this.bits[f]|=1<<(31&e)},this.flip=function(e,g){var f=g*this.rowSize+(e>>5);this.bits[f]^=1<<(31&e)},this.clear=function(){for(var e=this.bits.length,f=0;f<e;f++)this.bits[f]=0},this._bq=function(g,j,f,m){if(j<0||g<0)throw"Left and top must be nonnegative";if(m<1||f<1)throw"Height and width must be at least 1";var l=g+f,e=j+m;if(e>this.height||l>this.width)throw"The region must fit inside the matrix";for(var i=j;i<e;i++)for(var h=i*this.rowSize,k=g;k<l;k++)this.bits[h+(k>>5)]|=1<<(31&k)}}function _dl(a,b){this._dv=a,this._dw=b,this.__defineGetter__("_du",function(){return this._dv}),this.__defineGetter__("Codewords",function(){return this._dw})}function _cl(a){var b=a.Dimension;if(b<21||1!=(3&b))throw"Error _cl";this._au=a,this._cp=null,this._co=null,this._dk=function(d,c,e){return this._au._ds(d,c)?e<<1|1:e<<1},this._cm=function(){if(null!=this._co)return this._co;for(var g=0,e=0;e<6;e++)g=this._dk(e,8,g);g=this._dk(7,8,g),g=this._dk(8,8,g),g=this._dk(8,7,g);for(var c=5;c>=0;c--)g=this._dk(8,c,g);if(this._co=_ax._ci(g),null!=this._co)return this._co;var f=this._au.Dimension;g=0;for(var d=f-8,e=f-1;e>=d;e--)g=this._dk(e,8,g);for(var c=f-7;c<f;c++)g=this._dk(8,c,g);if(this._co=_ax._ci(g),null!=this._co)return this._co;throw"Error _cm"},this._cq=function(){if(null!=this._cp)return this._cp;var h=this._au.Dimension,f=h-17>>2;if(f<=6)return _a3._av(f);for(var g=0,e=h-11,c=5;c>=0;c--)for(var d=h-9;d>=e;d--)g=this._dk(d,c,g);if(this._cp=_a3._aw(g),null!=this._cp&&this._cp._cr==h)return this._cp;g=0;for(var d=5;d>=0;d--)for(var c=h-9;c>=e;c--)g=this._dk(d,c,g);if(this._cp=_a3._aw(g),null!=this._cp&&this._cp._cr==h)return this._cp;throw"Error _cq"},this._gk=function(){var r=this._cm(),o=this._cq(),c=_dx._gl(r._dx),f=this._au.Dimension;c._dj(this._au,f);for(var k=o._aq(),n=!0,s=new Array(o._dp),m=0,q=0,h=0,e=f-1;e>0;e-=2){6==e&&e--;for(var l=0;l<f;l++)for(var g=n?f-1-l:l,d=0;d<2;d++)k._ds(e-d,g)||(h++,q<<=1,this._au._ds(e-d,g)&&(q|=1),8==h&&(s[m++]=q,h=0,q=0));n^=!0}if(m!=o._dp)throw"Error _gk";return s}}function _fg(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(b,a){return 0==(b+a&1)}}function _fh(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(b,a){return 0==(1&b)}}function _fi(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(b,a){return a%3==0}}function _fj(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(b,a){return(b+a)%3==0}}function _fk(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(b,a){return 0==(_ew(b,1)+a/3&1)}}function _fl(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(c,b){var a=c*b;return(1&a)+a%3==0}}function _fm(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(c,b){var a=c*b;return 0==((1&a)+a%3&1)}}function _fn(){this._dj=function(c,d){for(var b=0;b<d;b++)for(var a=0;a<d;a++)this._fw(b,a)&&c.flip(a,b)},this._fw=function(b,a){return 0==((b+a&1)+b*a%3&1)}}function _db(_fa){this._fa=_fa,this.decode=function(received,_fv){for(var poly=new _bp(this._fa,received),_dh=new Array(_fv),i=0;i<_dh.length;i++)_dh[i]=0;for(var _fq=!1,noError=!0,i=0;i<_fv;i++){var eval=poly.evaluateAt(this._fa.exp(_fq?i+1:i));_dh[_dh.length-1-i]=eval,0!=eval&&(noError=!1)}if(!noError)for(var _fu=new _bp(this._fa,_dh),_dg=this._eb(this._fa._ba(_fv,1),_fu,_fv),sigma=_dg[0],omega=_dg[1],_dz=this._ey(sigma),_ea=this._di(omega,_dz,_fq),i=0;i<_dz.length;i++){var position=received.length-1-this._fa.log(_dz[i]);if(position<0)throw"ReedSolomonException Bad error location";received[position]=_az._bd(received[position],_ea[i])}},this._eb=function(a,b,R){if(a._ec<b._ec){var temp=a;a=b,b=temp}for(var rLast=a,r=b,sLast=this._fa.One,s=this._fa.Zero,tLast=this._fa.Zero,t=this._fa.One;r._ec>=Math.floor(R/2);){var rLastLast=rLast,_ga=sLast,_gb=tLast;if(rLast=r,sLast=s,tLast=t,rLast.Zero)throw"r_{i-1} was zero";r=rLastLast;for(var q=this._fa.Zero,_df=rLast._ex(rLast._ec),_fy=this._fa.inverse(_df);r._ec>=rLast._ec&&!r.Zero;){var _fx=r._ec-rLast._ec,scale=this._fa.multiply(r._ex(r._ec),_fy);q=q._bd(this._fa._ba(_fx,scale)),r=r._bd(rLast._dc(_fx,scale))}s=q.multiply1(sLast)._bd(_ga),t=q.multiply1(tLast)._bd(_gb)}var _de=t._ex(0);if(0==_de)throw"ReedSolomonException sigmaTilde(0) was zero";var inverse=this._fa.inverse(_de),sigma=t.multiply2(inverse),omega=r.multiply2(inverse);return new Array(sigma,omega)},this._ey=function(_ez){var _fz=_ez._ec;if(1==_fz)return new Array(_ez._ex(1));for(var result=new Array(_fz),e=0,i=1;i<256&&e<_fz;i++)0==_ez.evaluateAt(i)&&(result[e]=this._fa.inverse(i),e++);if(e!=_fz)throw"Error locator degree does not match number of roots";return result},this._di=function(_fs,_dz,_fq){for(var s=_dz.length,result=new Array(s),i=0;i<s;i++){for(var _gc=this._fa.inverse(_dz[i]),_dr=1,j=0;j<s;j++)i!=j&&(_dr=this._fa.multiply(_dr,_az._bd(1,this._fa.multiply(_dz[j],_gc))));result[i]=this._fa.multiply(_fs.evaluateAt(_gc),this._fa.inverse(_dr)),_fq&&(result[i]=this._fa.multiply(result[i],_gc))}return result}}function _bp(f,e){if(null==e||0==e.length)throw"bad arguments";this._fa=f;var c=e.length;if(c>1&&0==e[0]){for(var d=1;d<c&&0==e[d];)d++;if(d==c)this._dd=f.Zero._dd;else{this._dd=new Array(c-d);for(var b=0;b<this._dd.length;b++)this._dd[b]=0;for(var a=0;a<this._dd.length;a++)this._dd[a]=e[d+a]}}else this._dd=e;this.__defineGetter__("Zero",function(){return 0==this._dd[0]}),this.__defineGetter__("_ec",function(){return this._dd.length-1}),this.__defineGetter__("Coefficients",function(){return this._dd}),this._ex=function(g){return this._dd[this._dd.length-1-g]},this.evaluateAt=function(h){if(0==h)return this._ex(0);var l=this._dd.length;if(1==h){for(var g=0,k=0;k<l;k++)g=_az._bd(g,this._dd[k]);return g}for(var j=this._dd[0],k=1;k<l;k++)j=_az._bd(this._fa.multiply(h,j),this._dd[k]);return j},this._bd=function(g){if(this._fa!=g._fa)throw"GF256Polys do not have same _az _fa";if(this.Zero)return g;if(g.Zero)return this;var o=this._dd,n=g._dd;if(o.length>n.length){var j=o;o=n,n=j}for(var h=new Array(n.length),k=n.length-o.length,m=0;m<k;m++)h[m]=n[m];for(var l=k;l<n.length;l++)h[l]=_az._bd(o[l-k],n[l]);return new _bp(f,h)},this.multiply1=function(o){if(this._fa!=o._fa)throw"GF256Polys do not have same _az _fa";if(this.Zero||o.Zero)return this._fa.Zero;for(var r=this._dd,g=r.length,l=o._dd,n=l.length,q=new Array(g+n-1),m=0;m<g;m++)for(var h=r[m],k=0;k<n;k++)q[m+k]=_az._bd(q[m+k],this._fa.multiply(h,l[k]));return new _bp(this._fa,q)},this.multiply2=function(g){if(0==g)return this._fa.Zero;if(1==g)return this;for(var j=this._dd.length,k=new Array(j),h=0;h<j;h++)k[h]=this._fa.multiply(this._dd[h],g);return new _bp(this._fa,k)},this._dc=function(l,g){if(l<0)throw"bad arguments";if(0==g)return this._fa.Zero;for(var j=this._dd.length,k=new Array(j+l),h=0;h<k.length;h++)k[h]=0;for(var h=0;h<j;h++)k[h]=this._fa.multiply(this._dd[h],g);return new _bp(this._fa,k)},this.divide=function(l){if(this._fa!=l._fa)throw"GF256Polys do not have same _az _fa";if(l.Zero)throw"Divide by 0";for(var j=this._fa.Zero,o=this,g=l._ex(l._ec),n=this._fa.inverse(g);o._ec>=l._ec&&!o.Zero;){var m=o._ec-l._ec,h=this._fa.multiply(o._ex(o._ec),n),i=l._dc(m,h),k=this._fa._ba(m,h);j=j._bd(k),o=o._bd(i)}return new Array(j,o)}}function _az(b){this._gh=new Array(256),this._gi=new Array(256);for(var a=1,e=0;e<256;e++)this._gh[e]=a,a<<=1,a>=256&&(a^=b);for(var e=0;e<255;e++)this._gi[this._gh[e]]=e;var d=new Array(1);d[0]=0,this.zero=new _bp(this,new Array(d));var c=new Array(1);c[0]=1,this.one=new _bp(this,new Array(c)),this.__defineGetter__("Zero",function(){return this.zero}),this.__defineGetter__("One",function(){return this.one}),this._ba=function(j,f){if(j<0)throw"bad arguments";if(0==f)return zero;for(var h=new Array(j+1),g=0;g<h.length;g++)h[g]=0;return h[0]=f,new _bp(this,h)},this.exp=function(f){return this._gh[f]},this.log=function(f){if(0==f)throw"bad arguments";return this._gi[f]},this.inverse=function(f){if(0==f)throw"System.ArithmeticException";return this._gh[255-this._gi[f]]},this.multiply=function(g,f){return 0==g||0==f?0:1==g?f:1==f?g:this._gh[(this._gi[g]+this._gi[f])%255]}}function _ew(a,b){return a>=0?a>>b:(a>>b)+(2<<~b)}function _cz(c,a,b){this.x=c,this.y=a,this.count=1,this._aj=b,this.__defineGetter__("_ei",function(){return this._aj}),this.__defineGetter__("Count",function(){return this.count}),this.__defineGetter__("X",function(){return this.x}),this.__defineGetter__("Y",function(){return this.y}),this._ek=function(){this.count++},this._ev=function(f,e,d){if(Math.abs(e-this.y)<=f&&Math.abs(d-this.x)<=f){var g=Math.abs(f-this._aj);return g<=1||g/this._aj<=1}return!1}}function _es(a){this._go=a[0],this._gu=a[1],this._gr=a[2],this.__defineGetter__("_gp",function(){return this._go}),this.__defineGetter__("_gq",function(){return this._gu}),this.__defineGetter__("_gs",function(){return this._gr})}function _cc(){this.image=null,this._cv=[],this._ge=!1,this._al=new Array(0,0,0,0,0),this._am=null,this.__defineGetter__("_da",function(){return this._al[0]=0,this._al[1]=0,this._al[2]=0,this._al[3]=0,this._al[4]=0,this._al}),this._ao=function(f){for(var b=0,d=0;d<5;d++){var e=f[d];if(0==e)return!1;b+=e}if(b<7)return!1;var c=Math.floor((b<<_el)/7),a=Math.floor(c/2);return Math.abs(c-(f[0]<<_el))<a&&Math.abs(c-(f[1]<<_el))<a&&Math.abs(3*c-(f[2]<<_el))<3*a&&Math.abs(c-(f[3]<<_el))<a&&Math.abs(c-(f[4]<<_el))<a},this._an=function(b,a){return a-b[4]-b[3]-b[2]/2},this._ap=function(a,j,d,g){for(var c=this.image,h=qrcode.height,b=this._da,f=a;f>=0&&c[j+f*qrcode.width];)b[2]++,f--;if(f<0)return NaN;for(;f>=0&&!c[j+f*qrcode.width]&&b[1]<=d;)b[1]++,f--;if(f<0||b[1]>d)return NaN;for(;f>=0&&c[j+f*qrcode.width]&&b[0]<=d;)b[0]++,f--;if(b[0]>d)return NaN;for(f=a+1;f<h&&c[j+f*qrcode.width];)b[2]++,f++;if(f==h)return NaN;for(;f<h&&!c[j+f*qrcode.width]&&b[3]<d;)b[3]++,f++;if(f==h||b[3]>=d)return NaN;for(;f<h&&c[j+f*qrcode.width]&&b[4]<d;)b[4]++,f++;if(b[4]>=d)return NaN;var e=b[0]+b[1]+b[2]+b[3]+b[4];return 5*Math.abs(e-g)>=2*g?NaN:this._ao(b)?this._an(b,f):NaN},this._ej=function(b,a,e,h){for(var d=this.image,i=qrcode.width,c=this._da,g=b;g>=0&&d[g+a*qrcode.width];)c[2]++,g--;if(g<0)return NaN;for(;g>=0&&!d[g+a*qrcode.width]&&c[1]<=e;)c[1]++,g--;if(g<0||c[1]>e)return NaN;for(;g>=0&&d[g+a*qrcode.width]&&c[0]<=e;)c[0]++,g--;if(c[0]>e)return NaN;for(g=b+1;g<i&&d[g+a*qrcode.width];)c[2]++,g++;if(g==i)return NaN;for(;g<i&&!d[g+a*qrcode.width]&&c[3]<e;)c[3]++,g++;if(g==i||c[3]>=e)return NaN;for(;g<i&&d[g+a*qrcode.width]&&c[4]<e;)c[4]++,g++;if(c[4]>=e)return NaN;var f=c[0]+c[1]+c[2]+c[3]+c[4];return 5*Math.abs(f-h)>=h?NaN:this._ao(c)?this._an(c,g):NaN},this._cu=function(c,f,e){var d=c[0]+c[1]+c[2]+c[3]+c[4],n=this._an(c,e),b=this._ap(f,Math.floor(n),c[2],d);if(!isNaN(b)&&(n=this._ej(Math.floor(n),Math.floor(b),c[2],d),!isNaN(n))){for(var l=d/7,m=!1,h=this._cv.length,g=0;g<h;g++){var a=this._cv[g];if(a._ev(l,b,n)){a._ek(),m=!0;break}}if(!m){var k=new _cz(n,b,l);this._cv.push(k),null!=this._am&&this._am._ep(k)}return!0}return!1},this._ee=function(){var a=this._cv.length;if(a<3)throw"Couldn't find enough finder patterns";if(a>3){for(var b=0,c=0;c<a;c++)b+=this._cv[c]._ei;for(var d=b/a,c=0;c<this._cv.length&&this._cv.length>3;c++){var e=this._cv[c];Math.abs(e._ei-d)>.2*d&&(this._cv.remove(c),c--)}}return this._cv.length>3&&this._cv.sort(function(g,f){return g.count>f.count?-1:g.count<f.count?1:0}),new Array(this._cv[0],this._cv[1],this._cv[2])},this._eq=function(){var b=this._cv.length;if(b<=1)return 0;for(var c=null,d=0;d<b;d++){var a=this._cv[d];if(a.Count>=_eg){if(null!=c)return this._ge=!0,Math.floor((Math.abs(c.X-a.X)-Math.abs(c.Y-a.Y))/2);c=a}}return 0},this._cx=function(){for(var g=0,c=0,a=this._cv.length,d=0;d<a;d++){var f=this._cv[d];f.Count>=_eg&&(g++,c+=f._ei)}if(g<3)return!1;for(var e=c/a,b=0,d=0;d<a;d++)f=this._cv[d],b+=Math.abs(f._ei-e);return b<=.05*c},this._ce=function(e){var o=!1;this.image=e;var n=qrcode.height,k=qrcode.width,a=Math.floor(3*n/(4*_eh));(a<_gf||o)&&(a=_gf);for(var g=!1,d=new Array(5),h=a-1;h<n&&!g;h+=a){d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;for(var b=0,f=0;f<k;f++)if(e[f+h*qrcode.width])1==(1&b)&&b++,d[b]++;else if(0==(1&b))if(4==b)if(this._ao(d)){var c=this._cu(d,h,f);if(c)if(a=2,this._ge)g=this._cx();else{var m=this._eq();m>d[2]&&(h+=m-d[2]-a,f=k-1)}else{do f++;while(f<k&&!e[f+h*qrcode.width]);f--}b=0,d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0}else d[0]=d[2],d[1]=d[3],d[2]=d[4],d[3]=1,d[4]=0,b=3;else d[++b]++;else d[b]++;if(this._ao(d)){var c=this._cu(d,h,k);c&&(a=d[0],this._ge&&(g=_cx()))}}var l=this._ee();return qrcode._er(l),new _es(l)}}function _ai(c,a,b){this.x=c,this.y=a,this.count=1,this._aj=b,this.__defineGetter__("_ei",function(){return this._aj}),this.__defineGetter__("Count",function(){return this.count}),this.__defineGetter__("X",function(){return Math.floor(this.x)}),this.__defineGetter__("Y",function(){return Math.floor(this.y)}),this._ek=function(){this.count++},this._ev=function(f,e,d){if(Math.abs(e-this.y)<=f&&Math.abs(d-this.x)<=f){var g=Math.abs(f-this._aj);return g<=1||g/this._aj<=1}return!1}}function _ak(g,c,b,f,a,e,d){this.image=g,this._cv=new Array,this.startX=c,this.startY=b,this.width=f,this.height=a,this._ef=e,this._al=new Array(0,0,0),this._am=d,this._an=function(i,h){return h-i[2]-i[1]/2},this._ao=function(l){for(var k=this._ef,h=k/2,j=0;j<3;j++)if(Math.abs(k-l[j])>=h)return!1;return!0},this._ap=function(h,r,l,o){var k=this.image,q=qrcode.height,j=this._al;j[0]=0,j[1]=0,j[2]=0;for(var n=h;n>=0&&k[r+n*qrcode.width]&&j[1]<=l;)j[1]++,n--;if(n<0||j[1]>l)return NaN;for(;n>=0&&!k[r+n*qrcode.width]&&j[0]<=l;)j[0]++,n--;if(j[0]>l)return NaN;for(n=h+1;n<q&&k[r+n*qrcode.width]&&j[1]<=l;)j[1]++,n++;if(n==q||j[1]>l)return NaN;for(;n<q&&!k[r+n*qrcode.width]&&j[2]<=l;)j[2]++,n++;if(j[2]>l)return NaN;var m=j[0]+j[1]+j[2];return 5*Math.abs(m-o)>=2*o?NaN:this._ao(j)?this._an(j,n):NaN},this._cu=function(l,o,n){var m=l[0]+l[1]+l[2],u=this._an(l,n),k=this._ap(o,Math.floor(u),2*l[1],m);if(!isNaN(k)){for(var t=(l[0]+l[1]+l[2])/3,r=this._cv.length,q=0;q<r;q++){var h=this._cv[q];if(h._ev(t,k,u))return new _ai(u,k,t)}var s=new _ai(u,k,t);this._cv.push(s),null!=this._am&&this._am._ep(s)}return null},this.find=function(){for(var q=this.startX,t=this.height,r=q+f,s=b+(t>>1),m=new Array(0,0,0),k=0;k<t;k++){var o=s+(0==(1&k)?k+1>>1:-(k+1>>1));m[0]=0,m[1]=0,m[2]=0;for(var n=q;n<r&&!g[n+qrcode.width*o];)n++;for(var h=0;n<r;){if(g[n+o*qrcode.width])if(1==h)m[h]++;else if(2==h){if(this._ao(m)){var l=this._cu(m,o,n);if(null!=l)return l}m[0]=m[2],m[1]=1,m[2]=0,h=1}else m[++h]++;else 1==h&&h++,m[h]++;n++}if(this._ao(m)){var l=this._cu(m,o,r);if(null!=l)return l}}if(0!=this._cv.length)return this._cv[0];throw"Couldn't find enough alignment patterns"}}function QRCodeDataBlockReader(c,a,b){this._ed=0,this._cw=7,this.dataLength=0,this.blocks=c,this._en=b,a<=9?this.dataLengthMode=0:a>=10&&a<=26?this.dataLengthMode=1:a>=27&&a<=40&&(this.dataLengthMode=2),this._gd=function(f){var k=0;if(f<this._cw+1){for(var m=0,e=0;e<f;e++)m+=1<<e;return m<<=this._cw-f+1,k=(this.blocks[this._ed]&m)>>this._cw-f+1,this._cw-=f,k}if(f<this._cw+1+8){for(var j=0,e=0;e<this._cw+1;e++)j+=1<<e;return k=(this.blocks[this._ed]&j)<<f-(this._cw+1),this._ed++,k+=this.blocks[this._ed]>>8-(f-(this._cw+1)),this._cw=this._cw-f%8,this._cw<0&&(this._cw=8+this._cw),k}if(f<this._cw+1+16){for(var j=0,h=0,e=0;e<this._cw+1;e++)j+=1<<e;var g=(this.blocks[this._ed]&j)<<f-(this._cw+1);this._ed++;var d=this.blocks[this._ed]<<f-(this._cw+1+8);this._ed++;for(var e=0;e<f-(this._cw+1+8);e++)h+=1<<e;h<<=8-(f-(this._cw+1+8));var l=(this.blocks[this._ed]&h)>>8-(f-(this._cw+1+8));return k=g+d+l,this._cw=this._cw-(f-8)%8,this._cw<0&&(this._cw=8+this._cw),k}return 0},this.NextMode=function(){return this._ed>this.blocks.length-this._en-2?0:this._gd(4)},this.getDataLength=function(d){for(var e=0;;){if(d>>e==1)break;e++}return this._gd(qrcode._eo[this.dataLengthMode][e])},this.getRomanAndFigureString=function(h){var f=h,g=0,j="",d=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":");do if(f>1){g=this._gd(11);var i=Math.floor(g/45),e=g%45;j+=d[i],j+=d[e],f-=2}else 1==f&&(g=this._gd(6),j+=d[g],f-=1);while(f>0);return j},this.getFigureString=function(f){var d=f,e=0,g="";do d>=3?(e=this._gd(10),e<100&&(g+="0"),e<10&&(g+="0"),d-=3):2==d?(e=this._gd(7),e<10&&(g+="0"),d-=2):1==d&&(e=this._gd(4),d-=1),g+=e;while(d>0);return g},this.get8bitByteArray=function(g){var e=g,f=0,d=new Array;do f=this._gd(8),d.push(f),e--;while(e>0);return d},this.getKanjiString=function(j){var g=j,i=0,h="";do{i=_gd(13);var e=i%192,f=i/192,k=(f<<8)+e,d=0;d=k+33088<=40956?k+33088:k+49472,h+=String.fromCharCode(d),g--}while(g>0);return h},this.__defineGetter__("DataByte",function(){for(var g=new Array,e=1,f=2,d=4,n=8;;){var k=this.NextMode();if(0==k){if(g.length>0)break;throw"Empty data block"}if(k!=e&&k!=f&&k!=d&&k!=n)throw"Invalid mode: "+k+" in (block:"+this._ed+" bit:"+this._cw+")";if(dataLength=this.getDataLength(k),dataLength<1)throw"Invalid data length: "+dataLength;switch(k){case e:for(var l=this.getFigureString(dataLength),i=new Array(l.length),h=0;h<l.length;h++)i[h]=l.charCodeAt(h);g.push(i);break;case f:for(var l=this.getRomanAndFigureString(dataLength),i=new Array(l.length),h=0;h<l.length;h++)i[h]=l.charCodeAt(h);g.push(i);break;case d:var m=this.get8bitByteArray(dataLength);g.push(m);break;case n:var l=this.getKanjiString(dataLength);g.push(l)}}return g})}function C_Promise(workload,context){this.parent=context,this.update=null,this.finally=null,this.error_function=null,this.then=function(callback){return this.finally=callback,this},this.progress=function(callback){return this.update=callback,this},this.error=function(callback){return this.error_function=callback,this},this.call_then=function(data){null!==this.finally&&this.finally(data);
},this.call_progress=function(data){null!==this.update&&this.update(data)},this.call_error=function(data){null!==this.error_function&&this.error_function(data)},setTimeout(workload.bind(this),100)}!function(C){function N(a){return function(){var d,b=arguments[0];for(d="["+(a?a+":":"")+b+"] http://errors.angularjs.org/1.5.8/"+(a?a+"/":"")+b,b=1;b<arguments.length;b++){d=d+(1==b?"?":"&")+"p"+(b-1)+"=";var e,c=encodeURIComponent;e=arguments[b],e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e,d+=c(e)}return Error(d)}}function ta(a){if(null==a||Va(a))return!1;if(L(a)||G(a)||F&&a instanceof F)return!0;var b="length"in Object(a)&&a.length;return T(b)&&(0<=b&&(b-1 in a||a instanceof Array)||"function"==typeof a.item)}function q(a,b,d){var c,e;if(a)if(z(a))for(c in a)"prototype"==c||"length"==c||"name"==c||a.hasOwnProperty&&!a.hasOwnProperty(c)||b.call(d,a[c],c,a);else if(L(a)||ta(a)){var f="object"!=typeof a;for(c=0,e=a.length;c<e;c++)(f||c in a)&&b.call(d,a[c],c,a)}else if(a.forEach&&a.forEach!==q)a.forEach(b,d,a);else if(sc(a))for(c in a)b.call(d,a[c],c,a);else if("function"==typeof a.hasOwnProperty)for(c in a)a.hasOwnProperty(c)&&b.call(d,a[c],c,a);else for(c in a)ua.call(a,c)&&b.call(d,a[c],c,a);return a}function tc(a,b,d){for(var c=Object.keys(a).sort(),e=0;e<c.length;e++)b.call(d,a[c[e]],c[e]);return c}function uc(a){return function(b,d){a(d,b)}}function Yd(){return++pb}function Pb(a,b,d){for(var c=a.$$hashKey,e=0,f=b.length;e<f;++e){var g=b[e];if(D(g)||z(g))for(var h=Object.keys(g),k=0,l=h.length;k<l;k++){var m=h[k],n=g[m];d&&D(n)?da(n)?a[m]=new Date(n.valueOf()):Wa(n)?a[m]=new RegExp(n):n.nodeName?a[m]=n.cloneNode(!0):Qb(n)?a[m]=n.clone():(D(a[m])||(a[m]=L(n)?[]:{}),Pb(a[m],[n],!0)):a[m]=n}}return c?a.$$hashKey=c:delete a.$$hashKey,a}function S(a){return Pb(a,va.call(arguments,1),!1)}function Zd(a){return Pb(a,va.call(arguments,1),!0)}function Z(a){return parseInt(a,10)}function Rb(a,b){return S(Object.create(a),b)}function A(){}function Xa(a){return a}function ha(a){return function(){return a}}function vc(a){return z(a.toString)&&a.toString!==ma}function y(a){return"undefined"==typeof a}function w(a){return"undefined"!=typeof a}function D(a){return null!==a&&"object"==typeof a}function sc(a){return null!==a&&"object"==typeof a&&!wc(a)}function G(a){return"string"==typeof a}function T(a){return"number"==typeof a}function da(a){return"[object Date]"===ma.call(a)}function z(a){return"function"==typeof a}function Wa(a){return"[object RegExp]"===ma.call(a)}function Va(a){return a&&a.window===a}function Ya(a){return a&&a.$evalAsync&&a.$watch}function Ga(a){return"boolean"==typeof a}function $d(a){return a&&T(a.length)&&ae.test(ma.call(a))}function Qb(a){return!(!a||!(a.nodeName||a.prop&&a.attr&&a.find))}function be(a){var b={};a=a.split(",");var d;for(d=0;d<a.length;d++)b[a[d]]=!0;return b}function wa(a){return Q(a.nodeName||a[0]&&a[0].nodeName)}function Za(a,b){var d=a.indexOf(b);return 0<=d&&a.splice(d,1),d}function pa(a,b){function d(a,b){var e,d=b.$$hashKey;if(L(a)){e=0;for(var f=a.length;e<f;e++)b.push(c(a[e]))}else if(sc(a))for(e in a)b[e]=c(a[e]);else if(a&&"function"==typeof a.hasOwnProperty)for(e in a)a.hasOwnProperty(e)&&(b[e]=c(a[e]));else for(e in a)ua.call(a,e)&&(b[e]=c(a[e]));return d?b.$$hashKey=d:delete b.$$hashKey,b}function c(a){if(!D(a))return a;var b=f.indexOf(a);if(-1!==b)return g[b];if(Va(a)||Ya(a))throw xa("cpws");var b=!1,c=e(a);return void 0===c&&(c=L(a)?[]:Object.create(wc(a)),b=!0),f.push(a),g.push(c),b?d(a,c):c}function e(a){switch(ma.call(a)){case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Float32Array]":case"[object Float64Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return new a.constructor(c(a.buffer),a.byteOffset,a.length);case"[object ArrayBuffer]":if(!a.slice){var b=new ArrayBuffer(a.byteLength);return new Uint8Array(b).set(new Uint8Array(a)),b}return a.slice(0);case"[object Boolean]":case"[object Number]":case"[object String]":case"[object Date]":return new a.constructor(a.valueOf());case"[object RegExp]":return b=new RegExp(a.source,a.toString().match(/[^\/]*$/)[0]),b.lastIndex=a.lastIndex,b;case"[object Blob]":return new a.constructor([a],{type:a.type})}if(z(a.cloneNode))return a.cloneNode(!0)}var f=[],g=[];if(b){if($d(b)||"[object ArrayBuffer]"===ma.call(b))throw xa("cpta");if(a===b)throw xa("cpi");return L(b)?b.length=0:q(b,function(a,d){"$$hashKey"!==d&&delete b[d]}),f.push(a),g.push(b),d(a,b)}return c(a)}function na(a,b){if(a===b)return!0;if(null===a||null===b)return!1;if(a!==a&&b!==b)return!0;var c,d=typeof a;if(d==typeof b&&"object"==d){if(!L(a)){if(da(a))return!!da(b)&&na(a.getTime(),b.getTime());if(Wa(a))return!!Wa(b)&&a.toString()==b.toString();if(Ya(a)||Ya(b)||Va(a)||Va(b)||L(b)||da(b)||Wa(b))return!1;d=U();for(c in a)if("$"!==c.charAt(0)&&!z(a[c])){if(!na(a[c],b[c]))return!1;d[c]=!0}for(c in b)if(!(c in d)&&"$"!==c.charAt(0)&&w(b[c])&&!z(b[c]))return!1;return!0}if(!L(b))return!1;if((d=a.length)==b.length){for(c=0;c<d;c++)if(!na(a[c],b[c]))return!1;return!0}}return!1}function $a(a,b,d){return a.concat(va.call(b,d))}function ab(a,b){var d=2<arguments.length?va.call(arguments,2):[];return!z(b)||b instanceof RegExp?b:d.length?function(){return arguments.length?b.apply(a,$a(d,arguments,0)):b.apply(a,d)}:function(){return arguments.length?b.apply(a,arguments):b.call(a)}}function ce(a,b){var d=b;return"string"==typeof a&&"$"===a.charAt(0)&&"$"===a.charAt(1)?d=void 0:Va(b)?d="$WINDOW":b&&C.document===b?d="$DOCUMENT":Ya(b)&&(d="$SCOPE"),d}function bb(a,b){if(!y(a))return T(b)||(b=b?2:null),JSON.stringify(a,ce,b)}function xc(a){return G(a)?JSON.parse(a):a}function yc(a,b){a=a.replace(de,"");var d=Date.parse("Jan 01, 1970 00:00:00 "+a)/6e4;return isNaN(d)?b:d}function Sb(a,b,d){d=d?-1:1;var c=a.getTimezoneOffset();return b=yc(b,c),d*=b-c,a=new Date(a.getTime()),a.setMinutes(a.getMinutes()+d),a}function ya(a){a=F(a).clone();try{a.empty()}catch(b){}var d=F("<div>").append(a).html();try{return a[0].nodeType===Ma?Q(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+Q(b)})}catch(c){return Q(d)}}function zc(a){try{return decodeURIComponent(a)}catch(b){}}function Ac(a){var b={};return q((a||"").split("&"),function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),c=a.indexOf("="),-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=zc(e),w(e)&&(f=!w(f)||zc(f),ua.call(b,e)?L(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))}),b}function Tb(a){var b=[];return q(a,function(a,c){L(a)?q(a,function(a){b.push(ea(c,!0)+(!0===a?"":"="+ea(a,!0)))}):b.push(ea(c,!0)+(!0===a?"":"="+ea(a,!0)))}),b.length?b.join("&"):""}function qb(a){return ea(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ea(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function ee(a,b){var d,c,e=Na.length;for(c=0;c<e;++c)if(d=Na[c]+b,G(d=a.getAttribute(d)))return d;return null}function fe(a,b){var d,c,e={};q(Na,function(b){b+="app",!d&&a.hasAttribute&&a.hasAttribute(b)&&(d=a,c=a.getAttribute(b))}),q(Na,function(b){b+="app";var e;!d&&(e=a.querySelector("["+b.replace(":","\\:")+"]"))&&(d=e,c=e.getAttribute(b))}),d&&(e.strictDi=null!==ee(d,"strict-di"),b(d,c?[c]:[],e))}function Bc(a,b,d){D(d)||(d={}),d=S({strictDi:!1},d);var c=function(){if(a=F(a),a.injector()){var c=a[0]===C.document?"document":ya(a);throw xa("btstrpd",c.replace(/</,"&lt;").replace(/>/,"&gt;"))}return b=b||[],b.unshift(["$provide",function(b){b.value("$rootElement",a)}]),d.debugInfoEnabled&&b.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]),b.unshift("ng"),c=cb(b,d.strictDi),c.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d),c(b)(a)})}]),c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;return C&&e.test(C.name)&&(d.debugInfoEnabled=!0,C.name=C.name.replace(e,"")),C&&!f.test(C.name)?c():(C.name=C.name.replace(f,""),ca.resumeBootstrap=function(a){return q(a,function(a){b.push(a)}),c()},void(z(ca.resumeDeferredBootstrap)&&ca.resumeDeferredBootstrap()))}function ge(){C.name="NG_ENABLE_DEBUG_INFO!"+C.name,C.location.reload()}function he(a){if(a=ca.element(a).injector(),!a)throw xa("test");return a.get("$$testability")}function Cc(a,b){return b=b||"_",a.replace(ie,function(a,c){return(c?b:"")+a.toLowerCase()})}function je(){var a;if(!Dc){var b=rb();(qa=y(b)?C.jQuery:b?C[b]:void 0)&&qa.fn.on?(F=qa,S(qa.fn,{scope:Oa.scope,isolateScope:Oa.isolateScope,controller:Oa.controller,injector:Oa.injector,inheritedData:Oa.inheritedData}),a=qa.cleanData,qa.cleanData=function(b){for(var c,f,e=0;null!=(f=b[e]);e++)(c=qa._data(f,"events"))&&c.$destroy&&qa(f).triggerHandler("$destroy");a(b)}):F=O,ca.element=F,Dc=!0}}function sb(a,b,d){if(!a)throw xa("areq",b||"?",d||"required");return a}function Pa(a,b,d){return d&&L(a)&&(a=a[a.length-1]),sb(z(a),b,"not a function, got "+(a&&"object"==typeof a?a.constructor.name||"Object":typeof a)),a}function Qa(a,b){if("hasOwnProperty"===a)throw xa("badname",b)}function Ec(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g<f;g++)c=b[g],a&&(a=(e=a)[c]);return!d&&z(a)?ab(e,a):a}function tb(a){for(var c,b=a[0],d=a[a.length-1],e=1;b!==d&&(b=b.nextSibling);e++)(c||a[e]!==b)&&(c||(c=F(va.call(a,0,e))),c.push(b));return c||a}function U(){return Object.create(null)}function ke(a){function b(a,b,c){return a[b]||(a[b]=c())}var d=N("$injector"),c=N("ng");return a=b(a,"angular",Object),a.$$minErr=a.$$minErr||N,b(a,"module",function(){var a={};return function(f,g,h){if("hasOwnProperty"===f)throw c("badname","module");return g&&a.hasOwnProperty(f)&&(a[f]=null),b(a,f,function(){function a(b,d,e,f){return f||(f=c),function(){return f[e||"push"]([b,d,arguments]),R}}function b(a,d){return function(b,e){return e&&z(e)&&(e.$$moduleName=f),c.push([a,d,arguments]),R}}if(!g)throw d("nomod",f);var c=[],e=[],p=[],u=a("$injector","invoke","push",e),R={_invokeQueue:c,_configBlocks:e,_runBlocks:p,requires:g,name:f,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),decorator:b("$provide","decorator"),animation:b("$animateProvider","register"),filter:b("$filterProvider","register"),controller:b("$controllerProvider","register"),directive:b("$compileProvider","directive"),component:b("$compileProvider","component"),config:u,run:function(a){return p.push(a),this}};return h&&u(h),R})}})}function ia(a,b){if(L(a)){b=b||[];for(var d=0,c=a.length;d<c;d++)b[d]=a[d]}else if(D(a))for(d in b=b||{},a)"$"===d.charAt(0)&&"$"===d.charAt(1)||(b[d]=a[d]);return b||a}function le(a){S(a,{bootstrap:Bc,copy:pa,extend:S,merge:Zd,equals:na,element:F,forEach:q,injector:cb,noop:A,bind:ab,toJson:bb,fromJson:xc,identity:Xa,isUndefined:y,isDefined:w,isString:G,isFunction:z,isObject:D,isNumber:T,isElement:Qb,isArray:L,version:me,isDate:da,lowercase:Q,uppercase:ub,callbacks:{$$counter:0},getTestability:he,$$minErr:N,$$csp:Ba,reloadWithDebugInfo:ge}),(Ub=ke(C))("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:ne}),a.provider("$compile",Fc).directive({a:oe,input:Gc,textarea:Gc,form:pe,script:qe,select:re,style:se,option:te,ngBind:ue,ngBindHtml:ve,ngBindTemplate:we,ngClass:xe,ngClassEven:ye,ngClassOdd:ze,ngCloak:Ae,ngController:Be,ngForm:Ce,ngHide:De,ngIf:Ee,ngInclude:Fe,ngInit:Ge,ngNonBindable:He,ngPluralize:Ie,ngRepeat:Je,ngShow:Ke,ngStyle:Le,ngSwitch:Me,ngSwitchWhen:Ne,ngSwitchDefault:Oe,ngOptions:Pe,ngTransclude:Qe,ngModel:Re,ngList:Se,ngChange:Te,pattern:Hc,ngPattern:Hc,required:Ic,ngRequired:Ic,minlength:Jc,ngMinlength:Jc,maxlength:Kc,ngMaxlength:Kc,ngValue:Ue,ngModelOptions:Ve}).directive({ngInclude:We}).directive(vb).directive(Lc),a.provider({$anchorScroll:Xe,$animate:Ye,$animateCss:Ze,$$animateJs:$e,$$animateQueue:af,$$AnimateRunner:bf,$$animateAsyncRun:cf,$browser:df,$cacheFactory:ef,$controller:ff,$document:gf,$exceptionHandler:hf,$filter:Mc,$$forceReflow:jf,$interpolate:kf,$interval:lf,$http:mf,$httpParamSerializer:nf,$httpParamSerializerJQLike:of,$httpBackend:pf,$xhrFactory:qf,$jsonpCallbacks:rf,$location:sf,$log:tf,$parse:uf,$rootScope:vf,$q:wf,$$q:xf,$sce:yf,$sceDelegate:zf,$sniffer:Af,$templateCache:Bf,$templateRequest:Cf,$$testability:Df,$timeout:Ef,$window:Ff,$$rAF:Gf,$$jqLite:Hf,$$HashMap:If,$$cookieReader:Jf})}])}function db(a){return a.replace(Kf,function(a,d,c,e){return e?c.toUpperCase():c}).replace(Lf,"Moz$1")}function Nc(a){return a=a.nodeType,1===a||!a||9===a}function Oc(a,b){var d,c,e=b.createDocumentFragment(),f=[];if(Vb.test(a)){for(d=e.appendChild(b.createElement("div")),c=(Mf.exec(a)||["",""])[1].toLowerCase(),c=ja[c]||ja._default,d.innerHTML=c[1]+a.replace(Nf,"<$1></$2>")+c[2],c=c[0];c--;)d=d.lastChild;f=$a(f,d.childNodes),d=e.firstChild,d.textContent=""}else f.push(b.createTextNode(a));return e.textContent="",e.innerHTML="",q(f,function(a){e.appendChild(a)}),e}function Pc(a,b){var d=a.parentNode;d&&d.replaceChild(b,a),b.appendChild(a)}function O(a){if(a instanceof O)return a;var b;if(G(a)&&(a=W(a),b=!0),!(this instanceof O)){if(b&&"<"!=a.charAt(0))throw Wb("nosel");return new O(a)}if(b){b=C.document;var d;a=(d=Of.exec(a))?[b.createElement(d[1])]:(d=Oc(a,b))?d.childNodes:[]}Qc(this,a)}function Xb(a){return a.cloneNode(!0)}function wb(a,b){if(b||eb(a),a.querySelectorAll)for(var d=a.querySelectorAll("*"),c=0,e=d.length;c<e;c++)eb(d[c])}function Rc(a,b,d,c){if(w(c))throw Wb("offargs");var e=(c=xb(a))&&c.events,f=c&&c.handle;if(f)if(b){var g=function(b){var c=e[b];w(d)&&Za(c||[],d),w(d)&&c&&0<c.length||(a.removeEventListener(b,f,!1),delete e[b])};q(b.split(" "),function(a){g(a),yb[a]&&g(yb[a])})}else for(b in e)"$destroy"!==b&&a.removeEventListener(b,f,!1),delete e[b]}function eb(a,b){var d=a.ng339,c=d&&fb[d];c&&(b?delete c.data[b]:(c.handle&&(c.events.$destroy&&c.handle({},"$destroy"),Rc(a)),delete fb[d],a.ng339=void 0))}function xb(a,b){var d=a.ng339,d=d&&fb[d];return b&&!d&&(a.ng339=d=++Pf,d=fb[d]={events:{},data:{},handle:void 0}),d}function Yb(a,b,d){if(Nc(a)){var c=w(d),e=!c&&b&&!D(b),f=!b;if(a=(a=xb(a,!e))&&a.data,c)a[b]=d;else{if(f)return a;if(e)return a&&a[b];S(a,b)}}}function zb(a,b){return!!a.getAttribute&&-1<(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+b+" ")}function Ab(a,b){b&&a.setAttribute&&q(b.split(" "),function(b){a.setAttribute("class",W((" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+W(b)+" "," ")))})}function Bb(a,b){if(b&&a.setAttribute){var d=(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");q(b.split(" "),function(a){a=W(a),-1===d.indexOf(" "+a+" ")&&(d+=a+" ")}),a.setAttribute("class",W(d))}}function Qc(a,b){if(b)if(b.nodeType)a[a.length++]=b;else{var d=b.length;if("number"==typeof d&&b.window!==b){if(d)for(var c=0;c<d;c++)a[a.length++]=b[c]}else a[a.length++]=b}}function Sc(a,b){return Cb(a,"$"+(b||"ngController")+"Controller")}function Cb(a,b,d){for(9==a.nodeType&&(a=a.documentElement),b=L(b)?b:[b];a;){for(var c=0,e=b.length;c<e;c++)if(w(d=F.data(a,b[c])))return d;a=a.parentNode||11===a.nodeType&&a.host}}function Tc(a){for(wb(a,!0);a.firstChild;)a.removeChild(a.firstChild)}function Db(a,b){b||wb(a);var d=a.parentNode;d&&d.removeChild(a)}function Qf(a,b){b=b||C,"complete"===b.document.readyState?b.setTimeout(a):F(b).on("load",a)}function Uc(a,b){var d=Eb[b.toLowerCase()];return d&&Vc[wa(a)]&&d}function Rf(a,b){var d=function(c,d){c.isDefaultPrevented=function(){return c.defaultPrevented};var f=b[d||c.type],g=f?f.length:0;if(g){if(y(c.immediatePropagationStopped)){var h=c.stopImmediatePropagation;c.stopImmediatePropagation=function(){c.immediatePropagationStopped=!0,c.stopPropagation&&c.stopPropagation(),h&&h.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};var k=f.specialHandlerWrapper||Sf;1<g&&(f=ia(f));for(var l=0;l<g;l++)c.isImmediatePropagationStopped()||k(a,c,f[l])}};return d.elem=a,d}function Sf(a,b,d){d.call(a,b)}function Tf(a,b,d){var c=b.relatedTarget;c&&(c===a||Uf.call(a,c))||d.call(a,b)}function Hf(){this.$get=function(){return S(O,{hasClass:function(a,b){return a.attr&&(a=a[0]),zb(a,b)},addClass:function(a,b){return a.attr&&(a=a[0]),Bb(a,b)},removeClass:function(a,b){return a.attr&&(a=a[0]),Ab(a,b)}})}}function Ca(a,b){var d=a&&a.$$hashKey;return d?("function"==typeof d&&(d=a.$$hashKey()),d):(d=typeof a,d="function"==d||"object"==d&&null!==a?a.$$hashKey=d+":"+(b||Yd)():d+":"+a)}function Ra(a,b){if(b){var d=0;this.nextUid=function(){return++d}}q(a,this.put,this)}function Wc(a){return a=(Function.prototype.toString.call(a)+" ").replace(Vf,""),a.match(Wf)||a.match(Xf)}function Yf(a){return(a=Wc(a))?"function("+(a[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function cb(a,b){function d(a){return function(b,c){return D(b)?void q(b,uc(a)):a(b,c)}}function c(a,b){if(Qa(a,"service"),(z(b)||L(b))&&(b=p.instantiate(b)),!b.$get)throw Ha("pget",a);return n[a+"Provider"]=b}function e(a,b){return function(){var c=B.invoke(b,this);if(y(c))throw Ha("undef",a);return c}}function f(a,b,d){return c(a,{$get:!1!==d?e(a,b):b})}function g(a){sb(y(a)||L(a),"modulesToLoad","not an array");var c,b=[];return q(a,function(a){function d(a){var b,c;for(b=0,c=a.length;b<c;b++){var e=a[b],f=p.get(e[0]);f[e[1]].apply(f,e[2])}}if(!m.get(a)){m.put(a,!0);try{G(a)?(c=Ub(a),b=b.concat(g(c.requires)).concat(c._runBlocks),d(c._invokeQueue),d(c._configBlocks)):z(a)?b.push(p.invoke(a)):L(a)?b.push(p.invoke(a)):Pa(a,"module")}catch(e){throw L(a)&&(a=a[a.length-1]),e.message&&e.stack&&-1==e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Ha("modulerr",a,e.stack||e.message||e)}}}),b}function h(a,c){function d(b,e){if(a.hasOwnProperty(b)){if(a[b]===k)throw Ha("cdep",b+" <- "+l.join(" <- "));return a[b]}try{return l.unshift(b),a[b]=k,a[b]=c(b,e)}catch(f){throw a[b]===k&&delete a[b],f}finally{l.shift()}}function e(a,c,f){var g=[];a=cb.$$annotate(a,b,f);for(var h=0,k=a.length;h<k;h++){var l=a[h];if("string"!=typeof l)throw Ha("itkn",l);g.push(c&&c.hasOwnProperty(l)?c[l]:d(l,f))}return g}return{invoke:function(a,b,c,d){return"string"==typeof c&&(d=c,c=null),c=e(a,c,d),L(a)&&(a=a[a.length-1]),d=!(11>=Ea)&&("function"==typeof a&&/^(?:class\b|constructor\()/.test(Function.prototype.toString.call(a)+" ")),d?(c.unshift(null),new(Function.prototype.bind.apply(a,c))):a.apply(b,c)},instantiate:function(a,b,c){var d=L(a)?a[a.length-1]:a;return a=e(a,b,c),a.unshift(null),new(Function.prototype.bind.apply(d,a))},get:d,annotate:cb.$$annotate,has:function(b){return n.hasOwnProperty(b+"Provider")||a.hasOwnProperty(b)}}}b=!0===b;var k={},l=[],m=new Ra([],!0),n={$provide:{provider:d(c),factory:d(f),service:d(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:d(function(a,b){return f(a,ha(b),!1)}),constant:d(function(a,b){Qa(a,"constant"),n[a]=b,u[a]=b}),decorator:function(a,b){var c=p.get(a+"Provider"),d=c.$get;c.$get=function(){var a=B.invoke(d,c);return B.invoke(b,null,{$delegate:a})}}}},p=n.$injector=h(n,function(a,b){throw ca.isString(b)&&l.push(b),Ha("unpr",l.join(" <- "))}),u={},R=h(u,function(a,b){var c=p.get(a+"Provider",b);return B.invoke(c.$get,c,void 0,a)}),B=R;n.$injectorProvider={$get:ha(R)};var r=g(a),B=R.get("$injector");return B.strictDi=b,q(r,function(a){a&&B.invoke(a)}),B}function Xe(){var a=!0;this.disableAutoScrolling=function(){a=!1},this.$get=["$window","$location","$rootScope",function(b,d,c){function e(a){var b=null;return Array.prototype.some.call(a,function(a){if("a"===wa(a))return b=a,!0}),b}function f(a){if(a){a.scrollIntoView();var c;c=g.yOffset,z(c)?c=c():Qb(c)?(c=c[0],c="fixed"!==b.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):T(c)||(c=0),c&&(a=a.getBoundingClientRect().top,b.scrollBy(0,a-c))}else b.scrollTo(0,0)}function g(a){a=G(a)?a:d.hash();var b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=b.document;return a&&c.$watch(function(){return d.hash()},function(a,b){a===b&&""===a||Qf(function(){c.$evalAsync(g)})}),g}]}function gb(a,b){return a||b?a?b?(L(a)&&(a=a.join(" ")),L(b)&&(b=b.join(" ")),a+" "+b):a:b:""}function Zf(a){G(a)&&(a=a.split(" "));var b=U();return q(a,function(a){a.length&&(b[a]=!0)}),b}function Ia(a){return D(a)?a:{}}function $f(a,b,d,c){function e(a){try{a.apply(null,va.call(arguments,1))}finally{if(R--,0===R)for(;B.length;)try{B.pop()()}catch(b){d.error(b)}}}function f(){t=null,g(),h()}function g(){r=K(),r=y(r)?null:r,na(r,E)&&(r=E),E=r}function h(){v===k.url()&&J===r||(v=k.url(),J=r,q(M,function(a){a(k.url(),r)}))}var k=this,l=a.location,m=a.history,n=a.setTimeout,p=a.clearTimeout,u={};k.isMock=!1;var R=0,B=[];k.$$completeOutstandingRequest=e,k.$$incOutstandingRequestCount=function(){R++},k.notifyWhenNoOutstandingRequests=function(a){0===R?a():B.push(a)};var r,J,v=l.href,fa=b.find("base"),t=null,K=c.history?function(){try{return m.state}catch(a){}}:A;g(),J=r,k.url=function(b,d,e){if(y(e)&&(e=null),l!==a.location&&(l=a.location),m!==a.history&&(m=a.history),b){var f=J===e;if(v===b&&(!c.history||f))return k;var h=v&&Ja(v)===Ja(b);return v=b,J=e,!c.history||h&&f?(h||(t=b),d?l.replace(b):h?(d=l,e=b.indexOf("#"),e=-1===e?"":b.substr(e),d.hash=e):l.href=b,l.href!==b&&(t=b)):(m[d?"replaceState":"pushState"](e,"",b),g(),J=r),t&&(t=b),k}return t||l.href.replace(/%27/g,"'")},k.state=function(){return r};var M=[],H=!1,E=null;k.onUrlChange=function(b){return H||(c.history&&F(a).on("popstate",f),F(a).on("hashchange",f),H=!0),M.push(b),b},k.$$applicationDestroyed=function(){F(a).off("hashchange popstate",f)},k.$$checkUrlChange=h,k.baseHref=function(){var a=fa.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""},k.defer=function(a,b){var c;return R++,c=n(function(){delete u[c],e(a)},b||0),u[c]=!0,c},k.defer.cancel=function(a){return!!u[a]&&(delete u[a],p(a),e(A),!0)}}function df(){this.$get=["$window","$log","$sniffer","$document",function(a,b,d,c){return new $f(a,c,b,d)}]}function ef(){this.$get=function(){function a(a,c){function e(a){a!=n&&(p?p==a&&(p=a.n):p=a,f(a.n,a.p),f(a,n),n=a,n.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw N("$cacheFactory")("iid",a);var g=0,h=S({},c,{id:a}),k=U(),l=c&&c.capacity||Number.MAX_VALUE,m=U(),n=null,p=null;return b[a]={put:function(a,b){if(!y(b)){if(l<Number.MAX_VALUE){var c=m[a]||(m[a]={key:a});e(c)}return a in k||g++,k[a]=b,g>l&&this.remove(p.key),b}},get:function(a){if(l<Number.MAX_VALUE){var b=m[a];if(!b)return;e(b)}return k[a]},remove:function(a){if(l<Number.MAX_VALUE){var b=m[a];if(!b)return;b==n&&(n=b.p),b==p&&(p=b.n),f(b.n,b.p),delete m[a]}a in k&&(delete k[a],g--)},removeAll:function(){k=U(),g=0,m=U(),n=p=null},destroy:function(){m=h=k=null,delete b[a]},info:function(){return S({},h,{size:g})}}}var b={};return a.info=function(){var a={};return q(b,function(b,e){a[e]=b.info()}),a},a.get=function(a){return b[a]},a}}function Bf(){this.$get=["$cacheFactory",function(a){return a("templates")}]}function Fc(a,b){function d(a,b,c){var d=/^\s*([@&<]|=(\*?))(\??)\s*(\w*)\s*$/,e=U();return q(a,function(a,f){if(a in n)e[f]=n[a];else{var g=a.match(d);if(!g)throw ga("iscp",b,f,a,c?"controller bindings definition":"isolate scope definition");e[f]={mode:g[1][0],collection:"*"===g[2],optional:"?"===g[3],attrName:g[4]||f},g[4]&&(n[a]=e[f])}}),e}function c(a){var b=a.charAt(0);if(!b||b!==Q(b))throw ga("baddir",a);if(a!==a.trim())throw ga("baddir",a)}function e(a){var b=a.require||a.controller&&a.name;return!L(b)&&D(b)&&q(b,function(a,c){var d=a.match(l);a.substring(d[0].length)||(b[c]=d[0]+c)}),b}var f={},g=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,h=/(([\w\-]+)(?:\:([^;]+))?;?)/,k=be("ngSrc,ngSrcset,src,srcset"),l=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,m=/^(on[a-z]+|formaction)$/,n=U();this.directive=function B(b,d){return Qa(b,"directive"),G(b)?(c(b),sb(d,"directiveFactory"),f.hasOwnProperty(b)||(f[b]=[],a.factory(b+"Directive",["$injector","$exceptionHandler",function(a,c){var d=[];return q(f[b],function(f,g){try{var h=a.invoke(f);z(h)?h={compile:ha(h)}:!h.compile&&h.link&&(h.compile=ha(h.link)),h.priority=h.priority||0,h.index=g,h.name=h.name||b,h.require=e(h),h.restrict=h.restrict||"EA",h.$$moduleName=f.$$moduleName,d.push(h)}catch(k){c(k)}}),d}])),f[b].push(d)):q(b,uc(B)),this},this.component=function(a,b){function c(a){function e(b){return z(b)||L(b)?function(c,d){return a.invoke(b,this,{$element:c,$attrs:d})}:b}var f=b.template||b.templateUrl?b.template:"",g={controller:d,controllerAs:Xc(b.controller)||b.controllerAs||"$ctrl",template:e(f),templateUrl:e(b.templateUrl),transclude:b.transclude,scope:{},bindToController:b.bindings||{},restrict:"E",require:b.require};return q(b,function(a,b){"$"===b.charAt(0)&&(g[b]=a)}),g}var d=b.controller||function(){};return q(b,function(a,b){"$"===b.charAt(0)&&(c[b]=a,z(d)&&(d[b]=a))}),c.$inject=["$injector"],this.directive(a,c)},this.aHrefSanitizationWhitelist=function(a){return w(a)?(b.aHrefSanitizationWhitelist(a),this):b.aHrefSanitizationWhitelist()},this.imgSrcSanitizationWhitelist=function(a){return w(a)?(b.imgSrcSanitizationWhitelist(a),this):b.imgSrcSanitizationWhitelist()};var p=!0;this.debugInfoEnabled=function(a){return w(a)?(p=a,this):p};var u=10;this.onChangesTtl=function(a){return arguments.length?(u=a,this):u},this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$sce","$animate","$$sanitizeUri",function(a,b,c,e,n,t,K,M,H,E){function I(){try{if(!--qa)throw Y=void 0,ga("infchng",u);K.$apply(function(){for(var a=[],b=0,c=Y.length;b<c;++b)try{Y[b]()}catch(d){a.push(d)}if(Y=void 0,a.length)throw a})}finally{qa++}}function Da(a,b){if(b){var d,e,f,c=Object.keys(b);for(d=0,e=c.length;d<e;d++)f=c[d],this[f]=b[f]}else this.$attr={};this.$$element=a}function P(a,b,c){pa.innerHTML="<span "+b+">",b=pa.firstChild.attributes;var d=b[0];b.removeNamedItem(d.name),d.value=c,a.attributes.setNamedItem(d)}function x(a,b){try{a.addClass(b)}catch(c){}}function aa(a,b,c,d,e){a instanceof F||(a=F(a));for(var f=/\S+/,g=0,h=a.length;g<h;g++){var k=a[g];k.nodeType===Ma&&k.nodeValue.match(f)&&Pc(k,a[g]=C.document.createElement("span"))}var l=s(a,b,a,c,d,e);aa.$$addScopeClass(a);var m=null;return function(b,c,d){sb(b,"scope"),e&&e.needsNewScope&&(b=b.$parent.$new()),d=d||{};var f=d.parentBoundTranscludeFn,g=d.transcludeControllers;if(d=d.futureParentElement,f&&f.$$boundTransclude&&(f=f.$$boundTransclude),m||(m=(d=d&&d[0])&&"foreignobject"!==wa(d)&&ma.call(d).match(/SVG/)?"svg":"html"),d="html"!==m?F(da(m,F("<div>").append(a).html())):c?Oa.clone.call(a):a,g)for(var h in g)d.data("$"+h+"Controller",g[h].instance);return aa.$$addScopeInfo(d,b),c&&c(d,b),l&&l(b,d,d,f),d}}function s(a,b,c,d,e,f){function g(a,c,d,e){var f,k,l,m,p,r,v;if(n)for(v=Array(c.length),m=0;m<h.length;m+=3)f=h[m],v[f]=c[f];else v=c;for(m=0,p=h.length;m<p;)k=v[h[m++]],c=h[m++],f=h[m++],c?(c.scope?(l=a.$new(),aa.$$addScopeInfo(F(k),l)):l=a,r=c.transcludeOnThisElement?za(a,c.transclude,e):!c.templateOnThisElement&&e?e:!e&&b?za(a,b):null,c(f,l,k,d,r)):f&&f(a,k.childNodes,void 0,e)}for(var k,l,m,p,n,h=[],r=0;r<a.length;r++)k=new Da,l=$b(a[r],[],k,0===r?d:void 0,e),(f=l.length?oa(l,a[r],k,b,c,null,[],[],f):null)&&f.scope&&aa.$$addScopeClass(k.$$element),k=f&&f.terminal||!(m=a[r].childNodes)||!m.length?null:s(m,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b),(f||k)&&(h.push(r,f,k),p=!0,n=n||f),f=null;return p?g:null}function za(a,b,c){function d(e,f,g,h,k){return e||(e=a.$new(!1,k),e.$$transcluded=!0),b(e,f,{parentBoundTranscludeFn:c,transcludeControllers:g,futureParentElement:h})}var f,e=d.$$slots=U();for(f in b.$$slots)e[f]=b.$$slots[f]?za(a,b.$$slots[f],c):null;return d}function $b(a,b,c,d,e){var f=c.$attr;switch(a.nodeType){case 1:O(b,Aa(wa(a)),"E",d,e);for(var g,k,l,m,p=a.attributes,n=0,r=p&&p.length;n<r;n++){var v=!1,u=!1;g=p[n],k=g.name,l=W(g.value),g=Aa(k),(m=Ba.test(g))&&(k=k.replace(Yc,"").substr(8).replace(/_(.)/g,function(a,b){return b.toUpperCase()})),(g=g.match(Ca))&&V(g[1])&&(v=k,u=k.substr(0,k.length-5)+"end",k=k.substr(0,k.length-6)),g=Aa(k.toLowerCase()),f[g]=k,!m&&c.hasOwnProperty(g)||(c[g]=l,Uc(a,g)&&(c[g]=!0)),ia(a,b,l,g,m),O(b,g,"A",d,e,v,u)}if(f=a.className,D(f)&&(f=f.animVal),G(f)&&""!==f)for(;a=h.exec(f);)g=Aa(a[2]),O(b,g,"C",d,e)&&(c[g]=W(a[3])),f=f.substr(a.index+a[0].length);break;case Ma:if(11===Ea)for(;a.parentNode&&a.nextSibling&&a.nextSibling.nodeType===Ma;)a.nodeValue+=a.nextSibling.nodeValue,a.parentNode.removeChild(a.nextSibling);ca(b,a.nodeValue);break;case 8:hb(a,b,c,d,e)}return b.sort(Z),b}function hb(a,b,c,d,e){try{var f=g.exec(a.nodeValue);if(f){var h=Aa(f[1]);O(b,h,"M",d,e)&&(c[h]=W(f[2]))}}catch(k){}}function N(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ga("uterdir",b,c);1==a.nodeType&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--),d.push(a),a=a.nextSibling}while(0<e)}else d.push(a);return F(d)}function Zc(a,b,c){return function(d,e,f,g,h){return e=N(e[0],b,c),a(d,e,f,g,h)}}function ac(a,b,c,d,e,f){var g;return a?aa(b,c,d,e,f):function(){return g||(g=aa(b,c,d,e,f),b=c=f=null),g.apply(this,arguments)}}function oa(a,b,d,e,f,g,h,k,l){function m(a,b,c,d){a&&(c&&(a=Zc(a,c,d)),a.require=x.require,a.directiveName=I,(u===x||x.$$isolateScope)&&(a=ja(a,{isolateScope:!0})),h.push(a)),b&&(c&&(b=Zc(b,c,d)),b.require=x.require,b.directiveName=I,(u===x||x.$$isolateScope)&&(b=ja(b,{isolateScope:!0})),k.push(b))}function p(a,e,f,g,l){function m(a,b,c,d){var e;if(Ya(a)||(d=c,c=b,b=a,a=void 0),fa&&(e=t),c||(c=fa?I.parent():I),!d)return l(a,b,e,c,s);var f=l.$$slots[d];if(f)return f(a,b,e,c,s);if(y(f))throw ga("noslot",d,ya(I))}var n,E,x,M,B,t,P,I;b===f?(g=d,I=d.$$element):(I=F(f),g=new Da(I,d)),B=e,u?M=e.$new(!0):r&&(B=e.$parent),l&&(P=m,P.$$boundTransclude=l,P.isSlotFilled=function(a){return!!l.$$slots[a]}),v&&(t=ag(I,g,P,v,M,e,u)),u&&(aa.$$addScopeInfo(I,M,!0,!(H&&(H===u||H===u.$$originalDirective))),aa.$$addScopeClass(I,!0),M.$$isolateBindings=u.$$isolateBindings,E=ka(e,g,M,M.$$isolateBindings,u),E.removeWatches&&M.$on("$destroy",E.removeWatches));for(n in t){E=v[n],x=t[n];var Zb=E.$$bindings.bindToController;x.bindingInfo=x.identifier&&Zb?ka(B,g,x.instance,Zb,E):{};var K=x();K!==x.instance&&(x.instance=K,I.data("$"+E.name+"Controller",K),x.bindingInfo.removeWatches&&x.bindingInfo.removeWatches(),x.bindingInfo=ka(B,g,x.instance,Zb,E))}for(q(v,function(a,b){var c=a.require;a.bindToController&&!L(c)&&D(c)&&S(t[b].instance,ib(b,c,I,t))}),q(t,function(a){var b=a.instance;if(z(b.$onChanges))try{b.$onChanges(a.bindingInfo.initialChanges)}catch(d){c(d)}if(z(b.$onInit))try{b.$onInit()}catch(e){c(e)}z(b.$doCheck)&&(B.$watch(function(){b.$doCheck()}),b.$doCheck()),z(b.$onDestroy)&&B.$on("$destroy",function(){b.$onDestroy()})}),n=0,E=h.length;n<E;n++)x=h[n],la(x,x.isolateScope?M:e,I,g,x.require&&ib(x.directiveName,x.require,I,t),P);var s=e;for(u&&(u.template||null===u.templateUrl)&&(s=M),a&&a(s,f.childNodes,void 0,l),n=k.length-1;0<=n;n--)x=k[n],la(x,x.isolateScope?M:e,I,g,x.require&&ib(x.directiveName,x.require,I,t),P);q(t,function(a){a=a.instance,z(a.$postLink)&&a.$postLink()})}l=l||{};for(var x,I,P,s,w,n=-Number.MAX_VALUE,r=l.newScopeDirective,v=l.controllerDirectives,u=l.newIsolateScopeDirective,H=l.templateDirective,E=l.nonTlbTranscludeDirective,M=!1,B=!1,fa=l.hasElementTranscludeDirective,t=d.$$element=F(b),K=e,Fa=!1,za=!1,A=0,C=a.length;A<C;A++){x=a[A];var G=x.$$start,hb=x.$$end;if(G&&(t=N(b,G,hb)),P=void 0,n>x.priority)break;if((w=x.scope)&&(x.templateUrl||(D(w)?(X("new/isolated scope",u||r,x,t),u=x):X("new/isolated scope",u,x,t)),r=r||x),I=x.name,!Fa&&(x.replace&&(x.templateUrl||x.template)||x.transclude&&!x.$$tlb)){for(w=A+1;Fa=a[w++];)if(Fa.transclude&&!Fa.$$tlb||Fa.replace&&(Fa.templateUrl||Fa.template)){za=!0;break}Fa=!0}if(!x.templateUrl&&x.controller&&(w=x.controller,
v=v||U(),X("'"+I+"' controller",v[I],x,t),v[I]=x),w=x.transclude)if(M=!0,x.$$tlb||(X("transclusion",E,x,t),E=x),"element"==w)fa=!0,n=x.priority,P=t,t=d.$$element=F(aa.$$createComment(I,d[I])),b=t[0],ea(f,va.call(P,0),b),P[0].$$parentNode=P[0].parentNode,K=ac(za,P,e,n,g&&g.name,{nonTlbTranscludeDirective:E});else{var oa=U();if(P=F(Xb(b)).contents(),D(w)){P=[];var Q=U(),O=U();q(w,function(a,b){var c="?"===a.charAt(0);a=c?a.substring(1):a,Q[a]=b,oa[b]=null,O[b]=c}),q(t.contents(),function(a){var b=Q[Aa(wa(a))];b?(O[b]=!0,oa[b]=oa[b]||[],oa[b].push(a)):P.push(a)}),q(O,function(a,b){if(!a)throw ga("reqslot",b)});for(var V in oa)oa[V]&&(oa[V]=ac(za,oa[V],e))}t.empty(),K=ac(za,P,e,void 0,void 0,{needsNewScope:x.$$isolateScope||x.$$newScope}),K.$$slots=oa}if(x.template)if(B=!0,X("template",H,x,t),H=x,w=z(x.template)?x.template(t,d):x.template,w=xa(w),x.replace){if(g=x,P=Vb.test(w)?$c(da(x.templateNamespace,W(w))):[],b=P[0],1!=P.length||1!==b.nodeType)throw ga("tplrt",I,"");ea(f,t,b),C={$attr:{}},w=$b(b,[],C);var Z=a.splice(A+1,a.length-(A+1));(u||r)&&T(w,u,r),a=a.concat(w).concat(Z),$(d,C),C=a.length}else t.html(w);if(x.templateUrl)B=!0,X("template",H,x,t),H=x,x.replace&&(g=x),p=ba(a.splice(A,a.length-A),t,d,f,M&&K,h,k,{controllerDirectives:v,newScopeDirective:r!==x&&r,newIsolateScopeDirective:u,templateDirective:H,nonTlbTranscludeDirective:E}),C=a.length;else if(x.compile)try{s=x.compile(t,d,K);var Y=x.$$originalDirective||x;z(s)?m(null,ab(Y,s),G,hb):s&&m(ab(Y,s.pre),ab(Y,s.post),G,hb)}catch(ca){c(ca,ya(t))}x.terminal&&(p.terminal=!0,n=Math.max(n,x.priority))}return p.scope=r&&!0===r.scope,p.transcludeOnThisElement=M,p.templateOnThisElement=B,p.transclude=K,l.hasElementTranscludeDirective=fa,p}function ib(a,b,c,d){var e;if(G(b)){var f=b.match(l);b=b.substring(f[0].length);var g=f[1]||f[3],f="?"===f[2];if("^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance,!e){var h="$"+b+"Controller";e=g?c.inheritedData(h):c.data(h)}if(!e&&!f)throw ga("ctreq",b,a)}else if(L(b))for(e=[],g=0,f=b.length;g<f;g++)e[g]=ib(a,b[g],c,d);else D(b)&&(e={},q(b,function(b,f){e[f]=ib(a,b,c,d)}));return e||null}function ag(a,b,c,d,e,f,g){var k,h=U();for(k in d){var l=d[k],m={$scope:l===g||l.$$isolateScope?e:f,$element:a,$attrs:b,$transclude:c},p=l.controller;"@"==p&&(p=b[l.name]),m=t(p,m,!0,l.controllerAs),h[l.name]=m,a.data("$"+l.name+"Controller",m.instance)}return h}function T(a,b,c){for(var d=0,e=a.length;d<e;d++)a[d]=Rb(a[d],{$$isolateScope:b,$$newScope:c})}function O(b,e,g,h,k,l,m){if(e===k)return null;if(k=null,f.hasOwnProperty(e)){var p;e=a.get(e+"Directive");for(var n=0,r=e.length;n<r;n++)try{if(p=e[n],(y(h)||h>p.priority)&&-1!=p.restrict.indexOf(g)){if(l&&(p=Rb(p,{$$start:l,$$end:m})),!p.$$bindings){var u=p,v=p,x=p.name,H={isolateScope:null,bindToController:null};if(D(v.scope)&&(!0===v.bindToController?(H.bindToController=d(v.scope,x,!0),H.isolateScope={}):H.isolateScope=d(v.scope,x,!1)),D(v.bindToController)&&(H.bindToController=d(v.bindToController,x,!0)),D(H.bindToController)){var E=v.controller,M=v.controllerAs;if(!E)throw ga("noctrl",x);if(!Xc(E,M))throw ga("noident",x)}var t=u.$$bindings=H;D(t.isolateScope)&&(p.$$isolateBindings=t.isolateScope)}b.push(p),k=p}}catch(I){c(I)}}return k}function V(b){if(f.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,e=c.length;d<e;d++)if(b=c[d],b.multiElement)return!0;return!1}function $(a,b){var c=b.$attr,d=a.$attr;q(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))}),q(b,function(b,e){a.hasOwnProperty(e)||"$"===e.charAt(0)||(a[e]=b,"class"!==e&&"style"!==e&&(d[e]=c[e]))})}function ba(a,b,c,d,f,g,h,k){var m,p,l=[],n=b[0],r=a.shift(),u=Rb(r,{templateUrl:null,transclude:null,replace:null,$$originalDirective:r}),H=z(r.templateUrl)?r.templateUrl(b,c):r.templateUrl,E=r.templateNamespace;return b.empty(),e(H).then(function(e){var v,M;if(e=xa(e),r.replace){if(e=Vb.test(e)?$c(da(E,W(e))):[],v=e[0],1!=e.length||1!==v.nodeType)throw ga("tplrt",r.name,H);e={$attr:{}},ea(d,b,v);var B=$b(v,[],e);D(r.scope)&&T(B,!0),a=B.concat(a),$(c,e)}else v=n,b.html(e);for(a.unshift(u),m=oa(a,v,c,f,b,r,g,h,k),q(d,function(a,c){a==v&&(d[c]=b[0])}),p=s(b[0].childNodes,f);l.length;){e=l.shift(),M=l.shift();var t=l.shift(),I=l.shift(),B=b[0];if(!e.$$destroyed){if(M!==n){var P=M.className;k.hasElementTranscludeDirective&&r.replace||(B=Xb(v)),ea(t,F(M),B),x(F(B),P)}M=m.transcludeOnThisElement?za(e,m.transclude,I):I,m(p,e,B,d,M)}}l=null}),function(a,b,c,d,e){a=e,b.$$destroyed||(l?l.push(b,c,d,a):(m.transcludeOnThisElement&&(a=za(b,m.transclude,e)),m(p,b,c,d,a)))}}function Z(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function X(a,b,c,d){function e(a){return a?" (module: "+a+")":""}if(b)throw ga("multidir",b.name,e(b.$$moduleName),c.name,e(c.$$moduleName),a,ya(d))}function ca(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){a=a.parent();var b=!!a.length;return b&&aa.$$addBindingClass(a),function(a,c){var e=c.parent();b||aa.$$addBindingClass(e),aa.$$addBindingInfo(e,d.expressions),a.$watch(d,function(a){c[0].nodeValue=a})}}})}function da(a,b){switch(a=Q(a||"html")){case"svg":case"math":var c=C.document.createElement("div");return c.innerHTML="<"+a+">"+b+"</"+a+">",c.childNodes[0].childNodes;default:return b}}function ha(a,b){if("srcdoc"==b)return M.HTML;var c=wa(a);return"xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b)?M.RESOURCE_URL:void 0}function ia(a,c,d,e,f){var g=ha(a,e);f=k[e]||f;var h=b(d,!0,g,f);if(h){if("multiple"===e&&"select"===wa(a))throw ga("selmulti",ya(a));c.push({priority:100,compile:function(){return{pre:function(a,c,k){if(c=k.$$observers||(k.$$observers=U()),m.test(e))throw ga("nodomevents");var l=k[e];l!==d&&(h=l&&b(l,!0,g,f),d=l),h&&(k[e]=h(a),(c[e]||(c[e]=[])).$$inter=!0,(k.$$observers&&k.$$observers[e].$$scope||a).$watch(h,function(a,b){"class"===e&&a!=b?k.$updateClass(a,b):k.$set(e,a)}))}}}})}}function ea(a,b,c){var g,h,d=b[0],e=b.length,f=d.parentNode;if(a)for(g=0,h=a.length;g<h;g++)if(a[g]==d){a[g++]=c,h=g+e-1;for(var k=a.length;g<k;g++,h++)h<k?a[g]=a[h]:delete a[g];a.length-=e-1,a.context===d&&(a.context=c);break}for(f&&f.replaceChild(c,d),a=C.document.createDocumentFragment(),g=0;g<e;g++)a.appendChild(b[g]);for(F.hasData(d)&&(F.data(c,F.data(d)),F(d).off("$destroy")),F.cleanData(a.querySelectorAll("*")),g=1;g<e;g++)delete b[g];b[0]=c,b.length=1}function ja(a,b){return S(function(){return a.apply(null,arguments)},a,b)}function la(a,b,d,e,f,g){try{a(b,d,e,f,g)}catch(h){c(h,ya(d))}}function ka(a,c,d,e,f){function g(b,c,e){z(d.$onChanges)&&c!==e&&(Y||(a.$$postDigest(I),Y=[]),m||(m={},Y.push(h)),m[b]&&(e=m[b].previousValue),m[b]=new Fb(e,c))}function h(){d.$onChanges(m),m=void 0}var m,k=[],l={};return q(e,function(e,h){var v,u,x,H,m=e.attrName,p=e.optional;switch(e.mode){case"@":p||ua.call(c,m)||(d[h]=c[m]=void 0),c.$observe(m,function(a){(G(a)||Ga(a))&&(g(h,a,d[h]),d[h]=a)}),c.$$observers[m].$$scope=a,v=c[m],G(v)?d[h]=b(v)(a):Ga(v)&&(d[h]=v),l[h]=new Fb(bc,d[h]);break;case"=":if(!ua.call(c,m)){if(p)break;c[m]=void 0}if(p&&!c[m])break;u=n(c[m]),H=u.literal?na:function(a,b){return a===b||a!==a&&b!==b},x=u.assign||function(){throw v=d[h]=u(a),ga("nonassign",c[m],m,f.name)},v=d[h]=u(a),p=function(b){return H(b,d[h])||(H(b,v)?x(a,b=d[h]):d[h]=b),v=b},p.$stateful=!0,p=e.collection?a.$watchCollection(c[m],p):a.$watch(n(c[m],p),null,u.literal),k.push(p);break;case"<":if(!ua.call(c,m)){if(p)break;c[m]=void 0}if(p&&!c[m])break;u=n(c[m]);var E=d[h]=u(a);l[h]=new Fb(bc,d[h]),p=a.$watch(u,function(a,b){if(b===a){if(b===E)return;b=E}g(h,a,b),d[h]=a},u.literal),k.push(p);break;case"&":if(u=c.hasOwnProperty(m)?n(c[m]):A,u===A&&p)break;d[h]=function(b){return u(a,b)}}}),{initialChanges:l,removeWatches:k.length&&function(){for(var a=0,b=k.length;a<b;++a)k[a]()}}}var Y,ta=/^\w/,pa=C.document.createElement("div"),qa=u;Da.prototype={$normalize:Aa,$addClass:function(a){a&&0<a.length&&H.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&H.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=ad(a,b);c&&c.length&&H.addClass(this.$$element,c),(c=ad(b,a))&&c.length&&H.removeClass(this.$$element,c)},$set:function(a,b,d,e){var f=Uc(this.$$element[0],a),g=bd[a],h=a;if(f?(this.$$element.prop(a,b),e=f):g&&(this[g]=b,h=g),this[a]=b,e?this.$attr[a]=e:(e=this.$attr[a])||(this.$attr[a]=e=Cc(a,"-")),f=wa(this.$$element),"a"===f&&("href"===a||"xlinkHref"===a)||"img"===f&&"src"===a)this[a]=b=E(b,"src"===a);else if("img"===f&&"srcset"===a&&w(b)){for(var f="",g=W(b),k=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,k=/\s/.test(g)?k:/(,)/,g=g.split(k),k=Math.floor(g.length/2),l=0;l<k;l++)var m=2*l,f=f+E(W(g[m]),!0),f=f+(" "+W(g[m+1]));g=W(g[2*l]).split(/\s/),f+=E(W(g[0]),!0),2===g.length&&(f+=" "+W(g[1])),this[a]=b=f}!1!==d&&(null===b||y(b)?this.$$element.removeAttr(e):ta.test(e)?this.$$element.attr(e,b):P(this.$$element[0],e,b)),(a=this.$$observers)&&q(a[h],function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers=U()),e=d[a]||(d[a]=[]);return e.push(b),K.$evalAsync(function(){e.$$inter||!c.hasOwnProperty(a)||y(c[a])||b(c[a])}),function(){Za(e,b)}}};var ra=b.startSymbol(),sa=b.endSymbol(),xa="{{"==ra&&"}}"==sa?Xa:function(a){return a.replace(/\{\{/g,ra).replace(/}}/g,sa)},Ba=/^ngAttr[A-Z]/,Ca=/^(.+)Start$/;return aa.$$addBindingInfo=p?function(a,b){var c=a.data("$binding")||[];L(b)?c=c.concat(b):c.push(b),a.data("$binding",c)}:A,aa.$$addBindingClass=p?function(a){x(a,"ng-binding")}:A,aa.$$addScopeInfo=p?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateScope":"$scope",b)}:A,aa.$$addScopeClass=p?function(a,b){x(a,b?"ng-isolate-scope":"ng-scope")}:A,aa.$$createComment=function(a,b){var c="";return p&&(c=" "+(a||"")+": ",b&&(c+=b+" ")),C.document.createComment(c)},aa}]}function Fb(a,b){this.previousValue=a,this.currentValue=b}function Aa(a){return db(a.replace(Yc,""))}function ad(a,b){var d="",c=a.split(/\s+/),e=b.split(/\s+/),f=0;a:for(;f<c.length;f++){for(var g=c[f],h=0;h<e.length;h++)if(g==e[h])continue a;d+=(0<d.length?" ":"")+g}return d}function $c(a){a=F(a);var b=a.length;if(1>=b)return a;for(;b--;)8===a[b].nodeType&&bg.call(a,b,1);return a}function Xc(a,b){if(b&&G(b))return b;if(G(a)){var d=cd.exec(a);if(d)return d[3]}}function ff(){var a={},b=!1;this.has=function(b){return a.hasOwnProperty(b)},this.register=function(b,c){Qa(b,"controller"),D(b)?S(a,b):a[b]=c},this.allowGlobals=function(){b=!0},this.$get=["$injector","$window",function(d,c){function e(a,b,c,d){if(!a||!D(a.$scope))throw N("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,k){var l,m,n;if(h=!0===h,k&&G(k)&&(n=k),G(f)){if(k=f.match(cd),!k)throw cg("ctrlfmt",f);m=k[1],n=n||k[3],f=a.hasOwnProperty(m)?a[m]:Ec(g.$scope,m,!0)||(b?Ec(c,m,!0):void 0),Pa(f,m,!0)}return h?(h=(L(f)?f[f.length-1]:f).prototype,l=Object.create(h||null),n&&e(g,n,l,m||f.name),S(function(){var a=d.invoke(f,l,g,m);return a!==l&&(D(a)||z(a))&&(l=a,n&&e(g,n,l,m||f.name)),l},{instance:l,identifier:n})):(l=d.instantiate(f,g,m),n&&e(g,n,l,m||f.name),l)}}]}function gf(){this.$get=["$window",function(a){return F(a.document)}]}function hf(){this.$get=["$log",function(a){return function(b,d){a.error.apply(a,arguments)}}]}function cc(a){return D(a)?da(a)?a.toISOString():bb(a):a}function nf(){this.$get=function(){return function(a){if(!a)return"";var b=[];return tc(a,function(a,c){null===a||y(a)||(L(a)?q(a,function(a){b.push(ea(c)+"="+ea(cc(a)))}):b.push(ea(c)+"="+ea(cc(a))))}),b.join("&")}}}function of(){this.$get=function(){return function(a){function b(a,e,f){null===a||y(a)||(L(a)?q(a,function(a,c){b(a,e+"["+(D(a)?c:"")+"]")}):D(a)&&!da(a)?tc(a,function(a,c){b(a,e+(f?"":"[")+c+(f?"":"]"))}):d.push(ea(e)+"="+ea(cc(a))))}if(!a)return"";var d=[];return b(a,"",!0),d.join("&")}}}function dc(a,b){if(G(a)){var d=a.replace(dg,"").trim();if(d){var c=b("Content-Type");(c=c&&0===c.indexOf(dd))||(c=(c=d.match(eg))&&fg[c[0]].test(d)),c&&(a=xc(d))}}return a}function ed(a){var d,b=U();return G(a)?q(a.split("\n"),function(a){d=a.indexOf(":");var e=Q(W(a.substr(0,d)));a=W(a.substr(d+1)),e&&(b[e]=b[e]?b[e]+", "+a:a)}):D(a)&&q(a,function(a,d){var f=Q(d),g=W(a);f&&(b[f]=b[f]?b[f]+", "+g:g)}),b}function fd(a){var b;return function(d){return b||(b=ed(a)),d?(d=b[Q(d)],void 0===d&&(d=null),d):b}}function gd(a,b,d,c){return z(c)?c(a,b,d):(q(c,function(c){a=c(a,b,d)}),a)}function mf(){var a=this.defaults={transformResponse:[dc],transformRequest:[function(a){return D(a)&&"[object File]"!==ma.call(a)&&"[object Blob]"!==ma.call(a)&&"[object FormData]"!==ma.call(a)?bb(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ia(ec),put:ia(ec),patch:ia(ec)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},b=!1;this.useApplyAsync=function(a){return w(a)?(b=!!a,this):b};var d=!0;this.useLegacyPromiseExtensions=function(a){return w(a)?(d=!!a,this):d};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(e,f,g,h,k,l){function m(b){function c(a,b){for(var d=0,e=b.length;d<e;){var f=b[d++],g=b[d++];a=a.then(f,g)}return b.length=0,a}function e(a,b){var c,d={};return q(a,function(a,e){z(a)?(c=a(b),null!=c&&(d[e]=c)):d[e]=a}),d}function f(a){var b=S({},a);return b.data=gd(a.data,a.headers,a.status,g.transformResponse),a=a.status,200<=a&&300>a?b:k.reject(b)}if(!D(b))throw N("$http")("badreq",b);if(!G(b.url))throw N("$http")("badreq",b.url);var g=S({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer},b);g.headers=function(b){var f,g,h,c=a.headers,d=S({},b.headers),c=S({},c.common,c[Q(b.method)]);a:for(f in c){g=Q(f);for(h in d)if(Q(h)===g)continue a;d[f]=c[f]}return e(d,ia(b))}(b),g.method=ub(g.method),g.paramSerializer=G(g.paramSerializer)?l.get(g.paramSerializer):g.paramSerializer;var h=[],m=[],p=k.when(g);return q(R,function(a){(a.request||a.requestError)&&h.unshift(a.request,a.requestError),(a.response||a.responseError)&&m.push(a.response,a.responseError)}),p=c(p,h),p=p.then(function(b){var c=b.headers,d=gd(b.data,fd(c),void 0,b.transformRequest);return y(d)&&q(c,function(a,b){"content-type"===Q(b)&&delete c[b]}),y(b.withCredentials)&&!y(a.withCredentials)&&(b.withCredentials=a.withCredentials),n(b,d).then(f,f)}),p=c(p,m),d?(p.success=function(a){return Pa(a,"fn"),p.then(function(b){a(b.data,b.status,b.headers,g)}),p},p.error=function(a){return Pa(a,"fn"),p.then(null,function(b){a(b.data,b.status,b.headers,g)}),p}):(p.success=hd("success"),p.error=hd("error")),p}function n(c,d){function g(a){if(a){var c={};return q(a,function(a,d){c[d]=function(c){function d(){a(c)}b?h.$applyAsync(d):h.$$phase?d():h.$apply(d)}}),c}}function l(a,c,d,e){function f(){n(c,a,d,e)}E&&(200<=a&&300>a?E.put(P,[a,c,ed(d),e]):E.remove(P)),b?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function n(a,b,d,e){b=-1<=b?b:0,(200<=b&&300>b?M.resolve:M.reject)({data:a,status:b,headers:fd(d),config:c,statusText:e})}function t(a){n(a.data,a.status,ia(a.headers()),a.statusText)}function R(){var a=m.pendingRequests.indexOf(c);-1!==a&&m.pendingRequests.splice(a,1)}var E,I,M=k.defer(),H=M.promise,Da=c.headers,P=p(c.url,c.paramSerializer(c.params));return m.pendingRequests.push(c),H.then(R,R),!c.cache&&!a.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(E=D(c.cache)?c.cache:D(a.cache)?a.cache:u),E&&(I=E.get(P),w(I)?I&&z(I.then)?I.then(t,t):L(I)?n(I[1],I[0],ia(I[2]),I[3]):n(I,200,{},"OK"):E.put(P,H)),y(I)&&((I=id(c.url)?f()[c.xsrfCookieName||a.xsrfCookieName]:void 0)&&(Da[c.xsrfHeaderName||a.xsrfHeaderName]=I),e(c.method,P,d,l,Da,c.timeout,c.withCredentials,c.responseType,g(c.eventHandlers),g(c.uploadEventHandlers))),H}function p(a,b){return 0<b.length&&(a+=(-1==a.indexOf("?")?"?":"&")+b),a}var u=g("$http");a.paramSerializer=G(a.paramSerializer)?l.get(a.paramSerializer):a.paramSerializer;var R=[];return q(c,function(a){R.unshift(G(a)?l.get(a):l.invoke(a))}),m.pendingRequests=[],function(a){q(arguments,function(a){m[a]=function(b,c){return m(S({},c||{},{method:a,url:b}))}})}("get","delete","head","jsonp"),function(a){q(arguments,function(a){m[a]=function(b,c,d){return m(S({},d||{},{method:a,url:b,data:c}))}})}("post","put","patch"),m.defaults=a,m}]}function qf(){this.$get=function(){return function(){return new C.XMLHttpRequest}}}function pf(){this.$get=["$browser","$jsonpCallbacks","$document","$xhrFactory",function(a,b,d,c){return gg(a,c,a.defer,b,d[0])}]}function gg(a,b,d,c,e){function f(a,b,d){a=a.replace("JSON_CALLBACK",b);var f=e.createElement("script"),m=null;return f.type="text/javascript",f.src=a,f.async=!0,m=function(a){f.removeEventListener("load",m,!1),f.removeEventListener("error",m,!1),e.body.removeChild(f),f=null;var g=-1,u="unknown";a&&("load"!==a.type||c.wasCalled(b)||(a={type:"error"}),u=a.type,g="error"===a.type?404:200),d&&d(g,u)},f.addEventListener("load",m,!1),f.addEventListener("error",m,!1),e.body.appendChild(f),m}return function(e,h,k,l,m,n,p,u,R,B){function r(){fa&&fa(),t&&t.abort()}function J(b,c,e,f,g){w(M)&&d.cancel(M),fa=t=null,b(c,e,f,g),a.$$completeOutstandingRequest(A)}if(a.$$incOutstandingRequestCount(),h=h||a.url(),"jsonp"===Q(e))var v=c.createCallback(h),fa=f(h,v,function(a,b){var d=200===a&&c.getResponse(v);J(l,a,d,"",b),c.removeCallback(v)});else{var t=b(e,h);if(t.open(e,h,!0),q(m,function(a,b){w(a)&&t.setRequestHeader(b,a)}),t.onload=function(){var a=t.statusText||"",b="response"in t?t.response:t.responseText,c=1223===t.status?204:t.status;0===c&&(c=b?200:"file"==Y(h).protocol?404:0),J(l,c,b,t.getAllResponseHeaders(),a)},e=function(){J(l,-1,null,null,"")},t.onerror=e,t.onabort=e,q(R,function(a,b){t.addEventListener(b,a)}),q(B,function(a,b){t.upload.addEventListener(b,a)}),p&&(t.withCredentials=!0),u)try{t.responseType=u}catch(K){if("json"!==u)throw K}t.send(y(k)?null:k)}if(0<n)var M=d(r,n);else n&&z(n.then)&&n.then(r)}}function kf(){var a="{{",b="}}";this.startSymbol=function(b){return b?(a=b,this):a},this.endSymbol=function(a){return a?(b=a,this):b},this.$get=["$parse","$exceptionHandler","$sce",function(d,c,e){function f(a){return"\\\\\\"+a}function g(c){return c.replace(n,a).replace(p,b)}function h(a,b,c,d){var e;return e=a.$watch(function(a){return e(),d(a)},b,c)}function k(f,k,p,n){function J(a){try{var b=a;a=p?e.getTrusted(p,b):e.valueOf(b);var d;if(n&&!w(a))d=a;else if(null==a)d="";else{switch(typeof a){case"string":break;case"number":a=""+a;break;default:a=bb(a)}d=a}return d}catch(g){c(Ka.interr(f,g))}}if(!f.length||-1===f.indexOf(a)){var v;return k||(k=g(f),v=ha(k),v.exp=f,v.expressions=[],v.$$watchDelegate=h),v}n=!!n;var q,t,K=0,M=[],H=[];v=f.length;for(var E=[],I=[];K<v;){if(-1==(q=f.indexOf(a,K))||-1==(t=f.indexOf(b,q+l))){K!==v&&E.push(g(f.substring(K)));break}K!==q&&E.push(g(f.substring(K,q))),K=f.substring(q+l,t),M.push(K),H.push(d(K,J)),K=t+m,I.push(E.length),E.push("")}if(p&&1<E.length&&Ka.throwNoconcat(f),!k||M.length){var Da=function(a){for(var b=0,c=M.length;b<c;b++){if(n&&y(a[b]))return;E[I[b]]=a[b]}return E.join("")};return S(function(a){var b=0,d=M.length,e=Array(d);try{for(;b<d;b++)e[b]=H[b](a);return Da(e)}catch(g){c(Ka.interr(f,g))}},{exp:f,expressions:M,$$watchDelegate:function(a,b){var c;return a.$watchGroup(H,function(d,e){var f=Da(d);z(b)&&b.call(this,f,d!==e?c:f,a),c=f})}})}}var l=a.length,m=b.length,n=new RegExp(a.replace(/./g,f),"g"),p=new RegExp(b.replace(/./g,f),"g");return k.startSymbol=function(){return a},k.endSymbol=function(){return b},k}]}function lf(){this.$get=["$rootScope","$window","$q","$$q","$browser",function(a,b,d,c,e){function f(f,k,l,m){function n(){p?f.apply(null,u):f(r)}var p=4<arguments.length,u=p?va.call(arguments,4):[],R=b.setInterval,q=b.clearInterval,r=0,J=w(m)&&!m,v=(J?c:d).defer(),fa=v.promise;return l=w(l)?l:0,fa.$$intervalId=R(function(){J?e.defer(n):a.$evalAsync(n),v.notify(r++),0<l&&r>=l&&(v.resolve(r),q(fa.$$intervalId),delete g[fa.$$intervalId]),J||a.$apply()},k),g[fa.$$intervalId]=v,fa}var g={};return f.cancel=function(a){return!!(a&&a.$$intervalId in g)&&(g[a.$$intervalId].reject("canceled"),b.clearInterval(a.$$intervalId),delete g[a.$$intervalId],!0)},f}]}function fc(a){a=a.split("/");for(var b=a.length;b--;)a[b]=qb(a[b]);return a.join("/")}function jd(a,b){var d=Y(a);b.$$protocol=d.protocol,b.$$host=d.hostname,b.$$port=Z(d.port)||hg[d.protocol]||null}function kd(a,b){var d="/"!==a.charAt(0);d&&(a="/"+a);var c=Y(a);b.$$path=decodeURIComponent(d&&"/"===c.pathname.charAt(0)?c.pathname.substring(1):c.pathname),b.$$search=Ac(c.search),b.$$hash=decodeURIComponent(c.hash),b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function ka(a,b){if(0===b.lastIndexOf(a,0))return b.substr(a.length)}function Ja(a){var b=a.indexOf("#");return-1==b?a:a.substr(0,b)}function jb(a){return a.replace(/(#.+)|#$/,"$1")}function gc(a,b,d){this.$$html5=!0,d=d||"",jd(a,this),this.$$parse=function(a){var d=ka(b,a);if(!G(d))throw Gb("ipthprfx",a,b);kd(d,this),this.$$path||(this.$$path="/"),this.$$compose()},this.$$compose=function(){var a=Tb(this.$$search),d=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(a?"?"+a:"")+d,this.$$absUrl=b+this.$$url.substr(1)},this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;return w(f=ka(a,c))?(g=f,g=w(f=ka(d,f))?b+(ka("/",f)||f):a+g):w(f=ka(b,c))?g=b+f:b==c+"/"&&(g=b),g&&this.$$parse(g),!!g}}function hc(a,b,d){jd(a,this),this.$$parse=function(c){var f,e=ka(a,c)||ka(b,c);y(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",y(e)&&(a=c,this.replace())):(f=ka(d,e),y(f)&&(f=e)),kd(f,this),c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;0===f.lastIndexOf(e,0)&&(f=f.replace(e,"")),g.exec(f)||(c=(f=g.exec(c))?f[1]:c),this.$$path=c,this.$$compose()},this.$$compose=function(){var b=Tb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(b?"?"+b:"")+e,this.$$absUrl=a+(this.$$url?d+this.$$url:"")},this.$$parseLinkUrl=function(b,d){return Ja(a)==Ja(b)&&(this.$$parse(b),!0)}}function ld(a,b,d){this.$$html5=!0,hc.apply(this,arguments),this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;return a==Ja(c)?f=c:(g=ka(b,c))?f=a+d+g:b===c+"/"&&(f=b),f&&this.$$parse(f),!!f},this.$$compose=function(){var b=Tb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(b?"?"+b:"")+e,this.$$absUrl=a+d+this.$$url}}function Hb(a){return function(){return this[a]}}function md(a,b){return function(d){return y(d)?this[a]:(this[a]=b(d),this.$$compose(),this)}}function sf(){var a="",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return w(b)?(a=b,this):a},this.html5Mode=function(a){return Ga(a)?(b.enabled=a,this):D(a)?(Ga(a.enabled)&&(b.enabled=a.enabled),Ga(a.requireBase)&&(b.requireBase=a.requireBase),Ga(a.rewriteLinks)&&(b.rewriteLinks=a.rewriteLinks),this):b},this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d,c,e,f,g){function h(a,b,d){var e=l.url(),f=l.$$state;try{c.url(a,b,d),l.$$state=c.state()}catch(g){throw l.url(e),l.$$state=f,g}}function k(a,b){d.$broadcast("$locationChangeSuccess",l.absUrl(),a,l.$$state,b)}var l,m;m=c.baseHref();var p,n=c.url();if(b.enabled){if(!m&&b.requireBase)throw Gb("nobase");p=n.substring(0,n.indexOf("/",n.indexOf("//")+2))+(m||"/"),m=e.history?gc:ld}else p=Ja(n),m=hc;var u=p.substr(0,Ja(p).lastIndexOf("/")+1);l=new m(p,u,"#"+a),l.$$parseLinkUrl(n,n),l.$$state=c.state();var R=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(b.rewriteLinks&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&2!=a.which&&2!=a.button){for(var e=F(a.target);"a"!==wa(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),k=e.attr("href")||e.attr("xlink:href");D(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=Y(h.animVal).href),R.test(h)||!h||e.attr("target")||a.isDefaultPrevented()||!l.$$parseLinkUrl(h,k)||(a.preventDefault(),l.absUrl()!=c.url()&&(d.$apply(),g.angular["ff-684208-preventDefault"]=!0))}}),jb(l.absUrl())!=jb(n)&&c.url(l.absUrl(),!0);var q=!0;return c.onUrlChange(function(a,b){y(ka(u,a))?g.location.href=a:(d.$evalAsync(function(){var f,c=l.absUrl(),e=l.$$state;a=jb(a),l.$$parse(a),l.$$state=b,f=d.$broadcast("$locationChangeStart",a,c,b,e).defaultPrevented,l.absUrl()===a&&(f?(l.$$parse(c),l.$$state=e,h(c,!1,e)):(q=!1,k(c,e)))}),d.$$phase||d.$digest())}),d.$watch(function(){var a=jb(c.url()),b=jb(l.absUrl()),f=c.state(),g=l.$$replace,m=a!==b||l.$$html5&&e.history&&f!==l.$$state;(q||m)&&(q=!1,d.$evalAsync(function(){var b=l.absUrl(),c=d.$broadcast("$locationChangeStart",b,a,l.$$state,f).defaultPrevented;l.absUrl()===b&&(c?(l.$$parse(a),l.$$state=f):(m&&h(b,g,f===l.$$state?null:l.$$state),k(a,f)))})),l.$$replace=!1}),l}]}function tf(){var a=!0,b=this;this.debugEnabled=function(b){return w(b)?(a=b,this):a},this.$get=["$window",function(d){function c(a){return a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line)),a}function e(a){var b=d.console||{},e=b[a]||b.log||A;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];return q(arguments,function(b){a.push(c(b))}),e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}function Sa(a,b){if("__defineGetter__"===a||"__defineSetter__"===a||"__lookupGetter__"===a||"__lookupSetter__"===a||"__proto__"===a)throw X("isecfld",b);return a}function ig(a){return a+""}function ra(a,b){if(a){if(a.constructor===a)throw X("isecfn",b);if(a.window===a)throw X("isecwindow",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw X("isecdom",b);if(a===Object)throw X("isecobj",b)}return a}function nd(a,b){if(a){if(a.constructor===a)throw X("isecfn",b);if(a===jg||a===kg||a===lg)throw X("isecff",b)}}function Ib(a,b){if(a&&(a===(0).constructor||a===(!1).constructor||a==="".constructor||a==={}.constructor||a===[].constructor||a===Function.constructor))throw X("isecaf",b)}function mg(a,b){return"undefined"!=typeof a?a:b}function od(a,b){return"undefined"==typeof a?b:"undefined"==typeof b?a:a+b}function V(a,b){var d,c;switch(a.type){case s.Program:d=!0,q(a.body,function(a){V(a.expression,b),d=d&&a.expression.constant}),a.constant=d;break;case s.Literal:a.constant=!0,a.toWatch=[];break;case s.UnaryExpression:V(a.argument,b),a.constant=a.argument.constant,a.toWatch=a.argument.toWatch;break;case s.BinaryExpression:V(a.left,b),V(a.right,b),a.constant=a.left.constant&&a.right.constant,a.toWatch=a.left.toWatch.concat(a.right.toWatch);break;case s.LogicalExpression:V(a.left,b),V(a.right,b),a.constant=a.left.constant&&a.right.constant,a.toWatch=a.constant?[]:[a];break;case s.ConditionalExpression:V(a.test,b),V(a.alternate,b),V(a.consequent,b),a.constant=a.test.constant&&a.alternate.constant&&a.consequent.constant,a.toWatch=a.constant?[]:[a];break;case s.Identifier:a.constant=!1,a.toWatch=[a];break;case s.MemberExpression:V(a.object,b),a.computed&&V(a.property,b),a.constant=a.object.constant&&(!a.computed||a.property.constant),a.toWatch=[a];break;case s.CallExpression:d=!!a.filter&&!b(a.callee.name).$stateful,c=[],q(a.arguments,function(a){V(a,b),d=d&&a.constant,a.constant||c.push.apply(c,a.toWatch)}),a.constant=d,a.toWatch=a.filter&&!b(a.callee.name).$stateful?c:[a];break;case s.AssignmentExpression:V(a.left,b),V(a.right,b),a.constant=a.left.constant&&a.right.constant,a.toWatch=[a];break;case s.ArrayExpression:d=!0,c=[],q(a.elements,function(a){V(a,b),d=d&&a.constant,a.constant||c.push.apply(c,a.toWatch)}),a.constant=d,a.toWatch=c;break;case s.ObjectExpression:d=!0,c=[],q(a.properties,function(a){V(a.value,b),d=d&&a.value.constant&&!a.computed,a.value.constant||c.push.apply(c,a.value.toWatch)}),a.constant=d,a.toWatch=c;break;case s.ThisExpression:a.constant=!1,a.toWatch=[];break;case s.LocalsExpression:a.constant=!1,a.toWatch=[]}}function pd(a){if(1==a.length){a=a[0].expression;var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:void 0}}function qd(a){return a.type===s.Identifier||a.type===s.MemberExpression}function rd(a){if(1===a.body.length&&qd(a.body[0].expression))return{type:s.AssignmentExpression,left:a.body[0].expression,right:{type:s.NGValueParameter},operator:"="}}function sd(a){return 0===a.body.length||1===a.body.length&&(a.body[0].expression.type===s.Literal||a.body[0].expression.type===s.ArrayExpression||a.body[0].expression.type===s.ObjectExpression)}function td(a,b){this.astBuilder=a,this.$filter=b}function ud(a,b){this.astBuilder=a,this.$filter=b}function Jb(a){return"constructor"==a}function ic(a){return z(a.valueOf)?a.valueOf():ng.call(a)}function uf(){var c,e,a=U(),b=U(),d={true:!0,false:!1,null:null,undefined:void 0};this.addLiteral=function(a,b){d[a]=b},this.setIdentifierFns=function(a,b){return c=a,e=b,this},this.$get=["$filter",function(f){function g(c,d,e){var g,k,H;switch(e=e||J,typeof c){case"string":H=c=c.trim();var E=e?b:a;if(g=E[H],!g){":"===c.charAt(0)&&":"===c.charAt(1)&&(k=!0,c=c.substring(2)),g=e?r:B;var q=new jc(g);g=new kc(q,f,g).parse(c),g.constant?g.$$watchDelegate=p:k?g.$$watchDelegate=g.literal?n:m:g.inputs&&(g.$$watchDelegate=l),e&&(g=h(g)),E[H]=g}return u(g,d);case"function":return u(c,d);default:return u(A,d)}}function h(a){function b(c,d,e,f){var g=J;J=!0;try{return a(c,d,e,f)}finally{J=g}}if(!a)return a;b.$$watchDelegate=a.$$watchDelegate,b.assign=h(a.assign),b.constant=a.constant,b.literal=a.literal;for(var c=0;a.inputs&&c<a.inputs.length;++c)a.inputs[c]=h(a.inputs[c]);return b.inputs=a.inputs,b}function k(a,b){return null==a||null==b?a===b:("object"!=typeof a||(a=ic(a),"object"!=typeof a))&&(a===b||a!==a&&b!==b)}function l(a,b,c,d,e){var g,f=d.inputs;if(1===f.length){var h=k,f=f[0];return a.$watch(function(a){var b=f(a);return k(b,h)||(g=d(a,void 0,void 0,[b]),h=b&&ic(b)),g},b,c,e)}for(var l=[],m=[],p=0,n=f.length;p<n;p++)l[p]=k,m[p]=null;return a.$watch(function(a){for(var b=!1,c=0,e=f.length;c<e;c++){var h=f[c](a);(b||(b=!k(h,l[c])))&&(m[c]=h,l[c]=h&&ic(h))}return b&&(g=d(a,void 0,void 0,m)),g},b,c,e)}function m(a,b,c,d){var e,f;return e=a.$watch(function(a){return d(a)},function(a,c,d){f=a,z(b)&&b.apply(this,arguments),w(a)&&d.$$postDigest(function(){w(f)&&e()})},c)}function n(a,b,c,d){function e(a){var b=!0;return q(a,function(a){w(a)||(b=!1)}),b}var f,g;return f=a.$watch(function(a){return d(a)},function(a,c,d){g=a,z(b)&&b.call(this,a,c,d),e(a)&&d.$$postDigest(function(){e(g)&&f()})},c)}function p(a,b,c,d){var e;return e=a.$watch(function(a){return e(),d(a)},b,c)}function u(a,b){if(!b)return a;var c=a.$$watchDelegate,d=!1,c=c!==n&&c!==m?function(c,e,f,g){return f=d&&g?g[0]:a(c,e,f,g),b(f,c,e)}:function(c,d,e,f){return e=a(c,d,e,f),c=b(e,c,d),w(e)?c:e};return a.$$watchDelegate&&a.$$watchDelegate!==l?c.$$watchDelegate=a.$$watchDelegate:b.$stateful||(c.$$watchDelegate=l,d=!a.inputs,c.inputs=a.inputs?a.inputs:[a]),c}var R=Ba().noUnsafeEval,B={csp:R,expensiveChecks:!1,literals:pa(d),isIdentifierStart:z(c)&&c,isIdentifierContinue:z(e)&&e},r={csp:R,expensiveChecks:!0,literals:pa(d),isIdentifierStart:z(c)&&c,isIdentifierContinue:z(e)&&e},J=!1;return g.$$runningExpensiveChecks=function(){return J},g}]}function wf(){this.$get=["$rootScope","$exceptionHandler",function(a,b){return vd(function(b){a.$evalAsync(b)},b)}]}function xf(){this.$get=["$browser","$exceptionHandler",function(a,b){return vd(function(b){a.defer(b)},b)}]}function vd(a,b){function d(){this.$$state={status:0}}function c(a,b){return function(c){b.call(a,c)}}function e(c){!c.processScheduled&&c.pending&&(c.processScheduled=!0,a(function(){var a,d,e;e=c.pending,c.processScheduled=!1,c.pending=void 0;for(var f=0,g=e.length;f<g;++f){d=e[f][0],a=e[f][c.status];try{z(a)?d.resolve(a(c.value)):1===c.status?d.resolve(c.value):d.reject(c.value)}catch(h){d.reject(h),b(h)}}}))}function f(){this.promise=new d}var g=N("$q",TypeError),h=function(){var a=new f;return a.resolve=c(a,a.resolve),
@@ -21,14 +21,14 @@ var s=new t(null);s.fromInt(30);for(var f,o=0,u=function(e,t){return e|t},a=+new
var o=i[s],u=o.value,a=t.Type.UTF8;"valueTagClass"in o&&(a=o.valueTagClass),a===t.Type.UTF8&&(u=e.util.encodeUtf8(u));var f=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(o.type).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.SET,!0,[t.create(t.Class.UNIVERSAL,a,!1,u)])]);r.value.push(f)}return r}var t=e.asn1,n=e.pki=e.pki||{},r=n.oids,i={};i.CN=r.commonName,i.commonName="CN",i.C=r.countryName,i.countryName="C",i.L=r.localityName,i.localityName="L",i.ST=r.stateOrProvinceName,i.stateOrProvinceName="ST",i.O=r.organizationName,i.organizationName="O",i.OU=r.organizationalUnitName,i.organizationalUnitName="OU",i.E=r.emailAddress,i.emailAddress="E";var s=e.pki.rsa.publicKeyValidator,o={name:"Certificate",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"Certificate.TBSCertificate",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,captureAsn1:"tbsCertificate",value:[{name:"Certificate.TBSCertificate.version",tagClass:t.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"Certificate.TBSCertificate.version.integer",tagClass:t.Class.UNIVERSAL,type:t.Type.INTEGER,constructed:!1,capture:"certVersion"}]},{name:"Certificate.TBSCertificate.serialNumber",tagClass:t.Class.UNIVERSAL,type:t.Type.INTEGER,constructed:!1,capture:"certSerialNumber"},{name:"Certificate.TBSCertificate.signature",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"Certificate.TBSCertificate.signature.algorithm",tagClass:t.Class.UNIVERSAL,type:t.Type.OID,constructed:!1,capture:"certinfoSignatureOid"},{name:"Certificate.TBSCertificate.signature.parameters",tagClass:t.Class.UNIVERSAL,optional:!0,captureAsn1:"certinfoSignatureParams"}]},{name:"Certificate.TBSCertificate.issuer",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,captureAsn1:"certIssuer"},{name:"Certificate.TBSCertificate.validity",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"Certificate.TBSCertificate.validity.notBefore (utc)",tagClass:t.Class.UNIVERSAL,type:t.Type.UTCTIME,constructed:!1,optional:!0,capture:"certValidity1UTCTime"},{name:"Certificate.TBSCertificate.validity.notBefore (generalized)",tagClass:t.Class.UNIVERSAL,type:t.Type.GENERALIZEDTIME,constructed:!1,optional:!0,capture:"certValidity2GeneralizedTime"},{name:"Certificate.TBSCertificate.validity.notAfter (utc)",tagClass:t.Class.UNIVERSAL,type:t.Type.UTCTIME,constructed:!1,optional:!0,capture:"certValidity3UTCTime"},{name:"Certificate.TBSCertificate.validity.notAfter (generalized)",tagClass:t.Class.UNIVERSAL,type:t.Type.GENERALIZEDTIME,constructed:!1,optional:!0,capture:"certValidity4GeneralizedTime"}]},{name:"Certificate.TBSCertificate.subject",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,captureAsn1:"certSubject"},s,{name:"Certificate.TBSCertificate.issuerUniqueID",tagClass:t.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,value:[{name:"Certificate.TBSCertificate.issuerUniqueID.id",tagClass:t.Class.UNIVERSAL,type:t.Type.BITSTRING,constructed:!1,capture:"certIssuerUniqueId"}]},{name:"Certificate.TBSCertificate.subjectUniqueID",tagClass:t.Class.CONTEXT_SPECIFIC,type:2,constructed:!0,optional:!0,value:[{name:"Certificate.TBSCertificate.subjectUniqueID.id",tagClass:t.Class.UNIVERSAL,type:t.Type.BITSTRING,constructed:!1,capture:"certSubjectUniqueId"}]},{name:"Certificate.TBSCertificate.extensions",tagClass:t.Class.CONTEXT_SPECIFIC,type:3,constructed:!0,captureAsn1:"certExtensions",optional:!0}]},{name:"Certificate.signatureAlgorithm",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"Certificate.signatureAlgorithm.algorithm",tagClass:t.Class.UNIVERSAL,type:t.Type.OID,constructed:!1,capture:"certSignatureOid"},{name:"Certificate.TBSCertificate.signature.parameters",tagClass:t.Class.UNIVERSAL,optional:!0,captureAsn1:"certSignatureParams"}]},{name:"Certificate.signatureValue",tagClass:t.Class.UNIVERSAL,type:t.Type.BITSTRING,constructed:!1,capture:"certSignature"}]},u={name:"rsapss",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"rsapss.hashAlgorithm",tagClass:t.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,value:[{name:"rsapss.hashAlgorithm.AlgorithmIdentifier",tagClass:t.Class.UNIVERSAL,type:t.Class.SEQUENCE,constructed:!0,optional:!0,value:[{name:"rsapss.hashAlgorithm.AlgorithmIdentifier.algorithm",tagClass:t.Class.UNIVERSAL,type:t.Type.OID,constructed:!1,capture:"hashOid"}]}]},{name:"rsapss.maskGenAlgorithm",tagClass:t.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,value:[{name:"rsapss.maskGenAlgorithm.AlgorithmIdentifier",tagClass:t.Class.UNIVERSAL,type:t.Class.SEQUENCE,constructed:!0,optional:!0,value:[{name:"rsapss.maskGenAlgorithm.AlgorithmIdentifier.algorithm",tagClass:t.Class.UNIVERSAL,type:t.Type.OID,constructed:!1,capture:"maskGenOid"},{name:"rsapss.maskGenAlgorithm.AlgorithmIdentifier.params",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"rsapss.maskGenAlgorithm.AlgorithmIdentifier.params.algorithm",tagClass:t.Class.UNIVERSAL,type:t.Type.OID,constructed:!1,capture:"maskGenHashOid"}]}]}]},{name:"rsapss.saltLength",tagClass:t.Class.CONTEXT_SPECIFIC,type:2,optional:!0,value:[{name:"rsapss.saltLength.saltLength",tagClass:t.Class.UNIVERSAL,type:t.Class.INTEGER,constructed:!1,capture:"saltLength"}]},{name:"rsapss.trailerField",tagClass:t.Class.CONTEXT_SPECIFIC,type:3,optional:!0,value:[{name:"rsapss.trailer.trailer",tagClass:t.Class.UNIVERSAL,type:t.Class.INTEGER,constructed:!1,capture:"trailer"}]}]},a={name:"CertificationRequestInfo",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,captureAsn1:"certificationRequestInfo",value:[{name:"CertificationRequestInfo.integer",tagClass:t.Class.UNIVERSAL,type:t.Type.INTEGER,constructed:!1,capture:"certificationRequestInfoVersion"},{name:"CertificationRequestInfo.subject",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,captureAsn1:"certificationRequestInfoSubject"},s,{name:"CertificationRequestInfo.attributes",tagClass:t.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,capture:"certificationRequestInfoAttributes",value:[{name:"CertificationRequestInfo.attributes",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"CertificationRequestInfo.attributes.type",tagClass:t.Class.UNIVERSAL,type:t.Type.OID,constructed:!1},{name:"CertificationRequestInfo.attributes.value",tagClass:t.Class.UNIVERSAL,type:t.Type.SET,constructed:!0}]}]}]},f={name:"CertificationRequest",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,captureAsn1:"csr",value:[a,{name:"CertificationRequest.signatureAlgorithm",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"CertificationRequest.signatureAlgorithm.algorithm",tagClass:t.Class.UNIVERSAL,type:t.Type.OID,constructed:!1,capture:"csrSignatureOid"},{name:"CertificationRequest.signatureAlgorithm.parameters",tagClass:t.Class.UNIVERSAL,optional:!0,captureAsn1:"csrSignatureParams"}]},{name:"CertificationRequest.signature",tagClass:t.Class.UNIVERSAL,type:t.Type.BITSTRING,constructed:!1,capture:"csrSignature"}]};n.RDNAttributesAsArray=function(e,n){for(var o,u,a,s=[],f=0;f<e.value.length;++f){o=e.value[f];for(var l=0;l<o.value.length;++l)a={},u=o.value[l],a.type=t.derToOid(u.value[0].value),a.value=u.value[1].value,a.valueTagClass=u.value[1].type,a.type in r&&(a.name=r[a.type],a.name in i&&(a.shortName=i[a.name])),n&&(n.update(a.type),n.update(a.value)),s.push(a)}return s},n.CRIAttributesAsArray=function(e){for(var n=[],s=0;s<e.length;++s)for(var o=e[s],u=t.derToOid(o.value[0].value),a=o.value[1].value,f=0;f<a.length;++f){var l={};l.type=u,l.value=a[f].value,l.valueTagClass=a[f].type,l.type in r&&(l.name=r[l.type],l.name in i&&(l.shortName=i[l.name])),n.push(l)}return n};var c=function(n){for(var s,o,u,i=[],a=0;a<n.value.length;++a){u=n.value[a];for(var f=0;f<u.value.length;++f){if(o=u.value[f],s={},s.id=t.derToOid(o.value[0].value),s.critical=!1,o.value[1].type===t.Type.BOOLEAN?(s.critical=0!==o.value[1].value.charCodeAt(0),s.value=o.value[2].value):s.value=o.value[1].value,s.id in r)if(s.name=r[s.id],"keyUsage"===s.name){var l=t.fromDer(s.value),c=0,h=0;l.value.length>1&&(c=l.value.charCodeAt(1),h=l.value.length>2?l.value.charCodeAt(2):0),s.digitalSignature=128===(128&c),s.nonRepudiation=64===(64&c),s.keyEncipherment=32===(32&c),s.dataEncipherment=16===(16&c),s.keyAgreement=8===(8&c),s.keyCertSign=4===(4&c),s.cRLSign=2===(2&c),s.encipherOnly=1===(1&c),s.decipherOnly=128===(128&h)}else if("basicConstraints"===s.name){var l=t.fromDer(s.value);l.value.length>0&&l.value[0].type===t.Type.BOOLEAN?s.cA=0!==l.value[0].value.charCodeAt(0):s.cA=!1;var p=null;l.value.length>0&&l.value[0].type===t.Type.INTEGER?p=l.value[0].value:l.value.length>1&&(p=l.value[1].value),null!==p&&(s.pathLenConstraint=t.derToInteger(p))}else if("extKeyUsage"===s.name)for(var l=t.fromDer(s.value),d=0;d<l.value.length;++d){var v=t.derToOid(l.value[d].value);v in r?s[r[v]]=!0:s[v]=!0}else if("nsCertType"===s.name){var l=t.fromDer(s.value),c=0;l.value.length>1&&(c=l.value.charCodeAt(1)),s.client=128===(128&c),s.server=64===(64&c),s.email=32===(32&c),s.objsign=16===(16&c),s.reserved=8===(8&c),s.sslCA=4===(4&c),s.emailCA=2===(2&c),s.objCA=1===(1&c)}else if("subjectAltName"===s.name||"issuerAltName"===s.name){s.altNames=[];for(var m,l=t.fromDer(s.value),g=0;g<l.value.length;++g){m=l.value[g];var y={type:m.type,value:m.value};switch(s.altNames.push(y),m.type){case 1:case 2:case 6:break;case 7:y.ip=e.util.bytesToIP(m.value);break;case 8:y.oid=t.derToOid(m.value)}}}else if("subjectKeyIdentifier"===s.name){var l=t.fromDer(s.value);s.subjectKeyIdentifier=e.util.bytesToHex(l.value)}i.push(s)}}return i},h=function(e,n,i){var s={};if(e!==r["RSASSA-PSS"])return s;i&&(s={hash:{algorithmOid:r.sha1},mgf:{algorithmOid:r.mgf1,hash:{algorithmOid:r.sha1}},saltLength:20});var o={},a=[];if(!t.validate(n,u,o,a)){var f=new Error("Cannot read RSASSA-PSS parameter block.");throw f.errors=a,f}return void 0!==o.hashOid&&(s.hash=s.hash||{},s.hash.algorithmOid=t.derToOid(o.hashOid)),void 0!==o.maskGenOid&&(s.mgf=s.mgf||{},s.mgf.algorithmOid=t.derToOid(o.maskGenOid),s.mgf.hash=s.mgf.hash||{},s.mgf.hash.algorithmOid=t.derToOid(o.maskGenHashOid)),void 0!==o.saltLength&&(s.saltLength=o.saltLength.charCodeAt(0)),s};n.certificateFromPem=function(r,i,s){var o=e.pem.decode(r)[0];if("CERTIFICATE"!==o.type&&"X509 CERTIFICATE"!==o.type&&"TRUSTED CERTIFICATE"!==o.type){var u=new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".');throw u.headerType=o.type,u}if(o.procType&&"ENCRYPTED"===o.procType.type)throw new Error("Could not convert certificate from PEM; PEM is encrypted.");var a=t.fromDer(o.body,s);return n.certificateFromAsn1(a,i)},n.certificateToPem=function(r,i){var s={type:"CERTIFICATE",body:t.toDer(n.certificateToAsn1(r)).getBytes()};return e.pem.encode(s,{maxline:i})},n.publicKeyFromPem=function(r){var i=e.pem.decode(r)[0];if("PUBLIC KEY"!==i.type&&"RSA PUBLIC KEY"!==i.type){var s=new Error('Could not convert public key from PEM; PEM header type is not "PUBLIC KEY" or "RSA PUBLIC KEY".');throw s.headerType=i.type,s}if(i.procType&&"ENCRYPTED"===i.procType.type)throw new Error("Could not convert public key from PEM; PEM is encrypted.");var o=t.fromDer(i.body);return n.publicKeyFromAsn1(o)},n.publicKeyToPem=function(r,i){var s={type:"PUBLIC KEY",body:t.toDer(n.publicKeyToAsn1(r)).getBytes()};return e.pem.encode(s,{maxline:i})},n.publicKeyToRSAPublicKeyPem=function(r,i){var s={type:"RSA PUBLIC KEY",body:t.toDer(n.publicKeyToRSAPublicKey(r)).getBytes()};return e.pem.encode(s,{maxline:i})},n.certificationRequestFromPem=function(r,i,s){var o=e.pem.decode(r)[0];if("CERTIFICATE REQUEST"!==o.type){var u=new Error('Could not convert certification request from PEM; PEM header type is not "CERTIFICATE REQUEST".');throw u.headerType=o.type,u}if(o.procType&&"ENCRYPTED"===o.procType.type)throw new Error("Could not convert certification request from PEM; PEM is encrypted.");var a=t.fromDer(o.body,s);return n.certificationRequestFromAsn1(a,i)},n.certificationRequestToPem=function(r,i){var s={type:"CERTIFICATE REQUEST",body:t.toDer(n.certificationRequestToAsn1(r)).getBytes()};return e.pem.encode(s,{maxline:i})},n.createCertificate=function(){var i={};return i.version=2,i.serialNumber="00",i.signatureOid=null,i.signature=null,i.siginfo={},i.siginfo.algorithmOid=null,i.validity={},i.validity.notBefore=new Date,i.validity.notAfter=new Date,i.issuer={},i.issuer.getField=function(e){return l(i.issuer,e)},i.issuer.addField=function(e){m([e]),i.issuer.attributes.push(e)},i.issuer.attributes=[],i.issuer.hash=null,i.subject={},i.subject.getField=function(e){return l(i.subject,e)},i.subject.addField=function(e){m([e]),i.subject.attributes.push(e)},i.subject.attributes=[],i.subject.hash=null,i.extensions=[],i.publicKey=null,i.md=null,i.setSubject=function(e,t){m(e),i.subject.attributes=e,delete i.subject.uniqueId,t&&(i.subject.uniqueId=t),i.subject.hash=null},i.setIssuer=function(e,t){m(e),i.issuer.attributes=e,delete i.issuer.uniqueId,t&&(i.issuer.uniqueId=t),i.issuer.hash=null},i.setExtensions=function(s){for(var o,u=0;u<s.length;++u){if(o=s[u],"undefined"==typeof o.name&&o.id&&o.id in n.oids&&(o.name=n.oids[o.id]),"undefined"==typeof o.id){if(!(o.name&&o.name in n.oids)){var a=new Error("Extension ID not specified.");throw a.extension=o,a}o.id=n.oids[o.name]}if("undefined"==typeof o.value){if("keyUsage"===o.name){var f=0,l=0,c=0;o.digitalSignature&&(l|=128,f=7),o.nonRepudiation&&(l|=64,f=6),o.keyEncipherment&&(l|=32,f=5),o.dataEncipherment&&(l|=16,f=4),o.keyAgreement&&(l|=8,f=3),o.keyCertSign&&(l|=4,f=2),o.cRLSign&&(l|=2,f=1),o.encipherOnly&&(l|=1,f=0),o.decipherOnly&&(c|=128,f=7);var h=String.fromCharCode(f);0!==c?h+=String.fromCharCode(l)+String.fromCharCode(c):0!==l&&(h+=String.fromCharCode(l)),o.value=t.create(t.Class.UNIVERSAL,t.Type.BITSTRING,!1,h)}else if("basicConstraints"===o.name)o.value=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[]),o.cA&&o.value.value.push(t.create(t.Class.UNIVERSAL,t.Type.BOOLEAN,!1,String.fromCharCode(255))),"pathLenConstraint"in o&&o.value.value.push(t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,t.integerToDer(o.pathLenConstraint).getBytes()));else if("extKeyUsage"===o.name){o.value=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[]);var p=o.value.value;for(var d in o)o[d]===!0&&(d in r?p.push(t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(r[d]).getBytes())):d.indexOf(".")!==-1&&p.push(t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(d).getBytes())))}else if("nsCertType"===o.name){var f=0,l=0;o.client&&(l|=128,f=7),o.server&&(l|=64,f=6),o.email&&(l|=32,f=5),o.objsign&&(l|=16,f=4),o.reserved&&(l|=8,f=3),o.sslCA&&(l|=4,f=2),o.emailCA&&(l|=2,f=1),o.objCA&&(l|=1,f=0);var h=String.fromCharCode(f);0!==l&&(h+=String.fromCharCode(l)),o.value=t.create(t.Class.UNIVERSAL,t.Type.BITSTRING,!1,h)}else if("subjectAltName"===o.name||"issuerAltName"===o.name){o.value=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[]);for(var v,m=0;m<o.altNames.length;++m){v=o.altNames[m];var h=v.value;if(7===v.type&&v.ip){if(h=e.util.bytesFromIP(v.ip),null===h){var a=new Error('Extension "ip" value is not a valid IPv4 or IPv6 address.');throw a.extension=o,a}}else 8===v.type&&(h=v.oid?t.oidToDer(t.oidToDer(v.oid)):t.oidToDer(h));o.value.value.push(t.create(t.Class.CONTEXT_SPECIFIC,v.type,!1,h))}}else if("subjectKeyIdentifier"===o.name){var g=i.generateSubjectKeyIdentifier();o.subjectKeyIdentifier=g.toHex(),o.value=t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,g.getBytes())}if("undefined"==typeof o.value){var a=new Error("Extension value not specified.");throw a.extension=o,a}}}i.extensions=s},i.getExtension=function(e){"string"==typeof e&&(e={name:e});for(var n,t=null,r=0;null===t&&r<i.extensions.length;++r)n=i.extensions[r],e.id&&n.id===e.id?t=n:e.name&&n.name===e.name&&(t=n);return t},i.sign=function(s,o){i.md=o||e.md.sha1.create();var u=r[i.md.algorithm+"WithRSAEncryption"];if(!u){var a=new Error("Could not compute certificate digest. Unknown message digest algorithm OID.");throw a.algorithm=i.md.algorithm,a}i.signatureOid=i.siginfo.algorithmOid=u,i.tbsCertificate=n.getTBSCertificate(i);var f=t.toDer(i.tbsCertificate);i.md.update(f.getBytes()),i.signature=s.sign(i.md)},i.verify=function(s){var o=!1;if(!i.issued(s)){var u=s.issuer,a=i.subject,f=new Error("The parent certificate did not issue the given child certificate; the child certificate's issuer does not match the parent's subject.");throw f.expectedIssuer=u.attributes,f.actualIssuer=a.attributes,f}var l=s.md;if(null===l){if(s.signatureOid in r){var c=r[s.signatureOid];switch(c){case"sha1WithRSAEncryption":l=e.md.sha1.create();break;case"md5WithRSAEncryption":l=e.md.md5.create();break;case"sha256WithRSAEncryption":l=e.md.sha256.create();break;case"RSASSA-PSS":l=e.md.sha256.create()}}if(null===l){var f=new Error("Could not compute certificate digest. Unknown signature OID.");throw f.signatureOid=s.signatureOid,f}var h=s.tbsCertificate||n.getTBSCertificate(s),p=t.toDer(h);l.update(p.getBytes())}if(null!==l){var d;switch(s.signatureOid){case r.sha1WithRSAEncryption:d=void 0;break;case r["RSASSA-PSS"]:var v,m;if(v=r[s.signatureParameters.mgf.hash.algorithmOid],void 0===v||void 0===e.md[v]){var f=new Error("Unsupported MGF hash function.");throw f.oid=s.signatureParameters.mgf.hash.algorithmOid,f.name=v,f}if(m=r[s.signatureParameters.mgf.algorithmOid],void 0===m||void 0===e.mgf[m]){var f=new Error("Unsupported MGF function.");throw f.oid=s.signatureParameters.mgf.algorithmOid,f.name=m,f}if(m=e.mgf[m].create(e.md[v].create()),v=r[s.signatureParameters.hash.algorithmOid],void 0===v||void 0===e.md[v])throw{message:"Unsupported RSASSA-PSS hash function.",oid:s.signatureParameters.hash.algorithmOid,name:v};d=e.pss.create(e.md[v].create(),m,s.signatureParameters.saltLength)}o=i.publicKey.verify(l.digest().getBytes(),s.signature,d)}return o},i.isIssuer=function(e){var t=!1,n=i.issuer,r=e.subject;if(n.hash&&r.hash)t=n.hash===r.hash;else if(n.attributes.length===r.attributes.length){t=!0;for(var s,o,u=0;t&&u<n.attributes.length;++u)s=n.attributes[u],o=r.attributes[u],s.type===o.type&&s.value===o.value||(t=!1)}return t},i.issued=function(e){return e.isIssuer(i)},i.generateSubjectKeyIdentifier=function(){var r=t.toDer(n.publicKeyToRSAPublicKey(i.publicKey)),s=e.md.sha1.create();return s.update(r.getBytes()),s.digest()},i.verifySubjectKeyIdentifier=function(){for(var t=r.subjectKeyIdentifier,n=0;n<i.extensions.length;++n){var s=i.extensions[n];if(s.id===t){var o=i.generateSubjectKeyIdentifier().getBytes();return e.util.hexToBytes(s.subjectKeyIdentifier)===o}}return!1},i},n.certificateFromAsn1=function(i,s){var u={},a=[];if(!t.validate(i,o,u,a)){var f=new Error("Cannot read X.509 certificate. ASN.1 object is not an X509v3 Certificate.");throw f.errors=a,f}if("string"!=typeof u.certSignature){for(var p="\0",d=0;d<u.certSignature.length;++d)p+=t.toDer(u.certSignature[d]).getBytes();u.certSignature=p}var v=t.derToOid(u.publicKeyOid);if(v!==n.oids.rsaEncryption)throw new Error("Cannot read public key. OID is not RSA.");var g=n.createCertificate();g.version=u.certVersion?u.certVersion.charCodeAt(0):0;var y=e.util.createBuffer(u.certSerialNumber);g.serialNumber=y.toHex(),g.signatureOid=e.asn1.derToOid(u.certSignatureOid),g.signatureParameters=h(g.signatureOid,u.certSignatureParams,!0),g.siginfo.algorithmOid=e.asn1.derToOid(u.certinfoSignatureOid),g.siginfo.parameters=h(g.siginfo.algorithmOid,u.certinfoSignatureParams,!1);var b=e.util.createBuffer(u.certSignature);++b.read,g.signature=b.getBytes();var w=[];if(void 0!==u.certValidity1UTCTime&&w.push(t.utcTimeToDate(u.certValidity1UTCTime)),void 0!==u.certValidity2GeneralizedTime&&w.push(t.generalizedTimeToDate(u.certValidity2GeneralizedTime)),void 0!==u.certValidity3UTCTime&&w.push(t.utcTimeToDate(u.certValidity3UTCTime)),void 0!==u.certValidity4GeneralizedTime&&w.push(t.generalizedTimeToDate(u.certValidity4GeneralizedTime)),w.length>2)throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");if(w.length<2)throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");if(g.validity.notBefore=w[0],g.validity.notAfter=w[1],g.tbsCertificate=u.tbsCertificate,s){if(g.md=null,g.signatureOid in r){var v=r[g.signatureOid];switch(v){case"sha1WithRSAEncryption":g.md=e.md.sha1.create();break;case"md5WithRSAEncryption":g.md=e.md.md5.create();break;case"sha256WithRSAEncryption":g.md=e.md.sha256.create();break;case"RSASSA-PSS":g.md=e.md.sha256.create()}}if(null===g.md){var f=new Error("Could not compute certificate digest. Unknown signature OID.");throw f.signatureOid=g.signatureOid,f}var E=t.toDer(g.tbsCertificate);g.md.update(E.getBytes())}var S=e.md.sha1.create();g.issuer.getField=function(e){return l(g.issuer,e)},g.issuer.addField=function(e){m([e]),g.issuer.attributes.push(e)},g.issuer.attributes=n.RDNAttributesAsArray(u.certIssuer,S),u.certIssuerUniqueId&&(g.issuer.uniqueId=u.certIssuerUniqueId),g.issuer.hash=S.digest().toHex();var x=e.md.sha1.create();return g.subject.getField=function(e){return l(g.subject,e)},g.subject.addField=function(e){m([e]),g.subject.attributes.push(e)},g.subject.attributes=n.RDNAttributesAsArray(u.certSubject,x),u.certSubjectUniqueId&&(g.subject.uniqueId=u.certSubjectUniqueId),g.subject.hash=x.digest().toHex(),u.certExtensions?g.extensions=c(u.certExtensions):g.extensions=[],g.publicKey=n.publicKeyFromAsn1(u.subjectPublicKeyInfo),g},n.certificationRequestFromAsn1=function(i,s){var o={},u=[];if(!t.validate(i,f,o,u)){var a=new Error("Cannot read PKCS#10 certificate request. ASN.1 object is not a PKCS#10 CertificationRequest.");throw a.errors=u,a}if("string"!=typeof o.csrSignature){for(var c="\0",p=0;p<o.csrSignature.length;++p)c+=t.toDer(o.csrSignature[p]).getBytes();o.csrSignature=c}var d=t.derToOid(o.publicKeyOid);if(d!==n.oids.rsaEncryption)throw new Error("Cannot read public key. OID is not RSA.");var v=n.createCertificationRequest();v.version=o.csrVersion?o.csrVersion.charCodeAt(0):0,v.signatureOid=e.asn1.derToOid(o.csrSignatureOid),v.signatureParameters=h(v.signatureOid,o.csrSignatureParams,!0),v.siginfo.algorithmOid=e.asn1.derToOid(o.csrSignatureOid),v.siginfo.parameters=h(v.siginfo.algorithmOid,o.csrSignatureParams,!1);var g=e.util.createBuffer(o.csrSignature);if(++g.read,v.signature=g.getBytes(),v.certificationRequestInfo=o.certificationRequestInfo,s){if(v.md=null,v.signatureOid in r){var d=r[v.signatureOid];switch(d){case"sha1WithRSAEncryption":v.md=e.md.sha1.create();break;case"md5WithRSAEncryption":v.md=e.md.md5.create();break;case"sha256WithRSAEncryption":v.md=e.md.sha256.create();break;case"RSASSA-PSS":v.md=e.md.sha256.create()}}if(null===v.md){var a=new Error("Could not compute certification request digest. Unknown signature OID.");throw a.signatureOid=v.signatureOid,a}var y=t.toDer(v.certificationRequestInfo);v.md.update(y.getBytes())}var b=e.md.sha1.create();return v.subject.getField=function(e){return l(v.subject,e)},v.subject.addField=function(e){m([e]),v.subject.attributes.push(e)},v.subject.attributes=n.RDNAttributesAsArray(o.certificationRequestInfoSubject,b),v.subject.hash=b.digest().toHex(),v.publicKey=n.publicKeyFromAsn1(o.subjectPublicKeyInfo),v.getAttribute=function(e){return l(v.attributes,e)},v.addAttribute=function(e){m([e]),v.attributes.push(e)},v.attributes=n.CRIAttributesAsArray(o.certificationRequestInfoAttributes||[]),v},n.createCertificationRequest=function(){var i={};return i.version=0,i.signatureOid=null,i.signature=null,i.siginfo={},i.siginfo.algorithmOid=null,i.subject={},i.subject.getField=function(e){return l(i.subject,e)},i.subject.addField=function(e){m([e]),i.subject.attributes.push(e)},i.subject.attributes=[],i.subject.hash=null,i.publicKey=null,i.attributes=[],i.getAttribute=function(e){return l(i.attributes,e)},i.addAttribute=function(e){m([e]),i.attributes.push(e)},i.md=null,i.setSubject=function(e){m(e),i.subject.attributes=e,i.subject.hash=null},i.setAttributes=function(e){m(e),i.attributes=e},i.sign=function(s,o){i.md=o||e.md.sha1.create();var u=r[i.md.algorithm+"WithRSAEncryption"];if(!u){var a=new Error("Could not compute certification request digest. Unknown message digest algorithm OID.");throw a.algorithm=i.md.algorithm,a}i.signatureOid=i.siginfo.algorithmOid=u,i.certificationRequestInfo=n.getCertificationRequestInfo(i);var f=t.toDer(i.certificationRequestInfo);i.md.update(f.getBytes()),i.signature=s.sign(i.md)},i.verify=function(){var s=!1,o=i.md;if(null===o){if(i.signatureOid in r){var u=r[i.signatureOid];switch(u){case"sha1WithRSAEncryption":o=e.md.sha1.create();break;case"md5WithRSAEncryption":o=e.md.md5.create();break;case"sha256WithRSAEncryption":o=e.md.sha256.create();break;case"RSASSA-PSS":o=e.md.sha256.create()}}if(null===o){var a=new Error("Could not compute certification request digest. Unknown signature OID.");throw a.signatureOid=i.signatureOid,a}var f=i.certificationRequestInfo||n.getCertificationRequestInfo(i),l=t.toDer(f);o.update(l.getBytes())}if(null!==o){var c;switch(i.signatureOid){case r.sha1WithRSAEncryption:break;case r["RSASSA-PSS"]:var h,p;if(h=r[i.signatureParameters.mgf.hash.algorithmOid],void 0===h||void 0===e.md[h]){var a=new Error("Unsupported MGF hash function.");throw a.oid=i.signatureParameters.mgf.hash.algorithmOid,a.name=h,a}if(p=r[i.signatureParameters.mgf.algorithmOid],void 0===p||void 0===e.mgf[p]){var a=new Error("Unsupported MGF function.");throw a.oid=i.signatureParameters.mgf.algorithmOid,a.name=p,a}if(p=e.mgf[p].create(e.md[h].create()),h=r[i.signatureParameters.hash.algorithmOid],void 0===h||void 0===e.md[h]){var a=new Error("Unsupported RSASSA-PSS hash function.");throw a.oid=i.signatureParameters.hash.algorithmOid,a.name=h,a}c=e.pss.create(e.md[h].create(),p,i.signatureParameters.saltLength)}s=i.publicKey.verify(o.digest().getBytes(),i.signature,c)}return s},i},n.getTBSCertificate=function(r){var i=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,t.integerToDer(r.version).getBytes())]),t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,e.util.hexToBytes(r.serialNumber)),t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(r.siginfo.algorithmOid).getBytes()),g(r.siginfo.algorithmOid,r.siginfo.parameters)]),p(r.issuer),t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.UTCTIME,!1,t.dateToUtcTime(r.validity.notBefore)),t.create(t.Class.UNIVERSAL,t.Type.UTCTIME,!1,t.dateToUtcTime(r.validity.notAfter))]),p(r.subject),n.publicKeyToAsn1(r.publicKey)]);return r.issuer.uniqueId&&i.value.push(t.create(t.Class.CONTEXT_SPECIFIC,1,!0,[t.create(t.Class.UNIVERSAL,t.Type.BITSTRING,!1,String.fromCharCode(0)+r.issuer.uniqueId)])),r.subject.uniqueId&&i.value.push(t.create(t.Class.CONTEXT_SPECIFIC,2,!0,[t.create(t.Class.UNIVERSAL,t.Type.BITSTRING,!1,String.fromCharCode(0)+r.subject.uniqueId)])),r.extensions.length>0&&i.value.push(d(r.extensions)),i},n.getCertificationRequestInfo=function(e){var r=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,t.integerToDer(e.version).getBytes()),p(e.subject),n.publicKeyToAsn1(e.publicKey),y(e)]);return r},n.distinguishedNameToAsn1=function(e){return p(e)},n.certificateToAsn1=function(e){var r=e.tbsCertificate||n.getTBSCertificate(e);return t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[r,t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(e.signatureOid).getBytes()),g(e.signatureOid,e.signatureParameters)]),t.create(t.Class.UNIVERSAL,t.Type.BITSTRING,!1,String.fromCharCode(0)+e.signature)])},n.certificationRequestToAsn1=function(e){var r=e.certificationRequestInfo||n.getCertificationRequestInfo(e);return t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[r,t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(e.signatureOid).getBytes()),g(e.signatureOid,e.signatureParameters)]),t.create(t.Class.UNIVERSAL,t.Type.BITSTRING,!1,String.fromCharCode(0)+e.signature)])},n.createCaStore=function(t){var r={certs:{}};if(r.getIssuer=function(t){var i=null;if(!t.issuer.hash){var s=e.md.sha1.create();t.issuer.attributes=n.RDNAttributesAsArray(p(t.issuer),s),t.issuer.hash=s.digest().toHex()}if(t.issuer.hash in r.certs&&(i=r.certs[t.issuer.hash],e.util.isArray(i)))throw new Error("Resolving multiple issuer matches not implemented yet.");return i},r.addCertificate=function(t){if("string"==typeof t&&(t=e.pki.certificateFromPem(t)),!t.subject.hash){var i=e.md.sha1.create();t.subject.attributes=n.RDNAttributesAsArray(p(t.subject),i),t.subject.hash=i.digest().toHex()}if(t.subject.hash in r.certs){var s=r.certs[t.subject.hash];e.util.isArray(s)||(s=[s]),s.push(t)}else r.certs[t.subject.hash]=t},t)for(var i=0;i<t.length;++i){var s=t[i];r.addCertificate(s)}return r},n.certificateError={bad_certificate:"forge.pki.BadCertificate",unsupported_certificate:"forge.pki.UnsupportedCertificate",certificate_revoked:"forge.pki.CertificateRevoked",certificate_expired:"forge.pki.CertificateExpired",certificate_unknown:"forge.pki.CertificateUnknown",unknown_ca:"forge.pki.UnknownCertificateAuthority"},n.verifyCertificateChain=function(t,r,i){r=r.slice(0);var s=r.slice(0),o=new Date,u=!0,a=null,f=0,l=null;do{var c=r.shift();if(o<c.validity.notBefore||o>c.validity.notAfter)a={message:"Certificate is not valid yet or has expired.",error:n.certificateError.certificate_expired,notBefore:c.validity.notBefore,notAfter:c.validity.notAfter,now:o};else{var h=!1;if(r.length>0){l=r[0];try{h=l.verify(c)}catch(p){}}else{var d=t.getIssuer(c);if(null===d)a={message:"Certificate is not trusted.",error:n.certificateError.unknown_ca};else for(e.util.isArray(d)||(d=[d]);!h&&d.length>0;){l=d.shift();try{h=l.verify(c)}catch(p){}}}null===a&&!h&&(a={message:"Certificate signature is invalid.",error:n.certificateError.bad_certificate})}if(null===a&&!c.isIssuer(l)&&(a={message:"Certificate issuer is invalid.",error:n.certificateError.bad_certificate}),null===a)for(var v={keyUsage:!0,basicConstraints:!0},m=0;null===a&&m<c.extensions.length;++m){var g=c.extensions[m];g.critical&&!(g.name in v)&&(a={message:"Certificate has an unsupported critical extension.",error:n.certificateError.unsupported_certificate})}if(!u||0===r.length&&!l){var y=c.getExtension("basicConstraints"),b=c.getExtension("keyUsage");if(null!==b&&(!b.keyCertSign||null===y)&&(a={message:"Certificate keyUsage or basicConstraints conflict or indicate that the certificate is not a CA. If the certificate is the only one in the chain or isn't the first then the certificate must be a valid CA.",error:n.certificateError.bad_certificate}),null===a&&null!==y&&!y.cA&&(a={message:"Certificate basicConstraints indicates the certificate is not a CA.",error:n.certificateError.bad_certificate}),null===a&&null!==b&&"pathLenConstraint"in y){for(var w=0,m=1;m<r.length-1;++m)r[m].isIssuer(r[m])&&++w;var E=y.pathLenConstraint+1;r.length-w>E&&(a={message:"Certificate basicConstraints pathLenConstraint violated.",error:n.certificateError.bad_certificate})}}var S=null===a||a.error,x=i?i(S,f,s):S;if(x!==!0)throw S===!0&&(a={message:"The application rejected the certificate.",error:n.certificateError.bad_certificate}),(x||0===x)&&("object"!=typeof x||e.util.isArray(x)?"string"==typeof x&&(a.error=x):(x.message&&(a.message=x.message),x.error&&(a.error=x.error))),a;a=null,u=!1,++f}while(r.length>0);return!0}}var r="x509";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return"undefined"==typeof forge&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);if(n=n||{},
n.defined=n.defined||{},n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o<i.length;++o)i[o](n);return n.pki}},u=n;(n=function(e,t){return s="string"==typeof e?t.slice(2):e.slice(2),i?(delete n,u.apply(null,Array.prototype.slice.call(arguments,0))):(n=u,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/x509",["require","module","./aes","./asn1","./des","./md","./mgf","./oids","./pem","./pss","./rsa","./util"],function(){o.apply(null,Array.prototype.slice.call(arguments,0))})}(),function(){function e(e){function f(e,t,n,r){for(var i=[],s=0;s<e.length;s++)for(var o=0;o<e[s].safeBags.length;o++){var u=e[s].safeBags[o];void 0!==r&&u.type!==r||(null!==t?void 0!==u.attributes[t]&&u.attributes[t].indexOf(n)>=0&&i.push(u):i.push(u))}return i}function l(t){if(t.composed||t.constructed){for(var n=e.util.createBuffer(),r=0;r<t.value.length;++r)n.putBytes(t.value[r].value);t.composed=t.constructed=!1,t.value=n.getBytes()}return t}function c(e,r,s,o){if(r=t.fromDer(r,s),r.tagClass!==t.Class.UNIVERSAL||r.type!==t.Type.SEQUENCE||r.constructed!==!0)throw new Error("PKCS#12 AuthenticatedSafe expected to be a SEQUENCE OF ContentInfo");for(var u=0;u<r.value.length;u++){var a=r.value[u],f={},c=[];if(!t.validate(a,i,f,c)){var d=new Error("Cannot read ContentInfo.");throw d.errors=c,d}var v={encrypted:!1},m=null,g=f.content.value[0];switch(t.derToOid(f.contentType)){case n.oids.data:if(g.tagClass!==t.Class.UNIVERSAL||g.type!==t.Type.OCTETSTRING)throw new Error("PKCS#12 SafeContents Data is not an OCTET STRING.");m=l(g).value;break;case n.oids.encryptedData:m=h(g,o),v.encrypted=!0;break;default:var d=new Error("Unsupported PKCS#12 contentType.");throw d.contentType=t.derToOid(f.contentType),d}v.safeBags=p(m,s,o),e.safeContents.push(v)}}function h(r,i){var s={},o=[];if(!t.validate(r,e.pkcs7.asn1.encryptedDataValidator,s,o)){var u=new Error("Cannot read EncryptedContentInfo.");throw u.errors=o,u}var a=t.derToOid(s.contentType);if(a!==n.oids.data){var u=new Error("PKCS#12 EncryptedContentInfo ContentType is not Data.");throw u.oid=a,u}a=t.derToOid(s.encAlgorithm);var f=n.pbe.getCipher(a,s.encParameter,i),c=l(s.encryptedContentAsn1),h=e.util.createBuffer(c.value);if(f.update(h),!f.finish())throw new Error("Failed to decrypt PKCS#12 SafeContents.");return f.output.getBytes()}function p(e,r,i){if(!r&&0===e.length)return[];if(e=t.fromDer(e,r),e.tagClass!==t.Class.UNIVERSAL||e.type!==t.Type.SEQUENCE||e.constructed!==!0)throw new Error("PKCS#12 SafeContents expected to be a SEQUENCE OF SafeBag.");for(var s=[],u=0;u<e.value.length;u++){var f=e.value[u],l={},c=[];if(!t.validate(f,o,l,c)){var h=new Error("Cannot read SafeBag.");throw h.errors=c,h}var p={type:t.derToOid(l.bagId),attributes:d(l.bagAttributes)};s.push(p);var v,m,g=l.bagValue.value[0];switch(p.type){case n.oids.pkcs8ShroudedKeyBag:if(g=n.decryptPrivateKeyInfo(g,i),null===g)throw new Error("Unable to decrypt PKCS#8 ShroudedKeyBag, wrong password?");case n.oids.keyBag:p.key=n.privateKeyFromAsn1(g);continue;case n.oids.certBag:v=a,m=function(){if(t.derToOid(l.certId)!==n.oids.x509Certificate){var e=new Error("Unsupported certificate type, only X.509 supported.");throw e.oid=t.derToOid(l.certId),e}p.cert=n.certificateFromAsn1(t.fromDer(l.cert,r),!0)};break;default:var h=new Error("Unsupported PKCS#12 SafeBag type.");throw h.oid=p.type,h}if(void 0!==v&&!t.validate(g,v,l,c)){var h=new Error("Cannot read PKCS#12 "+v.name);throw h.errors=c,h}m()}return s}function d(e){var r={};if(void 0!==e)for(var i=0;i<e.length;++i){var s={},o=[];if(!t.validate(e[i],u,s,o)){var a=new Error("Cannot read PKCS#12 BagAttribute.");throw a.errors=o,a}var f=t.derToOid(s.oid);if(void 0!==n.oids[f]){r[n.oids[f]]=[];for(var l=0;l<s.values.length;++l)r[n.oids[f]].push(s.values[l].value)}}return r}var t=e.asn1,n=e.pki,r=e.pkcs12=e.pkcs12||{},i={name:"ContentInfo",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"ContentInfo.contentType",tagClass:t.Class.UNIVERSAL,type:t.Type.OID,constructed:!1,capture:"contentType"},{name:"ContentInfo.content",tagClass:t.Class.CONTEXT_SPECIFIC,constructed:!0,captureAsn1:"content"}]},s={name:"PFX",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"PFX.version",tagClass:t.Class.UNIVERSAL,type:t.Type.INTEGER,constructed:!1,capture:"version"},i,{name:"PFX.macData",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,optional:!0,captureAsn1:"mac",value:[{name:"PFX.macData.mac",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"PFX.macData.mac.digestAlgorithm",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"PFX.macData.mac.digestAlgorithm.algorithm",tagClass:t.Class.UNIVERSAL,type:t.Type.OID,constructed:!1,capture:"macAlgorithm"},{name:"PFX.macData.mac.digestAlgorithm.parameters",tagClass:t.Class.UNIVERSAL,captureAsn1:"macAlgorithmParameters"}]},{name:"PFX.macData.mac.digest",tagClass:t.Class.UNIVERSAL,type:t.Type.OCTETSTRING,constructed:!1,capture:"macDigest"}]},{name:"PFX.macData.macSalt",tagClass:t.Class.UNIVERSAL,type:t.Type.OCTETSTRING,constructed:!1,capture:"macSalt"},{name:"PFX.macData.iterations",tagClass:t.Class.UNIVERSAL,type:t.Type.INTEGER,constructed:!1,optional:!0,capture:"macIterations"}]}]},o={name:"SafeBag",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"SafeBag.bagId",tagClass:t.Class.UNIVERSAL,type:t.Type.OID,constructed:!1,capture:"bagId"},{name:"SafeBag.bagValue",tagClass:t.Class.CONTEXT_SPECIFIC,constructed:!0,captureAsn1:"bagValue"},{name:"SafeBag.bagAttributes",tagClass:t.Class.UNIVERSAL,type:t.Type.SET,constructed:!0,optional:!0,capture:"bagAttributes"}]},u={name:"Attribute",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"Attribute.attrId",tagClass:t.Class.UNIVERSAL,type:t.Type.OID,constructed:!1,capture:"oid"},{name:"Attribute.attrValues",tagClass:t.Class.UNIVERSAL,type:t.Type.SET,constructed:!0,capture:"values"}]},a={name:"CertBag",tagClass:t.Class.UNIVERSAL,type:t.Type.SEQUENCE,constructed:!0,value:[{name:"CertBag.certId",tagClass:t.Class.UNIVERSAL,type:t.Type.OID,constructed:!1,capture:"certId"},{name:"CertBag.certValue",tagClass:t.Class.CONTEXT_SPECIFIC,constructed:!0,value:[{name:"CertBag.certValue[0]",tagClass:t.Class.UNIVERSAL,type:t.Class.OCTETSTRING,constructed:!1,capture:"cert"}]}]};r.pkcs12FromAsn1=function(i,o,u){"string"==typeof o?(u=o,o=!0):void 0===o&&(o=!0);var a={},h=[];if(!t.validate(i,s,a,h)){var p=new Error("Cannot read PKCS#12 PFX. ASN.1 object is not an PKCS#12 PFX.");throw p.errors=p,p}var d={version:a.version.charCodeAt(0),safeContents:[],getBags:function(t){var r,n={};return"localKeyId"in t?r=t.localKeyId:"localKeyIdHex"in t&&(r=e.util.hexToBytes(t.localKeyIdHex)),void 0===r&&!("friendlyName"in t)&&"bagType"in t&&(n[t.bagType]=f(d.safeContents,null,null,t.bagType)),void 0!==r&&(n.localKeyId=f(d.safeContents,"localKeyId",r,t.bagType)),"friendlyName"in t&&(n.friendlyName=f(d.safeContents,"friendlyName",t.friendlyName,t.bagType)),n},getBagsByFriendlyName:function(e,t){return f(d.safeContents,"friendlyName",e,t)},getBagsByLocalKeyId:function(e,t){return f(d.safeContents,"localKeyId",e,t)}};if(3!==a.version.charCodeAt(0)){var p=new Error("PKCS#12 PFX of version other than 3 not supported.");throw p.version=a.version.charCodeAt(0),p}if(t.derToOid(a.contentType)!==n.oids.data){var p=new Error("Only PKCS#12 PFX in password integrity mode supported.");throw p.oid=t.derToOid(a.contentType),p}var v=a.content.value[0];if(v.tagClass!==t.Class.UNIVERSAL||v.type!==t.Type.OCTETSTRING)throw new Error("PKCS#12 authSafe content data is not an OCTET STRING.");if(v=l(v),a.mac){var m=null,g=0,y=t.derToOid(a.macAlgorithm);switch(y){case n.oids.sha1:m=e.md.sha1.create(),g=20;break;case n.oids.sha256:m=e.md.sha256.create(),g=32;break;case n.oids.sha384:m=e.md.sha384.create(),g=48;break;case n.oids.sha512:m=e.md.sha512.create(),g=64;break;case n.oids.md5:m=e.md.md5.create(),g=16}if(null===m)throw new Error("PKCS#12 uses unsupported MAC algorithm: "+y);var b=new e.util.ByteBuffer(a.macSalt),w="macIterations"in a?parseInt(e.util.bytesToHex(a.macIterations),16):1,E=r.generateKey(u,b,3,w,g,m),S=e.hmac.create();S.start(m,E),S.update(v.value);var x=S.getMac();if(x.getBytes()!==a.macDigest)throw new Error("PKCS#12 MAC could not be verified. Invalid password?")}return c(d,v.value,o,u),d},r.toPkcs12Asn1=function(i,s,o,u){u=u||{},u.saltSize=u.saltSize||8,u.count=u.count||2048,u.algorithm=u.algorithm||u.encAlgorithm||"aes128","useMac"in u||(u.useMac=!0),"localKeyId"in u||(u.localKeyId=null),"generateLocalKeyId"in u||(u.generateLocalKeyId=!0);var f,a=u.localKeyId;if(null!==a)a=e.util.hexToBytes(a);else if(u.generateLocalKeyId)if(s){var l=e.util.isArray(s)?s[0]:s;"string"==typeof l&&(l=n.certificateFromPem(l));var c=e.md.sha1.create();c.update(t.toDer(n.certificateToAsn1(l)).getBytes()),a=c.digest().getBytes()}else a=e.random.getBytes(20);var h=[];null!==a&&h.push(t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.localKeyId).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.SET,!0,[t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,a)])])),"friendlyName"in u&&h.push(t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.friendlyName).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.SET,!0,[t.create(t.Class.UNIVERSAL,t.Type.BMPSTRING,!1,u.friendlyName)])])),h.length>0&&(f=t.create(t.Class.UNIVERSAL,t.Type.SET,!0,h));var p=[],d=[];null!==s&&(d=e.util.isArray(s)?s:[s]);for(var v=[],m=0;m<d.length;++m){s=d[m],"string"==typeof s&&(s=n.certificateFromPem(s));var g=0===m?f:void 0,y=n.certificateToAsn1(s),b=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.certBag).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.x509Certificate).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,t.toDer(y).getBytes())])])]),g]);v.push(b)}if(v.length>0){var w=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,v),E=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.data).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,t.toDer(w).getBytes())])]);p.push(E)}var S=null;if(null!==i){var x=n.wrapRsaPrivateKey(n.privateKeyToAsn1(i));S=null===o?t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.keyBag).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[x]),f]):t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.pkcs8ShroudedKeyBag).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[n.encryptPrivateKeyInfo(x,o,u)]),f]);var T=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[S]),N=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.data).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,t.toDer(T).getBytes())])]);p.push(N)}var k,C=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,p);if(u.useMac){var c=e.md.sha1.create(),L=new e.util.ByteBuffer(e.random.getBytes(u.saltSize)),A=u.count,i=r.generateKey(o,L,3,A,20),O=e.hmac.create();O.start(c,i),O.update(t.toDer(C).getBytes());var M=O.getMac();k=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.sha1).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.NULL,!1,"")]),t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,M.getBytes())]),t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,L.getBytes()),t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,t.integerToDer(A).getBytes())])}return t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,t.integerToDer(3).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.oids.data).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,t.toDer(C).getBytes())])]),k])},r.generateKey=e.pbe.generatePkcs12Key}var r="pkcs12";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return"undefined"==typeof forge&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);if(n=n||{},n.defined=n.defined||{},n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o<i.length;++o)i[o](n);return n[r]}},u=n;(n=function(e,t){return s="string"==typeof e?t.slice(2):e.slice(2),i?(delete n,u.apply(null,Array.prototype.slice.call(arguments,0))):(n=u,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/pkcs12",["require","module","./asn1","./hmac","./oids","./pkcs7asn1","./pbe","./random","./rsa","./sha1","./util","./x509"],function(){o.apply(null,Array.prototype.slice.call(arguments,0))})}(),function(){function e(e){var t=e.asn1,n=e.pki=e.pki||{};n.pemToDer=function(t){var n=e.pem.decode(t)[0];if(n.procType&&"ENCRYPTED"===n.procType.type)throw new Error("Could not convert PEM to DER; PEM is encrypted.");return e.util.createBuffer(n.body)},n.privateKeyFromPem=function(r){var i=e.pem.decode(r)[0];if("PRIVATE KEY"!==i.type&&"RSA PRIVATE KEY"!==i.type){var s=new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY".');throw s.headerType=i.type,s}if(i.procType&&"ENCRYPTED"===i.procType.type)throw new Error("Could not convert private key from PEM; PEM is encrypted.");var o=t.fromDer(i.body);return n.privateKeyFromAsn1(o)},n.privateKeyToPem=function(r,i){var s={type:"RSA PRIVATE KEY",body:t.toDer(n.privateKeyToAsn1(r)).getBytes()};return e.pem.encode(s,{maxline:i})},n.privateKeyInfoToPem=function(n,r){var i={type:"PRIVATE KEY",body:t.toDer(n).getBytes()};return e.pem.encode(i,{maxline:r})}}var r="pki";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return"undefined"==typeof forge&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);if(n=n||{},n.defined=n.defined||{},n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o<i.length;++o)i[o](n);return n[r]}},u=n;(n=function(e,t){return s="string"==typeof e?t.slice(2):e.slice(2),i?(delete n,u.apply(null,Array.prototype.slice.call(arguments,0))):(n=u,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/pki",["require","module","./asn1","./oids","./pbe","./pem","./pbkdf2","./pkcs12","./pss","./rsa","./util","./x509"],function(){o.apply(null,Array.prototype.slice.call(arguments,0))})}(),function(){function e(e){var t=function(t,n,r,i){var s=e.util.createBuffer(),o=t.length>>1,u=o+(1&t.length),a=t.substr(0,u),f=t.substr(o,u),l=e.util.createBuffer(),c=e.hmac.create();r=n+r;var h=Math.ceil(i/16),p=Math.ceil(i/20);c.start("MD5",a);var d=e.util.createBuffer();l.putBytes(r);for(var v=0;v<h;++v)c.start(null,null),c.update(l.getBytes()),l.putBuffer(c.digest()),c.start(null,null),c.update(l.bytes()+r),d.putBuffer(c.digest());c.start("SHA1",f);var m=e.util.createBuffer();l.clear(),l.putBytes(r);for(var v=0;v<p;++v)c.start(null,null),c.update(l.getBytes()),l.putBuffer(c.digest()),c.start(null,null),c.update(l.bytes()+r),m.putBuffer(c.digest());return s.putBytes(e.util.xorBytes(d.getBytes(),m.getBytes(),i)),s},r=function(t,n,r){var i=e.hmac.create();i.start("SHA1",t);var s=e.util.createBuffer();return s.putInt32(n[0]),s.putInt32(n[1]),s.putByte(r.type),s.putByte(r.version.major),s.putByte(r.version.minor),s.putInt16(r.length),s.putBytes(r.fragment.bytes()),i.update(s.getBytes()),i.digest().getBytes()},i=function(t,n,r){var i=!1;try{var s=t.deflate(n.fragment.getBytes());n.fragment=e.util.createBuffer(s),n.length=s.length,i=!0}catch(o){}return i},s=function(t,n,r){var i=!1;try{var s=t.inflate(n.fragment.getBytes());n.fragment=e.util.createBuffer(s),n.length=s.length,i=!0}catch(o){}return i},o=function(t,n){var r=0;switch(n){case 1:r=t.getByte();break;case 2:r=t.getInt16();break;case 3:r=t.getInt24();break;case 4:r=t.getInt32()}return e.util.createBuffer(t.getBytes(r))},u=function(e,t,n){e.putInt(n.length(),t<<3),e.putBuffer(n)},a={};a.Versions={TLS_1_0:{major:3,minor:1},TLS_1_1:{major:3,minor:2},TLS_1_2:{major:3,minor:3}},a.SupportedVersions=[a.Versions.TLS_1_1,a.Versions.TLS_1_0],a.Version=a.SupportedVersions[0],a.MaxFragment=15360,a.ConnectionEnd={server:0,client:1},a.PRFAlgorithm={tls_prf_sha256:0},a.BulkCipherAlgorithm={none:null,rc4:0,des3:1,aes:2},a.CipherType={stream:0,block:1,aead:2},a.MACAlgorithm={none:null,hmac_md5:0,hmac_sha1:1,hmac_sha256:2,hmac_sha384:3,hmac_sha512:4},a.CompressionMethod={none:0,deflate:1},a.ContentType={change_cipher_spec:20,alert:21,handshake:22,application_data:23,heartbeat:24},a.HandshakeType={hello_request:0,client_hello:1,server_hello:2,certificate:11,server_key_exchange:12,certificate_request:13,server_hello_done:14,certificate_verify:15,client_key_exchange:16,finished:20},a.Alert={},a.Alert.Level={warning:1,fatal:2},a.Alert.Description={close_notify:0,unexpected_message:10,bad_record_mac:20,decryption_failed:21,record_overflow:22,decompression_failure:30,handshake_failure:40,bad_certificate:42,unsupported_certificate:43,certificate_revoked:44,certificate_expired:45,certificate_unknown:46,illegal_parameter:47,unknown_ca:48,access_denied:49,decode_error:50,decrypt_error:51,export_restriction:60,protocol_version:70,insufficient_security:71,internal_error:80,user_canceled:90,no_renegotiation:100},a.HeartbeatMessageType={heartbeat_request:1,heartbeat_response:2},a.CipherSuites={},a.getCipherSuite=function(e){var t=null;for(var n in a.CipherSuites){var r=a.CipherSuites[n];if(r.id[0]===e.charCodeAt(0)&&r.id[1]===e.charCodeAt(1)){t=r;break}}return t},a.handleUnexpected=function(e,t){var n=!e.open&&e.entity===a.ConnectionEnd.client;n||e.error(e,{message:"Unexpected message. Received TLS record out of order.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.unexpected_message}})},a.handleHelloRequest=function(e,t,n){!e.handshaking&&e.handshakes>0&&(a.queue(e,a.createAlert(e,{level:a.Alert.Level.warning,description:a.Alert.Description.no_renegotiation})),a.flush(e)),e.process()},a.parseHelloMessage=function(t,n,r){var i=null,s=t.entity===a.ConnectionEnd.client;if(r<38)t.error(t,{message:s?"Invalid ServerHello message. Message too short.":"Invalid ClientHello message. Message too short.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.illegal_parameter}});else{var u=n.fragment,f=u.length();if(i={version:{major:u.getByte(),minor:u.getByte()},random:e.util.createBuffer(u.getBytes(32)),session_id:o(u,1),extensions:[]},s?(i.cipher_suite=u.getBytes(2),i.compression_method=u.getByte()):(i.cipher_suites=o(u,2),i.compression_methods=o(u,1)),f=r-(f-u.length()),f>0){for(var l=o(u,2);l.length()>0;)i.extensions.push({type:[l.getByte(),l.getByte()],data:o(l,2)});if(!s)for(var c=0;c<i.extensions.length;++c){var h=i.extensions[c];if(0===h.type[0]&&0===h.type[1])for(var p=o(h.data,2);p.length()>0;){var d=p.getByte();if(0!==d)break;t.session.extensions.server_name.serverNameList.push(o(p,2).getBytes())}}}if(t.session.version&&(i.version.major!==t.session.version.major||i.version.minor!==t.session.version.minor))return t.error(t,{message:"TLS version change is disallowed during renegotiation.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.protocol_version}});if(s)t.session.cipherSuite=a.getCipherSuite(i.cipher_suite);else for(var v=e.util.createBuffer(i.cipher_suites.bytes());v.length()>0&&(t.session.cipherSuite=a.getCipherSuite(v.getBytes(2)),null===t.session.cipherSuite););if(null===t.session.cipherSuite)return t.error(t,{message:"No cipher suites in common.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.handshake_failure},cipherSuite:e.util.bytesToHex(i.cipher_suite)});s?t.session.compressionMethod=i.compression_method:t.session.compressionMethod=a.CompressionMethod.none}return i},a.createSecurityParameters=function(e,t){var n=e.entity===a.ConnectionEnd.client,r=t.random.bytes(),i=n?e.session.sp.client_random:r,s=n?r:a.createRandom().getBytes();e.session.sp={entity:e.entity,prf_algorithm:a.PRFAlgorithm.tls_prf_sha256,bulk_cipher_algorithm:null,cipher_type:null,enc_key_length:null,block_length:null,fixed_iv_length:null,record_iv_length:null,mac_algorithm:null,mac_length:null,mac_key_length:null,compression_algorithm:e.session.compressionMethod,pre_master_secret:null,master_secret:null,client_random:i,server_random:s}},a.handleServerHello=function(e,t,n){var r=a.parseHelloMessage(e,t,n);if(!e.fail){if(!(r.version.minor<=e.version.minor))return e.error(e,{message:"Incompatible TLS version.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.protocol_version}});e.version.minor=r.version.minor,e.session.version=e.version;var i=r.session_id.bytes();i.length>0&&i===e.session.id?(e.expect=d,e.session.resuming=!0,e.session.sp.server_random=r.random.bytes()):(e.expect=l,e.session.resuming=!1,a.createSecurityParameters(e,r)),e.session.id=i,e.process()}},a.handleClientHello=function(t,n,r){var i=a.parseHelloMessage(t,n,r);if(!t.fail){var s=i.session_id.bytes(),o=null;if(t.sessionCache&&(o=t.sessionCache.getSession(s),null===o?s="":(o.version.major!==i.version.major||o.version.minor>i.version.minor)&&(o=null,s="")),0===s.length&&(s=e.random.getBytes(32)),t.session.id=s,t.session.clientHelloVersion=i.version,t.session.sp={},o)t.version=t.session.version=o.version,t.session.sp=o.sp;else{for(var u,f=1;f<a.SupportedVersions.length&&(u=a.SupportedVersions[f],!(u.minor<=i.version.minor));++f);t.version={major:u.major,minor:u.minor},t.session.version=t.version}null!==o?(t.expect=S,t.session.resuming=!0,t.session.sp.client_random=i.random.bytes()):(t.expect=t.verifyClient!==!1?b:w,t.session.resuming=!1,a.createSecurityParameters(t,i)),t.open=!0,a.queue(t,a.createRecord(t,{type:a.ContentType.handshake,data:a.createServerHello(t)})),t.session.resuming?(a.queue(t,a.createRecord(t,{type:a.ContentType.change_cipher_spec,data:a.createChangeCipherSpec()})),t.state.pending=a.createConnectionState(t),t.state.current.write=t.state.pending.write,a.queue(t,a.createRecord(t,{type:a.ContentType.handshake,data:a.createFinished(t)}))):(a.queue(t,a.createRecord(t,{type:a.ContentType.handshake,data:a.createCertificate(t)})),t.fail||(a.queue(t,a.createRecord(t,{type:a.ContentType.handshake,data:a.createServerKeyExchange(t)})),t.verifyClient!==!1&&a.queue(t,a.createRecord(t,{type:a.ContentType.handshake,data:a.createCertificateRequest(t)})),a.queue(t,a.createRecord(t,{type:a.ContentType.handshake,data:a.createServerHelloDone(t)})))),a.flush(t),t.process()}},a.handleCertificate=function(t,n,r){if(r<3)return t.error(t,{message:"Invalid Certificate message. Message too short.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.illegal_parameter}});var u,f,i=n.fragment,s={certificate_list:o(i,3)},l=[];try{for(;s.certificate_list.length()>0;)u=o(s.certificate_list,3),f=e.asn1.fromDer(u),u=e.pki.certificateFromAsn1(f,!0),l.push(u)}catch(h){return t.error(t,{message:"Could not parse certificate list.",cause:h,send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.bad_certificate}})}var p=t.entity===a.ConnectionEnd.client;!p&&t.verifyClient!==!0||0!==l.length?0===l.length?t.expect=p?c:w:(p?t.session.serverCertificate=l[0]:t.session.clientCertificate=l[0],a.verifyCertificateChain(t,l)&&(t.expect=p?c:w)):t.error(t,{message:p?"No server certificate provided.":"No client certificate provided.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.illegal_parameter}}),t.process()},a.handleServerKeyExchange=function(e,t,n){return n>0?e.error(e,{message:"Invalid key parameters. Only RSA is supported.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.unsupported_certificate}}):(e.expect=h,void e.process())},a.handleClientKeyExchange=function(t,n,r){if(r<48)return t.error(t,{message:"Invalid key parameters. Only RSA is supported.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.unsupported_certificate}});var i=n.fragment,s={enc_pre_master_secret:o(i,2).getBytes()},u=null;if(t.getPrivateKey)try{u=t.getPrivateKey(t,t.session.serverCertificate),u=e.pki.privateKeyFromPem(u)}catch(f){t.error(t,{message:"Could not get private key.",cause:f,send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.internal_error}})}if(null===u)return t.error(t,{message:"No private key set.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.internal_error}});try{var l=t.session.sp;l.pre_master_secret=u.decrypt(s.enc_pre_master_secret);var c=t.session.clientHelloVersion;if(c.major!==l.pre_master_secret.charCodeAt(0)||c.minor!==l.pre_master_secret.charCodeAt(1))throw new Error("TLS version rollback attack detected.")}catch(f){l.pre_master_secret=e.random.getBytes(48)}t.expect=S,null!==t.session.clientCertificate&&(t.expect=E),t.process()},a.handleCertificateRequest=function(e,t,n){if(n<3)return e.error(e,{message:"Invalid CertificateRequest. Message too short.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.illegal_parameter}});var r=t.fragment,i={certificate_types:o(r,1),certificate_authorities:o(r,2)};e.session.certificateRequest=i,e.expect=p,e.process()},a.handleCertificateVerify=function(t,n,r){if(r<2)return t.error(t,{message:"Invalid CertificateVerify. Message too short.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.illegal_parameter}});var i=n.fragment;i.read-=4;var s=i.bytes();i.read+=4;var u={signature:o(i,2).getBytes()},f=e.util.createBuffer();f.putBuffer(t.session.md5.digest()),f.putBuffer(t.session.sha1.digest()),f=f.getBytes();try{var l=t.session.clientCertificate;if(!l.publicKey.verify(f,u.signature,"NONE"))throw new Error("CertificateVerify signature does not match.");t.session.md5.update(s),t.session.sha1.update(s)}catch(c){return t.error(t,{message:"Bad signature in CertificateVerify.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.handshake_failure}})}t.expect=S,t.process()},a.handleServerHelloDone=function(t,n,r){if(r>0)return t.error(t,{message:"Invalid ServerHelloDone message. Invalid length.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.record_overflow}});if(null===t.serverCertificate){var i={message:"No server certificate provided. Not enough security.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.insufficient_security}},s=0,o=t.verify(t,i.alert.description,s,[]);if(o!==!0)return(o||0===o)&&("object"!=typeof o||e.util.isArray(o)?"number"==typeof o&&(i.alert.description=o):(o.message&&(i.message=o.message),o.alert&&(i.alert.description=o.alert))),t.error(t,i)}null!==t.session.certificateRequest&&(n=a.createRecord(t,{type:a.ContentType.handshake,data:a.createCertificate(t)}),a.queue(t,n)),n=a.createRecord(t,{type:a.ContentType.handshake,data:a.createClientKeyExchange(t)}),a.queue(t,n),t.expect=g;var u=function(e,t){null!==e.session.certificateRequest&&null!==e.session.clientCertificate&&a.queue(e,a.createRecord(e,{type:a.ContentType.handshake,data:a.createCertificateVerify(e,t)})),a.queue(e,a.createRecord(e,{type:a.ContentType.change_cipher_spec,data:a.createChangeCipherSpec()})),e.state.pending=a.createConnectionState(e),e.state.current.write=e.state.pending.write,a.queue(e,a.createRecord(e,{type:a.ContentType.handshake,data:a.createFinished(e)})),e.expect=d,a.flush(e),e.process()};return null===t.session.certificateRequest||null===t.session.clientCertificate?u(t,null):void a.getClientSignature(t,u)},a.handleChangeCipherSpec=function(e,t){if(1!==t.fragment.getByte())return e.error(e,{message:"Invalid ChangeCipherSpec message received.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.illegal_parameter}});var n=e.entity===a.ConnectionEnd.client;(e.session.resuming&&n||!e.session.resuming&&!n)&&(e.state.pending=a.createConnectionState(e)),e.state.current.read=e.state.pending.read,(!e.session.resuming&&n||e.session.resuming&&!n)&&(e.state.pending=null),e.expect=n?v:x,e.process()},a.handleFinished=function(n,r,i){var s=r.fragment;s.read-=4;var o=s.bytes();s.read+=4;var u=r.fragment.getBytes();s=e.util.createBuffer(),s.putBuffer(n.session.md5.digest()),s.putBuffer(n.session.sha1.digest());var f=n.entity===a.ConnectionEnd.client,l=f?"server finished":"client finished",c=n.session.sp,h=12,p=t;return s=p(c.master_secret,l,s.getBytes(),h),s.getBytes()!==u?n.error(n,{message:"Invalid verify_data in Finished message.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.decrypt_error}}):(n.session.md5.update(o),n.session.sha1.update(o),(n.session.resuming&&f||!n.session.resuming&&!f)&&(a.queue(n,a.createRecord(n,{type:a.ContentType.change_cipher_spec,data:a.createChangeCipherSpec()})),n.state.current.write=n.state.pending.write,n.state.pending=null,a.queue(n,a.createRecord(n,{type:a.ContentType.handshake,data:a.createFinished(n)}))),n.expect=f?m:T,n.handshaking=!1,++n.handshakes,n.peerCertificate=f?n.session.serverCertificate:n.session.clientCertificate,a.flush(n),n.isConnected=!0,n.connected(n),n.process(),void 0)},a.handleAlert=function(e,t){var i,n=t.fragment,r={level:n.getByte(),description:n.getByte()};switch(r.description){case a.Alert.Description.close_notify:i="Connection closed.";break;case a.Alert.Description.unexpected_message:i="Unexpected message.";break;case a.Alert.Description.bad_record_mac:i="Bad record MAC.";break;case a.Alert.Description.decryption_failed:i="Decryption failed.";break;case a.Alert.Description.record_overflow:i="Record overflow.";break;case a.Alert.Description.decompression_failure:i="Decompression failed.";break;case a.Alert.Description.handshake_failure:i="Handshake failure.";break;case a.Alert.Description.bad_certificate:i="Bad certificate.";break;case a.Alert.Description.unsupported_certificate:i="Unsupported certificate.";break;case a.Alert.Description.certificate_revoked:i="Certificate revoked.";break;case a.Alert.Description.certificate_expired:i="Certificate expired.";break;case a.Alert.Description.certificate_unknown:i="Certificate unknown.";break;case a.Alert.Description.illegal_parameter:i="Illegal parameter.";break;case a.Alert.Description.unknown_ca:i="Unknown certificate authority.";break;case a.Alert.Description.access_denied:i="Access denied.";break;case a.Alert.Description.decode_error:i="Decode error.";break;case a.Alert.Description.decrypt_error:i="Decrypt error.";break;case a.Alert.Description.export_restriction:i="Export restriction.";break;case a.Alert.Description.protocol_version:i="Unsupported protocol version.";break;case a.Alert.Description.insufficient_security:i="Insufficient security.";break;case a.Alert.Description.internal_error:i="Internal error.";break;case a.Alert.Description.user_canceled:i="User canceled.";break;case a.Alert.Description.no_renegotiation:i="Renegotiation not supported.";break;default:i="Unknown error."}return r.description===a.Alert.Description.close_notify?e.close():(e.error(e,{message:i,send:!1,origin:e.entity===a.ConnectionEnd.client?"server":"client",alert:r}),void e.process())},a.handleHandshake=function(t,n){var r=n.fragment,i=r.getByte(),s=r.getInt24();if(s>r.length())return t.fragmented=n,n.fragment=e.util.createBuffer(),r.read-=4,t.process();t.fragmented=null,r.read-=4;var o=r.bytes(s+4);r.read+=4,i in q[t.entity][t.expect]?(t.entity===a.ConnectionEnd.server&&!t.open&&!t.fail&&(t.handshaking=!0,t.session={version:null,extensions:{server_name:{serverNameList:[]}},cipherSuite:null,
compressionMethod:null,serverCertificate:null,clientCertificate:null,md5:e.md.md5.create(),sha1:e.md.sha1.create()}),i!==a.HandshakeType.hello_request&&i!==a.HandshakeType.certificate_verify&&i!==a.HandshakeType.finished&&(t.session.md5.update(o),t.session.sha1.update(o)),q[t.entity][t.expect][i](t,n,s)):a.handleUnexpected(t,n)},a.handleApplicationData=function(e,t){e.data.putBuffer(t.fragment),e.dataReady(e),e.process()},a.handleHeartbeat=function(t,n){var r=n.fragment,i=r.getByte(),s=r.getInt16(),o=r.getBytes(s);if(i===a.HeartbeatMessageType.heartbeat_request){if(t.handshaking||s>o.length)return t.process();a.queue(t,a.createRecord(t,{type:a.ContentType.heartbeat,data:a.createHeartbeat(a.HeartbeatMessageType.heartbeat_response,o)})),a.flush(t)}else if(i===a.HeartbeatMessageType.heartbeat_response){if(o!==t.expectedHeartbeatPayload)return t.process();t.heartbeatReceived&&t.heartbeatReceived(t,e.util.createBuffer(o))}t.process()};var f=0,l=1,c=2,h=3,p=4,d=5,v=6,m=7,g=8,y=0,b=1,w=2,E=3,S=4,x=5,T=6,C=a.handleUnexpected,k=a.handleChangeCipherSpec,L=a.handleAlert,A=a.handleHandshake,O=a.handleApplicationData,M=a.handleHeartbeat,_=[];_[a.ConnectionEnd.client]=[[C,L,A,C,M],[C,L,A,C,M],[C,L,A,C,M],[C,L,A,C,M],[C,L,A,C,M],[k,L,C,C,M],[C,L,A,C,M],[C,L,A,O,M],[C,L,A,C,M]],_[a.ConnectionEnd.server]=[[C,L,A,C,M],[C,L,A,C,M],[C,L,A,C,M],[C,L,A,C,M],[k,L,C,C,M],[C,L,A,C,M],[C,L,A,O,M],[C,L,A,C,M]];var D=a.handleHelloRequest,P=a.handleServerHello,H=a.handleCertificate,B=a.handleServerKeyExchange,j=a.handleCertificateRequest,F=a.handleServerHelloDone,I=a.handleFinished,q=[];q[a.ConnectionEnd.client]=[[C,C,P,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C],[D,C,C,C,C,C,C,C,C,C,C,H,B,j,F,C,C,C,C,C,C],[D,C,C,C,C,C,C,C,C,C,C,C,B,j,F,C,C,C,C,C,C],[D,C,C,C,C,C,C,C,C,C,C,C,C,j,F,C,C,C,C,C,C],[D,C,C,C,C,C,C,C,C,C,C,C,C,C,F,C,C,C,C,C,C],[D,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C],[D,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,I],[D,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C],[D,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C]];var R=a.handleClientHello,U=a.handleClientKeyExchange,z=a.handleCertificateVerify;q[a.ConnectionEnd.server]=[[C,R,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C],[C,C,C,C,C,C,C,C,C,C,C,H,C,C,C,C,C,C,C,C,C],[C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,U,C,C,C,C],[C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,z,C,C,C,C,C],[C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C],[C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,I],[C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C],[C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C]],a.generateKeys=function(e,n){var r=t,i=n.client_random+n.server_random;e.session.resuming||(n.master_secret=r(n.pre_master_secret,"master secret",i,48).bytes(),n.pre_master_secret=null),i=n.server_random+n.client_random;var s=2*n.mac_key_length+2*n.enc_key_length,o=e.version.major===a.Versions.TLS_1_0.major&&e.version.minor===a.Versions.TLS_1_0.minor;o&&(s+=2*n.fixed_iv_length);var u=r(n.master_secret,"key expansion",i,s),f={client_write_MAC_key:u.getBytes(n.mac_key_length),server_write_MAC_key:u.getBytes(n.mac_key_length),client_write_key:u.getBytes(n.enc_key_length),server_write_key:u.getBytes(n.enc_key_length)};return o&&(f.client_write_IV=u.getBytes(n.fixed_iv_length),f.server_write_IV=u.getBytes(n.fixed_iv_length)),f},a.createConnectionState=function(e){var t=e.entity===a.ConnectionEnd.client,n=function(){var e={sequenceNumber:[0,0],macKey:null,macLength:0,macFunction:null,cipherState:null,cipherFunction:function(e){return!0},compressionState:null,compressFunction:function(e){return!0},updateSequenceNumber:function(){4294967295===e.sequenceNumber[1]?(e.sequenceNumber[1]=0,++e.sequenceNumber[0]):++e.sequenceNumber[1]}};return e},r={read:n(),write:n()};if(r.read.update=function(e,t){return r.read.cipherFunction(t,r.read)?r.read.compressFunction(e,t,r.read)||e.error(e,{message:"Could not decompress record.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.decompression_failure}}):e.error(e,{message:"Could not decrypt record or bad MAC.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.bad_record_mac}}),!e.fail},r.write.update=function(e,t){return r.write.compressFunction(e,t,r.write)?r.write.cipherFunction(t,r.write)||e.error(e,{message:"Could not encrypt record.",send:!1,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.internal_error}}):e.error(e,{message:"Could not compress record.",send:!1,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.internal_error}}),!e.fail},e.session){var o=e.session.sp;switch(e.session.cipherSuite.initSecurityParameters(o),o.keys=a.generateKeys(e,o),r.read.macKey=t?o.keys.server_write_MAC_key:o.keys.client_write_MAC_key,r.write.macKey=t?o.keys.client_write_MAC_key:o.keys.server_write_MAC_key,e.session.cipherSuite.initConnectionState(r,e,o),o.compression_algorithm){case a.CompressionMethod.none:break;case a.CompressionMethod.deflate:r.read.compressFunction=s,r.write.compressFunction=i;break;default:throw new Error("Unsupported compression algorithm.")}}return r},a.createRandom=function(){var t=new Date,n=+t+6e4*t.getTimezoneOffset(),r=e.util.createBuffer();return r.putInt32(n),r.putBytes(e.random.getBytes(28)),r},a.createRecord=function(e,t){if(!t.data)return null;var n={type:t.type,version:{major:e.version.major,minor:e.version.minor},length:t.data.length(),fragment:t.data};return n},a.createAlert=function(t,n){var r=e.util.createBuffer();return r.putByte(n.level),r.putByte(n.description),a.createRecord(t,{type:a.ContentType.alert,data:r})},a.createClientHello=function(t){t.session.clientHelloVersion={major:t.version.major,minor:t.version.minor};for(var n=e.util.createBuffer(),r=0;r<t.cipherSuites.length;++r){var i=t.cipherSuites[r];n.putByte(i.id[0]),n.putByte(i.id[1])}var s=n.length(),o=e.util.createBuffer();o.putByte(a.CompressionMethod.none);var f=o.length(),l=e.util.createBuffer();if(t.virtualHost){var c=e.util.createBuffer();c.putByte(0),c.putByte(0);var h=e.util.createBuffer();h.putByte(0),u(h,2,e.util.createBuffer(t.virtualHost));var p=e.util.createBuffer();u(p,2,h),u(c,2,p),l.putBuffer(c)}var d=l.length();d>0&&(d+=2);var v=t.session.id,m=v.length+1+2+4+28+2+s+1+f+d,g=e.util.createBuffer();return g.putByte(a.HandshakeType.client_hello),g.putInt24(m),g.putByte(t.version.major),g.putByte(t.version.minor),g.putBytes(t.session.sp.client_random),u(g,1,e.util.createBuffer(v)),u(g,2,n),u(g,1,o),d>0&&u(g,2,l),g},a.createServerHello=function(t){var n=t.session.id,r=n.length+1+2+4+28+2+1,i=e.util.createBuffer();return i.putByte(a.HandshakeType.server_hello),i.putInt24(r),i.putByte(t.version.major),i.putByte(t.version.minor),i.putBytes(t.session.sp.server_random),u(i,1,e.util.createBuffer(n)),i.putByte(t.session.cipherSuite.id[0]),i.putByte(t.session.cipherSuite.id[1]),i.putByte(t.session.compressionMethod),i},a.createCertificate=function(t){var n=t.entity===a.ConnectionEnd.client,r=null;if(t.getCertificate){var i;i=n?t.session.certificateRequest:t.session.extensions.server_name.serverNameList,r=t.getCertificate(t,i)}var s=e.util.createBuffer();if(null!==r)try{e.util.isArray(r)||(r=[r]);for(var o=null,f=0;f<r.length;++f){var l=e.pem.decode(r[f])[0];if("CERTIFICATE"!==l.type&&"X509 CERTIFICATE"!==l.type&&"TRUSTED CERTIFICATE"!==l.type){var c=new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".');throw c.headerType=l.type,c}if(l.procType&&"ENCRYPTED"===l.procType.type)throw new Error("Could not convert certificate from PEM; PEM is encrypted.");var h=e.util.createBuffer(l.body);null===o&&(o=e.asn1.fromDer(h.bytes(),!1));var p=e.util.createBuffer();u(p,3,h),s.putBuffer(p)}r=e.pki.certificateFromAsn1(o),n?t.session.clientCertificate=r:t.session.serverCertificate=r}catch(d){return t.error(t,{message:"Could not send certificate list.",cause:d,send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.bad_certificate}})}var v=3+s.length(),m=e.util.createBuffer();return m.putByte(a.HandshakeType.certificate),m.putInt24(v),u(m,3,s),m},a.createClientKeyExchange=function(t){var n=e.util.createBuffer();n.putByte(t.session.clientHelloVersion.major),n.putByte(t.session.clientHelloVersion.minor),n.putBytes(e.random.getBytes(46));var r=t.session.sp;r.pre_master_secret=n.getBytes();var i=t.session.serverCertificate.publicKey;n=i.encrypt(r.pre_master_secret);var s=n.length+2,o=e.util.createBuffer();return o.putByte(a.HandshakeType.client_key_exchange),o.putInt24(s),o.putInt16(n.length),o.putBytes(n),o},a.createServerKeyExchange=function(t){var n=0,r=e.util.createBuffer();return n>0&&(r.putByte(a.HandshakeType.server_key_exchange),r.putInt24(n)),r},a.getClientSignature=function(t,n){var r=e.util.createBuffer();r.putBuffer(t.session.md5.digest()),r.putBuffer(t.session.sha1.digest()),r=r.getBytes(),t.getSignature=t.getSignature||function(t,n,r){var i=null;if(t.getPrivateKey)try{i=t.getPrivateKey(t,t.session.clientCertificate),i=e.pki.privateKeyFromPem(i)}catch(s){t.error(t,{message:"Could not get private key.",cause:s,send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.internal_error}})}null===i?t.error(t,{message:"No private key set.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.internal_error}}):n=i.sign(n,null),r(t,n)},t.getSignature(t,r,n)},a.createCertificateVerify=function(t,n){var r=n.length+2,i=e.util.createBuffer();return i.putByte(a.HandshakeType.certificate_verify),i.putInt24(r),i.putInt16(n.length),i.putBytes(n),i},a.createCertificateRequest=function(t){var n=e.util.createBuffer();n.putByte(1);var r=e.util.createBuffer();for(var i in t.caStore.certs){var s=t.caStore.certs[i],o=e.pki.distinguishedNameToAsn1(s.subject);r.putBuffer(e.asn1.toDer(o))}var f=1+n.length()+2+r.length(),l=e.util.createBuffer();return l.putByte(a.HandshakeType.certificate_request),l.putInt24(f),u(l,1,n),u(l,2,r),l},a.createServerHelloDone=function(t){var n=e.util.createBuffer();return n.putByte(a.HandshakeType.server_hello_done),n.putInt24(0),n},a.createChangeCipherSpec=function(){var t=e.util.createBuffer();return t.putByte(1),t},a.createFinished=function(n){var r=e.util.createBuffer();r.putBuffer(n.session.md5.digest()),r.putBuffer(n.session.sha1.digest());var i=n.entity===a.ConnectionEnd.client,s=n.session.sp,o=12,u=t,f=i?"client finished":"server finished";r=u(s.master_secret,f,r.getBytes(),o);var l=e.util.createBuffer();return l.putByte(a.HandshakeType.finished),l.putInt24(r.length()),l.putBuffer(r),l},a.createHeartbeat=function(t,n,r){"undefined"==typeof r&&(r=n.length);var i=e.util.createBuffer();i.putByte(t),i.putInt16(r),i.putBytes(n);var s=i.length(),o=Math.max(16,s-r-3);return i.putBytes(e.random.getBytes(o)),i},a.queue=function(t,n){if(n){if(n.type===a.ContentType.handshake){var r=n.fragment.bytes();t.session.md5.update(r),t.session.sha1.update(r),r=null}var i;if(n.fragment.length()<=a.MaxFragment)i=[n];else{i=[];for(var s=n.fragment.bytes();s.length>a.MaxFragment;)i.push(a.createRecord(t,{type:n.type,data:e.util.createBuffer(s.slice(0,a.MaxFragment))})),s=s.slice(a.MaxFragment);s.length>0&&i.push(a.createRecord(t,{type:n.type,data:e.util.createBuffer(s)}))}for(var o=0;o<i.length&&!t.fail;++o){var u=i[o],f=t.state.current.write;f.update(t,u)&&t.records.push(u)}}},a.flush=function(e){for(var t=0;t<e.records.length;++t){var n=e.records[t];e.tlsData.putByte(n.type),e.tlsData.putByte(n.version.major),e.tlsData.putByte(n.version.minor),e.tlsData.putInt16(n.fragment.length()),e.tlsData.putBuffer(e.records[t].fragment)}return e.records=[],e.tlsDataReady(e)};var W=function(t){switch(t){case!0:return!0;case e.pki.certificateError.bad_certificate:return a.Alert.Description.bad_certificate;case e.pki.certificateError.unsupported_certificate:return a.Alert.Description.unsupported_certificate;case e.pki.certificateError.certificate_revoked:return a.Alert.Description.certificate_revoked;case e.pki.certificateError.certificate_expired:return a.Alert.Description.certificate_expired;case e.pki.certificateError.certificate_unknown:return a.Alert.Description.certificate_unknown;case e.pki.certificateError.unknown_ca:return a.Alert.Description.unknown_ca;default:return a.Alert.Description.bad_certificate}},X=function(t){switch(t){case!0:return!0;case a.Alert.Description.bad_certificate:return e.pki.certificateError.bad_certificate;case a.Alert.Description.unsupported_certificate:return e.pki.certificateError.unsupported_certificate;case a.Alert.Description.certificate_revoked:return e.pki.certificateError.certificate_revoked;case a.Alert.Description.certificate_expired:return e.pki.certificateError.certificate_expired;case a.Alert.Description.certificate_unknown:return e.pki.certificateError.certificate_unknown;case a.Alert.Description.unknown_ca:return e.pki.certificateError.unknown_ca;default:return e.pki.certificateError.bad_certificate}};a.verifyCertificateChain=function(t,n){try{e.pki.verifyCertificateChain(t.caStore,n,function(r,i,s){var u=(W(r),t.verify(t,r,i,s));if(u!==!0){if("object"==typeof u&&!e.util.isArray(u)){var f=new Error("The application rejected the certificate.");throw f.send=!0,f.alert={level:a.Alert.Level.fatal,description:a.Alert.Description.bad_certificate},u.message&&(f.message=u.message),u.alert&&(f.alert.description=u.alert),f}u!==r&&(u=X(u))}return u})}catch(r){var i=r;("object"!=typeof i||e.util.isArray(i))&&(i={send:!0,alert:{level:a.Alert.Level.fatal,description:W(r)}}),"send"in i||(i.send=!0),"alert"in i||(i.alert={level:a.Alert.Level.fatal,description:W(i.error)}),t.error(t,i)}return!t.fail},a.createSessionCache=function(t,n){var r=null;if(t&&t.getSession&&t.setSession&&t.order)r=t;else{r={},r.cache=t||{},r.capacity=Math.max(n||100,1),r.order=[];for(var i in t)r.order.length<=n?r.order.push(i):delete t[i];r.getSession=function(t){var n=null,i=null;if(t?i=e.util.bytesToHex(t):r.order.length>0&&(i=r.order[0]),null!==i&&i in r.cache){n=r.cache[i],delete r.cache[i];for(var s in r.order)if(r.order[s]===i){r.order.splice(s,1);break}}return n},r.setSession=function(t,n){if(r.order.length===r.capacity){var i=r.order.shift();delete r.cache[i]}var i=e.util.bytesToHex(t);r.order.push(i),r.cache[i]=n}}return r},a.createConnection=function(t){var n=null;n=t.caStore?e.util.isArray(t.caStore)?e.pki.createCaStore(t.caStore):t.caStore:e.pki.createCaStore();var r=t.cipherSuites||null;if(null===r){r=[];for(var i in a.CipherSuites)r.push(a.CipherSuites[i])}var s=t.server?a.ConnectionEnd.server:a.ConnectionEnd.client,o=t.sessionCache?a.createSessionCache(t.sessionCache):null,u={version:{major:a.Version.major,minor:a.Version.minor},entity:s,sessionId:t.sessionId,caStore:n,sessionCache:o,cipherSuites:r,connected:t.connected,virtualHost:t.virtualHost||null,verifyClient:t.verifyClient||!1,verify:t.verify||function(e,t,n,r){return t},getCertificate:t.getCertificate||null,getPrivateKey:t.getPrivateKey||null,getSignature:t.getSignature||null,input:e.util.createBuffer(),tlsData:e.util.createBuffer(),data:e.util.createBuffer(),tlsDataReady:t.tlsDataReady,dataReady:t.dataReady,heartbeatReceived:t.heartbeatReceived,closed:t.closed,error:function(e,n){n.origin=n.origin||(e.entity===a.ConnectionEnd.client?"client":"server"),n.send&&(a.queue(e,a.createAlert(e,n.alert)),a.flush(e));var r=n.fatal!==!1;r&&(e.fail=!0),t.error(e,n),r&&e.close(!1)},deflate:t.deflate||null,inflate:t.inflate||null};u.reset=function(e){u.version={major:a.Version.major,minor:a.Version.minor},u.record=null,u.session=null,u.peerCertificate=null,u.state={pending:null,current:null},u.expect=u.entity===a.ConnectionEnd.client?f:y,u.fragmented=null,u.records=[],u.open=!1,u.handshakes=0,u.handshaking=!1,u.isConnected=!1,u.fail=!e&&"undefined"!=typeof e,u.input.clear(),u.tlsData.clear(),u.data.clear(),u.state.current=a.createConnectionState(u)},u.reset();var l=function(e,t){var n=t.type-a.ContentType.change_cipher_spec,r=_[e.entity][e.expect];n in r?r[n](e,t):a.handleUnexpected(e,t)},c=function(t){var n=0,r=t.input,i=r.length();if(i<5)n=5-i;else{t.record={type:r.getByte(),version:{major:r.getByte(),minor:r.getByte()},length:r.getInt16(),fragment:e.util.createBuffer(),ready:!1};var s=t.record.version.major===t.version.major;s&&t.session&&t.session.version&&(s=t.record.version.minor===t.version.minor),s||t.error(t,{message:"Incompatible TLS version.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.protocol_version}})}return n},h=function(e){var t=0,n=e.input,r=n.length();if(r<e.record.length)t=e.record.length-r;else{e.record.fragment.putBytes(n.getBytes(e.record.length)),n.compact();var i=e.state.current.read;i.update(e,e.record)&&(null!==e.fragmented&&(e.fragmented.type===e.record.type?(e.fragmented.fragment.putBuffer(e.record.fragment),e.record=e.fragmented):e.error(e,{message:"Invalid fragmented record.",send:!0,alert:{level:a.Alert.Level.fatal,description:a.Alert.Description.unexpected_message}})),e.record.ready=!0)}return t};return u.handshake=function(t){if(u.entity!==a.ConnectionEnd.client)u.error(u,{message:"Cannot initiate handshake as a server.",fatal:!1});else if(u.handshaking)u.error(u,{message:"Handshake already in progress.",fatal:!1});else{u.fail&&!u.open&&0===u.handshakes&&(u.fail=!1),u.handshaking=!0,t=t||"";var n=null;t.length>0&&(u.sessionCache&&(n=u.sessionCache.getSession(t)),null===n&&(t="")),0===t.length&&u.sessionCache&&(n=u.sessionCache.getSession(),null!==n&&(t=n.id)),u.session={id:t,version:null,cipherSuite:null,compressionMethod:null,serverCertificate:null,certificateRequest:null,clientCertificate:null,sp:{},md5:e.md.md5.create(),sha1:e.md.sha1.create()},n&&(u.version=n.version,u.session.sp=n.sp),u.session.sp.client_random=a.createRandom().getBytes(),u.open=!0,a.queue(u,a.createRecord(u,{type:a.ContentType.handshake,data:a.createClientHello(u)})),a.flush(u)}},u.process=function(e){var t=0;return e&&u.input.putBytes(e),u.fail||(null!==u.record&&u.record.ready&&u.record.fragment.isEmpty()&&(u.record=null),null===u.record&&(t=c(u)),!u.fail&&null!==u.record&&!u.record.ready&&(t=h(u)),!u.fail&&null!==u.record&&u.record.ready&&l(u,u.record)),t},u.prepare=function(t){return a.queue(u,a.createRecord(u,{type:a.ContentType.application_data,data:e.util.createBuffer(t)})),a.flush(u)},u.prepareHeartbeatRequest=function(t,n){return t instanceof e.util.ByteBuffer&&(t=t.bytes()),"undefined"==typeof n&&(n=t.length),u.expectedHeartbeatPayload=t,a.queue(u,a.createRecord(u,{type:a.ContentType.heartbeat,data:a.createHeartbeat(a.HeartbeatMessageType.heartbeat_request,t,n)})),a.flush(u)},u.close=function(e){if(!u.fail&&u.sessionCache&&u.session){var t={id:u.session.id,version:u.session.version,sp:u.session.sp};t.sp.keys=null,u.sessionCache.setSession(t.id,t)}u.open&&(u.open=!1,u.input.clear(),(u.isConnected||u.handshaking)&&(u.isConnected=u.handshaking=!1,a.queue(u,a.createAlert(u,{level:a.Alert.Level.warning,description:a.Alert.Description.close_notify})),a.flush(u)),u.closed(u)),u.reset(e)},u},e.tls=e.tls||{};for(var V in a)"function"!=typeof a[V]&&(e.tls[V]=a[V]);e.tls.prf_tls1=t,e.tls.hmac_sha1=r,e.tls.createSessionCache=a.createSessionCache,e.tls.createConnection=a.createConnection}var r="tls";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return"undefined"==typeof forge&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);if(n=n||{},n.defined=n.defined||{},n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o<i.length;++o)i[o](n);return n[r]}},u=n;(n=function(e,t){return s="string"==typeof e?t.slice(2):e.slice(2),i?(delete n,u.apply(null,Array.prototype.slice.call(arguments,0))):(n=u,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/tls",["require","module","./asn1","./hmac","./md","./pem","./pki","./random","./util"],function(){o.apply(null,Array.prototype.slice.call(arguments,0))})}(),function(){function e(e){function n(n,i,s){var o=i.entity===e.tls.ConnectionEnd.client;n.read.cipherState={init:!1,cipher:e.cipher.createDecipher("AES-CBC",o?s.keys.server_write_key:s.keys.client_write_key),iv:o?s.keys.server_write_IV:s.keys.client_write_IV},n.write.cipherState={init:!1,cipher:e.cipher.createCipher("AES-CBC",o?s.keys.client_write_key:s.keys.server_write_key),iv:o?s.keys.client_write_IV:s.keys.server_write_IV},n.read.cipherFunction=u,n.write.cipherFunction=r,n.read.macLength=n.write.macLength=s.mac_length,n.read.macFunction=n.write.macFunction=t.hmac_sha1}function r(n,r){var s=!1,o=r.macFunction(r.macKey,r.sequenceNumber,n);n.fragment.putBytes(o),r.updateSequenceNumber();var u;u=n.version.minor===t.Versions.TLS_1_0.minor?r.cipherState.init?null:r.cipherState.iv:e.random.getBytesSync(16),r.cipherState.init=!0;var a=r.cipherState.cipher;return a.start({iv:u}),n.version.minor>=t.Versions.TLS_1_1.minor&&a.output.putBytes(u),a.update(n.fragment),a.finish(i)&&(n.fragment=a.output,n.length=n.fragment.length(),s=!0),s}function i(e,t,n){if(!n){var r=e-t.length()%e;t.fillWithByte(r-1,r)}return!0}function s(e,t,n){var r=!0;if(n){for(var i=t.length(),s=t.last(),o=i-1-s;o<i-1;++o)r=r&&t.at(o)==s;r&&t.truncate(s+1)}return r}function u(n,r){var i=!1;++o;var u;u=n.version.minor===t.Versions.TLS_1_0.minor?r.cipherState.init?null:r.cipherState.iv:n.fragment.getBytes(16),r.cipherState.init=!0;var a=r.cipherState.cipher;a.start({iv:u}),a.update(n.fragment),i=a.finish(s);for(var f=r.macLength,l="",c=0;c<f;++c)l+=String.fromCharCode(0);var h=a.output.length();h>=f?(n.fragment=a.output.getBytes(h-f),l=a.output.getBytes(f)):n.fragment=a.output.getBytes(),n.fragment=e.util.createBuffer(n.fragment),n.length=n.fragment.length();var p=r.macFunction(r.macKey,r.sequenceNumber,n);return r.updateSequenceNumber(),i=p===l&&i}var t=e.tls;t.CipherSuites.TLS_RSA_WITH_AES_128_CBC_SHA={id:[0,47],name:"TLS_RSA_WITH_AES_128_CBC_SHA",initSecurityParameters:function(e){e.bulk_cipher_algorithm=t.BulkCipherAlgorithm.aes,e.cipher_type=t.CipherType.block,e.enc_key_length=16,e.block_length=16,e.fixed_iv_length=16,e.record_iv_length=16,e.mac_algorithm=t.MACAlgorithm.hmac_sha1,e.mac_length=20,e.mac_key_length=20},initConnectionState:n},t.CipherSuites.TLS_RSA_WITH_AES_256_CBC_SHA={id:[0,53],name:"TLS_RSA_WITH_AES_256_CBC_SHA",initSecurityParameters:function(e){e.bulk_cipher_algorithm=t.BulkCipherAlgorithm.aes,e.cipher_type=t.CipherType.block,e.enc_key_length=32,e.block_length=16,e.fixed_iv_length=16,e.record_iv_length=16,e.mac_algorithm=t.MACAlgorithm.hmac_sha1,e.mac_length=20,e.mac_key_length=20},initConnectionState:n};var o=0}var r="aesCipherSuites";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return"undefined"==typeof forge&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);if(n=n||{},n.defined=n.defined||{},n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o<i.length;++o)i[o](n);return n[r]}},u=n;(n=function(e,t){return s="string"==typeof e?t.slice(2):e.slice(2),i?(delete n,u.apply(null,Array.prototype.slice.call(arguments,0))):(n=u,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/aesCipherSuites",["require","module","./aes","./tls"],function(){o.apply(null,Array.prototype.slice.call(arguments,0))})}(),function(){function e(e){e.debug=e.debug||{},e.debug.storage={},e.debug.get=function(t,n){var r;return"undefined"==typeof t?r=e.debug.storage:t in e.debug.storage&&(r="undefined"==typeof n?e.debug.storage[t]:e.debug.storage[t][n]),r},e.debug.set=function(t,n,r){t in e.debug.storage||(e.debug.storage[t]={}),e.debug.storage[t][n]=r},e.debug.clear=function(t,n){"undefined"==typeof t?e.debug.storage={}:t in e.debug.storage&&("undefined"==typeof n?delete e.debug.storage[t]:delete e.debug.storage[t][n])}}var r="debug";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return"undefined"==typeof forge&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);if(n=n||{},n.defined=n.defined||{},n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o<i.length;++o)i[o](n);return n[r]}},u=n;(n=function(e,t){return s="string"==typeof e?t.slice(2):e.slice(2),i?(delete n,u.apply(null,Array.prototype.slice.call(arguments,0))):(n=u,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/debug",["require","module"],function(){o.apply(null,Array.prototype.slice.call(arguments,0))})}(),function(){function e(e){function n(t,n,r,i){t.generate=function(t,s){for(var o=new e.util.ByteBuffer,u=Math.ceil(s/i)+r,a=new e.util.ByteBuffer,f=r;f<u;++f){a.putInt32(f),n.start(),n.update(t+a.getBytes());var l=n.digest();o.putBytes(l.getBytes(i))}return o.truncate(o.length()-s),o.getBytes()}}e.kem=e.kem||{};var t=e.jsbn.BigInteger;e.kem.rsa={},e.kem.rsa.create=function(n,r){r=r||{};var i=r.prng||e.random,s={};return s.encrypt=function(r,s){var o;do o=new t(e.util.bytesToHex(i.getBytesSync(r.n.bitLength()/8)),16).mod(r.n);while(o.equals(t.ZERO));o=e.util.hexToBytes(o.toString(16));var u=r.encrypt(o,"NONE"),a=n.generate(o,s);return{encapsulation:u,key:a}},s.decrypt=function(e,t,r){for(var i=e.decrypt(t,"NONE"),s=0;0===i.charCodeAt(s);++s);return i=i.substr(s),n.generate(i,r)},s},e.kem.kdf1=function(e,t){n(this,e,0,t||e.digestLength)},e.kem.kdf2=function(e,t){n(this,e,1,t||e.digestLength)}}var r="kem";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return"undefined"==typeof forge&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);if(n=n||{},n.defined=n.defined||{},n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o<i.length;++o)i[o](n);return n[r]}},u=n;(n=function(e,t){return s="string"==typeof e?t.slice(2):e.slice(2),i?(delete n,u.apply(null,Array.prototype.slice.call(arguments,0))):(n=u,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/kem",["require","module","./util","./random","./jsbn"],function(){o.apply(null,Array.prototype.slice.call(arguments,0))})}(),function(){function e(e){e.log=e.log||{},e.log.levels=["none","error","warning","info","debug","verbose","max"];var t={},n=[],r=null;e.log.LEVEL_LOCKED=2,e.log.NO_LEVEL_CHECK=4,e.log.INTERPOLATE=8;for(var i=0;i<e.log.levels.length;++i){var s=e.log.levels[i];t[s]={index:i,name:s.toUpperCase()}}e.log.logMessage=function(r){for(var i=t[r.level].index,s=0;s<n.length;++s){var o=n[s];if(o.flags&e.log.NO_LEVEL_CHECK)o.f(r);else{var u=t[o.level].index;i<=u&&o.f(o,r)}}},e.log.prepareStandard=function(e){"standard"in e||(e.standard=t[e.level].name+" ["+e.category+"] "+e.message)},e.log.prepareFull=function(t){if(!("full"in t)){var n=[t.message];n=n.concat([]||t.arguments),t.full=e.util.format.apply(this,n)}},e.log.prepareStandardFull=function(t){"standardFull"in t||(e.log.prepareStandard(t),t.standardFull=t.standard)};for(var o=["error","warning","info","debug","verbose"],i=0;i<o.length;++i)(function(t){e.log[t]=function(n,r){var i=Array.prototype.slice.call(arguments).slice(2),s={timestamp:new Date,level:t,category:n,message:r,arguments:i};e.log.logMessage(s)}})(o[i]);if(e.log.makeLogger=function(t){var n={flags:0,f:t};return e.log.setLevel(n,"none"),n},e.log.setLevel=function(t,n){var r=!1;if(t&&!(t.flags&e.log.LEVEL_LOCKED))for(var i=0;i<e.log.levels.length;++i){var s=e.log.levels[i];if(n==s){t.level=n,r=!0;break}}return r},e.log.lock=function(t,n){"undefined"==typeof n||n?t.flags|=e.log.LEVEL_LOCKED:t.flags&=~e.log.LEVEL_LOCKED},e.log.addLogger=function(e){n.push(e)},"undefined"!=typeof console&&"log"in console){var u;if(console.error&&console.warn&&console.info&&console.debug){var a={error:console.error,warning:console.warn,info:console.info,debug:console.debug,verbose:console.debug},f=function(t,n){e.log.prepareStandard(n);var r=a[n.level],i=[n.standard];i=i.concat(n.arguments.slice()),r.apply(console,i)};u=e.log.makeLogger(f)}else{var f=function(t,n){e.log.prepareStandardFull(n),console.log(n.standardFull)};u=e.log.makeLogger(f)}e.log.setLevel(u,"debug"),e.log.addLogger(u),r=u}else console={log:function(){}};if(null!==r){var l=e.util.getQueryVariables();if("console.level"in l&&e.log.setLevel(r,l["console.level"].slice(-1)[0]),"console.lock"in l){var c=l["console.lock"].slice(-1)[0];"true"==c&&e.log.lock(r)}}e.log.consoleLogger=r}var r="log";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return"undefined"==typeof forge&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);if(n=n||{},n.defined=n.defined||{},n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o<i.length;++o)i[o](n);return n[r]}},u=n;(n=function(e,t){return s="string"==typeof e?t.slice(2):e.slice(2),i?(delete n,u.apply(null,Array.prototype.slice.call(arguments,0))):(n=u,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/log",["require","module","./util"],function(){o.apply(null,Array.prototype.slice.call(arguments,0))})}(),function(){function e(e){var t=e.asn1,n=e.pkcs7=e.pkcs7||{};n.messageFromPem=function(r){var i=e.pem.decode(r)[0];if("PKCS7"!==i.type){var s=new Error('Could not convert PKCS#7 message from PEM; PEM header type is not "PKCS#7".');throw s.headerType=i.type,s}if(i.procType&&"ENCRYPTED"===i.procType.type)throw new Error("Could not convert PKCS#7 message from PEM; PEM is encrypted.");var o=t.fromDer(i.body);return n.messageFromAsn1(o)},n.messageToPem=function(n,r){var i={type:"PKCS7",body:t.toDer(n.toAsn1()).getBytes()};return e.pem.encode(i,{maxline:r})},n.messageFromAsn1=function(r){var i={},s=[];if(!t.validate(r,n.asn1.contentInfoValidator,i,s)){var o=new Error("Cannot read PKCS#7 message. ASN.1 object is not an PKCS#7 ContentInfo.");throw o.errors=s,o}var a,u=t.derToOid(i.contentType);switch(u){case e.pki.oids.envelopedData:a=n.createEnvelopedData();break;case e.pki.oids.encryptedData:a=n.createEncryptedData();break;case e.pki.oids.signedData:a=n.createSignedData();break;default:throw new Error("Cannot read PKCS#7 message. ContentType with OID "+u+" is not (yet) supported.")}return a.fromAsn1(i.content.value[0]),a};var r=function(r){var i={},s=[];if(!t.validate(r,n.asn1.recipientInfoValidator,i,s)){var o=new Error("Cannot read PKCS#7 message. ASN.1 object is not an PKCS#7 EnvelopedData.");throw o.errors=s,o}return{version:i.version.charCodeAt(0),issuer:e.pki.RDNAttributesAsArray(i.issuer),serialNumber:e.util.createBuffer(i.serial).toHex(),encryptedContent:{algorithm:t.derToOid(i.encAlgorithm),parameter:i.encParameter.value,content:i.encKey}}},i=function(n){return t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,t.integerToDer(n.version).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[e.pki.distinguishedNameToAsn1({attributes:n.issuer}),t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,e.util.hexToBytes(n.serialNumber))]),t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.encryptedContent.algorithm).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.NULL,!1,"")]),t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,n.encryptedContent.content)])},s=function(e){for(var t=[],n=0;n<e.length;n++)t.push(r(e[n]));return t},o=function(e){for(var t=[],n=0;n<e.length;n++)t.push(i(e[n]));return t},u=function(n){return[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(e.pki.oids.data).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(n.algorithm).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,n.parameter.getBytes())]),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,n.content.getBytes())])]},a=function(n,r,i){var s={},o=[];if(!t.validate(r,i,s,o)){var u=new Error("Cannot read PKCS#7 message. ASN.1 object is not a supported PKCS#7 message.");throw u.errors=u,u}var a=t.derToOid(s.contentType);if(a!==e.pki.oids.data)throw new Error("Unsupported PKCS#7 message. Only wrapped ContentType Data supported.");
-if(s.encryptedContent){var f="";if(e.util.isArray(s.encryptedContent))for(var l=0;l<s.encryptedContent.length;++l){if(s.encryptedContent[l].type!==t.Type.OCTETSTRING)throw new Error("Malformed PKCS#7 message, expecting encrypted content constructed of only OCTET STRING objects.");f+=s.encryptedContent[l].value}else f=s.encryptedContent;n.encryptedContent={algorithm:t.derToOid(s.encAlgorithm),parameter:e.util.createBuffer(s.encParameter.value),content:e.util.createBuffer(f)}}if(s.content){var f="";if(e.util.isArray(s.content))for(var l=0;l<s.content.length;++l){if(s.content[l].type!==t.Type.OCTETSTRING)throw new Error("Malformed PKCS#7 message, expecting content constructed of only OCTET STRING objects.");f+=s.content[l].value}else f=s.content;n.content=e.util.createBuffer(f)}return n.version=s.version.charCodeAt(0),n.rawCapture=s,s},f=function(t){if(void 0===t.encryptedContent.key)throw new Error("Symmetric key not available.");if(void 0===t.content){var n;switch(t.encryptedContent.algorithm){case e.pki.oids["aes128-CBC"]:case e.pki.oids["aes192-CBC"]:case e.pki.oids["aes256-CBC"]:n=e.aes.createDecryptionCipher(t.encryptedContent.key);break;case e.pki.oids.desCBC:case e.pki.oids["des-EDE3-CBC"]:n=e.des.createDecryptionCipher(t.encryptedContent.key);break;default:throw new Error("Unsupported symmetric cipher, OID "+t.encryptedContent.algorithm)}if(n.start(t.encryptedContent.parameter),n.update(t.encryptedContent.content),!n.finish())throw new Error("Symmetric decryption failed.");t.content=n.output}};n.createSignedData=function(){var r=null;return r={type:e.pki.oids.signedData,version:1,certificates:[],crls:[],digestAlgorithmIdentifiers:[],contentInfo:null,signerInfos:[],fromAsn1:function(t){a(r,t,n.asn1.signedDataValidator),r.certificates=[],r.crls=[],r.digestAlgorithmIdentifiers=[],r.contentInfo=null,r.signerInfos=[];for(var i=r.rawCapture.certificates.value,s=0;s<i.length;++s)r.certificates.push(e.pki.certificateFromAsn1(i[s]))},toAsn1:function(){if("content"in r)throw new Error("Signing PKCS#7 content not yet implemented.");r.contentInfo||r.sign();for(var n=[],i=0;i<r.certificates.length;++i)n.push(e.pki.certificateToAsn1(r.certificates[0]));var s=[];return t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(r.type).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,t.integerToDer(r.version).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.SET,!0,r.digestAlgorithmIdentifiers),r.contentInfo,t.create(t.Class.CONTEXT_SPECIFIC,0,!0,n),t.create(t.Class.CONTEXT_SPECIFIC,1,!0,s),t.create(t.Class.UNIVERSAL,t.Type.SET,!0,r.signerInfos)])])])},sign:function(n){if("content"in r)throw new Error("PKCS#7 signing not yet implemented.");"object"!=typeof r.content&&(r.contentInfo=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(e.pki.oids.data).getBytes())]),"content"in r&&r.contentInfo.value.push(t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,r.content)])))},verify:function(){throw new Error("PKCS#7 signature verification not yet implemented.")},addCertificate:function(t){"string"==typeof t&&(t=e.pki.certificateFromPem(t)),r.certificates.push(t)},addCertificateRevokationList:function(e){throw new Error("PKCS#7 CRL support not yet implemented.")}}},n.createEncryptedData=function(){var t=null;return t={type:e.pki.oids.encryptedData,version:0,encryptedContent:{algorithm:e.pki.oids["aes256-CBC"]},fromAsn1:function(e){a(t,e,n.asn1.encryptedDataValidator)},decrypt:function(e){void 0!==e&&(t.encryptedContent.key=e),f(t)}}},n.createEnvelopedData=function(){var r=null;return r={type:e.pki.oids.envelopedData,version:0,recipients:[],encryptedContent:{algorithm:e.pki.oids["aes256-CBC"]},fromAsn1:function(e){var t=a(r,e,n.asn1.envelopedDataValidator);r.recipients=s(t.recipientInfos.value)},toAsn1:function(){return t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(r.type).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,t.integerToDer(r.version).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.SET,!0,o(r.recipients)),t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,u(r.encryptedContent))])])])},findRecipient:function(e){for(var t=e.issuer.attributes,n=0;n<r.recipients.length;++n){var i=r.recipients[n],s=i.issuer;if(i.serialNumber===e.serialNumber&&s.length===t.length){for(var o=!0,u=0;u<t.length;++u)if(s[u].type!==t[u].type||s[u].value!==t[u].value){o=!1;break}if(o)return i}}return null},decrypt:function(t,n){if(void 0===r.encryptedContent.key&&void 0!==t&&void 0!==n)switch(t.encryptedContent.algorithm){case e.pki.oids.rsaEncryption:case e.pki.oids.desCBC:var i=n.decrypt(t.encryptedContent.content);r.encryptedContent.key=e.util.createBuffer(i);break;default:throw new Error("Unsupported asymmetric cipher, OID "+t.encryptedContent.algorithm)}f(r)},addRecipient:function(t){r.recipients.push({version:0,issuer:t.issuer.attributes,serialNumber:t.serialNumber,encryptedContent:{algorithm:e.pki.oids.rsaEncryption,key:t.publicKey}})},encrypt:function(t,n){if(void 0===r.encryptedContent.content){n=n||r.encryptedContent.algorithm,t=t||r.encryptedContent.key;var i,s,o;switch(n){case e.pki.oids["aes128-CBC"]:i=16,s=16,o=e.aes.createEncryptionCipher;break;case e.pki.oids["aes192-CBC"]:i=24,s=16,o=e.aes.createEncryptionCipher;break;case e.pki.oids["aes256-CBC"]:i=32,s=16,o=e.aes.createEncryptionCipher;break;case e.pki.oids["des-EDE3-CBC"]:i=24,s=8,o=e.des.createEncryptionCipher;break;default:throw new Error("Unsupported symmetric cipher, OID "+n)}if(void 0===t)t=e.util.createBuffer(e.random.getBytes(i));else if(t.length()!=i)throw new Error("Symmetric key has wrong length; got "+t.length()+" bytes, expected "+i+".");r.encryptedContent.algorithm=n,r.encryptedContent.key=t,r.encryptedContent.parameter=e.util.createBuffer(e.random.getBytes(s));var u=o(t);if(u.start(r.encryptedContent.parameter.copy()),u.update(r.content),!u.finish())throw new Error("Symmetric encryption failed.");r.encryptedContent.content=u.output}for(var a=0;a<r.recipients.length;a++){var f=r.recipients[a];if(void 0===f.encryptedContent.content)switch(f.encryptedContent.algorithm){case e.pki.oids.rsaEncryption:f.encryptedContent.content=f.encryptedContent.key.encrypt(r.encryptedContent.key.data);break;default:throw new Error("Unsupported asymmetric cipher, OID "+f.encryptedContent.algorithm)}}}}}}var r="pkcs7";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return"undefined"==typeof forge&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);if(n=n||{},n.defined=n.defined||{},n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o<i.length;++o)i[o](n);return n[r]}},u=n;(n=function(e,t){return s="string"==typeof e?t.slice(2):e.slice(2),i?(delete n,u.apply(null,Array.prototype.slice.call(arguments,0))):(n=u,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/pkcs7",["require","module","./aes","./asn1","./des","./oids","./pem","./pkcs7asn1","./random","./util","./x509"],function(){o.apply(null,Array.prototype.slice.call(arguments,0))})}(),function(){function e(e){function n(t,n){var r=n.toString(16);r[0]>="8"&&(r="00"+r);var i=e.util.hexToBytes(r);t.putInt32(i.length),t.putBytes(i)}function r(e,t){e.putInt32(t.length),e.putString(t)}function i(){for(var t=e.md.sha1.create(),n=arguments.length,r=0;r<n;++r)t.update(arguments[r]);return t.digest()}var t=e.ssh=e.ssh||{};t.privateKeyToPutty=function(t,s,o){o=o||"",s=s||"";var u="ssh-rsa",a=""===s?"none":"aes256-cbc",f="PuTTY-User-Key-File-2: "+u+"\r\n";f+="Encryption: "+a+"\r\n",f+="Comment: "+o+"\r\n";var l=e.util.createBuffer();r(l,u),n(l,t.e),n(l,t.n);var c=e.util.encode64(l.bytes(),64),h=Math.floor(c.length/66)+1;f+="Public-Lines: "+h+"\r\n",f+=c;var p=e.util.createBuffer();n(p,t.d),n(p,t.p),n(p,t.q),n(p,t.qInv);var d;if(s){var v=p.length()+16-1;v-=v%16;var m=i(p.bytes());m.truncate(m.length()-v+p.length()),p.putBuffer(m);var g=e.util.createBuffer();g.putBuffer(i("\0\0\0\0",s)),g.putBuffer(i("\0\0\0",s));var y=e.aes.createEncryptionCipher(g.truncate(8),"CBC");y.start(e.util.createBuffer().fillWithByte(0,16)),y.update(p.copy()),y.finish();var b=y.output;b.truncate(16),d=e.util.encode64(b.bytes(),64)}else d=e.util.encode64(p.bytes(),64);h=Math.floor(d.length/66)+1,f+="\r\nPrivate-Lines: "+h+"\r\n",f+=d;var w=i("putty-private-key-file-mac-key",s),E=e.util.createBuffer();r(E,u),r(E,a),r(E,o),E.putInt32(l.length()),E.putBuffer(l),E.putInt32(p.length()),E.putBuffer(p);var S=e.hmac.create();return S.start("sha1",w),S.update(E.bytes()),f+="\r\nPrivate-MAC: "+S.digest().toHex()+"\r\n"},t.publicKeyToOpenSSH=function(t,i){var s="ssh-rsa";i=i||"";var o=e.util.createBuffer();return r(o,s),n(o,t.e),n(o,t.n),s+" "+e.util.encode64(o.bytes())+" "+i},t.privateKeyToOpenSSH=function(t,n){return n?e.pki.encryptRsaPrivateKey(t,n,{legacy:!0,algorithm:"aes128"}):e.pki.privateKeyToPem(t)}}var r="ssh";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return"undefined"==typeof forge&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);if(n=n||{},n.defined=n.defined||{},n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o<i.length;++o)i[o](n);return n[r]}},u=n;(n=function(e,t){return s="string"==typeof e?t.slice(2):e.slice(2),i?(delete n,u.apply(null,Array.prototype.slice.call(arguments,0))):(n=u,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/ssh",["require","module","./util","./sha1","./aes","./hmac"],function(){o.apply(null,Array.prototype.slice.call(arguments,0))})}(),function(){function e(e){var t="forge.task",n=0,r={},i=0;e.debug.set(t,"tasks",r);var s={};e.debug.set(t,"queues",s);var o="?",u=30,a=20,f="ready",l="running",c="blocked",h="sleeping",p="done",d="error",v="stop",m="start",g="block",y="unblock",b="sleep",w="wakeup",E="cancel",S="fail",x={};x[f]={},x[f][v]=f,x[f][m]=l,x[f][E]=p,x[f][S]=d,x[l]={},x[l][v]=f,x[l][m]=l,x[l][g]=c,x[l][y]=l,x[l][b]=h,x[l][w]=l,x[l][E]=p,x[l][S]=d,x[c]={},x[c][v]=c,x[c][m]=c,x[c][g]=c,x[c][y]=c,x[c][b]=c,x[c][w]=c,x[c][E]=p,x[c][S]=d,x[h]={},x[h][v]=h,x[h][m]=h,x[h][g]=h,x[h][y]=h,x[h][b]=h,x[h][w]=h,x[h][E]=p,x[h][S]=d,x[p]={},x[p][v]=p,x[p][m]=p,x[p][g]=p,x[p][y]=p,x[p][b]=p,x[p][w]=p,x[p][E]=p,x[p][S]=d,x[d]={},x[d][v]=d,x[d][m]=d,x[d][g]=d,x[d][y]=d,x[d][b]=d,x[d][w]=d,x[d][E]=d,x[d][S]=d;var T=function(s){this.id=-1,this.name=s.name||o,this.parent=s.parent||null,this.run=s.run,this.subtasks=[],this.error=!1,this.state=f,this.blocks=0,this.timeoutId=null,this.swapTime=null,this.userData=null,this.id=i++,r[this.id]=this,n>=1&&e.log.verbose(t,"[%s][%s] init",this.id,this.name,this)};T.prototype.debug=function(n){n=n||"",e.log.debug(t,n,"[%s][%s] task:",this.id,this.name,this,"subtasks:",this.subtasks.length,"queue:",s)},T.prototype.next=function(e,t){"function"==typeof e&&(t=e,e=this.name);var n=new T({run:t,name:e,parent:this});return n.state=l,n.type=this.type,n.successCallback=this.successCallback||null,n.failureCallback=this.failureCallback||null,this.subtasks.push(n),this},T.prototype.parallel=function(t,n){return e.util.isArray(t)&&(n=t,t=this.name),this.next(t,function(r){var i=r;i.block(n.length);for(var s=function(t,r){e.task.start({type:t,run:function(e){n[r](e)},success:function(e){i.unblock()},failure:function(e){i.unblock()}})},o=0;o<n.length;o++){var u=t+"__parallel-"+r.id+"-"+o,a=o;s(u,a)}})},T.prototype.stop=function(){this.state=x[this.state][v]},T.prototype.start=function(){this.error=!1,this.state=x[this.state][m],this.state===l&&(this.start=new Date,this.run(this),C(this,0))},T.prototype.block=function(e){e="undefined"==typeof e?1:e,this.blocks+=e,this.blocks>0&&(this.state=x[this.state][g])},T.prototype.unblock=function(e){return e="undefined"==typeof e?1:e,this.blocks-=e,0===this.blocks&&this.state!==p&&(this.state=l,C(this,0)),this.blocks},T.prototype.sleep=function(e){e="undefined"==typeof e?0:e,this.state=x[this.state][b];var t=this;this.timeoutId=setTimeout(function(){t.timeoutId=null,t.state=l,C(t,0)},e)},T.prototype.wait=function(e){e.wait(this)},T.prototype.wakeup=function(){this.state===h&&(cancelTimeout(this.timeoutId),this.timeoutId=null,this.state=l,C(this,0))},T.prototype.cancel=function(){this.state=x[this.state][E],this.permitsNeeded=0,null!==this.timeoutId&&(cancelTimeout(this.timeoutId),this.timeoutId=null),this.subtasks=[]},T.prototype.fail=function(e){if(this.error=!0,k(this,!0),e)e.error=this.error,e.swapTime=this.swapTime,e.userData=this.userData,C(e,0);else{if(null!==this.parent){for(var t=this.parent;null!==t.parent;)t.error=this.error,t.swapTime=this.swapTime,t.userData=this.userData,t=t.parent;k(t,!0)}this.failureCallback&&this.failureCallback(this)}};var N=function(e){e.error=!1,e.state=x[e.state][m],setTimeout(function(){e.state===l&&(e.swapTime=+new Date,e.run(e),C(e,0))},0)},C=function(e,t){var n=t>u||+new Date-e.swapTime>a,r=function(t){if(t++,e.state===l)if(n&&(e.swapTime=+new Date),e.subtasks.length>0){var r=e.subtasks.shift();r.error=e.error,r.swapTime=e.swapTime,r.userData=e.userData,r.run(r),r.error||C(r,t)}else k(e),e.error||null!==e.parent&&(e.parent.error=e.error,e.parent.swapTime=e.swapTime,e.parent.userData=e.userData,C(e.parent,t))};n?setTimeout(r,0):r(t)},k=function(i,o){i.state=p,delete r[i.id],n>=1&&e.log.verbose(t,"[%s][%s] finish",i.id,i.name,i),null===i.parent&&(i.type in s?0===s[i.type].length?e.log.error(t,"[%s][%s] task queue empty [%s]",i.id,i.name,i.type):s[i.type][0]!==i?e.log.error(t,"[%s][%s] task not first in queue [%s]",i.id,i.name,i.type):(s[i.type].shift(),0===s[i.type].length?(n>=1&&e.log.verbose(t,"[%s][%s] delete queue [%s]",i.id,i.name,i.type),delete s[i.type]):(n>=1&&e.log.verbose(t,"[%s][%s] queue start next [%s] remain:%s",i.id,i.name,i.type,s[i.type].length),s[i.type][0].start())):e.log.error(t,"[%s][%s] task queue missing [%s]",i.id,i.name,i.type),o||(i.error&&i.failureCallback?i.failureCallback(i):!i.error&&i.successCallback&&i.successCallback(i)))};e.task=e.task||{},e.task.start=function(r){var i=new T({run:r.run,name:r.name||o});i.type=r.type,i.successCallback=r.success||null,i.failureCallback=r.failure||null,i.type in s?s[r.type].push(i):(n>=1&&e.log.verbose(t,"[%s][%s] create queue [%s]",i.id,i.name,i.type),s[i.type]=[i],N(i))},e.task.cancel=function(e){e in s&&(s[e]=[s[e][0]])},e.task.createCondition=function(){var e={tasks:{}};return e.wait=function(t){t.id in e.tasks||(t.block(),e.tasks[t.id]=t)},e.notify=function(){var t=e.tasks;e.tasks={};for(var n in t)t[n].unblock()},e}}var r="task";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return"undefined"==typeof forge&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);if(n=n||{},n.defined=n.defined||{},n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o<i.length;++o)i[o](n);return n[r]}},u=n;(n=function(e,t){return s="string"==typeof e?t.slice(2):e.slice(2),i?(delete n,u.apply(null,Array.prototype.slice.call(arguments,0))):(n=u,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/task",["require","module","./debug","./log","./util"],function(){o.apply(null,Array.prototype.slice.call(arguments,0))})}(),function(){var e="forge";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return void("undefined"==typeof forge&&(forge={disableNativeCode:!1}));var r=!0;n=function(e,n){n(t,module)}}var i,s=function(t,n){n.exports=function(n){var r=i.map(function(e){return t(e)});if(n=n||{},n.defined=n.defined||{},n.defined[e])return n[e];n.defined[e]=!0;for(var s=0;s<r.length;++s)r[s](n);return n},n.exports.disableNativeCode=!1,n.exports(n.exports)},o=n;(n=function(e,t){return i="string"==typeof e?t.slice(2):e.slice(2),r?(delete n,o.apply(null,Array.prototype.slice.call(arguments,0))):(n=o,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/forge",["require","module","./aes","./aesCipherSuites","./asn1","./cipher","./cipherModes","./debug","./des","./hmac","./kem","./log","./md","./mgf1","./pbkdf2","./pem","./pkcs7","./pkcs1","./pkcs12","./pki","./prime","./prng","./pss","./random","./rc2","./ssh","./task","./tls","./util"],function(){s.apply(null,Array.prototype.slice.call(arguments,0))})}(),t("js/forge")}),function(root,factory){"function"==typeof define&&define.amd?define([],factory):"object"==typeof exports?module.exports=factory():root.download=factory()}(this,function(){return function download(data,strFileName,strMimeType){function dataUrlToBlob(strUrl){var parts=strUrl.split(/[:;,]/),type=parts[1],decoder="base64"==parts[2]?atob:decodeURIComponent,binData=decoder(parts.pop()),mx=binData.length,i=0,uiArr=new Uint8Array(mx);for(i;i<mx;++i)uiArr[i]=binData.charCodeAt(i);return new myBlob([uiArr],{type:type})}function saver(url,winMode){if("download"in anchor)return anchor.href=url,anchor.setAttribute("download",fileName),anchor.className="download-js-link",anchor.innerHTML="downloading...",anchor.style.display="none",jQuery(".detailsView").append(anchor),setTimeout(function(){anchor.click(),jQuery(".download-js-link").remove(),winMode===!0&&setTimeout(function(){self.URL.revokeObjectURL(anchor.href)},250)},66),!0;if(/(Version)\/(\d+)\.(\d+)(?:\.(\d+))?.*Safari\//.test(navigator.userAgent))return url=url.replace(/^data:([\w\/\-\+]+)/,defaultMime),window.open(url)||confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")&&(location.href=url),!0;var f=document.createElement("iframe");document.body.appendChild(f),winMode||(url="data:"+url.replace(/^data:([\w\/\-\+]+)/,defaultMime)),f.src=url,setTimeout(function(){document.body.removeChild(f)},333)}var blob,reader,self=window,defaultMime="application/octet-stream",mimeType=strMimeType||defaultMime,payload=data,url=!strFileName&&!strMimeType&&payload,anchor=document.createElement("a"),toString=function(a){return String(a)},myBlob=self.Blob||self.MozBlob||self.WebKitBlob||toString,fileName=strFileName||"download";if(myBlob=myBlob.call?myBlob.bind(self):Blob,"true"===String(this)&&(payload=[payload,mimeType],mimeType=payload[0],payload=payload[1]),url&&url.length<2048&&(fileName=url.split("/").pop().split("?")[0],anchor.href=url,anchor.href.indexOf(url)!==-1)){var ajax=new XMLHttpRequest;return ajax.open("GET",url,!0),ajax.responseType="blob",ajax.onload=function(e){download(e.target.response,fileName,defaultMime)},setTimeout(function(){ajax.send()},0),ajax}if(/^data\:[\w+\-]+\/[\w+\-]+[,;]/.test(payload)){if(!(payload.length>2096103.424&&myBlob!==toString))return navigator.msSaveBlob?navigator.msSaveBlob(dataUrlToBlob(payload),fileName):saver(payload);payload=dataUrlToBlob(payload),mimeType=payload.type||defaultMime}if(blob=payload instanceof myBlob?payload:new myBlob([payload],{type:mimeType}),navigator.msSaveBlob)return navigator.msSaveBlob(blob,fileName);if(self.URL)saver(self.URL.createObjectURL(blob),!0);else{if("string"==typeof blob||blob.constructor===toString)try{return saver("data:"+mimeType+";base64,"+self.btoa(blob))}catch(y){return saver("data:"+mimeType+","+encodeURIComponent(blob))}reader=new FileReader,reader.onload=function(e){saver(this.result)},reader.readAsDataURL(blob)}return!0}}),!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t;return function t(e,n,o){function i(c,a){if(!n[c]){if(!e[c]){var s="function"==typeof require&&require;if(!a&&s)return s(c,!0);if(r)return r(c,!0);var l=new Error("Cannot find module '"+c+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[c]={exports:{}};e[c][0].call(u.exports,function(t){var n=e[c][1][t];return i(n?n:t)},u,u.exports,t,e,n,o)}return n[c].exports}for(var r="function"==typeof require&&require,c=0;c<o.length;c++)i(o[c]);return i}({1:[function(t,e,n){var o=t("matches-selector");e.exports=function(t,e,n){for(var i=n?t:t.parentNode;i&&i!==document;){if(o(i,e))return i;i=i.parentNode}}},{"matches-selector":5}],2:[function(t,e,n){function o(t,e,n,o,r){var c=i.apply(this,arguments);return t.addEventListener(n,c,r),{destroy:function(){t.removeEventListener(n,c,r)}}}function i(t,e,n,o){return function(n){n.delegateTarget=r(n.target,e,!0),n.delegateTarget&&o.call(t,n)}}var r=t("closest");e.exports=o},{closest:1}],3:[function(t,e,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){var e=Object.prototype.toString.call(t);return"[object Function]"===e}},{}],4:[function(t,e,n){function o(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!a.string(e))throw new TypeError("Second argument must be a String");if(!a.fn(n))throw new TypeError("Third argument must be a Function");if(a.node(t))return i(t,e,n);if(a.nodeList(t))return r(t,e,n);if(a.string(t))return c(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function i(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}function r(t,e,n){return Array.prototype.forEach.call(t,function(t){t.addEventListener(e,n)}),{destroy:function(){Array.prototype.forEach.call(t,function(t){t.removeEventListener(e,n)})}}}function c(t,e,n){return s(document.body,t,e,n)}var a=t("./is"),s=t("delegate");e.exports=o},{"./is":3,delegate:2}],5:[function(t,e,n){function o(t,e){if(r)return r.call(t,e);for(var n=t.parentNode.querySelectorAll(e),o=0;o<n.length;++o)if(n[o]==t)return!0;return!1}var i=Element.prototype,r=i.matchesSelector||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector;e.exports=o},{}],6:[function(t,e,n){function o(t){var e;if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName)t.focus(),t.setSelectionRange(0,t.value.length),e=t.value;else{t.hasAttribute("contenteditable")&&t.focus();var n=window.getSelection(),o=document.createRange();o.selectNodeContents(t),n.removeAllRanges(),n.addRange(o),e=n.toString()}return e}e.exports=o},{}],7:[function(t,e,n){function o(){}o.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){function o(){i.off(t,o),e.apply(n,arguments)}var i=this;return o._=e,this.on(t,o,n)},emit:function(t){var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,i=n.length;for(o;i>o;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],i=[];if(o&&e)for(var r=0,c=o.length;c>r;r++)o[r].fn!==e&&o[r].fn._!==e&&i.push(o[r]);return i.length?n[t]=i:delete n[t],this}},e.exports=o},{}],8:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","select"],r);else if("undefined"!=typeof o)r(n,e("select"));else{var c={exports:{}};r(c,i.select),i.clipboardAction=c.exports}}(this,function(t,e){function n(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},c=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),a=function(){function t(e){o(this,t),this.resolveOptions(e),this.initSelection()}return t.prototype.resolveOptions=function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.action=e.action,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""},t.prototype.initSelection=function(){this.text?this.selectFake():this.target&&this.selectTarget()},t.prototype.selectFake=function(){var e=this,n="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandler=document.body.addEventListener("click",function(){return e.removeFake()}),this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="fixed",this.fakeElem.style[n?"right":"left"]="-9999px",this.fakeElem.style.top=(window.pageYOffset||document.documentElement.scrollTop)+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,document.body.appendChild(this.fakeElem),this.selectedText=(0,i.default)(this.fakeElem),this.copyText()},t.prototype.removeFake=function(){this.fakeHandler&&(document.body.removeEventListener("click"),this.fakeHandler=null),this.fakeElem&&(document.body.removeChild(this.fakeElem),this.fakeElem=null)},t.prototype.selectTarget=function(){this.selectedText=(0,i.default)(this.target),this.copyText()},t.prototype.copyText=function(){var e=void 0;try{e=document.execCommand(this.action)}catch(n){e=!1}this.handleResult(e)},t.prototype.handleResult=function(e){e?this.emitter.emit("success",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)}):this.emitter.emit("error",{action:this.action,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})},t.prototype.clearSelection=function(){this.target&&this.target.blur(),window.getSelection().removeAllRanges()},t.prototype.destroy=function(){this.removeFake()},c(t,[{key:"action",set:function(){var e=arguments.length<=0||void 0===arguments[0]?"copy":arguments[0];if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(e){if(void 0!==e){if(!e||"object"!==("undefined"==typeof e?"undefined":r(e))||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=e}},get:function(){return this._target}}]),t}();t.exports=a})},{select:6}],9:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","./clipboard-action","tiny-emitter","good-listener"],r);else if("undefined"!=typeof o)r(n,e("./clipboard-action"),e("tiny-emitter"),e("good-listener"));else{var c={exports:{}};r(c,i.clipboardAction,i.tinyEmitter,i.goodListener),i.clipboard=c.exports}}(this,function(t,e,n,o){function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function c(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function s(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var l=i(e),u=i(n),f=i(o),d=function(t){function e(n,o){r(this,e);var i=c(this,t.call(this));return i.resolveOptions(o),i.listenClick(n),i}return a(e,t),e.prototype.resolveOptions=function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText},e.prototype.listenClick=function(e){var n=this;this.listener=(0,f.default)(e,"click",function(t){return n.onClick(t)})},e.prototype.onClick=function(e){var n=e.delegateTarget||e.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l.default({action:this.action(n),target:this.target(n),text:this.text(n),trigger:n,emitter:this})},e.prototype.defaultAction=function(e){return s("action",e)},e.prototype.defaultTarget=function(e){var n=s("target",e);return n?document.querySelector(n):void 0},e.prototype.defaultText=function(e){return s("text",e)},e.prototype.destroy=function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)},e}(u.default);t.exports=d})},{"./clipboard-action":8,"good-listener":4,"tiny-emitter":7}]},{},[9])(9)}),function(){var angular,Clipboard,MODULE_NAME="ngclipboard";"object"==typeof module&&module.exports?(angular=require("angular"),Clipboard=require("clipboard"),module.exports=MODULE_NAME):(angular=window.angular,Clipboard=window.Clipboard),angular.module(MODULE_NAME,[]).directive("ngclipboard",function(){return{restrict:"A",scope:{ngclipboardSuccess:"&",ngclipboardError:"&"},link:function(scope,element){var clipboard=new Clipboard(element[0]);clipboard.on("success",function(e){scope.$apply(function(){scope.ngclipboardSuccess({e:e})})}),clipboard.on("error",function(e){scope.$apply(function(){scope.ngclipboardError({e:e})})})}}})}(),!function(){var a={backspace:8,tab:9,enter:13,escape:27,space:32,up:38,down:40,left:37,right:39,delete:46,comma:188},b=9007199254740991,c=["text","email","url"],d=angular.module("ngTagsInput",[]);d.directive("tagsInput",["$timeout","$document","$window","$q","tagsInputConfig","tiUtil",function(d,e,f,g,h,i){function j(a,b,c,d){var e,f,h,j,k={};return e=function(b){return i.safeToString(b[a.displayProperty])},f=function(b,c){b[a.displayProperty]=c},h=function(b){var d=e(b),f=d&&d.length>=a.minLength&&d.length<=a.maxLength&&a.allowedTagsPattern.test(d)&&!i.findInObjectArray(k.items,b,a.keyProperty||a.displayProperty);return g.when(f&&c({$tag:b})).then(i.promisifyValue)},j=function(a){return g.when(d({$tag:a})).then(i.promisifyValue)},k.items=[],k.addText=function(a){var b={};return f(b,a),k.add(b)},k.add=function(c){var d=e(c);return a.replaceSpacesWithDashes&&(d=i.replaceSpacesWithDashes(d)),f(c,d),h(c).then(function(){k.items.push(c),b.trigger("tag-added",{$tag:c})}).catch(function(){d&&b.trigger("invalid-tag",{$tag:c})})},k.remove=function(a){var c=k.items[a];return j(c).then(function(){return k.items.splice(a,1),k.clearSelection(),b.trigger("tag-removed",{$tag:c}),c})},k.select=function(a){0>a?a=k.items.length-1:a>=k.items.length&&(a=0),k.index=a,k.selected=k.items[a]},k.selectPrior=function(){k.select(--k.index)},k.selectNext=function(){k.select(++k.index)},k.removeSelected=function(){return k.remove(k.index)},k.clearSelection=function(){k.selected=null,k.index=-1},k.clearSelection(),k}function k(a){return-1!==c.indexOf(a)}return{restrict:"E",require:"ngModel",scope:{tags:"=ngModel",text:"=?",templateScope:"=?",tagClass:"&",onTagAdding:"&",onTagAdded:"&",onInvalidTag:"&",onTagRemoving:"&",onTagRemoved:"&",onTagClicked:"&"},replace:!1,transclude:!0,templateUrl:"ngTagsInput/tags-input.html",controller:["$scope","$attrs","$element",function(a,c,d){a.events=i.simplePubSub(),h.load("tagsInput",a,c,{template:[String,"ngTagsInput/tag-item.html"],type:[String,"text",k],
-placeholder:[String,"Add a tag"],tabindex:[Number,null],removeTagSymbol:[String,String.fromCharCode(215)],replaceSpacesWithDashes:[Boolean,!0],minLength:[Number,3],maxLength:[Number,b],addOnEnter:[Boolean,!0],addOnSpace:[Boolean,!1],addOnComma:[Boolean,!0],addOnBlur:[Boolean,!0],addOnPaste:[Boolean,!1],pasteSplitPattern:[RegExp,/,/],allowedTagsPattern:[RegExp,/.+/],enableEditingLastTag:[Boolean,!1],minTags:[Number,0],maxTags:[Number,b],displayProperty:[String,"text"],keyProperty:[String,""],allowLeftoverText:[Boolean,!1],addFromAutocompleteOnly:[Boolean,!1],spellcheck:[Boolean,!0]}),a.tagList=new j(a.options,a.events,i.handleUndefinedResult(a.onTagAdding,!0),i.handleUndefinedResult(a.onTagRemoving,!0)),this.registerAutocomplete=function(){return d.find("input"),{addTag:function(b){return a.tagList.add(b)},getTags:function(){return a.tagList.items},getCurrentTagText:function(){return a.newTag.text()},getOptions:function(){return a.options},getTemplateScope:function(){return a.templateScope},on:function(b,c){return a.events.on(b,c,!0),this}}},this.registerTagItem=function(){return{getOptions:function(){return a.options},removeTag:function(b){a.disabled||a.tagList.remove(b)}}}}],link:function(b,c,g,h){var j,k,l=[a.enter,a.comma,a.space,a.backspace,a.delete,a.left,a.right],m=b.tagList,n=b.events,o=b.options,p=c.find("input"),q=["minTags","maxTags","allowLeftoverText"];j=function(){h.$setValidity("maxTags",m.items.length<=o.maxTags),h.$setValidity("minTags",m.items.length>=o.minTags),h.$setValidity("leftoverText",!(!b.hasFocus&&!o.allowLeftoverText)||!b.newTag.text())},k=function(){d(function(){p[0].focus()})},h.$isEmpty=function(a){return!a||!a.length},b.newTag={text:function(a){return angular.isDefined(a)?(b.text=a,void n.trigger("input-change",a)):b.text||""},invalid:null},b.track=function(a){return a[o.keyProperty||o.displayProperty]},b.getTagClass=function(a,c){var d=a===m.selected;return[b.tagClass({$tag:a,$index:c,$selected:d}),{selected:d}]},b.$watch("tags",function(a){a?(m.items=i.makeObjectArray(a,o.displayProperty),b.tags=m.items):m.items=[]}),b.$watch("tags.length",function(){j(),h.$validate()}),g.$observe("disabled",function(a){b.disabled=a}),b.eventHandlers={input:{keydown:function(a){n.trigger("input-keydown",a)},focus:function(){b.hasFocus||(b.hasFocus=!0,n.trigger("input-focus"))},blur:function(){d(function(){var a=e.prop("activeElement"),d=a===p[0],f=c[0].contains(a);!d&&f||(b.hasFocus=!1,n.trigger("input-blur"))})},paste:function(a){a.getTextData=function(){var b=a.clipboardData||a.originalEvent&&a.originalEvent.clipboardData;return b?b.getData("text/plain"):f.clipboardData.getData("Text")},n.trigger("input-paste",a)}},host:{click:function(){b.disabled||k()}},tag:{click:function(a){n.trigger("tag-clicked",{$tag:a})}}},n.on("tag-added",b.onTagAdded).on("invalid-tag",b.onInvalidTag).on("tag-removed",b.onTagRemoved).on("tag-clicked",b.onTagClicked).on("tag-added",function(){b.newTag.text("")}).on("tag-added tag-removed",function(){b.tags=m.items,h.$setDirty(),k()}).on("invalid-tag",function(){b.newTag.invalid=!0}).on("option-change",function(a){-1!==q.indexOf(a.name)&&j()}).on("input-change",function(){m.clearSelection(),b.newTag.invalid=null}).on("input-focus",function(){c.triggerHandler("focus"),h.$setValidity("leftoverText",!0)}).on("input-blur",function(){o.addOnBlur&&!o.addFromAutocompleteOnly&&m.addText(b.newTag.text()),c.triggerHandler("blur"),j()}).on("input-keydown",function(c){var d,e,f,g,h=c.keyCode,j={};i.isModifierOn(c)||-1===l.indexOf(h)||(j[a.enter]=o.addOnEnter,j[a.comma]=o.addOnComma,j[a.space]=o.addOnSpace,d=!o.addFromAutocompleteOnly&&j[h],e=(h===a.backspace||h===a.delete)&&m.selected,g=h===a.backspace&&0===b.newTag.text().length&&o.enableEditingLastTag,f=(h===a.backspace||h===a.left||h===a.right)&&0===b.newTag.text().length&&!o.enableEditingLastTag,d?m.addText(b.newTag.text()):g?(m.selectPrior(),m.removeSelected().then(function(a){a&&b.newTag.text(a[o.displayProperty])})):e?m.removeSelected():f&&(h===a.left||h===a.backspace?m.selectPrior():h===a.right&&m.selectNext()),(d||f||e||g)&&c.preventDefault())}).on("input-paste",function(a){if(o.addOnPaste){var b=a.getTextData(),c=b.split(o.pasteSplitPattern);c.length>1&&(c.forEach(function(a){m.addText(a)}),a.preventDefault())}})}}}]),d.directive("tiTagItem",["tiUtil",function(a){return{restrict:"E",require:"^tagsInput",template:'<ng-include src="$$template"></ng-include>',scope:{$scope:"=scope",data:"="},link:function(b,c,d,e){var f=e.registerTagItem(),g=f.getOptions();b.$$template=g.template,b.$$removeTagSymbol=g.removeTagSymbol,b.$getDisplayText=function(){return a.safeToString(b.data[g.displayProperty])},b.$removeTag=function(){f.removeTag(b.$index)},b.$watch("$parent.$index",function(a){b.$index=a})}}}]),d.directive("autoComplete",["$document","$timeout","$sce","$q","tagsInputConfig","tiUtil",function(b,c,d,e,f,g){function h(a,b,c){var d,f,h,i={};return h=function(){return b.tagsInput.keyProperty||b.tagsInput.displayProperty},d=function(a,c){return a.filter(function(a){return!g.findInObjectArray(c,a,h(),function(a,c){return b.tagsInput.replaceSpacesWithDashes&&(a=g.replaceSpacesWithDashes(a),c=g.replaceSpacesWithDashes(c)),g.defaultComparer(a,c)})})},i.reset=function(){f=null,i.items=[],i.visible=!1,i.index=-1,i.selected=null,i.query=null},i.show=function(){b.selectFirstMatch?i.select(0):i.selected=null,i.visible=!0},i.load=g.debounce(function(c,j){i.query=c;var k=e.when(a({$query:c}));f=k,k.then(function(a){k===f&&(a=g.makeObjectArray(a.data||a,h()),a=d(a,j),i.items=a.slice(0,b.maxResultsToShow),i.items.length>0?i.show():i.reset())})},b.debounceDelay),i.selectNext=function(){i.select(++i.index)},i.selectPrior=function(){i.select(--i.index)},i.select=function(a){0>a?a=i.items.length-1:a>=i.items.length&&(a=0),i.index=a,i.selected=i.items[a],c.trigger("suggestion-selected",a)},i.reset(),i}function i(a,b){var c=a.find("li").eq(b),d=c.parent(),e=c.prop("offsetTop"),f=c.prop("offsetHeight"),g=d.prop("clientHeight"),h=d.prop("scrollTop");h>e?d.prop("scrollTop",e):e+f>g+h&&d.prop("scrollTop",e+f-g)}return{restrict:"E",require:"^tagsInput",scope:{source:"&",matchClass:"&"},templateUrl:"ngTagsInput/auto-complete.html",controller:["$scope","$element","$attrs",function(a,b,c){a.events=g.simplePubSub(),f.load("autoComplete",a,c,{template:[String,"ngTagsInput/auto-complete-match.html"],debounceDelay:[Number,100],minLength:[Number,3],highlightMatchedText:[Boolean,!0],maxResultsToShow:[Number,10],loadOnDownArrow:[Boolean,!1],loadOnEmpty:[Boolean,!1],loadOnFocus:[Boolean,!1],selectFirstMatch:[Boolean,!0],displayProperty:[String,""]}),a.suggestionList=new h(a.source,a.options,a.events),this.registerAutocompleteMatch=function(){return{getOptions:function(){return a.options},getQuery:function(){return a.suggestionList.query}}}}],link:function(b,c,d,e){var f,h=[a.enter,a.tab,a.escape,a.up,a.down],j=b.suggestionList,k=e.registerAutocomplete(),l=b.options,m=b.events;l.tagsInput=k.getOptions(),f=function(a){return a&&a.length>=l.minLength||!a&&l.loadOnEmpty},b.templateScope=k.getTemplateScope(),b.addSuggestionByIndex=function(a){j.select(a),b.addSuggestion()},b.addSuggestion=function(){var a=!1;return j.selected&&(k.addTag(angular.copy(j.selected)),j.reset(),a=!0),a},b.track=function(a){return a[l.tagsInput.keyProperty||l.tagsInput.displayProperty]},b.getSuggestionClass=function(a,c){var d=a===j.selected;return[b.matchClass({$match:a,$index:c,$selected:d}),{selected:d}]},k.on("tag-added tag-removed invalid-tag input-blur",function(){j.reset()}).on("input-change",function(a){f(a)?j.load(a,k.getTags()):j.reset()}).on("input-focus",function(){var a=k.getCurrentTagText();l.loadOnFocus&&f(a)&&j.load(a,k.getTags())}).on("input-keydown",function(c){var d=c.keyCode,e=!1;if(!g.isModifierOn(c)&&-1!==h.indexOf(d))return j.visible?d===a.down?(j.selectNext(),e=!0):d===a.up?(j.selectPrior(),e=!0):d===a.escape?(j.reset(),e=!0):d!==a.enter&&d!==a.tab||(e=b.addSuggestion()):d===a.down&&b.options.loadOnDownArrow&&(j.load(k.getCurrentTagText(),k.getTags()),e=!0),e?(c.preventDefault(),c.stopImmediatePropagation(),!1):void 0}),m.on("suggestion-selected",function(a){i(c,a)})}}}]),d.directive("tiAutocompleteMatch",["$sce","tiUtil",function(a,b){return{restrict:"E",require:"^autoComplete",template:'<ng-include src="$$template"></ng-include>',scope:{$scope:"=scope",data:"="},link:function(c,d,e,f){var g=f.registerAutocompleteMatch(),h=g.getOptions();c.$$template=h.template,c.$index=c.$parent.$index,c.$highlight=function(c){return h.highlightMatchedText&&(c=b.safeHighlight(c,g.getQuery())),a.trustAsHtml(c)},c.$getDisplayText=function(){return b.safeToString(c.data[h.displayProperty||h.tagsInput.displayProperty])}}}}]),d.directive("tiTranscludeAppend",function(){return function(a,b,c,d,e){e(function(a){b.append(a)})}}),d.directive("tiAutosize",["tagsInputConfig",function(a){return{restrict:"A",require:"ngModel",link:function(b,c,d,e){var f,g,h=a.getTextAutosizeThreshold();f=angular.element('<span class="input"></span>'),f.css("display","none").css("visibility","hidden").css("width","auto").css("white-space","pre"),c.parent().append(f),g=function(a){var b,e=a;return angular.isString(e)&&0===e.length&&(e=d.placeholder),e&&(f.text(e),f.css("display",""),b=f.prop("offsetWidth"),f.css("display","none")),c.css("width",b?b+h+"px":""),a},e.$parsers.unshift(g),e.$formatters.unshift(g),d.$observe("placeholder",function(a){e.$modelValue||g(a)})}}}]),d.directive("tiBindAttrs",function(){return function(a,b,c){a.$watch(c.tiBindAttrs,function(a){angular.forEach(a,function(a,b){c.$set(b,a)})},!0)}}),d.provider("tagsInputConfig",function(){var a={},b={},c=3;this.setDefaults=function(b,c){return a[b]=c,this},this.setActiveInterpolation=function(a,c){return b[a]=c,this},this.setTextAutosizeThreshold=function(a){return c=a,this},this.$get=["$interpolate",function(d){var e={};return e[String]=function(a){return a},e[Number]=function(a){return parseInt(a,10)},e[Boolean]=function(a){return"true"===a.toLowerCase()},e[RegExp]=function(a){return new RegExp(a)},{load:function(c,f,g,h){var i=function(){return!0};f.options={},angular.forEach(h,function(h,j){var k,l,m,n,o,p;k=h[0],l=h[1],m=h[2]||i,n=e[k],o=function(){var b=a[c]&&a[c][j];return angular.isDefined(b)?b:l},p=function(a){f.options[j]=a&&m(a)?n(a):o()},b[c]&&b[c][j]?g.$observe(j,function(a){p(a),f.events.trigger("option-change",{name:j,newValue:a})}):p(g[j]&&d(g[j])(f.$parent))})},getTextAutosizeThreshold:function(){return c}}}]}),d.factory("tiUtil",["$timeout","$q",function(a,b){var c={};return c.debounce=function(b,c){var d;return function(){var e=arguments;a.cancel(d),d=a(function(){b.apply(null,e)},c)}},c.makeObjectArray=function(a,b){if(!angular.isArray(a)||0===a.length||angular.isObject(a[0]))return a;var c=[];return a.forEach(function(a){var d={};d[b]=a,c.push(d)}),c},c.findInObjectArray=function(a,b,d,e){var f=null;return e=e||c.defaultComparer,a.some(function(a){return e(a[d],b[d])?(f=a,!0):void 0}),f},c.defaultComparer=function(a,b){return c.safeToString(a).toLowerCase()===c.safeToString(b).toLowerCase()},c.safeHighlight=function(a,b){function d(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}if(!b)return a;a=c.encodeHTML(a),b=c.encodeHTML(b);var e=new RegExp("&[^;]+;|"+d(b),"gi");return a.replace(e,function(a){return a.toLowerCase()===b.toLowerCase()?"<em>"+a+"</em>":a})},c.safeToString=function(a){return angular.isUndefined(a)||null==a?"":a.toString().trim()},c.encodeHTML=function(a){return c.safeToString(a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},c.handleUndefinedResult=function(a,b){return function(){var c=a.apply(null,arguments);return angular.isUndefined(c)?b:c}},c.replaceSpacesWithDashes=function(a){return c.safeToString(a).replace(/\s/g,"-")},c.isModifierOn=function(a){return a.shiftKey||a.ctrlKey||a.altKey||a.metaKey},c.promisifyValue=function(a){return a=!!angular.isUndefined(a)||a,b[a?"when":"reject"]()},c.simplePubSub=function(){var a={};return{on:function(b,c,d){return b.split(" ").forEach(function(b){a[b]||(a[b]=[]);var e=d?[].unshift:[].push;e.call(a[b],c)}),this},trigger:function(b,d){var e=a[b]||[];return e.every(function(a){return c.handleUndefinedResult(a,!0)(d)}),this}}},c}]),d.run(["$templateCache",function(a){a.put("ngTagsInput/tags-input.html",'<div class="host" tabindex="-1" ng-click="eventHandlers.host.click()" ti-transclude-append><div class="tags" ng-class="{focused: hasFocus}"><ul class="tag-list"><li use-theme class="tag-item" ng-repeat="tag in tagList.items track by track(tag)" ng-class="getTagClass(tag, $index)" ng-click="eventHandlers.tag.click(tag)"><ti-tag-item scope="templateScope" data="::tag"></ti-tag-item></li></ul><input class="input" autocomplete="off" ng-model="newTag.text" ng-model-options="{getterSetter: true}" ng-keydown="eventHandlers.input.keydown($event)" ng-focus="eventHandlers.input.focus($event)" ng-blur="eventHandlers.input.blur($event)" ng-paste="eventHandlers.input.paste($event)" ng-trim="false" ng-class="{\'invalid-tag\': newTag.invalid}" ng-disabled="disabled" ti-bind-attrs="{type: options.type, placeholder: options.placeholder, tabindex: options.tabindex, spellcheck: options.spellcheck}" ti-autosize></div></div>'),a.put("ngTagsInput/tag-item.html",'<span ng-bind="$getDisplayText()"></span> <a class="remove-button" ng-click="$removeTag()" ng-bind="::$$removeTagSymbol"></a>'),a.put("ngTagsInput/auto-complete.html",'<div class="autocomplete" ng-if="suggestionList.visible"><ul class="suggestion-list"><li class="suggestion-item" ng-repeat="item in suggestionList.items track by track(item)" ng-class="getSuggestionClass(item, $index)" ng-click="addSuggestionByIndex($index)" ng-mouseenter="suggestionList.select($index)"><ti-autocomplete-match scope="templateScope" data="::item"></ti-autocomplete-match></li></ul></div>'),a.put("ngTagsInput/auto-complete-match.html",'<span ng-bind-html="$highlight($getDisplayText())"></span>')}])}(),angular.module("xeditable",[]).value("editableOptions",{theme:"default",icon_set:"default",buttons:"right",blurElem:"cancel",blurForm:"ignore",activate:"focus",isDisabled:!1,activationEvent:"click"}),angular.module("xeditable").directive("editableBsdate",["editableDirectiveFactory",function(a){return a({directiveName:"editableBsdate",inputTpl:"<div></div>",render:function(){this.parent.render.call(this);var a=angular.element('<input type="text" class="form-control" data-ng-model="$parent.$data"/>');a.attr("uib-datepicker-popup",this.attrs.eDatepickerPopupXEditable||"yyyy/MM/dd"),a.attr("is-open",this.attrs.eIsOpen),a.attr("date-disabled",this.attrs.eDateDisabled),a.attr("uib-datepicker-popup",this.attrs.eDatepickerPopup),a.attr("year-range",this.attrs.eYearRange||20),a.attr("show-button-bar",this.attrs.eShowButtonBar||!0),a.attr("current-text",this.attrs.eCurrentText||"Today"),a.attr("clear-text",this.attrs.eClearText||"Clear"),a.attr("close-text",this.attrs.eCloseText||"Done"),a.attr("close-on-date-selection",this.attrs.eCloseOnDateSelection||!0),a.attr("datepicker-append-to-body",this.attrs.eDatePickerAppendToBody||!1),a.attr("date-disabled",this.attrs.eDateDisabled),a.attr("name",this.attrs.eName),a.attr("on-open-focus",this.attrs.eOnOpenFocus||!0),a.attr("ng-readonly",this.attrs.eReadonly||!1),this.attrs.eNgChange&&(a.attr("ng-change",this.attrs.eNgChange),this.inputEl.removeAttr("ng-change")),this.attrs.eStyle&&(a.attr("style",this.attrs.eStyle),this.inputEl.removeAttr("style")),this.scope.dateOptions={formatDay:this.attrs.eFormatDay||"dd",formatMonth:this.attrs.eFormatMonth||"MMMM",formatYear:this.attrs.eFormatYear||"yyyy",formatDayHeader:this.attrs.eFormatDayHeader||"EEE",formatDayTitle:this.attrs.eFormatDayTitle||"MMMM yyyy",formatMonthTitle:this.attrs.eFormatMonthTitle||"yyyy",showWeeks:!this.attrs.eShowWeeks||"true"===this.attrs.eShowWeeks.toLowerCase(),startingDay:this.attrs.eStartingDay||0,minMode:this.attrs.eMinMode||"day",maxMode:this.attrs.eMaxMode||"year",initDate:this.scope.$eval(this.attrs.eInitDate)||new Date,datepickerMode:this.attrs.eDatepickerMode||"day",maxDate:this.scope.$eval(this.attrs.eMaxDate)||null,minDate:this.scope.$eval(this.attrs.eMinDate)||null};var b=angular.isDefined(this.attrs.eShowCalendarButton)?this.attrs.eShowCalendarButton:"true";if("true"===b){var c=angular.element('<button type="button" class="btn btn-default"><i class="glyphicon glyphicon-calendar"></i></button>'),d=angular.element('<span class="input-group-btn"></span>');c.attr("ng-click",this.attrs.eNgClick),d.append(c),this.inputEl.append(d)}else a.attr("ng-click",this.attrs.eNgClick);a.attr("datepicker-options","dateOptions"),this.inputEl.prepend(a),this.inputEl.removeAttr("class"),this.inputEl.removeAttr("ng-click"),this.inputEl.removeAttr("is-open"),this.inputEl.removeAttr("init-date"),this.inputEl.removeAttr("datepicker-popup"),this.inputEl.removeAttr("required"),this.inputEl.removeAttr("ng-model"),this.inputEl.removeAttr("date-picker-append-to-body"),this.inputEl.removeAttr("name"),this.inputEl.attr("class","input-group")}})}]),angular.module("xeditable").directive("editableBstime",["editableDirectiveFactory",function(a){return a({directiveName:"editableBstime",inputTpl:"<uib-timepicker></uib-timepicker>",render:function(){this.parent.render.call(this);var a=angular.element('<div class="well well-small" style="display:inline-block;"></div>');a.attr("ng-model",this.inputEl.attr("ng-model")),this.inputEl.removeAttr("ng-model"),this.attrs.eNgChange&&(a.attr("ng-change",this.inputEl.attr("ng-change")),this.inputEl.removeAttr("ng-change")),this.inputEl.wrap(a)}})}]),angular.module("xeditable").directive("editableCheckbox",["editableDirectiveFactory",function(a){return a({directiveName:"editableCheckbox",inputTpl:'<input type="checkbox">',render:function(){this.parent.render.call(this),this.attrs.eTitle&&(this.inputEl.wrap("<label></label>"),this.inputEl.parent().append("<span>"+this.attrs.eTitle+"</span>"))},autosubmit:function(){var a=this;a.inputEl.bind("change",function(){setTimeout(function(){a.scope.$apply(function(){a.scope.$form.$submit()})},500)})}})}]),angular.module("xeditable").directive("editableChecklist",["editableDirectiveFactory","editableNgOptionsParser",function(a,b){return a({directiveName:"editableChecklist",inputTpl:"<span></span>",useCopy:!0,render:function(){this.parent.render.call(this);var a=b(this.attrs.eNgOptions),c='<label ng-repeat="'+a.ngRepeat+'"><input type="checkbox" checklist-model="$parent.$parent.$data" checklist-value="'+a.locals.valueFn+'"><span ng-bind="'+a.locals.displayFn+'"></span></label>';this.inputEl.removeAttr("ng-model"),this.inputEl.removeAttr("ng-options"),this.inputEl.html(c)}})}]),angular.module("xeditable").directive("editableCombodate",["editableDirectiveFactory","editableCombodate",function(a,b){return a({directiveName:"editableCombodate",inputTpl:'<input type="text">',render:function(){this.parent.render.call(this);var a={value:new Date(this.scope.$data)},c=this;angular.forEach(["format","template","minYear","maxYear","yearDescending","minuteStep","secondStep","firstItem","errorClass","customClass","roundTime","smartDays"],function(b){var d="e"+b.charAt(0).toUpperCase()+b.slice(1);d in c.attrs&&(a[b]=c.attrs[d])});var d=b.getInstance(this.inputEl,a);d.$widget.find("select").bind("change",function(a){c.scope.$data=new Date(d.getValue()).toISOString()})}})}]),function(){var a=function(a){return a.toLowerCase().replace(/-(.)/g,function(a,b){return b.toUpperCase()})},b="text|password|email|tel|number|url|search|color|date|datetime|datetime-local|time|month|week|file".split("|");angular.forEach(b,function(b){var c=a("editable-"+b);angular.module("xeditable").directive(c,["editableDirectiveFactory",function(a){return a({directiveName:c,inputTpl:'<input type="'+b+'">',render:function(){if(this.parent.render.call(this),this.attrs.eLabel){var a=angular.element("<label>"+this.attrs.eLabel+"</label>");this.inputEl.parent().prepend(a)}this.attrs.eFormclass&&this.editorEl.addClass(this.attrs.eFormclass)}})}])}),angular.module("xeditable").directive("editableRange",["editableDirectiveFactory",function(a){return a({directiveName:"editableRange",inputTpl:'<input type="range" id="range" name="range">',render:function(){this.parent.render.call(this),this.inputEl.after("<output>{{$data}}</output>")}})}])}(),angular.module("xeditable").directive("editableTagsInput",["editableDirectiveFactory","editableUtils",function(a,b){var c=function(a){for(var b=0,c=d.length;c>b;b++)if(d[b].name===a)return b},d=[],e=a({directiveName:"editableTagsInput",inputTpl:"<tags-input></tags-input>",render:function(){var a=c(this.name);this.parent.render.call(this),this.inputEl.append(b.rename("auto-complete",d[a].element)),this.inputEl.removeAttr("ng-model"),this.inputEl.attr("ng-model","$parent.$data")}}),f=e.link;return e.link=function(a,b,c,e){var g=b.find("editable-tags-input-auto-complete");return d.push({name:c.name||c.editableTagsInput,element:g.clone()}),g.remove(),f(a,b,c,e)},e}]),angular.module("xeditable").directive("editableRadiolist",["editableDirectiveFactory","editableNgOptionsParser",function(a,b){return a({directiveName:"editableRadiolist",inputTpl:"<span></span>",render:function(){this.parent.render.call(this);var a=b(this.attrs.eNgOptions),c='<label data-ng-repeat="'+a.ngRepeat+'"><input type="radio" data-ng-disabled="::'+this.attrs.eNgDisabled+'" data-ng-model="$parent.$parent.$data" value="{{::'+a.locals.valueFn+'}}"><span data-ng-bind="::'+a.locals.displayFn+'"></span></label>';this.inputEl.removeAttr("ng-model"),this.inputEl.removeAttr("ng-options"),this.inputEl.html(c)},autosubmit:function(){var a=this;a.inputEl.bind("change",function(){setTimeout(function(){a.scope.$apply(function(){a.scope.$form.$submit()})},500)})}})}]),angular.module("xeditable").directive("editableSelect",["editableDirectiveFactory",function(a){return a({directiveName:"editableSelect",inputTpl:"<select></select>",render:function(){if(this.parent.render.call(this),this.attrs.ePlaceholder){var a=angular.element('<option value="">'+this.attrs.ePlaceholder+"</option>");this.inputEl.append(a)}},autosubmit:function(){var a=this;a.inputEl.bind("change",function(){a.scope.$apply(function(){a.scope.$form.$submit()})})}})}]),angular.module("xeditable").directive("editableTextarea",["editableDirectiveFactory",function(a){return a({directiveName:"editableTextarea",inputTpl:"<textarea></textarea>",addListeners:function(){var a=this;a.parent.addListeners.call(a),a.single&&"no"!==a.buttons&&a.autosubmit()},autosubmit:function(){var a=this;a.inputEl.bind("keydown",function(b){(b.ctrlKey||b.metaKey)&&13===b.keyCode&&a.scope.$apply(function(){a.scope.$form.$submit()})})}})}]),angular.module("xeditable").directive("editableUiSelect",["editableDirectiveFactory","editableUtils",function(a,b){var c=function(a){for(var b=0,c=d.length;c>b;b++)if(d[b].name===a)return b},d=[],e=[],f=a({directiveName:"editableUiSelect",inputTpl:"<ui-select></ui-select>",render:function(){var a=c(this.name);this.parent.render.call(this),this.inputEl.append(b.rename("ui-select-match",d[a].element)),this.inputEl.append(b.rename("ui-select-choices",e[a].element)),this.inputEl.removeAttr("ng-model"),this.inputEl.attr("ng-model","$parent.$parent.$data")}}),g=f.link;return f.link=function(a,b,c,f){var h=b.find("editable-ui-select-match"),i=b.find("editable-ui-select-choices");return d.push({name:c.name||c.editableUiSelect,element:h.clone()}),e.push({name:c.name||c.editableUiSelect,element:i.clone()}),h.remove(),i.remove(),g(a,b,c,f)},f}]),angular.module("xeditable").factory("editableController",["$q","editableUtils",function(a,b){function c(a,c,d,e,f,g,h,i,j,k){var l,m,n=this;n.scope=a,n.elem=d,n.attrs=c,n.inputEl=null,n.editorEl=null,n.single=!0,n.error="",n.theme=f[c.editableTheme]||f[h.theme]||f.default,n.parent={},n.icon_set="default"===h.icon_set?g.default[h.theme]:g.external[h.icon_set],n.inputTpl="",n.directiveName="",n.useCopy=!1,n.single=null,n.buttons="right",n.init=function(b){if(n.single=b,n.name=c.eName||c[n.directiveName],!c[n.directiveName])throw"You should provide value for `"+n.directiveName+"` in editable element!";l=e(c[n.directiveName]),n.single?n.buttons=n.attrs.buttons||h.buttons:n.buttons="no",c.eName&&n.scope.$watch("$data",function(a){n.scope.$form.$data[c.eName]=a}),c.onshow&&(n.onshow=function(){return n.catchError(e(c.onshow)(a))}),c.onhide&&(n.onhide=function(){return e(c.onhide)(a)}),c.oncancel&&(n.oncancel=function(){return e(c.oncancel)(a)}),c.onbeforesave&&(n.onbeforesave=function(){return n.catchError(e(c.onbeforesave)(a))}),c.onaftersave&&(n.onaftersave=function(){return n.catchError(e(c.onaftersave)(a))}),a.$parent.$watch(c[n.directiveName],function(a,b){n.setLocalValue(),n.handleEmpty()})},n.render=function(){var a=n.theme;n.inputEl=angular.element(n.inputTpl),n.controlsEl=angular.element(a.controlsTpl),n.controlsEl.append(n.inputEl),"no"!==n.buttons&&(n.buttonsEl=angular.element(a.buttonsTpl),n.submitEl=angular.element(a.submitTpl),n.cancelEl=angular.element(a.cancelTpl),n.icon_set&&(n.submitEl.find("span").addClass(n.icon_set.ok),n.cancelEl.find("span").addClass(n.icon_set.cancel)),n.buttonsEl.append(n.submitEl).append(n.cancelEl),n.controlsEl.append(n.buttonsEl),n.inputEl.addClass("editable-has-buttons")),n.errorEl=angular.element(a.errorTpl),n.controlsEl.append(n.errorEl),n.editorEl=angular.element(n.single?a.formTpl:a.noformTpl),n.editorEl.append(n.controlsEl);for(var d in c.$attr)if(!(d.length<=1)){var e=!1,f=d.substring(1,2);if("e"===d.substring(0,1)&&f===f.toUpperCase()&&(e=d.substring(1),"Form"!==e&&"NgSubmit"!==e)){e=e.substring(0,1).toLowerCase()+b.camelToDash(e.substring(1));var g="value"!==e&&""===c[d]?e:c[d];n.inputEl.attr(e,g)}}n.inputEl.addClass("editable-input"),n.inputEl.attr("ng-model","$parent.$data"),n.editorEl.addClass(b.camelToDash(n.directiveName)),n.single&&(n.editorEl.attr("editable-form","$form"),n.editorEl.attr("blur",n.attrs.blur||("no"===n.buttons?"cancel":h.blurElem))),angular.isFunction(a.postrender)&&a.postrender.call(n)},n.setLocalValue=function(){n.scope.$data=n.useCopy?angular.copy(l(a.$parent)):l(a.$parent)};var o=null;n.show=function(){return n.setLocalValue(),n.render(),d.after(n.editorEl),o=a.$new(),j(n.editorEl)(o),n.addListeners(),d.addClass("editable-hide"),n.onshow()},n.hide=function(){return o.$destroy(),n.controlsEl.remove(),n.editorEl.remove(),d.removeClass("editable-hide"),n.onhide()},n.cancel=function(){n.oncancel()},n.addListeners=function(){n.inputEl.bind("keyup",function(a){if(n.single)switch(a.keyCode){case 27:n.scope.$apply(function(){n.scope.$form.$cancel()})}}),n.single&&"no"===n.buttons&&n.autosubmit(),n.editorEl.bind("click",function(a){a.which&&1!==a.which||n.scope.$form.$visible&&(n.scope.$form._clicked=!0)})},n.setWaiting=function(a){a?(m=!n.inputEl.attr("disabled")&&!n.inputEl.attr("ng-disabled")&&!n.inputEl.attr("ng-enabled"),m&&(n.inputEl.attr("disabled","disabled"),n.buttonsEl&&n.buttonsEl.find("button").attr("disabled","disabled"))):m&&(n.inputEl.removeAttr("disabled"),n.buttonsEl&&n.buttonsEl.find("button").removeAttr("disabled"))},n.activate=function(a,b){setTimeout(function(){var c=n.inputEl[0];"focus"===h.activate&&c.focus&&(a&&(b=b||a,c.onfocus=function(){var c=this;setTimeout(function(){c.setSelectionRange(a,b)})}),c.focus()),"select"===h.activate&&c.select&&c.select()},0)},n.setError=function(b){angular.isObject(b)||(a.$error=b,n.error=b)},n.catchError=function(a,b){return angular.isObject(a)&&b!==!0?k.when(a).then(angular.bind(this,function(a){this.catchError(a,!0)}),angular.bind(this,function(a){this.catchError(a,!0)})):b&&angular.isObject(a)&&a.status&&200!==a.status&&a.data&&angular.isString(a.data)?(this.setError(a.data),a=a.data):angular.isString(a)&&this.setError(a),a},n.save=function(){l.assign(a.$parent,n.useCopy?angular.copy(n.scope.$data):n.scope.$data)},n.handleEmpty=function(){var b=l(a.$parent),c=null===b||void 0===b||""===b||angular.isArray(b)&&0===b.length;d.toggleClass("editable-empty",c)},n.autosubmit=angular.noop,n.onshow=angular.noop,n.onhide=angular.noop,n.oncancel=angular.noop,n.onbeforesave=angular.noop,n.onaftersave=angular.noop}return c.$inject=["$scope","$attrs","$element","$parse","editableThemes","editableIcons","editableOptions","$rootScope","$compile","$q"],c}]),angular.module("xeditable").factory("editableDirectiveFactory",["$parse","$compile","editableThemes","$rootScope","$document","editableController","editableFormController","editableOptions",function(a,b,c,d,e,f,g,h){return function(b){return{restrict:"A",scope:!0,require:[b.directiveName,"?^form"],controller:f,link:function(c,f,i,j){var k,l=j[0],m=!1;if(j[1])k=j[1],m=void 0===i.eSingle;else if(i.eForm){var n=a(i.eForm)(c);if(n)k=n,m=!0;else if(f&&"function"==typeof f.parents&&f.parents().last().find("form[name="+i.eForm+"]").length)k=null,m=!0;else for(var o=0;o<e[0].forms.length;o++)if(e[0].forms[o].name===i.eForm){k=null,m=!0;break}}angular.forEach(b,function(a,b){void 0!==l[b]&&(l.parent[b]=l[b])}),angular.extend(l,b);var p=angular.isDefined(i.editDisabled)?c.$eval(i.editDisabled):h.isDisabled;if(!p)if(l.init(!m),c.$editable=l,f.addClass("editable"),m)if(k){if(c.$form=k,!c.$form.$addEditable)throw"Form with editable elements should have `editable-form` attribute.";c.$form.$addEditable(l)}else d.$$editableBuffer=d.$$editableBuffer||{},d.$$editableBuffer[i.eForm]=d.$$editableBuffer[i.eForm]||[],d.$$editableBuffer[i.eForm].push(l),c.$form=null;else c.$form=g(),c.$form.$addEditable(l),i.eForm&&(a(i.eForm).assign||angular.noop)(c.$parent,c.$form),(!i.eForm||i.eClickable)&&(f.addClass("editable-click"),f.bind(h.activationEvent,function(a){a.preventDefault(),a.editable=l,c.$apply(function(){c.$form.$show()})}))}}}}]),angular.module("xeditable").factory("editableFormController",["$parse","$document","$rootScope","editablePromiseCollection","editableUtils",function(a,b,c,d,e){var f=[],g=function(a,b){if(b==a)return!0;for(var c=b.parentNode;null!==c;){if(c==a)return!0;c=c.parentNode}return!1},h=function(a,b){var c=!0,d=a.$editables;return angular.forEach(d,function(a){var d=a.editorEl[0];g(d,b.target)&&(c=!1)}),c};b.bind("click",function(a){if(!a.which||1===a.which){for(var b=[],d=[],e=0;e<f.length;e++)f[e]._clicked?f[e]._clicked=!1:f[e].$waiting||("cancel"===f[e]._blur&&h(f[e],a)&&b.push(f[e]),"submit"===f[e]._blur&&h(f[e],a)&&d.push(f[e]));(b.length||d.length)&&c.$apply(function(){angular.forEach(b,function(a){a.$cancel()}),angular.forEach(d,function(a){a.$submit()})})}}),c.$on("closeEdit",function(){for(var a=0;a<f.length;a++)f[a].$hide()});var i={$addEditable:function(a){this.$editables.push(a),a.elem.bind("$destroy",angular.bind(this,this.$removeEditable,a)),a.scope.$form||(a.scope.$form=this),this.$visible&&a.catchError(a.show()),a.catchError(a.setWaiting(this.$waiting))},$removeEditable:function(a){for(var b=0;b<this.$editables.length;b++)if(this.$editables[b]===a)return void this.$editables.splice(b,1)},$show:function(){if(!this.$visible){this.$visible=!0;var a=d();a.when(this.$onshow()),this.$setError(null,""),angular.forEach(this.$editables,function(b){a.when(b.show())}),a.then({onWait:angular.bind(this,this.$setWaiting),onTrue:angular.bind(this,this.$activate),onFalse:angular.bind(this,this.$activate),onString:angular.bind(this,this.$activate)}),setTimeout(angular.bind(this,function(){this._clicked=!1,-1===e.indexOf(f,this)&&f.push(this)}),0)}},$activate:function(a){var b;if(this.$editables.length){if(angular.isString(a))for(b=0;b<this.$editables.length;b++)if(this.$editables[b].name===a)return void this.$editables[b].activate();for(b=0;b<this.$editables.length;b++)if(this.$editables[b].error)return void this.$editables[b].activate();this.$editables[0].activate(this.$editables[0].elem[0].selectionStart,this.$editables[0].elem[0].selectionEnd)}},$hide:function(){this.$visible&&(this.$visible=!1,this.$onhide(),angular.forEach(this.$editables,function(a){a.hide()}),e.arrayRemove(f,this))},$cancel:function(){this.$visible&&(this.$oncancel(),angular.forEach(this.$editables,function(a){
-a.cancel()}),this.$hide())},$setWaiting:function(a){this.$waiting=!!a,angular.forEach(this.$editables,function(b){b.setWaiting(!!a)})},$setError:function(a,b){angular.forEach(this.$editables,function(c){a&&c.name!==a||c.setError(b)})},$submit:function(){function a(a){var b=d();b.when(this.$onbeforesave()),b.then({onWait:angular.bind(this,this.$setWaiting),onTrue:a?angular.bind(this,this.$save):angular.bind(this,this.$hide),onFalse:angular.bind(this,this.$hide),onString:angular.bind(this,this.$activate)})}if(!this.$waiting){this.$setError(null,"");var b=d();angular.forEach(this.$editables,function(a){b.when(a.onbeforesave())}),b.then({onWait:angular.bind(this,this.$setWaiting),onTrue:angular.bind(this,a,!0),onFalse:angular.bind(this,a,!1),onString:angular.bind(this,this.$activate)})}},$save:function(){angular.forEach(this.$editables,function(a){a.save()});var a=d();a.when(this.$onaftersave()),angular.forEach(this.$editables,function(b){a.when(b.onaftersave())}),a.then({onWait:angular.bind(this,this.$setWaiting),onTrue:angular.bind(this,this.$hide),onFalse:angular.bind(this,this.$hide),onString:angular.bind(this,this.$activate)})},$onshow:angular.noop,$oncancel:angular.noop,$onhide:angular.noop,$onbeforesave:angular.noop,$onaftersave:angular.noop};return function(){return angular.extend({$editables:[],$visible:!1,$waiting:!1,$data:{},_clicked:!1,_blur:null},i)}}]),angular.module("xeditable").directive("editableForm",["$rootScope","$parse","editableFormController","editableOptions",function(a,b,c,d){return{restrict:"A",require:["form"],compile:function(){return{pre:function(b,d,e,f){var g,h=f[0];e.editableForm?b[e.editableForm]&&b[e.editableForm].$show?(g=b[e.editableForm],angular.extend(h,g)):(g=c(),b[e.editableForm]=g,angular.extend(g,h)):(g=c(),angular.extend(h,g));var i=a.$$editableBuffer,j=h.$name;j&&i&&i[j]&&(angular.forEach(i[j],function(a){g.$addEditable(a)}),delete i[j])},post:function(a,c,e,f){var g;g=e.editableForm&&a[e.editableForm]&&a[e.editableForm].$show?a[e.editableForm]:f[0],e.onshow&&(g.$onshow=angular.bind(g,b(e.onshow),a)),e.onhide&&(g.$onhide=angular.bind(g,b(e.onhide),a)),e.oncancel&&(g.$oncancel=angular.bind(g,b(e.oncancel),a)),e.shown&&b(e.shown)(a)&&g.$show(),g._blur=e.blur||d.blurForm,e.ngSubmit||e.submit||(e.onbeforesave&&(g.$onbeforesave=function(){return b(e.onbeforesave)(a,{$data:g.$data})}),e.onaftersave&&(g.$onaftersave=function(){return b(e.onaftersave)(a,{$data:g.$data})}),c.bind("submit",function(b){b.preventDefault(),a.$apply(function(){g.$submit()})})),c.bind("click",function(a){a.which&&1!==a.which||g.$visible&&(g._clicked=!0)})}}}}}]),angular.module("xeditable").factory("editablePromiseCollection",["$q",function(a){function b(){return{promises:[],hasFalse:!1,hasString:!1,when:function(b,c){if(b===!1)this.hasFalse=!0;else if(!c&&angular.isObject(b))this.promises.push(a.when(b));else{if(!angular.isString(b))return;this.hasString=!0}},then:function(b){function c(){h.hasString||h.hasFalse?!h.hasString&&h.hasFalse?e():f():d()}b=b||{};var d=b.onTrue||angular.noop,e=b.onFalse||angular.noop,f=b.onString||angular.noop,g=b.onWait||angular.noop,h=this;this.promises.length?(g(!0),a.all(this.promises).then(function(a){g(!1),angular.forEach(a,function(a){h.when(a,!0)}),c()},function(a){g(!1),f()})):c()}}}return b}]),angular.module("xeditable").factory("editableUtils",[function(){return{indexOf:function(a,b){if(a.indexOf)return a.indexOf(b);for(var c=0;c<a.length;c++)if(b===a[c])return c;return-1},arrayRemove:function(a,b){var c=this.indexOf(a,b);return c>=0&&a.splice(c,1),b},camelToDash:function(a){var b=/[A-Z]/g;return a.replace(b,function(a,b){return(b?"-":"")+a.toLowerCase()})},dashToCamel:function(a){var b=/([\:\-\_]+(.))/g,c=/^moz([A-Z])/;return a.replace(b,function(a,b,c,d){return d?c.toUpperCase():c}).replace(c,"Moz$1")},rename:function(a,b){var c=angular.element("<"+a+"/>");c.html(b.html());for(var d=b[0].attributes,e=0;e<d.length;++e)c.attr(d.item(e).nodeName,d.item(e).value);return c}}}]),angular.module("xeditable").factory("editableNgOptionsParser",[function(){function a(a){var c;if(!(c=a.match(b)))throw"ng-options parse error";var d,e=c[2]||c[1],f=c[4]||c[6],g=c[5],h=(c[3]||"",c[2]?c[1]:f),i=c[7],j=c[8],k=j?c[8]:null;return void 0===g?(d=f+" in "+i,void 0!==j&&(d+=" track by "+k)):d="("+g+", "+f+") in "+i,{ngRepeat:d,locals:{valueName:f,keyName:g,valueFn:h,displayFn:e}}}var b=/^\s*(.*?)(?:\s+as\s+(.*?))?(?:\s+group\s+by\s+(.*))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+(.*?)(?:\s+track\s+by\s+(.*?))?$/;return a}]),angular.module("xeditable").factory("editableCombodate",[function(){function a(a,b){if(this.$element=angular.element(a),"INPUT"!=this.$element[0].nodeName)throw"Combodate should be applied to INPUT element";var c=(new Date).getFullYear();this.defaults={format:"YYYY-MM-DD HH:mm",template:"D / MMM / YYYY H : mm",value:null,minYear:1970,maxYear:c,yearDescending:!0,minuteStep:5,secondStep:1,firstItem:"empty",errorClass:null,customClass:"",roundTime:!0,smartDays:!0},this.options=angular.extend({},this.defaults,b),this.init()}return a.prototype={constructor:a,init:function(){if(this.map={day:["D","date"],month:["M","month"],year:["Y","year"],hour:["[Hh]","hours"],minute:["m","minutes"],second:["s","seconds"],ampm:["[Aa]",""]},this.$widget=angular.element('<span class="combodate"></span>').html(this.getTemplate()),this.initCombos(),this.options.smartDays){var a=this;this.$widget.find("select").bind("change",function(b){(angular.element(b.target).hasClass("month")||angular.element(b.target).hasClass("year"))&&a.fillCombo("day")})}this.$widget.find("select").css("width","auto"),this.$element.css("display","none").after(this.$widget),this.setValue(this.$element.val()||this.options.value)},getTemplate:function(){var a=this.options.template,b=this.options.customClass;return angular.forEach(this.map,function(b,c){b=b[0];var d=new RegExp(b+"+"),e=b.length>1?b.substring(1,2):b;a=a.replace(d,"{"+e+"}")}),a=a.replace(/ /g,"&nbsp;"),angular.forEach(this.map,function(c,d){c=c[0];var e=c.length>1?c.substring(1,2):c;a=a.replace("{"+e+"}",'<select class="'+d+" "+b+'"></select>')}),a},initCombos:function(){for(var a in this.map){var b=this.$widget[0].querySelectorAll("."+a);this["$"+a]=b.length?angular.element(b):null,this.fillCombo(a)}},fillCombo:function(a){var b=this["$"+a];if(b){var c="fill"+a.charAt(0).toUpperCase()+a.slice(1),d=this[c](),e=b.val();b.html("");for(var f=0;f<d.length;f++)b.append('<option value="'+d[f][0]+'">'+d[f][1]+"</option>");b.val(e)}},fillCommon:function(a){var b,c=[];if("name"===this.options.firstItem){b=moment.relativeTime||moment.langData()._relativeTime;var d="function"==typeof b[a]?b[a](1,!0,a,!1):b[a];d=d.split(" ").reverse()[0],c.push(["",d])}else"empty"===this.options.firstItem&&c.push(["",""]);return c},fillDay:function(){var a,b,c=this.fillCommon("d"),d=-1!==this.options.template.indexOf("DD"),e=31;if(this.options.smartDays&&this.$month&&this.$year){var f=parseInt(this.$month.val(),10),g=parseInt(this.$year.val(),10);isNaN(f)||isNaN(g)||(e=moment([g,f]).daysInMonth())}for(b=1;e>=b;b++)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillMonth:function(){var a,b,c=this.fillCommon("M"),d=-1!==this.options.template.indexOf("MMMM"),e=-1!==this.options.template.indexOf("MMM"),f=-1!==this.options.template.indexOf("MM");for(b=0;11>=b;b++)a=d?moment().date(1).month(b).format("MMMM"):e?moment().date(1).month(b).format("MMM"):f?this.leadZero(b+1):b+1,c.push([b,a]);return c},fillYear:function(){var a,b,c=[],d=-1!==this.options.template.indexOf("YYYY");for(b=this.options.maxYear;b>=this.options.minYear;b--)a=d?b:(b+"").substring(2),c[this.options.yearDescending?"push":"unshift"]([b,a]);return c=this.fillCommon("y").concat(c)},fillHour:function(){var a,b,c=this.fillCommon("h"),d=-1!==this.options.template.indexOf("h"),e=(-1!==this.options.template.indexOf("H"),-1!==this.options.template.toLowerCase().indexOf("hh")),f=d?1:0,g=d?12:23;for(b=f;g>=b;b++)a=e?this.leadZero(b):b,c.push([b,a]);return c},fillMinute:function(){var a,b,c=this.fillCommon("m"),d=-1!==this.options.template.indexOf("mm");for(b=0;59>=b;b+=this.options.minuteStep)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillSecond:function(){var a,b,c=this.fillCommon("s"),d=-1!==this.options.template.indexOf("ss");for(b=0;59>=b;b+=this.options.secondStep)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillAmpm:function(){var a=-1!==this.options.template.indexOf("a"),b=(-1!==this.options.template.indexOf("A"),[["am",a?"am":"AM"],["pm",a?"pm":"PM"]]);return b},getValue:function(a){var b,c={},d=this,e=!1;return angular.forEach(this.map,function(a,b){if("ampm"!==b){var f="day"===b?1:0;return c[b]=d["$"+b]?parseInt(d["$"+b].val(),10):f,isNaN(c[b])?(e=!0,!1):void 0}}),e?"":(this.$ampm&&(12===c.hour?c.hour="am"===this.$ampm.val()?0:12:c.hour="am"===this.$ampm.val()?c.hour:c.hour+12),b=moment([c.year,c.month,c.day,c.hour,c.minute,c.second]),this.highlight(b),a=void 0===a?this.options.format:a,null===a?b.isValid()?b:null:b.isValid()?b.format(a):"")},setValue:function(a){function b(a,b){var c={};return angular.forEach(a.children("option"),function(a,d){var e=angular.element(a).attr("value");if(""!==e){var f=Math.abs(e-b);("undefined"==typeof c.distance||f<c.distance)&&(c={value:e,distance:f})}}),c.value}if(a){var c="string"==typeof a?moment(a,this.options.format,!0):moment(a),d=this,e={};c.isValid()&&(angular.forEach(this.map,function(a,b){"ampm"!==b&&(e[b]=c[a[1]]())}),this.$ampm&&(e.hour>=12?(e.ampm="pm",e.hour>12&&(e.hour-=12)):(e.ampm="am",0===e.hour&&(e.hour=12))),angular.forEach(e,function(a,c){d["$"+c]&&("minute"===c&&d.options.minuteStep>1&&d.options.roundTime&&(a=b(d["$"+c],a)),"second"===c&&d.options.secondStep>1&&d.options.roundTime&&(a=b(d["$"+c],a)),d["$"+c].val(a))}),this.options.smartDays&&this.fillCombo("day"),this.$element.val(c.format(this.options.format)).triggerHandler("change"))}},highlight:function(a){a.isValid()?this.options.errorClass?this.$widget.removeClass(this.options.errorClass):this.$widget.find("select").css("border-color",this.borderColor):this.options.errorClass?this.$widget.addClass(this.options.errorClass):(this.borderColor||(this.borderColor=this.$widget.find("select").css("border-color")),this.$widget.find("select").css("border-color","red"))},leadZero:function(a){return 9>=a?"0"+a:a},destroy:function(){this.$widget.remove(),this.$element.removeData("combodate").show()}},{getInstance:function(b,c){return new a(b,c)}}}]),angular.module("xeditable").factory("editableIcons",function(){var a={default:{bs2:{ok:"icon-ok icon-white",cancel:"icon-remove"},bs3:{ok:"glyphicon glyphicon-ok",cancel:"glyphicon glyphicon-remove"}},external:{"font-awesome":{ok:"fa fa-check",cancel:"fa fa-times"}}};return a}),angular.module("xeditable").factory("editableThemes",function(){var a={default:{formTpl:'<form class="editable-wrap"></form>',noformTpl:'<span class="editable-wrap"></span>',controlsTpl:'<span class="editable-controls"></span>',inputTpl:"",errorTpl:'<div class="editable-error" data-ng-if="$error" data-ng-bind="$error"></div>',buttonsTpl:'<span class="editable-buttons"></span>',submitTpl:'<button type="submit">save</button>',cancelTpl:'<button type="button" ng-click="$form.$cancel()">cancel</button>'},bs2:{formTpl:'<form class="form-inline editable-wrap" role="form"></form>',noformTpl:'<span class="editable-wrap"></span>',controlsTpl:'<div class="editable-controls controls control-group" ng-class="{\'error\': $error}"></div>',inputTpl:"",errorTpl:'<div class="editable-error help-block" data-ng-if="$error" data-ng-bind="$error"></div>',buttonsTpl:'<span class="editable-buttons"></span>',submitTpl:'<button type="submit" class="btn btn-primary"><span></span></button>',cancelTpl:'<button type="button" class="btn" ng-click="$form.$cancel()"><span></span></button>'},bs3:{formTpl:'<form class="form-inline editable-wrap" role="form"></form>',noformTpl:'<span class="editable-wrap"></span>',controlsTpl:'<div class="editable-controls form-group" ng-class="{\'has-error\': $error}"></div>',inputTpl:"",errorTpl:'<div class="editable-error help-block" data-ng-if="$error" data-ng-bind="$error"></div>',buttonsTpl:'<span class="editable-buttons"></span>',submitTpl:'<button type="submit" class="btn btn-primary"><span></span></button>',cancelTpl:'<button type="button" class="btn btn-default" ng-click="$form.$cancel()"><span></span></button>',buttonsClass:"",inputClass:"",postrender:function(){switch(this.directiveName){case"editableText":case"editableSelect":case"editableTextarea":case"editableEmail":case"editableTel":case"editableNumber":case"editableUrl":case"editableSearch":case"editableDate":case"editableDatetime":case"editableBsdate":case"editableTime":case"editableMonth":case"editableWeek":case"editablePassword":case"editableDatetimeLocal":if(this.inputEl.addClass("form-control"),this.theme.inputClass){if(this.inputEl.attr("multiple")&&("input-sm"===this.theme.inputClass||"input-lg"===this.theme.inputClass))break;this.inputEl.addClass(this.theme.inputClass)}break;case"editableCheckbox":this.editorEl.addClass("checkbox")}this.buttonsEl&&this.theme.buttonsClass&&this.buttonsEl.find("button").addClass(this.theme.buttonsClass)}},semantic:{formTpl:'<form class="editable-wrap ui form" ng-class="{\'error\': $error}" role="form"></form>',noformTpl:'<span class="editable-wrap"></span>',controlsTpl:'<div class="editable-controls ui fluid input" ng-class="{\'error\': $error}"></div>',inputTpl:"",errorTpl:'<div class="editable-error ui error message" data-ng-if="$error" data-ng-bind="$error"></div>',buttonsTpl:'<span class="mini ui buttons"></span>',submitTpl:'<button type="submit" class="ui primary button"><i class="ui check icon"></i></button>',cancelTpl:'<button type="button" class="ui button" ng-click="$form.$cancel()"><i class="ui cancel icon"></i></button>'}};return a}),function(T){function z(a,c,b){var g=0,f=[0],h="",l=null,h=b||"UTF8";if("UTF8"!==h&&"UTF16"!==h)throw"encoding must be UTF8 or UTF16";if("HEX"===c){if(0!==a.length%2)throw"srcString of HEX type must be in byte increments";l=B(a),g=l.binLen,f=l.value}else if("ASCII"===c||"TEXT"===c)l=J(a,h),g=l.binLen,f=l.value;else{if("B64"!==c)throw"inputFormat must be HEX, TEXT, ASCII, or B64";l=K(a),g=l.binLen,f=l.value}this.getHash=function(a,c,b,h){var p,l=null,d=f.slice(),n=g;if(3===arguments.length?"number"!=typeof b&&(h=b,b=1):2===arguments.length&&(b=1),b!==parseInt(b,10)||1>b)throw"numRounds must a integer >= 1";switch(c){case"HEX":l=L;break;case"B64":l=M;break;default:throw"format must be HEX or B64"}if("SHA-1"===a)for(p=0;p<b;p++)d=y(d,n),n=160;else if("SHA-224"===a)for(p=0;p<b;p++)d=v(d,n,a),n=224;else if("SHA-256"===a)for(p=0;p<b;p++)d=v(d,n,a),n=256;else if("SHA-384"===a)for(p=0;p<b;p++)d=v(d,n,a),n=384;else{if("SHA-512"!==a)throw"Chosen SHA variant is not supported";for(p=0;p<b;p++)d=v(d,n,a),n=512}return l(d,N(h))},this.getHMAC=function(a,b,c,l,s){var d,n,p,m,w=[],x=[];switch(d=null,l){case"HEX":l=L;break;case"B64":l=M;break;default:throw"outputFormat must be HEX or B64"}if("SHA-1"===c)n=64,m=160;else if("SHA-224"===c)n=64,m=224;else if("SHA-256"===c)n=64,m=256;else if("SHA-384"===c)n=128,m=384;else{if("SHA-512"!==c)throw"Chosen SHA variant is not supported";n=128,m=512}if("HEX"===b)d=B(a),p=d.binLen,d=d.value;else if("ASCII"===b||"TEXT"===b)d=J(a,h),p=d.binLen,d=d.value;else{if("B64"!==b)throw"inputFormat must be HEX, TEXT, ASCII, or B64";d=K(a),p=d.binLen,d=d.value}for(a=8*n,b=n/4-1,n<p/8?(d="SHA-1"===c?y(d,p):v(d,p,c),d[b]&=4294967040):n>p/8&&(d[b]&=4294967040),n=0;n<=b;n+=1)w[n]=909522486^d[n],x[n]=1549556828^d[n];return c="SHA-1"===c?y(x.concat(y(w.concat(f),a+g)),a+m):v(x.concat(v(w.concat(f),a+g,c)),a+m,c),l(c,N(s))}}function s(a,c){this.a=a,this.b=c}function J(a,c){var g,l,b=[],f=[],h=0;if("UTF8"===c)for(l=0;l<a.length;l+=1)for(g=a.charCodeAt(l),f=[],2048<g?(f[0]=224|(61440&g)>>>12,f[1]=128|(4032&g)>>>6,f[2]=128|63&g):128<g?(f[0]=192|(1984&g)>>>6,f[1]=128|63&g):f[0]=g,g=0;g<f.length;g+=1)b[h>>>2]|=f[g]<<24-h%4*8,h+=1;else if("UTF16"===c)for(l=0;l<a.length;l+=1)b[h>>>2]|=a.charCodeAt(l)<<16-h%4*8,h+=2;return{value:b,binLen:8*h}}function B(a){var g,f,c=[],b=a.length;if(0!==b%2)throw"String of HEX type must be in byte increments";for(g=0;g<b;g+=2){if(f=parseInt(a.substr(g,2),16),isNaN(f))throw"String of HEX type contains invalid characters";c[g>>>3]|=f<<24-g%8*4}return{value:c,binLen:4*b}}function K(a){var g,f,h,l,r,c=[],b=0;if(-1===a.search(/^[a-zA-Z0-9=+\/]+$/))throw"Invalid character in base-64 string";if(g=a.indexOf("="),a=a.replace(/\=/g,""),-1!==g&&g<a.length)throw"Invalid '=' found in base-64 string";for(f=0;f<a.length;f+=4){for(r=a.substr(f,4),h=l=0;h<r.length;h+=1)g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(r[h]),l|=g<<18-6*h;for(h=0;h<r.length-1;h+=1)c[b>>2]|=(l>>>16-8*h&255)<<24-b%4*8,b+=1}return{value:c,binLen:8*b}}function L(a,c){var f,h,b="",g=4*a.length;for(f=0;f<g;f+=1)h=a[f>>>2]>>>8*(3-f%4),b+="0123456789abcdef".charAt(h>>>4&15)+"0123456789abcdef".charAt(15&h);return c.outputUpper?b.toUpperCase():b}function M(a,c){var f,h,l,b="",g=4*a.length;for(f=0;f<g;f+=3)for(l=(a[f>>>2]>>>8*(3-f%4)&255)<<16|(a[f+1>>>2]>>>8*(3-(f+1)%4)&255)<<8|a[f+2>>>2]>>>8*(3-(f+2)%4)&255,h=0;4>h;h+=1)b=8*f+6*h<=32*a.length?b+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l>>>6*(3-h)&63):b+c.b64Pad;return b}function N(a){var c={outputUpper:!1,b64Pad:"="};try{a.hasOwnProperty("outputUpper")&&(c.outputUpper=a.outputUpper),a.hasOwnProperty("b64Pad")&&(c.b64Pad=a.b64Pad)}catch(b){}if("boolean"!=typeof c.outputUpper)throw"Invalid outputUpper formatting option";if("string"!=typeof c.b64Pad)throw"Invalid b64Pad formatting option";return c}function U(a,c){return a<<c|a>>>32-c}function u(a,c){return a>>>c|a<<32-c}function t(a,c){var b=null,b=new s(a.a,a.b);return b=32>=c?new s(b.a>>>c|b.b<<32-c&4294967295,b.b>>>c|b.a<<32-c&4294967295):new s(b.b>>>c-32|b.a<<64-c&4294967295,b.a>>>c-32|b.b<<64-c&4294967295)}function O(a,c){var b=null;return b=32>=c?new s(a.a>>>c,a.b>>>c|a.a<<32-c&4294967295):new s(0,a.a>>>c-32)}function V(a,c,b){return a^c^b}function P(a,c,b){return a&c^~a&b}function W(a,c,b){return new s(a.a&c.a^~a.a&b.a,a.b&c.b^~a.b&b.b)}function Q(a,c,b){return a&c^a&b^c&b}function X(a,c,b){return new s(a.a&c.a^a.a&b.a^c.a&b.a,a.b&c.b^a.b&b.b^c.b&b.b)}function Y(a){return u(a,2)^u(a,13)^u(a,22)}function Z(a){var c=t(a,28),b=t(a,34);return a=t(a,39),new s(c.a^b.a^a.a,c.b^b.b^a.b)}function $(a){return u(a,6)^u(a,11)^u(a,25)}function aa(a){var c=t(a,14),b=t(a,18);return a=t(a,41),new s(c.a^b.a^a.a,c.b^b.b^a.b)}function ba(a){return u(a,7)^u(a,18)^a>>>3}function ca(a){var c=t(a,1),b=t(a,8);return a=O(a,7),new s(c.a^b.a^a.a,c.b^b.b^a.b)}function da(a){return u(a,17)^u(a,19)^a>>>10}function ea(a){var c=t(a,19),b=t(a,61);return a=O(a,6),new s(c.a^b.a^a.a,c.b^b.b^a.b)}function R(a,c){var b=(65535&a)+(65535&c);return((a>>>16)+(c>>>16)+(b>>>16)&65535)<<16|65535&b}function fa(a,c,b,g){var f=(65535&a)+(65535&c)+(65535&b)+(65535&g);return((a>>>16)+(c>>>16)+(b>>>16)+(g>>>16)+(f>>>16)&65535)<<16|65535&f}function S(a,c,b,g,f){var h=(65535&a)+(65535&c)+(65535&b)+(65535&g)+(65535&f);return((a>>>16)+(c>>>16)+(b>>>16)+(g>>>16)+(f>>>16)+(h>>>16)&65535)<<16|65535&h}function ga(a,c){var b,g,f;return b=(65535&a.b)+(65535&c.b),g=(a.b>>>16)+(c.b>>>16)+(b>>>16),f=(65535&g)<<16|65535&b,b=(65535&a.a)+(65535&c.a)+(g>>>16),g=(a.a>>>16)+(c.a>>>16)+(b>>>16),new s((65535&g)<<16|65535&b,f)}function ha(a,c,b,g){var f,h,l;return f=(65535&a.b)+(65535&c.b)+(65535&b.b)+(65535&g.b),h=(a.b>>>16)+(c.b>>>16)+(b.b>>>16)+(g.b>>>16)+(f>>>16),l=(65535&h)<<16|65535&f,f=(65535&a.a)+(65535&c.a)+(65535&b.a)+(65535&g.a)+(h>>>16),h=(a.a>>>16)+(c.a>>>16)+(b.a>>>16)+(g.a>>>16)+(f>>>16),new s((65535&h)<<16|65535&f,l)}function ia(a,c,b,g,f){var h,l,r;return h=(65535&a.b)+(65535&c.b)+(65535&b.b)+(65535&g.b)+(65535&f.b),l=(a.b>>>16)+(c.b>>>16)+(b.b>>>16)+(g.b>>>16)+(f.b>>>16)+(h>>>16),r=(65535&l)<<16|65535&h,h=(65535&a.a)+(65535&c.a)+(65535&b.a)+(65535&g.a)+(65535&f.a)+(l>>>16),l=(a.a>>>16)+(c.a>>>16)+(b.a>>>16)+(g.a>>>16)+(f.a>>>16)+(h>>>16),new s((65535&l)<<16|65535&h,r)}function y(a,c){var g,f,h,l,r,s,p,m,x,b=[],u=P,t=V,v=Q,d=U,n=R,w=S,q=[1732584193,4023233417,2562383102,271733878,3285377520];for(a[c>>>5]|=128<<24-c%32,a[(c+65>>>9<<4)+15]=c,x=a.length,p=0;p<x;p+=16){for(g=q[0],f=q[1],h=q[2],l=q[3],r=q[4],m=0;80>m;m+=1)b[m]=16>m?a[m+p]:d(b[m-3]^b[m-8]^b[m-14]^b[m-16],1),s=20>m?w(d(g,5),u(f,h,l),r,1518500249,b[m]):40>m?w(d(g,5),t(f,h,l),r,1859775393,b[m]):60>m?w(d(g,5),v(f,h,l),r,2400959708,b[m]):w(d(g,5),t(f,h,l),r,3395469782,b[m]),r=l,l=h,h=d(f,30),f=g,g=s;q[0]=n(g,q[0]),q[1]=n(f,q[1]),q[2]=n(h,q[2]),q[3]=n(l,q[3]),q[4]=n(r,q[4])}return q}function v(a,c,b){var g,f,h,l,r,t,u,v,z,d,n,p,m,w,x,q,y,C,D,E,F,G,H,I,e,B,A=[],k=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];if(d=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428],f=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],"SHA-224"===b||"SHA-256"===b)n=64,g=(c+65>>>9<<4)+15,w=16,x=1,e=Number,q=R,y=fa,C=S,D=ba,E=da,F=Y,G=$,I=Q,H=P,d="SHA-224"===b?d:f;else{if("SHA-384"!==b&&"SHA-512"!==b)throw"Unexpected error in SHA-2 implementation";n=80,g=(c+128>>>10<<5)+31,w=32,x=2,e=s,q=ga,y=ha,C=ia,D=ca,E=ea,F=Z,G=aa,I=X,H=W,k=[new e(k[0],3609767458),new e(k[1],602891725),new e(k[2],3964484399),new e(k[3],2173295548),new e(k[4],4081628472),new e(k[5],3053834265),new e(k[6],2937671579),new e(k[7],3664609560),new e(k[8],2734883394),new e(k[9],1164996542),new e(k[10],1323610764),new e(k[11],3590304994),new e(k[12],4068182383),new e(k[13],991336113),new e(k[14],633803317),new e(k[15],3479774868),new e(k[16],2666613458),new e(k[17],944711139),new e(k[18],2341262773),new e(k[19],2007800933),new e(k[20],1495990901),new e(k[21],1856431235),new e(k[22],3175218132),new e(k[23],2198950837),new e(k[24],3999719339),new e(k[25],766784016),new e(k[26],2566594879),new e(k[27],3203337956),new e(k[28],1034457026),new e(k[29],2466948901),new e(k[30],3758326383),new e(k[31],168717936),new e(k[32],1188179964),new e(k[33],1546045734),new e(k[34],1522805485),new e(k[35],2643833823),new e(k[36],2343527390),new e(k[37],1014477480),new e(k[38],1206759142),new e(k[39],344077627),new e(k[40],1290863460),new e(k[41],3158454273),new e(k[42],3505952657),new e(k[43],106217008),new e(k[44],3606008344),new e(k[45],1432725776),new e(k[46],1467031594),new e(k[47],851169720),new e(k[48],3100823752),new e(k[49],1363258195),new e(k[50],3750685593),new e(k[51],3785050280),new e(k[52],3318307427),new e(k[53],3812723403),new e(k[54],2003034995),new e(k[55],3602036899),new e(k[56],1575990012),new e(k[57],1125592928),new e(k[58],2716904306),new e(k[59],442776044),new e(k[60],593698344),new e(k[61],3733110249),new e(k[62],2999351573),new e(k[63],3815920427),new e(3391569614,3928383900),new e(3515267271,566280711),new e(3940187606,3454069534),new e(4118630271,4000239992),new e(116418474,1914138554),new e(174292421,2731055270),new e(289380356,3203993006),new e(460393269,320620315),new e(685471733,587496836),new e(852142971,1086792851),new e(1017036298,365543100),new e(1126000580,2618297676),new e(1288033470,3409855158),new e(1501505948,4234509866),new e(1607167915,987167468),new e(1816402316,1246189591)],d="SHA-384"===b?[new e(3418070365,d[0]),new e(1654270250,d[1]),new e(2438529370,d[2]),new e(355462360,d[3]),new e(1731405415,d[4]),new e(41048885895,d[5]),new e(3675008525,d[6]),new e(1203062813,d[7])]:[new e(f[0],4089235720),new e(f[1],2227873595),new e(f[2],4271175723),new e(f[3],1595750129),new e(f[4],2917565137),new e(f[5],725511199),new e(f[6],4215389547),new e(f[7],327033209)]}for(a[c>>>5]|=128<<24-c%32,a[g]=c,B=a.length,p=0;p<B;p+=w){for(c=d[0],g=d[1],f=d[2],h=d[3],l=d[4],r=d[5],t=d[6],u=d[7],m=0;m<n;m+=1)A[m]=16>m?new e(a[m*x+p],a[m*x+p+1]):y(E(A[m-2]),A[m-7],D(A[m-15]),A[m-16]),v=C(u,G(l),H(l,r,t),k[m],A[m]),z=q(F(c),I(c,g,f)),u=t,t=r,r=l,l=q(h,v),h=f,f=g,g=c,c=q(v,z);d[0]=q(c,d[0]),d[1]=q(g,d[1]),d[2]=q(f,d[2]),d[3]=q(h,d[3]),d[4]=q(l,d[4]),d[5]=q(r,d[5]),d[6]=q(t,d[6]),d[7]=q(u,d[7])}if("SHA-224"===b)a=[d[0],d[1],d[2],d[3],d[4],d[5],d[6]];else if("SHA-256"===b)a=d;else if("SHA-384"===b)a=[d[0].a,d[0].b,d[1].a,d[1].b,d[2].a,d[2].b,d[3].a,d[3].b,d[4].a,d[4].b,d[5].a,d[5].b];else{if("SHA-512"!==b)throw"Unexpected error in SHA-2 implementation";a=[d[0].a,d[0].b,d[1].a,d[1].b,d[2].a,d[2].b,d[3].a,d[3].b,d[4].a,d[4].b,d[5].a,d[5].b,d[6].a,d[6].b,d[7].a,d[7].b]}return a}"function"!=typeof define||(define.amd,0)?"undefined"!=typeof exports?"undefined"!=typeof module&&module.exports?module.exports=exports=z:exports=z:T.jsSHA=z:define(function(){return z})}(this),_aa={},_aa._ab=function(f,e){for(var d=qrcode.width,b=qrcode.height,c=!0,g=0;g<e.Length&&c;g+=2){var a=Math.floor(e[g]),h=Math.floor(e[g+1]);if(a<-1||a>d||h<-1||h>b)throw"Error._ab ";c=!1,a==-1?(e[g]=0,c=!0):a==d&&(e[g]=d-1,c=!0),h==-1?(e[g+1]=0,c=!0):h==b&&(e[g+1]=b-1,c=!0)}c=!0;for(var g=e.Length-2;g>=0&&c;g-=2){var a=Math.floor(e[g]),h=Math.floor(e[g+1]);if(a<-1||a>d||h<-1||h>b)throw"Error._ab ";c=!1,a==-1?(e[g]=0,c=!0):a==d&&(e[g]=d-1,c=!0),h==-1?(e[g+1]=0,c=!0):h==b&&(e[g+1]=b-1,c=!0)}},_aa._af=function(b,d,a){for(var l=new _ac(d),k=new Array(d<<1),g=0;g<d;g++){for(var h=k.length,j=g+.5,i=0;i<h;i+=2)k[i]=(i>>1)+.5,k[i+1]=j;a._ad(k),_aa._ab(b,k);try{for(var i=0;i<h;i+=2){var e=4*Math.floor(k[i])+Math.floor(k[i+1])*qrcode.width*4,f=b[Math.floor(k[i])+qrcode.width*Math.floor(k[i+1])];qrcode.imagedata.data[e]=f?255:0,qrcode.imagedata.data[e+1]=f?255:0,qrcode.imagedata.data[e+2]=0,qrcode.imagedata.data[e+3]=255,f&&l._dq(i>>1,g)}}catch(c){throw"Error._ab"}}return l},_aa._ah=function(h,o,l,k,r,q,b,a,f,e,n,m,t,s,d,c,j,i){var g=_ae._ag(l,k,r,q,b,a,f,e,n,m,t,s,d,c,j,i);return _aa._af(h,o,g)},_a3._bv=new Array(31892,34236,39577,42195,48118,51042,55367,58893,63784,68472,70749,76311,79154,84390,87683,92361,96236,102084,102881,110507,110734,117786,119615,126325,127568,133589,136944,141498,145311,150283,152622,158308,161089,167017),_a3.VERSIONS=_ay(),_a3._av=function(a){if(a<1||a>40)throw"bad arguments";return _a3.VERSIONS[a-1]},_a3._at=function(b){if(b%4!=1)throw"Error _at";try{return _a3._av(b-17>>2)}catch(a){throw"Error _av"}},_a3._aw=function(d){for(var b=4294967295,f=0,c=0;c<_a3._bv.length;c++){var a=_a3._bv[c];if(a==d)return this._av(c+7);var e=_ax._gj(d,a);e<b&&(f=c+7,b=e)}return b<=3?this._av(f):null},_ae._ag=function(q,e,o,d,n,c,m,b,h,r,l,f,a,j,i,s){var g=this._be(q,e,o,d,n,c,m,b),k=this._bf(h,r,l,f,a,j,i,s);return k.times(g)},_ae._bf=function(f,h,d,g,b,e,a,c){return dy2=c-e,dy3=h-g+e-c,0==dy2&&0==dy3?new _ae(d-f,b-d,f,g-h,e-g,h,0,0,1):(dx1=d-b,dx2=a-b,dx3=f-d+b-a,dy1=g-e,_dr=dx1*dy2-dx2*dy1,a13=(dx3*dy2-dx2*dy3)/_dr,a23=(dx1*dy3-dx3*dy1)/_dr,new _ae(d-f+a13*d,a-f+a23*a,f,g-h+a13*g,c-h+a23*c,h,a13,a23,1))},_ae._be=function(f,h,d,g,b,e,a,c){return this._bf(f,h,d,g,b,e,a,c)._fr()};var _ca=21522,_cb=new Array(new Array(21522,0),new Array(20773,1),new Array(24188,2),new Array(23371,3),new Array(17913,4),new Array(16590,5),new Array(20375,6),new Array(19104,7),new Array(30660,8),new Array(29427,9),new Array(32170,10),new Array(30877,11),new Array(26159,12),new Array(25368,13),new Array(27713,14),new Array(26998,15),new Array(5769,16),new Array(5054,17),new Array(7399,18),new Array(6608,19),new Array(1890,20),new Array(597,21),new Array(3340,22),new Array(2107,23),new Array(13663,24),new Array(12392,25),new Array(16177,26),new Array(14854,27),new Array(9396,28),new Array(8579,29),new Array(11994,30),new Array(11245,31)),_ch=new Array(0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4);_ax._gj=function(d,c){return d^=c,_ch[15&d]+_ch[15&_ew(d,4)]+_ch[15&_ew(d,8)]+_ch[15&_ew(d,12)]+_ch[15&_ew(d,16)]+_ch[15&_ew(d,20)]+_ch[15&_ew(d,24)]+_ch[15&_ew(d,28)]},_ax._ci=function(a){var b=_ax._cj(a);return null!=b?b:_ax._cj(a^_ca)},_ax._cj=function(d){for(var b=4294967295,a=0,c=0;c<_cb.length;c++){var g=_cb[c],f=g[0];if(f==d)return new _ax(g[1]);var e=this._gj(d,f);e<b&&(a=g[1],b=e)}return b<=3?new _ax(a):null},_cg.forBits=function(a){if(a<0||a>=FOR_BITS.Length)throw"bad arguments";return FOR_BITS[a]};var L=new _cg(0,1,"L"),M=new _cg(1,0,"M"),Q=new _cg(2,3,"Q"),H=new _cg(3,2,"H"),FOR_BITS=new Array(M,L,H,Q);_dl._gn=function(c,h,s){if(c.length!=h._dp)throw"bad arguments";for(var k=h._bu(s),e=0,d=k._fb(),r=0;r<d.length;r++)e+=d[r].Count;for(var l=new Array(e),n=0,o=0;o<d.length;o++)for(var f=d[o],r=0;r<f.Count;r++){var m=f._dm,t=k._bo+m;l[n++]=new _dl(m,new Array(t))}for(var u=l[0]._dw.length,b=l.length-1;b>=0;){var w=l[b]._dw.length;if(w==u)break;b--}b++;for(var g=u-k._bo,a=0,r=0;r<g;r++)for(var o=0;o<n;o++)l[o]._dw[r]=c[a++];for(var o=b;o<n;o++)l[o]._dw[g]=c[a++];for(var q=l[0]._dw.length,r=g;r<q;r++)for(var o=0;o<n;o++){var v=o<b?r:r+1;l[o]._dw[v]=c[a++]}return l},_dx={},_dx._gl=function(a){if(a<0||a>7)throw"bad arguments";return _dx._dy[a]},_dx._dy=new Array(new _fg,new _fh,new _fi,new _fj,new _fk,new _fl,new _fm,new _fn),_az._bb=new _az(285),_az._bc=new _az(301),_az._bd=function(d,c){return d^c},Decoder={},Decoder.rsDecoder=new _db(_az._bb),Decoder.correctErrors=function(g,b){for(var d=g.length,f=new Array(d),e=0;e<d;e++)f[e]=255&g[e];var a=g.length-b;try{Decoder.rsDecoder.decode(f,a)}catch(c){throw c}for(var e=0;e<b;e++)g[e]=f[e]},Decoder.decode=function(r){for(var b=new _cl(r),o=b._cq(),c=b._cm()._cg,q=b._gk(),a=_dl._gn(q,o,c),f=0,k=0;k<a.Length;k++)f+=a[k]._du;for(var e=new Array(f),n=0,h=0;h<a.length;h++){var m=a[h],d=m.Codewords,g=m._du;Decoder.correctErrors(d,g);for(var k=0;k<g;k++)e[n++]=d[k]}var l=new QRCodeDataBlockReader(e,o._fd,c.Bits);return l},qrcode={},qrcode.imagedata=null,qrcode.width=0,qrcode.height=0,qrcode.qrCodeSymbol=null,qrcode.debug=!1,qrcode._eo=[[10,9,8,8],[12,11,16,10],[14,13,16,12]],qrcode.callback=null,qrcode.decode=function(d){if(0==arguments.length){var b=document.getElementById("qr-canvas"),a=b.getContext("2d");return qrcode.width=b.width,qrcode.height=b.height,qrcode.imagedata=a.getImageData(0,0,qrcode.width,qrcode.height),qrcode.result=qrcode.process(a),null!=qrcode.callback&&qrcode.callback(qrcode.result),qrcode.result}var c=new Image;c.onload=function(){var i=document.createElement("canvas"),h=i.getContext("2d"),f=document.getElementById("out-canvas");if(null!=f){var g=f.getContext("2d");g.clearRect(0,0,320,240),g.drawImage(c,0,0,320,240)}i.width=c.width,i.height=c.height,h.drawImage(c,0,0),qrcode.width=c.width,qrcode.height=c.height;try{qrcode.imagedata=h.getImageData(0,0,c.width,c.height)}catch(j){return qrcode.result="Cross domain image reading not supported in your browser! Save it to your computer then drag and drop the file!",void(null!=qrcode.callback&&qrcode.callback(qrcode.result))}try{qrcode.result=qrcode.process(h)}catch(j){console.log(j),qrcode.result="error decoding QR Code"}null!=qrcode.callback&&qrcode.callback(qrcode.result)},c.src=d},qrcode.decode_utf8=function(a){return decodeURIComponent(escape(a))},qrcode.process=function(r){var c=((new Date).getTime(),qrcode.grayScaleToBitmap(qrcode.grayscale()));if(qrcode.debug){for(var m=0;m<qrcode.height;m++)for(var n=0;n<qrcode.width;n++){var o=4*n+m*qrcode.width*4;qrcode.imagedata.data[o]=(c[n+m*qrcode.width],0),qrcode.imagedata.data[o+1]=(c[n+m*qrcode.width],0),qrcode.imagedata.data[o+2]=c[n+m*qrcode.width]?255:0}r.putImageData(qrcode.imagedata,0,0)}var h=new Detector(c),q=h.detect();
-qrcode.debug&&r.putImageData(qrcode.imagedata,0,0);for(var k=Decoder.decode(q.bits),g=k.DataByte,l="",f=0;f<g.length;f++)for(var e=0;e<g[f].length;e++)l+=String.fromCharCode(g[f][e]);(new Date).getTime();return qrcode.decode_utf8(l)},qrcode.getPixel=function(a,b){if(qrcode.width<a)throw"point error";if(qrcode.height<b)throw"point error";return point=4*a+b*qrcode.width*4,p=(33*qrcode.imagedata.data[point]+34*qrcode.imagedata.data[point+1]+33*qrcode.imagedata.data[point+2])/100,p},qrcode.binarize=function(d){for(var c=new Array(qrcode.width*qrcode.height),e=0;e<qrcode.height;e++)for(var b=0;b<qrcode.width;b++){var a=qrcode.getPixel(b,e);c[b+e*qrcode.width]=a<=d}return c},qrcode._em=function(d){for(var c=4,k=Math.floor(qrcode.width/c),j=Math.floor(qrcode.height/c),f=new Array(c),g=0;g<c;g++){f[g]=new Array(c);for(var e=0;e<c;e++)f[g][e]=new Array(0,0)}for(var o=0;o<c;o++)for(var a=0;a<c;a++){f[a][o][0]=255;for(var l=0;l<j;l++)for(var n=0;n<k;n++){var h=d[k*a+n+(j*o+l)*qrcode.width];h<f[a][o][0]&&(f[a][o][0]=h),h>f[a][o][1]&&(f[a][o][1]=h)}}for(var m=new Array(c),b=0;b<c;b++)m[b]=new Array(c);for(var o=0;o<c;o++)for(var a=0;a<c;a++)m[a][o]=Math.floor((f[a][o][0]+f[a][o][1])/2);return m},qrcode.grayScaleToBitmap=function(f){for(var j=qrcode._em(f),b=j.length,e=Math.floor(qrcode.width/b),d=Math.floor(qrcode.height/b),c=new Array(qrcode.height*qrcode.width),i=0;i<b;i++)for(var a=0;a<b;a++)for(var g=0;g<d;g++)for(var h=0;h<e;h++)c[e*a+h+(d*i+g)*qrcode.width]=f[e*a+h+(d*i+g)*qrcode.width]<j[a][i];return c},qrcode.grayscale=function(){for(var c=new Array(qrcode.width*qrcode.height),d=0;d<qrcode.height;d++)for(var b=0;b<qrcode.width;b++){var a=qrcode.getPixel(b,d);c[b+d*qrcode.width]=a}return c},Array.prototype.remove=function(c,b){var a=this.slice((b||c)+1||this.length);return this.length=c<0?this.length+c:c,this.push.apply(this,a)};var _gf=3,_eh=57,_el=8,_eg=2;qrcode._er=function(c){function b(l,k){return xDiff=l.X-k.X,yDiff=l.Y-k.Y,Math.sqrt(xDiff*xDiff+yDiff*yDiff)}function d(k,o,n){var m=o.x,l=o.y;return(n.x-m)*(k.y-l)-(n.y-l)*(k.x-m)}var a,j,h,i=b(c[0],c[1]),f=b(c[1],c[2]),e=b(c[0],c[2]);if(f>=i&&f>=e?(j=c[0],a=c[1],h=c[2]):e>=f&&e>=i?(j=c[1],a=c[0],h=c[2]):(j=c[2],a=c[0],h=c[1]),d(a,j,h)<0){var g=a;a=h,h=g}c[0]=a,c[1]=j,c[2]=h},angular.module("ui.sortable",[]).value("uiSortableConfig",{items:"> [ng-repeat],> [data-ng-repeat],> [x-ng-repeat]"}).directive("uiSortable",["uiSortableConfig","$timeout","$log",function(uiSortableConfig,$timeout,$log){return{require:"?ngModel",scope:{ngModel:"=",uiSortable:"="},link:function(scope,element,attrs,ngModel){function combineCallbacks(first,second){var firstIsFunc="function"==typeof first,secondIsFunc="function"==typeof second;return firstIsFunc&&secondIsFunc?function(){first.apply(this,arguments),second.apply(this,arguments)}:secondIsFunc?second:first}function getSortableWidgetInstance(element){var data=element.data("ui-sortable");return data&&"object"==typeof data&&"ui-sortable"===data.widgetFullName?data:null}function patchSortableOption(key,value){return callbacks[key]?("stop"===key&&(value=combineCallbacks(value,function(){scope.$apply()}),value=combineCallbacks(value,afterStop)),value=combineCallbacks(callbacks[key],value)):wrappers[key]&&(value=wrappers[key](value)),value||"items"!==key&&"ui-model-items"!==key||(value=uiSortableConfig.items),value}function patchUISortableOptions(newVal,oldVal,sortableWidgetInstance){function addDummyOptionKey(value,key){key in opts||(opts[key]=null)}angular.forEach(callbacks,addDummyOptionKey);var optsDiff=null;if(oldVal){var defaultOptions;angular.forEach(oldVal,function(oldValue,key){if(!(newVal&&key in newVal)){if(key in directiveOpts)return void("ui-floating"===key?opts[key]="auto":opts[key]=patchSortableOption(key,void 0));defaultOptions||(defaultOptions=angular.element.ui.sortable().options);var defaultValue=defaultOptions[key];defaultValue=patchSortableOption(key,defaultValue),optsDiff||(optsDiff={}),optsDiff[key]=defaultValue,opts[key]=defaultValue}})}return angular.forEach(newVal,function(value,key){return key in directiveOpts?("ui-floating"!==key||value!==!1&&value!==!0||!sortableWidgetInstance||(sortableWidgetInstance.floating=value),void(opts[key]=patchSortableOption(key,value))):(value=patchSortableOption(key,value),optsDiff||(optsDiff={}),optsDiff[key]=value,void(opts[key]=value))}),optsDiff}function getPlaceholderElement(element){var placeholder=element.sortable("option","placeholder");if(placeholder&&placeholder.element&&"function"==typeof placeholder.element){var result=placeholder.element();return result=angular.element(result)}return null}function getPlaceholderExcludesludes(element,placeholder){var notCssSelector=opts["ui-model-items"].replace(/[^,]*>/g,""),excludes=element.find('[class="'+placeholder.attr("class")+'"]:not('+notCssSelector+")");return excludes}function hasSortingHelper(element,ui){var helperOption=element.sortable("option","helper");return"clone"===helperOption||"function"==typeof helperOption&&ui.item.sortable.isCustomHelperUsed()}function getSortingHelper(element,ui,savedNodes){var result=null;return hasSortingHelper(element,ui)&&"parent"===element.sortable("option","appendTo")&&(result=savedNodes.last()),result}function isFloating(item){return/left|right/.test(item.css("float"))||/inline|table-cell/.test(item.css("display"))}function getElementScope(elementScopes,element){for(var result=null,i=0;i<elementScopes.length;i++){var x=elementScopes[i];if(x.element[0]===element[0]){result=x.scope;break}}return result}function afterStop(e,ui){ui.item.sortable._destroy()}function getItemIndex(item){return item.parent().find(opts["ui-model-items"]).index(item)}function wireUp(){scope.$watchCollection("ngModel",function(){$timeout(function(){getSortableWidgetInstance(element)&&element.sortable("refresh")},0,!1)}),callbacks.start=function(e,ui){if("auto"===opts["ui-floating"]){var siblings=ui.item.siblings(),sortableWidgetInstance=getSortableWidgetInstance(angular.element(e.target));sortableWidgetInstance.floating=isFloating(siblings)}var index=getItemIndex(ui.item);ui.item.sortable={model:ngModel.$modelValue[index],index:index,source:ui.item.parent(),sourceModel:ngModel.$modelValue,cancel:function(){ui.item.sortable._isCanceled=!0},isCanceled:function(){return ui.item.sortable._isCanceled},isCustomHelperUsed:function(){return!!ui.item.sortable._isCustomHelperUsed},_isCanceled:!1,_isCustomHelperUsed:ui.item.sortable._isCustomHelperUsed,_destroy:function(){angular.forEach(ui.item.sortable,function(value,key){ui.item.sortable[key]=void 0})}}},callbacks.activate=function(e,ui){savedNodes=element.contents();var placeholder=getPlaceholderElement(element);if(placeholder&&placeholder.length){var excludes=getPlaceholderExcludesludes(element,placeholder);savedNodes=savedNodes.not(excludes)}var connectedSortables=ui.item.sortable._connectedSortables||[];connectedSortables.push({element:element,scope:scope}),ui.item.sortable._connectedSortables=connectedSortables},callbacks.update=function(e,ui){if(!ui.item.sortable.received){ui.item.sortable.dropindex=getItemIndex(ui.item);var droptarget=ui.item.parent();ui.item.sortable.droptarget=droptarget;var droptargetScope=getElementScope(ui.item.sortable._connectedSortables,droptarget);ui.item.sortable.droptargetModel=droptargetScope.ngModel,element.sortable("cancel")}var sortingHelper=!ui.item.sortable.received&&getSortingHelper(element,ui,savedNodes);sortingHelper&&sortingHelper.length&&(savedNodes=savedNodes.not(sortingHelper)),savedNodes.appendTo(element),ui.item.sortable.received&&(savedNodes=null),ui.item.sortable.received&&!ui.item.sortable.isCanceled()&&scope.$apply(function(){ngModel.$modelValue.splice(ui.item.sortable.dropindex,0,ui.item.sortable.moved)})},callbacks.stop=function(e,ui){if(!ui.item.sortable.received&&"dropindex"in ui.item.sortable&&!ui.item.sortable.isCanceled())scope.$apply(function(){ngModel.$modelValue.splice(ui.item.sortable.dropindex,0,ngModel.$modelValue.splice(ui.item.sortable.index,1)[0])});else if((!("dropindex"in ui.item.sortable)||ui.item.sortable.isCanceled())&&!angular.equals(element.contents(),savedNodes)){var sortingHelper=getSortingHelper(element,ui,savedNodes);sortingHelper&&sortingHelper.length&&(savedNodes=savedNodes.not(sortingHelper)),savedNodes.appendTo(element)}savedNodes=null},callbacks.receive=function(e,ui){ui.item.sortable.received=!0},callbacks.remove=function(e,ui){"dropindex"in ui.item.sortable||(element.sortable("cancel"),ui.item.sortable.cancel()),ui.item.sortable.isCanceled()||scope.$apply(function(){ui.item.sortable.moved=ngModel.$modelValue.splice(ui.item.sortable.index,1)[0]})},wrappers.helper=function(inner){return inner&&"function"==typeof inner?function(e,item){var oldItemSortable=item.sortable,index=getItemIndex(item);item.sortable={model:ngModel.$modelValue[index],index:index,source:item.parent(),sourceModel:ngModel.$modelValue,_restore:function(){angular.forEach(item.sortable,function(value,key){item.sortable[key]=void 0}),item.sortable=oldItemSortable}};var innerResult=inner.apply(this,arguments);return item.sortable._restore(),item.sortable._isCustomHelperUsed=item!==innerResult,innerResult}:inner},scope.$watchCollection("uiSortable",function(newVal,oldVal){var sortableWidgetInstance=getSortableWidgetInstance(element);if(sortableWidgetInstance){var optsDiff=patchUISortableOptions(newVal,oldVal,sortableWidgetInstance);optsDiff&&element.sortable("option",optsDiff)}},!0),patchUISortableOptions(opts)}function init(){ngModel?wireUp():$log.info("ui.sortable: ngModel not provided!",element),element.sortable(opts)}function initIfEnabled(){return(!scope.uiSortable||!scope.uiSortable.disabled)&&(init(),initIfEnabled.cancelWatcher(),initIfEnabled.cancelWatcher=angular.noop,!0)}var savedNodes,opts={},directiveOpts={"ui-floating":void 0,"ui-model-items":uiSortableConfig.items},callbacks={receive:null,remove:null,start:null,stop:null,update:null},wrappers={helper:null};return angular.extend(opts,directiveOpts,uiSortableConfig,scope.uiSortable),angular.element.fn&&angular.element.fn.jquery?(initIfEnabled.cancelWatcher=angular.noop,void(initIfEnabled()||(initIfEnabled.cancelWatcher=scope.$watch("uiSortable.disabled",initIfEnabled)))):void $log.error("ui.sortable: jQuery should be included before AngularJS!")}}}]),!function(e){function t(t,r){if(r=r||{},r.worker&&S.WORKERS_SUPPORTED){var n=f();return n.userStep=r.step,n.userChunk=r.chunk,n.userComplete=r.complete,n.userError=r.error,r.step=m(r.step),r.chunk=m(r.chunk),r.complete=m(r.complete),r.error=m(r.error),delete r.worker,void n.postMessage({input:t,config:r,workerId:n.id})}var o=null;return"string"==typeof t?o=r.download?new i(r):new a(r):(e.File&&t instanceof File||t instanceof Object)&&(o=new s(r)),o.stream(t)}function r(e,t){function r(){"object"==typeof t&&("string"==typeof t.delimiter&&1==t.delimiter.length&&-1==S.BAD_DELIMITERS.indexOf(t.delimiter)&&(u=t.delimiter),("boolean"==typeof t.quotes||t.quotes instanceof Array)&&(o=t.quotes),"string"==typeof t.newline&&(h=t.newline))}function n(e){if("object"!=typeof e)return[];var t=[];for(var r in e)t.push(r);return t}function i(e,t){var r="";"string"==typeof e&&(e=JSON.parse(e)),"string"==typeof t&&(t=JSON.parse(t));var n=e instanceof Array&&e.length>0,i=!(t[0]instanceof Array);if(n){for(var a=0;a<e.length;a++)a>0&&(r+=u),r+=s(e[a],a);t.length>0&&(r+=h)}for(var o=0;o<t.length;o++){for(var f=n?e.length:t[o].length,c=0;f>c;c++){c>0&&(r+=u);var d=n&&i?e[c]:c;r+=s(t[o][d],c)}o<t.length-1&&(r+=h)}return r}function s(e,t){if("undefined"==typeof e||null===e)return"";e=e.toString().replace(/"/g,'""');var r="boolean"==typeof o&&o||o instanceof Array&&o[t]||a(e,S.BAD_DELIMITERS)||e.indexOf(u)>-1||" "==e.charAt(0)||" "==e.charAt(e.length-1);return r?'"'+e+'"':e}function a(e,t){for(var r=0;r<t.length;r++)if(e.indexOf(t[r])>-1)return!0;return!1}var o=!1,u=",",h="\r\n";if(r(),"string"==typeof e&&(e=JSON.parse(e)),e instanceof Array){if(!e.length||e[0]instanceof Array)return i(null,e);if("object"==typeof e[0])return i(n(e[0]),e)}else if("object"==typeof e)return"string"==typeof e.data&&(e.data=JSON.parse(e.data)),e.data instanceof Array&&(e.fields||(e.fields=e.data[0]instanceof Array?e.fields:n(e.data[0])),e.data[0]instanceof Array||"object"==typeof e.data[0]||(e.data=[e.data])),i(e.fields||[],e.data||[]);throw"exception: Unable to serialize unrecognized input"}function n(t){function r(e){var t=_(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null),this._handle=new o(t),this._handle.streamer=this,this._config=t}this._handle=null,this._paused=!1,this._finished=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},r.call(this,t),this.parseChunk=function(t){if(this.isFirstChunk&&m(this._config.beforeFirstChunk)){var r=this._config.beforeFirstChunk(t);void 0!==r&&(t=r)}this.isFirstChunk=!1;var n=this._partialLine+t;this._partialLine="";var i=this._handle.parse(n,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var s=i.meta.cursor;this._finished||(this._partialLine=n.substring(s-this._baseIndex),this._baseIndex=s),i&&i.data&&(this._rowCount+=i.data.length);var a=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(y)e.postMessage({results:i,workerId:S.WORKER_ID,finished:a});else if(m(this._config.chunk)){if(this._config.chunk(i,this._handle),this._paused)return;i=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(i.data),this._completeResults.errors=this._completeResults.errors.concat(i.errors),this._completeResults.meta=i.meta),!a||!m(this._config.complete)||i&&i.meta.aborted||this._config.complete(this._completeResults),a||i&&i.meta.paused||this._nextChunk(),i}},this._sendError=function(t){m(this._config.error)?this._config.error(t):y&&this._config.error&&e.postMessage({workerId:S.WORKER_ID,error:t,finished:!1})}}function i(e){function t(e){var t=e.getResponseHeader("Content-Range");return parseInt(t.substr(t.lastIndexOf("/")+1))}e=e||{},e.chunkSize||(e.chunkSize=S.RemoteChunkSize),n.call(this,e);var r;this._nextChunk=k?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)return void this._chunkLoaded();if(r=new XMLHttpRequest,k||(r.onload=g(this._chunkLoaded,this),r.onerror=g(this._chunkError,this)),r.open("GET",this._input,!k),this._config.chunkSize){var e=this._start+this._config.chunkSize-1;r.setRequestHeader("Range","bytes="+this._start+"-"+e),r.setRequestHeader("If-None-Match","webkit-no-cache")}try{r.send()}catch(t){this._chunkError(t.message)}k&&0==r.status?this._chunkError():this._start+=this._config.chunkSize},this._chunkLoaded=function(){if(4==r.readyState){if(r.status<200||r.status>=400)return void this._chunkError();this._finished=!this._config.chunkSize||this._start>t(r),this.parseChunk(r.responseText)}},this._chunkError=function(e){var t=r.statusText||e;this._sendError(t)}}function s(e){e=e||{},e.chunkSize||(e.chunkSize=S.LocalChunkSize),n.call(this,e);var t,r,i="undefined"!=typeof FileReader;this.stream=function(e){this._input=e,r=e.slice||e.webkitSlice||e.mozSlice,i?(t=new FileReader,t.onload=g(this._chunkLoaded,this),t.onerror=g(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var n=Math.min(this._start+this._config.chunkSize,this._input.size);e=r.call(e,this._start,n)}var s=t.readAsText(e,this._config.encoding);i||this._chunkLoaded({target:{result:s}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function a(e){e=e||{},n.call(this,e);var t,r;this.stream=function(e){return t=e,r=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e=this._config.chunkSize,t=e?r.substr(0,e):r;return r=e?r.substr(e):"",this._finished=!r,this.parseChunk(t)}}}function o(e){function t(){if(b&&d&&(h("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+S.DefaultDelimiter+"'"),d=!1),e.skipEmptyLines)for(var t=0;t<b.data.length;t++)1==b.data[t].length&&""==b.data[t][0]&&b.data.splice(t--,1);return r()&&n(),i()}function r(){return e.header&&0==y.length}function n(){if(b){for(var e=0;r()&&e<b.data.length;e++)for(var t=0;t<b.data[e].length;t++)y.push(b.data[e][t]);b.data.splice(0,1)}}function i(){if(!b||!e.header&&!e.dynamicTyping)return b;for(var t=0;t<b.data.length;t++){for(var r={},n=0;n<b.data[t].length;n++){if(e.dynamicTyping){var i=b.data[t][n];b.data[t][n]="true"==i||"TRUE"==i||"false"!=i&&"FALSE"!=i&&o(i)}e.header&&(n>=y.length?(r.__parsed_extra||(r.__parsed_extra=[]),r.__parsed_extra.push(b.data[t][n])):r[y[n]]=b.data[t][n])}e.header&&(b.data[t]=r,n>y.length?h("FieldMismatch","TooManyFields","Too many fields: expected "+y.length+" fields but parsed "+n,t):n<y.length&&h("FieldMismatch","TooFewFields","Too few fields: expected "+y.length+" fields but parsed "+n,t))}return e.header&&b.meta&&(b.meta.fields=y),b}function s(t){for(var r,n,i,s=[",","\t","|",";",S.RECORD_SEP,S.UNIT_SEP],a=0;a<s.length;a++){var o=s[a],h=0,f=0;i=void 0;for(var c=new u({delimiter:o,preview:10}).parse(t),d=0;d<c.data.length;d++){var l=c.data[d].length;f+=l,"undefined"!=typeof i?l>1&&(h+=Math.abs(l-i),i=l):i=l}c.data.length>0&&(f/=c.data.length),("undefined"==typeof n||n>h)&&f>1.99&&(n=h,r=o)}return e.delimiter=r,{successful:!!r,bestDelimiter:r}}function a(e){e=e.substr(0,1048576);var t=e.split("\r");if(1==t.length)return"\n";for(var r=0,n=0;n<t.length;n++)"\n"==t[n][0]&&r++;return r>=t.length/2?"\r\n":"\r"}function o(e){var t=l.test(e);return t?parseFloat(e):e}function h(e,t,r,n){b.errors.push({type:e,code:t,message:r,row:n})}var f,c,d,l=/^\s*-?(\d*\.?\d+|\d+\.?\d*)(e[-+]?\d+)?\s*$/i,p=this,g=0,v=!1,k=!1,y=[],b={data:[],errors:[],meta:{}};if(m(e.step)){var R=e.step;e.step=function(n){if(b=n,r())t();else{if(t(),0==b.data.length)return;g+=n.data.length,e.preview&&g>e.preview?c.abort():R(b,p)}}}this.parse=function(r,n,i){if(e.newline||(e.newline=a(r)),d=!1,!e.delimiter){var o=s(r);o.successful?e.delimiter=o.bestDelimiter:(d=!0,e.delimiter=S.DefaultDelimiter),b.meta.delimiter=e.delimiter}var h=_(e);return e.preview&&e.header&&h.preview++,f=r,c=new u(h),b=c.parse(f,n,i),t(),v?{meta:{paused:!0}}:b||{meta:{paused:!1}}},this.paused=function(){return v},this.pause=function(){v=!0,c.abort(),f=f.substr(c.getCharIndex())},this.resume=function(){v=!1,p.streamer.parseChunk(f)},this.aborted=function(){return k},this.abort=function(){k=!0,c.abort(),b.meta.aborted=!0,m(e.complete)&&e.complete(b),f=""}}function u(e){e=e||{};var t=e.delimiter,r=e.newline,n=e.comments,i=e.step,s=e.preview,a=e.fastMode;if(("string"!=typeof t||S.BAD_DELIMITERS.indexOf(t)>-1)&&(t=","),n===t)throw"Comment character same as delimiter";n===!0?n="#":("string"!=typeof n||S.BAD_DELIMITERS.indexOf(n)>-1)&&(n=!1),"\n"!=r&&"\r"!=r&&"\r\n"!=r&&(r="\n");var o=0,u=!1;this.parse=function(e,h,f){function c(e){b.push(e),S=o}function d(t){return f?p():("undefined"==typeof t&&(t=e.substr(o)),w.push(t),o=g,c(w),y&&_(),p())}function l(t){o=t,c(w),w=[],O=e.indexOf(r,o)}function p(e){return{data:b,errors:R,meta:{delimiter:t,linebreak:r,aborted:u,truncated:!!e,cursor:S+(h||0)}}}function _(){i(p()),b=[],R=[]}if("string"!=typeof e)throw"Input must be a string";var g=e.length,m=t.length,v=r.length,k=n.length,y="function"==typeof i;o=0;var b=[],R=[],w=[],S=0;if(!e)return p();if(a||a!==!1&&-1===e.indexOf('"')){for(var C=e.split(r),E=0;E<C.length;E++){var w=C[E];if(o+=w.length,E!==C.length-1)o+=r.length;else if(f)return p();if(!n||w.substr(0,k)!=n){if(y){if(b=[],c(w.split(t)),_(),u)return p()}else c(w.split(t));if(s&&E>=s)return b=b.slice(0,s),p(!0)}}return p()}for(var x=e.indexOf(t,o),O=e.indexOf(r,o);;)if('"'!=e[o])if(n&&0===w.length&&e.substr(o,k)===n){if(-1==O)return p();o=O+v,O=e.indexOf(r,o),x=e.indexOf(t,o)}else if(-1!==x&&(O>x||-1===O))w.push(e.substring(o,x)),o=x+m,x=e.indexOf(t,o);else{if(-1===O)break;if(w.push(e.substring(o,O)),l(O+v),y&&(_(),u))return p();if(s&&b.length>=s)return p(!0)}else{var I=o;for(o++;;){var I=e.indexOf('"',I+1);if(-1===I)return f||R.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:b.length,index:o}),d();if(I===g-1){var D=e.substring(o,I).replace(/""/g,'"');return d(D)}if('"'!=e[I+1]){if(e[I+1]==t){w.push(e.substring(o,I).replace(/""/g,'"')),o=I+1+m,x=e.indexOf(t,o),O=e.indexOf(r,o);break}if(e.substr(I+1,v)===r){if(w.push(e.substring(o,I).replace(/""/g,'"')),l(I+1+v),x=e.indexOf(t,o),y&&(_(),u))return p();if(s&&b.length>=s)return p(!0);break}}else I++}}return d()},this.abort=function(){u=!0},this.getCharIndex=function(){return o}}function h(){var e=document.getElementsByTagName("script");return e.length?e[e.length-1].src:""}function f(){if(!S.WORKERS_SUPPORTED)return!1;if(!b&&null===S.SCRIPT_PATH)throw new Error("Script path cannot be determined automatically when Papa Parse is loaded asynchronously. You need to set Papa.SCRIPT_PATH manually.");var t=S.SCRIPT_PATH||v;t+=(-1!==t.indexOf("?")?"&":"?")+"papaworker";var r=new e.Worker(t);return r.onmessage=c,r.id=w++,R[r.id]=r,r}function c(e){var t=e.data,r=R[t.workerId],n=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var i=function(){n=!0,d(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},s={abort:i,pause:l,resume:l};if(m(r.userStep)){for(var a=0;a<t.results.data.length&&(r.userStep({data:[t.results.data[a]],errors:t.results.errors,meta:t.results.meta},s),!n);a++);delete t.results}else m(r.userChunk)&&(r.userChunk(t.results,s,t.file),delete t.results)}t.finished&&!n&&d(t.workerId,t.results)}function d(e,t){var r=R[e];m(r.userComplete)&&r.userComplete(t),r.terminate(),delete R[e]}function l(){throw"Not implemented."}function p(t){var r=t.data;if("undefined"==typeof S.WORKER_ID&&r&&(S.WORKER_ID=r.workerId),"string"==typeof r.input)e.postMessage({workerId:S.WORKER_ID,results:S.parse(r.input,r.config),finished:!0});else if(e.File&&r.input instanceof File||r.input instanceof Object){var n=S.parse(r.input,r.config);n&&e.postMessage({workerId:S.WORKER_ID,results:n,finished:!0})}}function _(e){if("object"!=typeof e)return e;var t=e instanceof Array?[]:{};for(var r in e)t[r]=_(e[r]);return t}function g(e,t){return function(){e.apply(t,arguments)}}function m(e){return"function"==typeof e}var v,k=!e.document&&!!e.postMessage,y=k&&/(\?|&)papaworker(=|&|$)/.test(e.location.search),b=!1,R={},w=0,S={};if(S.parse=t,S.unparse=r,S.RECORD_SEP=String.fromCharCode(30),S.UNIT_SEP=String.fromCharCode(31),S.BYTE_ORDER_MARK="\ufeff",S.BAD_DELIMITERS=["\r","\n",'"',S.BYTE_ORDER_MARK],S.WORKERS_SUPPORTED=!k&&!!e.Worker,S.SCRIPT_PATH=null,S.LocalChunkSize=10485760,S.RemoteChunkSize=5242880,S.DefaultDelimiter=",",S.Parser=u,S.ParserHandle=o,S.NetworkStreamer=i,S.FileStreamer=s,S.StringStreamer=a,"undefined"!=typeof module&&module.exports?module.exports=S:m(e.define)&&e.define.amd?define(function(){return S}):e.Papa=S,e.jQuery){var C=e.jQuery;C.fn.parse=function(t){function r(){if(0==a.length)return void(m(t.complete)&&t.complete());var e=a[0];if(m(t.before)){var r=t.before(e.file,e.inputElem);if("object"==typeof r){if("abort"==r.action)return void n("AbortError",e.file,e.inputElem,r.reason);if("skip"==r.action)return void i();"object"==typeof r.config&&(e.instanceConfig=C.extend(e.instanceConfig,r.config))}else if("skip"==r)return void i()}var s=e.instanceConfig.complete;e.instanceConfig.complete=function(t){m(s)&&s(t,e.file,e.inputElem),i()},S.parse(e.file,e.instanceConfig)}function n(e,r,n,i){m(t.error)&&t.error({name:e},r,n,i)}function i(){a.splice(0,1),r()}var s=t.config||{},a=[];return this.each(function(){var t="INPUT"==C(this).prop("tagName").toUpperCase()&&"file"==C(this).attr("type").toLowerCase()&&e.FileReader;if(!t||!this.files||0==this.files.length)return!0;for(var r=0;r<this.files.length;r++)a.push({file:this.files[r],inputElem:this,instanceConfig:C.extend({},s)})}),r(),this}}y?e.onmessage=p:S.WORKERS_SUPPORTED&&(v=h(),document.body?document.addEventListener("DOMContentLoaded",function(){b=!0},!0):b=!0),i.prototype=Object.create(n.prototype),i.prototype.constructor=i,s.prototype=Object.create(n.prototype),s.prototype.constructor=s,a.prototype=Object.create(a.prototype),a.prototype.constructor=a}("undefined"!=typeof window?window:this);var CRYPTO={paranoia_level:null,PASSWORD:{generate:function(length,callback,progress,start_string){return sjcl.random.isReady(paranoia_level)?(null==start_string&&(start_string=""),start_string.length<length?(start_string+=CRYPTO.RANDOM.getRandomASCII(),null!=progress&&progress(start_string.length/length*100),void setTimeout(this.generate(length,callback,progress,start_string),100)):(callback(start_string),void(null!=progress&&progress(100)))):void setTimeout(this.generate(length,callback,progress,start_string),500)},logRepeatedCharCount:function(str){var chars=[];for(i=0;i<str.length;i++)chars[str.charAt(i)]=null==chars[str.charAt(i)]?0:chars[str.charAt(i)]+1;return chars}},RANDOM:{getRandomASCII:function(){for(var ret="";ret.length<4;){var int=sjcl.random.randomWords(1,paranoia_level);int=int[0];var tmp=this._isASCII((4278190080&int)>>24);tmp&&(ret+=tmp),tmp=this._isASCII((16711680&int)>>16),tmp&&(ret+=tmp),tmp=this._isASCII((65280&int)>>8),tmp&&(ret+=tmp),tmp=this._isASCII(255&int),tmp&&(ret+=tmp)}return ret},_isASCII:function(data){return data>31&&data<127&&String.fromCharCode(data)}},initEngines:function(default_paranoia){paranoia_level=default_paranoia||10,sjcl.random.setDefaultParanoia(this.paranoia_level),sjcl.random.startCollectors(),console.warn("Crypto stuff initialized")}};CRYPTO.initEngines(),function(){angular.module("passmanApp",["ngAnimate","ngCookies","ngResource","ngRoute","ngSanitize","ngTouch","templates-main","LocalStorageModule","offClick","ngPasswordMeter","ngclipboard","xeditable","ngTagsInput","angularjs-datetime-picker","ui.sortable","pascalprecht.translate"]).config(function($routeProvider){$routeProvider.when("/",{templateUrl:"views/vaults.html",controller:"VaultCtrl"}).when("/vault/:vault_id",{templateUrl:"views/show_vault.html",controller:"CredentialCtrl"}).when("/vault/:vault_id/new",{templateUrl:"views/edit_credential.html",controller:"CredentialEditCtrl"}).when("/vault/:vault_id/edit/:credential_id",{templateUrl:"views/edit_credential.html",controller:"CredentialEditCtrl"}).when("/vault/:vault_id/:credential_id/share",{templateUrl:"views/share_credential.html",controller:"ShareCtrl"}).when("/vault/:vault_id/:credential_id/revisions",{templateUrl:"views/credential_revisions.html",controller:"RevisionCtrl"}).when("/vault/:vault_id/request-deletion",{templateUrl:"views/vault_req_deletion.html",controller:"RequestDeleteCtrl"}).when("/vault/:vault_id/settings",{templateUrl:"views/settings.html",controller:"SettingsCtrl"}).otherwise({redirectTo:"/"})}).config(["$httpProvider",function($httpProvider){$httpProvider.defaults.headers.common.requesttoken=oc_requesttoken}]).config(function(localStorageServiceProvider){localStorageServiceProvider.setNotify(!0,!0)}).config(function($translateProvider){$translateProvider.useSanitizeValueStrategy("sanitizeParameters"),$translateProvider.useUrlLoader(OC.generateUrl("/apps/passman/api/v2/language")),$translateProvider.preferredLanguage("en")}),jQuery(document).ready(function(){var findItemByID=function(id){var credentials,foundItem=!1;return credentials=angular.element("#app-content-wrapper").scope().credentials,angular.forEach(credentials,function(credential){credential.credential_id===id&&(foundItem=credential)}),foundItem};jQuery(document).on("click",".undoDelete",function(){var credential=findItemByID($(this).attr("data-item-id"));angular.element("#app-content-wrapper").scope().recoverCredential(credential),angular.element("#app-content-wrapper").scope().$apply()}),jQuery(document).on("click",".undoRestore",function(){var credential=findItemByID($(this).attr("data-item-id"));angular.element("#app-content-wrapper").scope().deleteCredential(credential),angular.element("#app-content-wrapper").scope().$apply()})})}(),function(){angular.module("passmanApp").filter("as",function($parse){return function(value,context,path){return $parse(path).assign(context,value)}})}(),function(){angular.module("passmanApp").filter("bytes",function(){return function(bytes,precision){if(isNaN(parseFloat(bytes))||!isFinite(bytes))return"-";"undefined"==typeof precision&&(precision=1);var units=["bytes","kB","MB","GB","TB","PB"],number=Math.floor(Math.log(bytes)/Math.log(1024));return(bytes/Math.pow(1024,Math.floor(number))).toFixed(precision)+" "+units[number]}})}(),function(){angular.module("passmanApp").filter("credentialSearch",function(){return function(credentials,filter){var _credentials=[];if(credentials){if(!filter)return credentials;if(""===filter.filterText.trim())return credentials;for(var matchedWithFilter=function(c){for(var f=0;f<filter.fields.length;f++){var field=filter.fields[f],fieldValue="string"==typeof c[field]?c[field]:JSON.stringify(c[field]);if(filter.hasOwnProperty("useRegex")&&filter.useRegex===!0)try{var patt=new RegExp(filter.filterText);if(patt.test(fieldValue))return!0}catch(e){}if(fieldValue.toLowerCase().indexOf(filter.filterText.toLowerCase())>=0)return!0}return!1},ci=0;ci<credentials.length;ci++){var c=credentials[ci];matchedWithFilter(c)&&_credentials.push(c)}return _credentials}return[]}})}(),function(){angular.module("passmanApp").filter("propsFilter",function(){return function(items,props){var out=[];if(angular.isArray(items)){var keys=Object.keys(props);items.forEach(function(item){for(var itemMatches=!1,i=0;i<keys.length;i++){var prop=keys[i],text=props[prop].toLowerCase();if(item[prop].toString().toLowerCase().indexOf(text)!==-1){itemMatches=!0;break}}itemMatches&&out.push(item)})}else out=items;return out}})}(),function(){angular.module("passmanApp").filter("range",function(){return function(val,range){range=parseInt(range);for(var i=0;i<range;i++)val.push(i);return val}})}(),function(){angular.module("passmanApp").filter("tagFilter",function(){return function(credentials,tags){var _credentials=[];if(tags.length>0)for(var ci=0;ci<credentials.length;ci++){for(var c=credentials[ci],matches=0,ct=0;ct<c.tags_raw.length;ct++){var t=c.tags_raw[ct];tags.indexOf(t.text)!==-1&&matches++}matches===tags.length&&_credentials.push(c)}return 0===tags.length&&(_credentials=credentials),_credentials}})}(),function(){angular.module("passmanApp").filter("toHHMMSS",function(){return function(_seconds){var sec_num=parseInt(_seconds,10),hours=Math.floor(sec_num/3600),minutes=Math.floor((sec_num-3600*hours)/60),seconds=sec_num-3600*hours-60*minutes;return hours<10&&(hours="0"+hours),minutes<10&&(minutes="0"+minutes),seconds<10&&(seconds="0"+seconds),hours+":"+minutes+":"+seconds}})}(),function(){angular.module("passmanApp").service("CacheService",["localStorageService","EncryptService",function(localStorageService,EncryptService){return{get:function(name){return EncryptService.decryptString(localStorageService.get(name))},set:function(key,value){value=EncryptService.encryptString(value),localStorageService.set(key,value)}}}])}(),function(){angular.module("passmanApp").service("CredentialService",["$http","EncryptService","VaultService","FileService",function($http,EncryptService,VaultService,FileService){var credential={credential_id:null,guid:null,vault_id:null,label:null,description:null,created:null,changed:null,tags:[],email:null,username:null,password:null,url:null,favicon:null,renew_interval:null,expire_time:0,
-delete_time:0,files:[],custom_fields:[],otp:{},hidden:!1},_encryptedFields=["description","username","password","files","custom_fields","otp","email","tags","url"];return{newCredential:function(){return angular.copy(credential)},createCredential:function(credential){for(var _credential=angular.copy(credential),i=0;i<_encryptedFields.length;i++){var field=_encryptedFields[i],fieldValue=angular.copy(credential[field]);_credential[field]=EncryptService.encryptString(JSON.stringify(fieldValue))}_credential.expire_time=new Date(angular.copy(credential.expire_time)).getTime()/1e3;var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials");return $http.post(queryUrl,_credential).then(function(response){return response.data?response.data:response})},getEncryptedFields:function(){return _encryptedFields},updateCredential:function(credential,skipEncryption,key){var _credential=angular.copy(credential);if(!skipEncryption)for(var i=0;i<_encryptedFields.length;i++){var field=_encryptedFields[i],fieldValue=angular.copy(credential[field]);_credential[field]=EncryptService.encryptString(JSON.stringify(fieldValue),key)}_credential.expire_time=new Date(angular.copy(credential.expire_time)).getTime()/1e3;var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+credential.guid);return $http.patch(queryUrl,_credential).then(function(response){return response.data?response.data:response})},getCredential:function(guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+guid);return $http.get(queryUrl).then(function(response){return response.data?response.data:response})},destroyCredential:function(guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+guid);return $http.delete(queryUrl).then(function(response){return response.data?response.data:response})},encryptCredential:function(credential,key){for(var i=0;i<_encryptedFields.length;i++){var field=_encryptedFields[i],fieldValue=angular.copy(credential[field]);credential[field]=EncryptService.encryptString(JSON.stringify(fieldValue),key)}return credential},decryptCredential:function(credential,key){for(var i=0;i<_encryptedFields.length;i++){var field_decrypted_value,field=_encryptedFields[i],fieldValue=angular.copy(credential[field]);try{field_decrypted_value=EncryptService.decryptString(fieldValue,key)}catch(e){throw e}try{credential[field]=JSON.parse(field_decrypted_value)}catch(e){console.warn("Field"+field+" in "+credential.label+" could not be parsed! Value:"+fieldValue)}}return credential},getSharedKeyFromCredential:function(credential){var key=null;return!credential.hasOwnProperty("acl")&&credential.hasOwnProperty("shared_key")&&credential.shared_key&&(key=EncryptService.decryptString(angular.copy(credential.shared_key))),credential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy(credential.acl.shared_key))),key},getRevisions:function(guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+guid+"/revision");return $http.get(queryUrl).then(function(response){return response.data?response.data:response})},updateRevision:function(revision){var _revision=angular.copy(revision);_revision.credential_data=window.btoa(JSON.stringify(_revision.credential_data));var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+revision.credential_data.guid+"/revision/"+revision.revision_id);return $http.patch(queryUrl,_revision).then(function(response){return response.data?response.data:response})},deleteRevision:function(credential_guid,revision_id){var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+credential_guid+"/revision/"+revision_id);return $http.delete(queryUrl).then(function(response){return response.data?response.data:response})},reencryptCredential:function(credential_guid,old_password,new_password,skipSharingKey){var service=this,progress_datatype=function(current,total,process){this.process=process,this.current=current,this.total=total,this.calculated=current/total*100},promise_credential_update=function(){service.getCredential(credential_guid).then(function(credential){this.parent.plain_credential=service.decryptCredential(credential,this.parent.old_password);var tmp=angular.copy(this.parent.plain_credential);if(tmp.hasOwnProperty("shared_key")&&null!==tmp.shared_key&&!skipSharingKey){var shared_key=EncryptService.decryptString(angular.copy(tmp.shared_key)).trim();tmp.shared_key=EncryptService.encryptString(angular.copy(shared_key),this.parent.new_password),tmp.set_share_key=!0,tmp.skip_revision=!0,this.parent.new_password=shared_key}this.parent.new_credential_cryptogram=service.encryptCredential(tmp,this.parent.new_password),this.call_progress(new progress_datatype(1,2,"credential")),this.parent.new_credential_cryptogram.skip_revision=!0,service.updateCredential(this.parent.new_credential_cryptogram,!0).then(function(){this.call_progress(new progress_datatype(2,2,"credential")),this.call_then({plain_text:this.parent.plain_credential,cryptogram:this.parent.new_credential_cryptogram})}.bind(this))}.bind(this))},promise_files_update=function(){this.total=2*this.parent.plain_credential.files.length,this.current=0;for(var i=0;i<this.parent.plain_credential.files.length;i++){var _file=this.parent.plain_credential.files[i];FileService.getFile(_file).then(function(fileData){fileData.filename=EncryptService.decryptString(fileData.filename,this.parent.old_password),fileData.file_data=EncryptService.decryptString(fileData.file_data,this.parent.old_password),this.current++,this.call_progress(new progress_datatype(this.current,this.total,"files")),FileService.updateFile(fileData,this.parent.new_password).then(function(){this.current++,this.call_progress(new progress_datatype(this.current,this.total,"files")),this.current===this.total&&this.call_then("All files has been updated")}.bind(this))}.bind(this))}0===this.parent.plain_credential.files.length&&(this.call_progress(new progress_datatype(0,0,"files")),this.call_then("No files to update"))},promise_revisions_update=function(){service.getRevisions(this.parent.plain_credential.guid).then(function(revisions){this.total=2*revisions.length,this.upload=0,this.current=0,this.revisions=revisions;var revision_workload=function(){if(0===this.revisions.length)return this.call_progress(new progress_datatype(0,0,"revisions")),void this.call_then("No history to update");var _revision=revisions[this.current];_revision.credential_data=service.decryptCredential(_revision.credential_data,this.parent.old_password),_revision.credential_data=service.encryptCredential(_revision.credential_data,this.parent.new_password),this.current++,this.call_progress(new progress_datatype(this.current+this.upload,this.total,"revisions")),service.updateRevision(_revision).then(function(){this.upload++,this.call_progress(new progress_datatype(this.upload+this.current,this.total,"revisions")),this.current+this.upload===this.total&&this.call_then("History updated")}.bind(this)),this.current!==this.total/2&&setTimeout(revision_workload.bind(this),1)};setTimeout(revision_workload.bind(this),1)}.bind(this))},promise_workload=function(){this.old_password=angular.copy(old_password),this.new_password=angular.copy(new_password),this.promises=0;var master_promise=this,password_data=function(){this.old_password=master_promise.old_password,this.new_password=master_promise.new_password,this.plain_credential=master_promise.plain_credential};this.credential_data={},new C_Promise(promise_credential_update,new password_data).progress(function(data){master_promise.call_progress(data)}).then(function(data){console.warn("End credential update"),master_promise.plain_credential=data.plain_text,master_promise.promises++,master_promise.credential_data=data,new C_Promise(promise_files_update,new password_data).progress(function(data){master_promise.call_progress(data)}).then(function(){console.warn("End files update"),master_promise.promises--,0===master_promise.promises&&master_promise.call_then(master_promise.credential_data)}),master_promise.promises++,new C_Promise(promise_revisions_update,new password_data).progress(function(data){master_promise.call_progress(data)}).then(function(){console.warn("End revisions update"),master_promise.promises--,0===master_promise.promises&&master_promise.call_then(master_promise.credential_data)})})};return new C_Promise(promise_workload)}}}])}(),function(){angular.module("passmanApp").service("EncryptService",["VaultService",function(VaultService){var encryption_config={adata:"",iter:1e3,ks:256,mode:"ccm",ts:64};return{encryptString:function(string,_key){_key||(_key=VaultService.getActiveVault().vaultKey);var rp={},ct=sjcl.encrypt(_key,string,encryption_config,rp);return window.btoa(ct)},decryptString:function(ciphertext,_key){_key||(_key=VaultService.getActiveVault().vaultKey),ciphertext=window.atob(ciphertext);var rp={};try{return sjcl.decrypt(_key,ciphertext,encryption_config,rp)}catch(e){throw e}}}}])}(),function(){angular.module("passmanApp").service("FileService",["$http","EncryptService",function($http,EncryptService){return{uploadFile:function(file,key){var queryUrl=OC.generateUrl("apps/passman/api/v2/file"),_file=angular.copy(file);_file.filename=EncryptService.encryptString(_file.filename,key);var data=EncryptService.encryptString(angular.copy(file.data),key);return _file.data=data,$http.post(queryUrl,_file).then(function(response){return response.data?response.data:response})},deleteFile:function(file){var queryUrl=OC.generateUrl("apps/passman/api/v2/file/"+file.file_id),_file=angular.copy(file);return $http.delete(queryUrl,_file).then(function(response){return response.data?response.data:response})},getFile:function(file){var queryUrl=OC.generateUrl("apps/passman/api/v2/file/"+file.file_id),_file=angular.copy(file);return $http.get(queryUrl,_file).then(function(response){return response.data?"[object Array]"===Object.prototype.toString.call(response.data)?response.data.pop():response.data:response})},updateFile:function(file,key){var queryUrl=OC.generateUrl("apps/passman/api/v2/file/"+file.file_id),_file=angular.copy(file);_file.filename=EncryptService.encryptString(_file.filename,key);var data=EncryptService.encryptString(angular.copy(file.file_data),key);return _file.file_data=data,$http.patch(queryUrl,_file).then(function(response){return response.data?response.data:response})},dataURItoBlob:function(dataURI,ftype){var byteString,ab,ia,bb,i;for(byteString=atob(dataURI.split(",")[1]),ab=new ArrayBuffer(byteString.length),ia=new Uint8Array(ab),i=0;i<byteString.length;i++)ia[i]=byteString.charCodeAt(i);return bb=new Blob([ab],{type:ftype}),URL.createObjectURL(bb)}}}])}(),function(){angular.module("passmanApp").service("NotificationService",["$timeout",function($timeout){var to;return{showNotification:function(text,time,closeCallback){var notification=OC.Notification.showHtml(text);return to=$timeout(function(){OC.Notification.hide(notification,closeCallback)},time),notification},hideNotification:function(notification){$timeout.cancel(to),OC.Notification.hide(notification)},hideAll:function(){OC.Notification.hide()}}}])}(),function(){angular.module("passmanApp").service("SettingsService",["localStorageService","$http","$rootScope",function(localStorageService,$http,$rootScope){var settings={defaultVault:null,defaultVaultPass:null};$http.get(OC.generateUrl("apps/passman/api/v2/settings")).then(function(response){response.data&&(settings=angular.merge(settings,response.data),$rootScope.$broadcast("settings_loaded"))});var cookie=localStorageService.get("settings");return settings=angular.merge(settings,cookie),{getSettings:function(){return settings},getSetting:function(name){return settings[name]},setSetting:function(name,value){settings[name]=value,localStorageService.set("settings",settings)},isEnabled:function(name){return 1===settings[name]||"1"===settings[name]}}}])}(),function(){angular.module("passmanApp").service("ShareService",["$http","VaultService","EncryptService","CredentialService",function($http,VaultService,EncryptService,CredentialService){var paranoia_level=10;return sjcl.random.setDefaultParanoia(paranoia_level),sjcl.random.startCollectors(),{search:function(string){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/search");return $http.post(queryUrl,{search:string}).then(function(response){return response.data?response.data:response})},shareWithUser:function(credential,target_user_data){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/share");return $http.post(queryUrl,{item_id:credential.credential_id,item_guid:credential.guid,permissions:target_user_data.accessLevel,vaults:target_user_data.vaults})},getVaultsByUser:function(userId){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/vaults/"+userId);return $http.get(queryUrl,{search:userId}).then(function(response){if(response.data){for(var i=0;i<response.data.length;i++)response.data[i].public_sharing_key=forge.pki.publicKeyFromPem(response.data[i].public_sharing_key);return response.data}return response})},getPendingRequests:function(){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/pending");return $http.get(queryUrl).then(function(response){if(response.data)return response.data})},saveSharingRequest:function(request,crypted_shared_key){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/save");return $http.post(queryUrl,{item_guid:request.item_guid,target_vault_guid:request.target_vault_guid,final_shared_key:crypted_shared_key}).then(function(response){return response.data})},declineSharingRequest:function(request){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/decline/"+request.req_id);return $http.delete(queryUrl).then(function(response){return response.data})},unshareCredential:function(credential){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid);return $http.delete(queryUrl).then(function(response){return response.data})},unshareCredentialFromUser:function(credential,user_id){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid+"/"+user_id);return $http.delete(queryUrl).then(function(response){return response.data})},createPublicSharedCredential:function(shareObj){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/public");return $http.post(queryUrl,shareObj).then(function(response){return response.data})},getPublicSharedCredential:function(credential_guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential_guid+"/public");return $http.get(queryUrl).then(function(response){return response.data?response:response},function(result){return result})},getSharedCredentialACL:function(credential){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid+"/acl");return $http.get(queryUrl).then(function(response){return response.data?response.data:response},function(result){return result})},updateCredentialAcl:function(credential,acl){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid+"/acl");return $http.patch(queryUrl,acl).then(function(response){return response.data})},getCredendialsSharedWithUs:function(vault_guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/vault/"+vault_guid+"/get");return $http.get(queryUrl).then(function(response){if(response.data)return response.data})},downloadSharedFile:function(credential,file){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid+"/file/"+file.guid);return $http.get(queryUrl).then(function(response){if(response.data)return response.data})},encryptSharedCredential:function(credential,sharedKey){var _credential=angular.copy(credential);_credential.shared_key=EncryptService.encryptString(sharedKey);for(var encrypted_fields=CredentialService.getEncryptedFields(),i=0;i<encrypted_fields.length;i++){var field=encrypted_fields[i],fieldValue=angular.copy(credential[field]);_credential[field]=EncryptService.encryptString(JSON.stringify(fieldValue),sharedKey)}return _credential},decryptSharedCredential:function(credential,sharedKey){for(var _credential=angular.copy(credential),encrypted_fields=CredentialService.getEncryptedFields(),i=0;i<encrypted_fields.length;i++){var field_decrypted_value,field=encrypted_fields[i],fieldValue=angular.copy(_credential[field]);if(_credential.hasOwnProperty(field)){try{field_decrypted_value=EncryptService.decryptString(fieldValue,sharedKey)}catch(e){throw e}try{_credential[field]=JSON.parse(field_decrypted_value)}catch(e){throw console.warn("Field"+field+" in "+_credential.label+" could not be parsed! Value:"+fieldValue),e}}}return _credential},generateRSAKeys:function(key_length){var p=new C_Promise(function(){var state=forge.pki.rsa.createKeyPairGenerationState(key_length,65537),step=function(){forge.pki.rsa.stepKeyPairGenerationState(state,100)?this.call_then(state.keys):(null!==state.p?this.call_progress(50):this.call_progress(0),setTimeout(step.bind(this),1))};setTimeout(step.bind(this),100)});return p},generateSharedKey:function(size){return size=size||20,new C_Promise(function(){var t=this;CRYPTO.PASSWORD.generate(size,function(pass){t.call_then(pass)},function(progress){t.call_progress(progress)})})},rsaKeyPairToPEM:function(keypair){return{publicKey:forge.pki.publicKeyToPem(keypair.publicKey),privateKey:forge.pki.privateKeyToPem(keypair.privateKey)}},getSharingKeys:function(){var vault=VaultService.getActiveVault();return{private_sharing_key:EncryptService.decryptString(angular.copy(vault.private_sharing_key)),public_sharing_key:vault.public_sharing_key}},rsaPrivateKeyFromPEM:function(private_pem){return forge.pki.privateKeyFromPem(private_pem)},rsaPublicKeyFromPEM:function(public_pem){return forge.pki.publicKeyFromPem(public_pem)},cypherRSAStringWithPublicKeyBulkAsync:function(vaults,string){var workload=function(){if(this.current_index<this.vaults.length>0&&this.vaults.length>0){var _vault=angular.copy(this.vaults[this.current_index]);_vault.key=forge.util.encode64(_vault.public_sharing_key.encrypt(this.string)),this.data.push(_vault),this.current_index++,this.call_progress(this.current_index),setTimeout(workload.bind(this),1)}else this.call_then(this.data)};return new C_Promise(function(){this.data=[],this.vaults=vaults,this.string=string,this.current_index=0,setTimeout(workload.bind(this),0)})}}}])}(),function(){angular.module("passmanApp").service("TagService",["$filter",function($filter){var _tags=[];return{getTags:function(){return _tags},searchTag:function(string){return $filter("filter")(_tags,{text:string})},addTags:function(tags){for(var i=0;i<tags.length;i++)tags[i].text&&0===$filter("filter")(_tags,{text:tags[i].text}).length&&_tags.push(tags[i])},resetTags:function(){_tags=[]}}}])}(),function(){angular.module("passmanApp").service("VaultService",["$http",function($http){var _activeVault,_this=this,service={getVaults:function(){var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults");return $http.get(queryUrl).then(function(response){return response.data?response.data:response})},setActiveVault:function(vault){_activeVault=angular.copy(vault)},getActiveVault:function(){return _activeVault},getVaultSetting:function(key,default_value){return _activeVault.vault_settings&&void 0!==_activeVault.vault_settings[key]?_activeVault.vault_settings[key]:default_value},setVaultSetting:function(key,value){return!!_activeVault.vault_settings&&(_activeVault.vault_settings[key]=value,void _this.updateVault(_activeVault))},createVault:function(vaultName){var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults");return $http.post(queryUrl,{vault_name:vaultName}).then(function(response){return response.data?response.data:response})},getVault:function(vault){var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults/"+vault.guid);return $http.get(queryUrl).then(function(response){return response.data?(response.data.vault_settings?response.data.vault_settings=JSON.parse(window.atob(response.data.vault_settings)):response.data.vault_settings={},response.data):response})},updateVault:function(vault){var _vault=angular.copy(vault);delete _vault.defaultVaultPass,delete _vault.defaultVault,delete _vault.vaultKey,_vault.vault_settings=window.btoa(JSON.stringify(_vault.vault_settings));var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults/"+_vault.guid);return $http.patch(queryUrl,_vault).then(function(response){return response.data?response.data:response})},updateSharingKeys:function(vault){var _vault=angular.copy(vault);delete _vault.vaultKey;var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults/"+_vault.guid+"/sharing-keys");return $http.post(queryUrl,_vault).then(function(response){return response.data?response.data:response})},deleteVault:function(vault){var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults/"+vault.guid);return $http.delete(queryUrl).then(function(response){return response.data?response.data:response})}};return service}])}(),function(){angular.module("passmanApp").factory("SharingACL",function(){function ACL(acl_permission){this.permission=acl_permission}return ACL.prototype.permissions={READ:1,WRITE:2,FILES:4,HISTORY:8,OWNER:128},ACL.prototype.hasPermission=function(permission){return permission===(this.permission&permission)},ACL.prototype.addPermission=function(permission){this.permission=this.permission|permission},ACL.prototype.removePermission=function(permission){this.permission=this.permission&~permission},ACL.prototype.togglePermission=function(permission){this.permission^=permission},ACL.prototype.getAccessLevel=function(){return this.permission},ACL})}(),function(){angular.module("passmanApp").directive("autoScroll",function(){return{restrict:"A",scope:{autoScroll:"="},link:function(scope,el){scope.$watch("autoScroll",function(){$(el).scrollTop($(el)[0].scrollHeight)},!0)}}})}(),function(){angular.module("passmanApp").directive("clearBtn",["$parse",function($parse){return{link:function(scope,elm,attr){elm.wrap("<div style='position: relative'></div>");var btn="<span id="+Math.round(1e9*Math.random())+' class="searchclear ng-hide fa fa-times-circle-o"></span>',angularBtn=angular.element(btn);elm.after(angularBtn),angularBtn.on("click",function(){elm.val("").trigger("change"),$parse(attr.ngModel).assign(scope,""),scope.$apply()}),elm.bind("focus keyup change paste propertychange",function(){elm.val()&&elm.val().length>0?angularBtn.removeClass("ng-hide"):angularBtn.addClass("ng-hide")})}}}])}(),function(){angular.module("passmanApp").directive("clickDisable",function(){return function(scope,element){element.bind("click",function(){element.prepend('<i class="fa fa-spin fa-spinner"></i>&nbsp;'),element.attr("disabled","disabled")})}})}(),function(){angular.module("passmanApp").directive("selectOnClick",["$window",function($window){return{restrict:"A",link:function(scope,element){element.on("click",function(){$window.getSelection().toString()||this.setSelectionRange(0,this.value.length)})}}}])}(),function(){angular.module("passmanApp").directive("colorFromString",[function(){return{restrict:"A",scope:{string:"=colorFromString"},link:function(scope,el){function genColor(str){for(var hash=0,i=0;i<str.length;i++)hash=str.charCodeAt(i)+((hash<<5)-hash);var c=(16777215&hash).toString(16).toUpperCase();return"#"+"00000".substring(0,6-c.length)+c}scope.$watch("string",function(){jQuery(el).css("border-color",genColor(scope.string))})}}}])}(),function(){angular.module("passmanApp").directive("credentialCounter",[function(){return{template:'<div ng-show="counter" translate="number.filtered" translate-values="{number_filtered: counter, credential_number: total}"></div>',replace:!1,restrict:"A",scope:{filteredCredentials:"=credentialCounter",deleteTime:"=",vault:"=",filters:"="},link:function(scope){function countCredentials(){var countedCredentials=0,total=0;scope.vault&&scope.vault.hasOwnProperty("credentials")&&(angular.forEach(scope.vault.credentials,function(credential){var pos=scope.filteredCredentials.map(function(c){return c.guid}).indexOf(credential.guid);0===scope.deleteTime&&0===credential.hidden&&0===credential.delete_time&&(total+=1,countedCredentials=pos!==-1?countedCredentials+1:countedCredentials),scope.deleteTime>0&&0===credential.hidden&&credential.delete_time>0&&(total+=1,countedCredentials=pos!==-1?countedCredentials+1:countedCredentials)}),scope.counter=countedCredentials,scope.total=total)}scope.$watch("[filteredCredentials, deleteTime, filters]",function(){countCredentials()},!0)}}}])}(),function(){angular.module("passmanApp").directive("credentialField",["$timeout","$translate",function($timeout,$translate){return{scope:{value:"=value",secret:"=secret",inputField:"=useInput",inputFieldplaceholder:"=inputPlaceholder"},restrict:"A",replace:"true",template:'<span class="credential_field"><div class="value" ng-class="{\'ellipsis\': isLink}"><span ng-if="secret"><span ng-repeat="n in [] | range:value.length" ng-if="!valueVisible">*</span></span><span ng-if="valueVisible && !inputField" ng-bind-html="value"></span><span ng-if="valueVisible && inputField"><input type="text" ng-model="value" select-on-click placeholder="{{ inputFieldplaceholder }}!"</span></div><div class="tools"><div class="cell" ng-if="toggle" tooltip="tggltxt" ng-click="toggleVisibility()"><i class="fa" ng-class="{\'fa-eye\': !valueVisible, \'fa-eye-slash\': valueVisible }"></i></div><div class="cell" ng-if="isLink"><a ng-href="{{value}}" target="_blank" rel="nofollow noopener noreferrer"><i tooltip="\'Open in new window\'" class="link fa fa-external-link"></i></a></div><div class="cell" ngclipboard-success="onSuccess(e);" ngclipboard-error="onError(e);" ngclipboard data-clipboard-text="{{value}}"><i tooltip="copy_msg" class="fa fa-clipboard"></i></div></div></span>',link:function(scope){var expression=/(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/gi,regex=new RegExp(expression);$translate(["toggle.visibility","copy","copied"]).then(function(translations){scope.tggltxt=translations["toggle.visibility"],scope.copy_msg=translations["copy.field"]}),scope.$watch("value",function(){scope.value&&(scope.secret&&(scope.valueVisible=!1),regex.test(scope.value)&&(scope.isLink=!0,"http"!==scope.value.substr(0,4)&&(scope.value="http://"+scope.value)))}),scope.toggle||scope.secret&&(scope.toggle=!0);var timer;scope.onSuccess=function(){scope.copy_msg=$translate.instant("copied"),$timeout.cancel(timer),timer=$timeout(function(){scope.copy_msg=$translate.instant("copy")},5e3)},scope.valueVisible=!0,scope.toggleVisibility=function(){scope.valueVisible=!scope.valueVisible}}}}])}(),function(){angular.module("passmanApp").directive("credentialTemplate",["EncryptService","$translate","FileService","ShareService","NotificationService","CredentialService",function(EncryptService,$translate,FileService,ShareService,NotificationService,CredentialService){return{templateUrl:"views/partials/credential_template.html",replace:!0,restrict:"A",scope:{credential:"=credentialTemplate"},link:function(scope,element,attrs){scope.downloadFile=function(credential,file){var callback=function(result){var key=CredentialService.getSharedKeyFromCredential(credential);if(!result.hasOwnProperty("file_data"))return void NotificationService.showNotification($translate.instant("error.loading.file.perm"),5e3);var file_data=EncryptService.decryptString(result.file_data,key);download(file_data,escapeHTML(file.filename),file.mimetype)};credential.hasOwnProperty("acl")?ShareService.downloadSharedFile(credential,file).then(callback):FileService.getFile(file).then(callback)},scope.showLabel=attrs.hasOwnProperty("showLabel")}}}])}(),function(){angular.module("passmanApp").directive("fileSelect",["$window",function($window){return{restrict:"A",scope:{success:"&success",error:"&error",progress:"&progress"},link:function(scope,el){scope.success=scope.success(),scope.error=scope.error(),scope.progress=scope.progress();var _currentFile,fileReader=new $window.FileReader;fileReader.onload=function(){_currentFile.data=fileReader.result,scope.success(_currentFile)},fileReader.onprogress=function(event){var percent=event.loaded/event.total*100;scope.progress&&scope.$apply(scope.progress({file_total:event.total,file_loaded:event.loaded,file_percent:percent}))},fileReader.onerror=function(){scope.error()},el.bind("change",function(e){var i,_queueTotalFileSize=0;for(i=0;i<e.target.files.length;i++)_queueTotalFileSize+=e.target.files[i].size;for(i=0;i<e.target.files.length;i++){_currentFile=e.target.files[i];var mb_limit=5;_currentFile.size>1024*mb_limit*1024&&scope.error("TO_BIG",_currentFile),fileReader.readAsDataURL(_currentFile)}})}}}])}(),function(){angular.module("passmanApp").directive("ngEnter",function(){return function(scope,element,attrs){element.bind("keydown keypress",function(event){13===event.which&&(scope.$apply(function(){scope.$eval(attrs.ngEnter)}),event.preventDefault())})}})}(),function(){angular.module("passmanApp").directive("otpGenerator",["$compile","$timeout",function($compile,$timeout){function dec2hex(s){return(s<15.5?"0":"")+Math.round(s).toString(16)}function hex2dec(s){return parseInt(s,16)}function base32tohex(base32){if(base32){var i,base32chars="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bits="",hex="";for(i=0;i<base32.length;i++){var val=base32chars.indexOf(base32.charAt(i).toUpperCase());bits+=leftpad(val.toString(2),5,"0")}for(i=0;i+4<=bits.length;i+=4){var chunk=bits.substr(i,4);hex+=parseInt(chunk,2).toString(16)}return hex}}function leftpad(str,len,pad){return len+1>=str.length&&(str=Array(len+1-str.length).join(pad)+str),str}return{restrict:"A",template:'<span class="otp_generator"><span credential-field value="otp" secret="\'true\'"></span> <span ng-bind="timeleft"></span></span>',transclude:!1,scope:{secret:"="},replace:!0,link:function(scope){scope.otp=null,scope.timeleft=null,scope.timer=null;var updateOtp=function(){if(scope.secret){var key=base32tohex(scope.secret),epoch=Math.round((new Date).getTime()/1e3),time=leftpad(dec2hex(Math.floor(epoch/30)),16,"0"),hmacObj=new jsSHA(time,"HEX"),hmac=hmacObj.getHMAC(key,"HEX","SHA-1","HEX"),offset=hex2dec(hmac.substring(hmac.length-1)),otp=(hex2dec(hmac.substr(2*offset,8))&hex2dec("7fffffff"))+"";otp=otp.substr(otp.length-6,6),scope.otp=otp}},timer=function(){var epoch=Math.round((new Date).getTime()/1e3),countDown=30-epoch%30;epoch%30===0&&updateOtp(),scope.timeleft=countDown,scope.timer=$timeout(timer,1e3)};scope.$watch("secret",function(n){n?($timeout.cancel(scope.timer),updateOtp(),timer()):$timeout.cancel(scope.timer)},!0),scope.$on("$destroy",function(){$timeout.cancel(scope.timer)})}}}])}(),function(){angular.module("passmanApp").directive("passwordGen",function($timeout,$translate){function Arcfour(){this.j=this.i=0,this.S=[]}function ARC4init(r){var t,n,e;for(t=0;256>t;++t)this.S[t]=t;for(t=n=0;256>t;++t)n=n+this.S[t]+r[t%r.length]&255,e=this.S[t],this.S[t]=this.S[n],this.S[n]=e;this.j=this.i=0}function ARC4next(){var r;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,r=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=r,this.S[r+this.S[this.i]&255]}function prng_newstate(){return new Arcfour}function generatePassword(r,t,n,e,o,i,p,g){var _,a,s,f,d,h,u,l,c,v,w,y,m;if(void 0===r&&(r=8+get_random(0,1)),r>256&&(r=256,document.getElementById("length").value=256),i>256&&(i=256),void 0===t&&(t=!0),void 0===n&&(n=!0),void 0===e&&(e=!0),void 0===o&&(o=!1),void 0===i&&(i=0),void 0===p&&(p=!1),void 0===g&&(g=!0),_=0,a=0,s=0,g&&(_=a=s=1),f=[],n&&_>0)for(d=0;_>d;d++)f[f.length]="L";if(t&&a>0)for(d=0;a>d;d++)f[f.length]="U";if(e&&i>0)for(d=0;i>d;d++)f[f.length]="D";if(o&&s>0)for(d=0;s>d;d++)f[f.length]="S";for(;f.length<r;)f[f.length]="A";for(f.sort(function(){return 2*get_random(0,1)-1}),h="",u="abcdefghjkmnpqrstuvwxyz",p||(u+="ilo"),n&&(h+=u),l="ABCDEFGHJKMNPQRSTUVWXYZ",p||(l+="ILO"),t&&(h+=l),c="23456789",p||(c+="10"),e&&(h+=c),v="!@#$%^&*",o&&(h+=v),w="",y=0;r>y;y++){switch(f[y]){case"L":m=u;break;case"U":m=l;break;case"D":m=c;break;case"S":m=v;break;case"A":m=h}d=get_random(0,m.length-1),
-w+=m.charAt(d)}return w}function rng_seed_int(r){rng_pool[rng_pptr++]^=255&r,rng_pool[rng_pptr++]^=r>>8&255,rng_pool[rng_pptr++]^=r>>16&255,rng_pool[rng_pptr++]^=r>>24&255,rng_pptr>=rng_psize&&(rng_pptr-=rng_psize)}function rng_seed_time(){rng_seed_int((new Date).getTime())}function rng_get_byte(){if(null==rng_state){for(rng_seed_time(),rng_state=prng_newstate(),rng_state.init(rng_pool),rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr)rng_pool[rng_pptr]=0;rng_pptr=0}return rng_state.next()}function rng_get_bytes(r){var t;for(t=0;t<r.length;++t)r[t]=rng_get_byte()}function SecureRandom(){}function get_random(r,t){var n,e,o,i=t-r+1;for(rng_seed_time(),n=[],e=0;4>e;e++)n[e]=0;for(rng_get_bytes(n),o=0,e=0;4>e;e++)o*=256,o+=n[e];return o%=i,o+=r}var rng_psize,rng_state,rng_pool,rng_pptr,t,z,crypt_obj,num,buf,i;if(Arcfour.prototype.init=ARC4init,Arcfour.prototype.next=ARC4next,rng_psize=256,null==rng_pool){if(rng_pool=[],rng_pptr=0,"undefined"!=typeof navigator&&"Netscape"==navigator.appName&&navigator.appVersion<"5"&&"undefined"!=typeof window&&window.crypto)for(z=window.crypto.random(32),t=0;t<z.length;++t)rng_pool[rng_pptr++]=255&z.charCodeAt(t);try{if(crypt_obj=null,"undefined"!=typeof window&&void 0!==window.crypto?crypt_obj=window.crypto:"undefined"!=typeof window&&void 0!==window.msCrypto&&(crypt_obj=window.msCrypto),void 0!==crypt_obj&&"function"==typeof crypt_obj.getRandomValues&&rng_psize>rng_pptr)for(num=Math.floor((rng_psize-rng_pptr)/2)+1,buf=new Uint16Array(num),crypt_obj.getRandomValues(buf),i=0;i<buf.length;i++)t=buf[i],rng_pool[rng_pptr++]=t>>>8,rng_pool[rng_pptr++]=255&t}catch(e){}for(;rng_psize>rng_pptr;)t=Math.floor(65536*sjcl.random.randomWords(1)),rng_pool[rng_pptr++]=t>>>8,rng_pool[rng_pptr++]=255&t;rng_pptr=0,rng_seed_time()}return SecureRandom.prototype.nextBytes=rng_get_bytes,{scope:{model:"=ngModel",length:"@",placeholder:"@",settings:"=settings",callback:"&callback"},restrict:"E",replace:"true",template:'<div class=" pw-gen "><div class="input-group "><input ng-show="!passwordVisible" type="password" ng-disabled="disabled" class="form-control " ng-model="password" placeholder="{{placeholder}}"><input ng-show="passwordVisible" type="text" ng-disabled="disabled" class="form-control " ng-model="password" placeholder="{{placeholder}}"><span class="generate_pw"><div class="cell" tooltip="gen_msg" ng-click="generatePasswordStart()"><i class="fa fa-refresh"></i></div><div class="cell" tooltip="tggltxt" ng-click="toggleVisibility()"><i class="fa" ng-class="{\'fa-eye\': passwordVisible, \'fa-eye-slash\': !passwordVisible }"></i></div><div class="cell" tooltip="\'Copy password to clipboard\'"><i class="fa fa-clipboard" ngclipboard-success="onSuccess(e);" ngclipboard-error="onError(e);" ngclipboard data-clipboard-text="{{password}}"></i></div></button></div></div>',link:function(scope){scope.callback=scope.callback(),scope.$watch("model",function(){scope.password=scope.model}),scope.passwordVisible=!1,scope.toggleVisibility=function(){scope.passwordVisible=!scope.passwordVisible},scope.passwordNotNull=!1,scope.$watch("settings",function(){scope.settings&&!scope.password&&scope.settings.generateOnCreate&&scope.generatePasswordStart()}),$translate(["password.gen","password.copy","copied","toggle.visibility"]).then(function(translations){scope.tggltxt=translations["toggle.visibility"],scope.copy_msg=translations["password.copy"],scope.gen_msg=translations["password.gen"]}),scope.$watch("password",function(){scope.model=scope.password,scope.password_repeat=scope.model}),scope.onSuccess=function(e){OC.Notification.showTemporary($translate.instant("password.copied")),e.clearSelection()},scope.onError=function(){OC.Notification.showTemporary("Press Ctrl+C to copy!")},scope.progressDivShow=!1,scope.generatePasswordStart=function(){scope.progressDivShow=!0,scope.progressValue=0,scope.progressWidth={width:scope.progressValue+"%"},scope.generatePasswordProgress()},scope.generatePasswordProgress=function(){$timeout(function(){scope.progressValue<100?(scope.password=scope._generatePassword(scope.settings),scope.progressValue+=10,scope.progressWidth={width:scope.progressValue+"%"},scope.disabled=!0,scope.generatePasswordProgress()):(scope.disabled=!1,scope.callback&&scope.callback(scope.password))},10)},scope._generatePassword=function(settings){var _settings={length:12,useUppercase:!0,useLowercase:!0,useDigits:!0,useSpecialChars:!0,minimumDigitCount:3,avoidAmbiguousCharacters:!1,requireEveryCharType:!0};settings=angular.merge(_settings,settings);var password=generatePassword(settings.length,settings.useUppercase,settings.useLowercase,settings.useDigits,settings.useSpecialChars,settings.minimumDigitCount,settings.avoidAmbiguousCharacters,settings.requireEveryCharType);return password}}}})}(),function(){angular.module("passmanApp").directive("progressBar",["$translate",function($translate){return{restrict:"A",template:'<div class="progress"><div class="progress-bar" role="progressbar" aria-valuenow="{{progress}}"aria-valuemin="0" aria-valuemax="100" style="width:{{progress}}%;" use-theme><span class="sr-only">{{progress}}% {{completed_text}}</span><span ng-if="index && total" class="progress-label" use-theme type="\'color\'" color="\'true\'">{{index}} / {{total}}</span><span ng-if="!index && !total" class="progress-label" use-theme type="\'color\'" color="\'true\'">{{progress}}%</span></div></div>',scope:{progress:"=progressBar",index:"=index",total:"=total"},link:function(scope){$translate(["complete"]).then(function(translations){scope.completed_text=translations.complete})}}}])}(),function(){angular.module("passmanApp").directive("qrread",["$parse",function($parse){return{scope:!0,link:function(scope,element,attributes){var invoker=$parse(attributes.onRead);scope.imageData=null,qrcode.callback=function(result){invoker(scope,{qrdata:{qrData:result,image:scope.imageData}})},element.bind("change",function(changeEvent){var reader=new FileReader,file=changeEvent.target.files[0];reader.readAsDataURL(file),reader.onload=function(){return function(e){scope.imageData=e.target.result,qrcode.decode(e.target.result)}}(file)})}}}])}(),function(){angular.module("passmanApp").directive("tooltip",[function(){return{restrict:"A",scope:{tooltip:"=tooltip"},link:function(scope,el){scope.$watch("tooltip",function(){scope.tooltip&&(jQuery(el).attr("title",scope.tooltip),jQuery(el).tooltip(),jQuery(el).attr("title",scope.tooltip).tooltip("fixTitle"),jQuery(".tooltip-inner").text(scope.tooltip),jQuery(el).is(":visible"))})}}}])}(),function(){angular.module("passmanApp").directive("useTheme",[function(){function invertColor(hexTripletColor){var color=hexTripletColor;return color=color.substring(1),color=parseInt(color,16),color^=16777215,color=color.toString(16),color=("000000"+color).slice(-6),color="#"+color}return{restrict:"A",scope:{type:"=type",color:"=",negative:"="},link:function(scope,el){var _color=jQuery("#header").css("background-color"),_bg=_color;scope.negative&&(_bg=invertColor(_bg)),scope.type?jQuery(el).css(scope.type,_bg):jQuery(el).css("background-color",_bg),scope.color&&jQuery(el).css("color",invertColor(_color))}}}])}();var PassmanImporter={};!function(window,$,PassmanImporter){PassmanImporter.parseRow_=function(row){row=row.trim();var isQuoted=!1;return'"'===row.charAt(0)&&(row=row.substring(1),isQuoted=!0),'"'===row.charAt(row.length-2)&&(row=row.substring(0,row.length-2),isQuoted=!0),row=isQuoted===!0?row.split('","'):row.split(",")},PassmanImporter.htmlDecode=function(input){var e=document.createElement("div");return e.innerHTML=input,e.childNodes[0].nodeValue},PassmanImporter.toObject_=function(headings,row){for(var result={},i=0,ii=row.length;i<ii;i++)headings[i]?(headings[i]=headings[i].replace(",","_").toLowerCase().replace(" ","_").replace("(","").replace(")","").replace('"',""),result[headings[i]]=row[i]):result[ii]=row[i];return result},PassmanImporter.join_=function(arr,sep){for(var parts=[],i=0,ii=arr.length;i<ii;i++)arr[i]&&parts.push(arr[i]);return parts.join(sep)},PassmanImporter.newCredential=function(){var credential={credential_id:null,guid:null,vault_id:null,label:null,description:null,created:null,changed:null,tags:[],email:null,username:null,password:null,url:null,favicon:null,renew_interval:null,expire_time:0,delete_time:0,files:[],custom_fields:[],otp:{},hidden:!1};return credential},PassmanImporter.readCsv=function(csv,hasHeadings){hasHeadings=void 0===hasHeadings||hasHeadings;var lines=[];return Papa.parse(csv,{complete:function(results){if(results.data)for(var headings=hasHeadings?results.data[0]:null,start=hasHeadings?1:0,i=start;i<results.data.length;i++){var _row=hasHeadings?PassmanImporter.toObject_(headings,results.data[i]):results.data[i];lines.push(_row)}}}),lines},PassmanImporter.readJson=function(string){return JSON.parse(string)}}(window,$,PassmanImporter),String.prototype.replaceAll=function(search,replacement){var target=this;return target.replace(new RegExp(search,"g"),replacement)},Array.prototype.clean=function(deleteValue){for(var i=0;i<this.length;i++)this[i]===deleteValue&&(this.splice(i,1),i--);return this};var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.clippers={info:{name:"Clipperz.is",id:"clippers",exportSteps:["Go to menu -> Export -> Download HTML + JSON. Fields will be imported as custom fields."]}},PassmanImporter.clippers.readFile=function(file_data){return new C_Promise(function(){var credential_list=[],re=/<textarea>(.*?)<\/textarea>/gi,matches=re.exec(file_data);if(matches){var raw_json=matches[0].substring(10);raw_json=PassmanImporter.htmlDecode(raw_json.slice(0,-11));for(var json_objects=PassmanImporter.readJson(raw_json),i=0;i<json_objects.length;i++){var card=json_objects[i];re=/(\w+)/gi;var tags=card.label.match(re);card.label=card.label.replace(tags.join(" "),"").trim(),tags=tags.map(function(item){return{text:item.replace("","")}});var _credential=PassmanImporter.newCredential();_credential.label=card.label,_credential.description=card.data.notes,_credential.tags=tags;for(var field in card.currentVersion.fields){var field_data=card.currentVersion.fields[field];_credential.custom_fields.push({label:field_data.label,value:field_data.value,secret:field_data.hidden===!0})}_credential.label&&credential_list.push(_credential);var progress={percent:i/json_objects.length*100,loaded:i,total:json_objects.length};this.call_progress(progress)}}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.dashLaneCsv={info:{name:"Dashlane 4 csv",id:"dashLaneCsv",exportSteps:["Create an csv export. Go to File -> export -> Unsecured archive (readable) in CSV format"]}},PassmanImporter.dashLaneCsv.readFile=function(file_data){return new C_Promise(function(){for(var rows=file_data.split("\n"),credential_list=[],i=0;i<rows.length;i++){var row=rows[i],row_data=row.split('","');'"'===row_data[0].charAt(0)&&(row_data[0]=row_data[0].substring(1)),'"'===row_data[row_data.length-1].toString().charAt(row_data[row_data.length-1].length-1)&&(row_data[row_data.length-1]=row_data[row_data.length-1].substring(0,row_data[row_data.length-1].length-1));var _credential=PassmanImporter.newCredential();_credential.label=row_data[0],_credential.username=row_data[2],_credential.password=row_data[row_data.length-2],_credential.url=row_data[0],_credential.description=row_data[row_data.length-1],_credential.label&&credential_list.push(_credential);var progress={percent:i/rows.length*100,loaded:i,total:rows.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){function parseEnpass(fileData){var lastProperty,matches,loginBlocks,property;loginBlocks=fileData.replaceAll("Title :","<~passman~>\nTitle :").split("<~passman~>\n").clean("");for(var regex=/(.*) : (.*)/,results=[],l=0;l<loginBlocks.length;l++){for(var loginBlock=loginBlocks[l],lrow=loginBlock.split("\n"),result={},r=0;r<lrow.length;r++){var row=lrow[r];matches=regex.exec(row),matches?(property=matches[1],result[property]=matches[2]):lastProperty&&(result[lastProperty]+="\n"+row),property&&(lastProperty=property)}results.push(result)}return results}PassmanImporter.EnPassTXT={info:{name:"EnPass text file",id:"EnPassTXT",exportSteps:['Access your Enpass Database. Select "File" > "Export" > "As Text"']}},PassmanImporter.EnPassTXT.readFile=function(file_data){var mapper={Title:"label",Username:"username",Password:"password",Email:"email",Url:"url",Note:"description"},secret_fields=["cvc","pin","security answer"];return new C_Promise(function(){for(var credential_list=[],credentials=parseEnpass(file_data),i=0;i<credentials.length;i++){var enpass_credential=credentials[i],new_credential=PassmanImporter.newCredential();for(var key in enpass_credential)if(enpass_credential.hasOwnProperty(key))if(mapper.hasOwnProperty(key)){var prop=mapper[key];new_credential[prop]=enpass_credential[key]}else if("TOTP"!==key){var isSecret=secret_fields.indexOf(key.toLowerCase())!==-1?1:0;new_credential.custom_fields.push({label:key,value:enpass_credential[key],secret:isSecret})}enpass_credential.hasOwnProperty("TOTP")&&(new_credential.otp.secret=enpass_credential.TOTP);var progress={percent:i/credentials.length*100,loaded:i,total:credentials.length};credential_list.push(new_credential),this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.keepassCsv={info:{name:"KeePass csv",id:"keepassCsv",exportSteps:["Create an csv export with the following options enabled: http://i.imgur.com/CaeTA4d.png"]}},PassmanImporter.keepassCsv.readFile=function(file_data){var p=new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row.account,_credential.username=row.login_name,_credential.password=row.password,_credential.url=row.web_site,row.hasOwnProperty("expires")&&(row.expires=row.expires.replace('"',""),_credential.expire_time=new Date(row.expires).getTime()/1e3);var tags=row.group?[{text:row.group}]:[];if(row.hasOwnProperty("group_tree"))for(var exploded_tree=row.group_tree.split("\\\\"),t=0;t<exploded_tree.length;t++)exploded_tree[t].trim().length>0&&tags.push({text:exploded_tree[t].trim()});_credential.tags=tags,credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)});return p}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.lastpassCsv={info:{name:"LastPass csv",id:"lastpassCsv",exportSteps:["Create an csv export. Go to More options -> Advanced -> Export -> Last Pass CSV File"]}},PassmanImporter.lastpassCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=PassmanImporter.htmlDecode(row.name),_credential.username=row.username,_credential.password=row.password,_credential.url=row.url,_credential.tags=row.grouping?[{text:row.grouping}]:[],_credential.description=row.extra,_credential.label&&"undefined"!==_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){var steps=["Backups for the Passwords app need to be enabled on the Admin panel (they are disabled by default).","On the Passwords App, in the bottom left corner, press Settings",'Press "Download Backup"',"Confirm the export and save the file"];PassmanImporter.passwordsApp={info:{name:"Passwords App csv",id:"passwordsApp",exportSteps:steps}},PassmanImporter.passwordsApp.readFile=function(file_data){var p=new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row.website+" - "+row.username,_credential.username=row.username,_credential.password=row.password,_credential.url=row.fulladdress,_credential.description=row.notes,credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)});return p}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.padlock={info:{name:"Padlock",id:"padlock",exportSteps:["Create a csv export. Go to Menu -> Settings -> Export Data and copy text into a .csv file"]}},PassmanImporter.padlock.readFile=function(file_data){return new C_Promise(function(){for(var rows=PassmanImporter.readCsv(file_data,!0),credential_list=[],i=0;i<rows.length;i++){var row=rows[i],_credential=PassmanImporter.newCredential(),j=0;for(var k in row)row[k]&&("name"!=k?"username"!=k?"password"!=k?"url"!=k.toLowerCase()?"e-mail"!=k.toLowerCase()&&"email"!=k.toLowerCase()?"description"!=k.toLowerCase()?(_credential.custom_fields[j]={label:k,value:row[k],secret:!0,field_type:"text"},j++):_credential.description=row[k]:_credential.email=row[k]:_credential.url=row[k]:_credential.password=row.password:_credential.username=row.username:_credential.label=row.name);_credential.label&&credential_list.push(_credential);var progress={percent:i/rows.length*100,loaded:i,total:rows.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.passmanJson={info:{name:"Passman JSON",id:"passmanJson",exportSteps:["Export the item in passman as passman json, with all fields enabled"]}},PassmanImporter.passmanJson.readFile=function(file_data){return new C_Promise(function(){for(var parsed_json=PassmanImporter.readJson(file_data),credential_list=[],i=0;i<parsed_json.length;i++){var item=parsed_json[i],_credential=PassmanImporter.newCredential();if(_credential.label=item.label,_credential.username=item.account,_credential.password=item.password,_credential.email=item.email,_credential.url=item.url,_credential.tags=item.tags,_credential.description=item.description,item.hasOwnProperty("customFields")&&item.customFields.length>0)for(var cf=0;cf<item.customFields.length;cf++)_credential.custom_fields.push({label:item.customFields[cf].label,value:item.customFields[cf].value,secret:"1"===item.customFields[cf].clicktoshow});item.hasOwnProperty("otpsecret")&&item.otpsecret&&(_credential.otp={issuer:item.otpsecret.issuer,label:item.otpsecret.label,qr_uri:{image:item.otpsecret.qrCode,qrData:""},secret:item.otpsecret.secret,type:item.otpsecret.type}),_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_json.length*100,loaded:i,total:parsed_json.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.passpackCsv={info:{name:"Passpack csv",id:"passpackCsv",exportSteps:["Go to Tools -> Export. Select Comma Separated Values, All entries then continue."]}},PassmanImporter.passpackCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data,!1),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row[0],_credential.username=row[1],_credential.password=row[2],_credential.url=row[3];var tags=row[4].split(" ");tags.length>0&&(_credential.tags=tags.map(function(item){if(item)return{text:item}}).filter(function(item){return item})),_credential.description=row[5],_credential.email=row[6],_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.randomData={info:{name:"Random data",id:"randomData",exportSteps:["Create's 50 random credentials for testing purposes."]}},PassmanImporter.randomData.readFile=function(){return new C_Promise(function(){var label,tags=["Social media","Hosting","Forums","Webshops","FTP","SSH","Banking","Applications","Server stuff","mysql","Wifi","Games","Certificate","Serials"],credential_list=[],_this=this,generateCredential=function(max,i,callback){if(jQuery){var url=OC.generateUrl("apps/passman/api/internal/generate_person");$.ajax({url:url,dataType:"json",success:function(data){if(data){var _credential=PassmanImporter.newCredential();label=Math.random()>=.5?data.domain:data.email_d+" - "+data.email_u,_credential.label=label,_credential.username=data.username,_credential.password=data.password,_credential.url=data.url;for(var tag_amount=Math.floor(5*Math.random()),ta=0,_tags=[];ta<tag_amount;){var item=tags[Math.floor(Math.random()*tags.length)];_tags.indexOf(item)===-1&&(_tags.push(item),ta++)}if(_credential.tags=_tags.map(function(item){if(item)return{text:item}}).filter(function(item){return item}),credential_list.push(_credential),i<max){var progress={percent:i/max*100,loaded:i,total:max};_this.call_progress(progress),generateCredential(max,i+1,callback)}else callback(credential_list)}else generateCredential(max,i,callback)}})}};generateCredential(50,1,function(credential_list){_this.call_then(credential_list)})})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.teamPassCsv={info:{name:"TeamPass csv",id:"teamPassCsv",exportSteps:["Go to Tools -> Export. Select Comma Separated Values, All entries then continue."]}},PassmanImporter.teamPassCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data,!1),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row[1],_credential.description=row[2],_credential.password=row[3],_credential.username=row[4];var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};credential_list.push(_credential),this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};if(function(window,$,PassmanImporter){PassmanImporter.zohoCsv={info:{name:"ZOHO csv",id:"zohoCsv",exportSteps:['Create an csv export. Go to Tools -> Export secrets -> Select "General CSV" and click "Export Secrets"']}},PassmanImporter.zohoCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();if(_credential.label=row.secret_name,_credential.url=row.secret_url,_credential.description=row.notes,row.hasOwnProperty("secretdata"))for(var rows=row.secretdata.split("\n"),r=0;r<rows.length;r++){var cells=rows[r].split(":"),key=cells[0],value=cells.slice(1).join(":");key&&value&&_credential.custom_fields.push({label:key,value:value,secret:!1})}""!==_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter),!window.PassmanExporter)var PassmanExporter={getCredentialsWithFiles:function(credentials,FileService,EncryptService){var t={cred:credentials,FS:FileService,ES:EncryptService};return new C_Promise(function(){var _this=this.parent,credentials=_this.cred;this.parent.total=0,this.parent.finished=0,this.parent.fileGUID_cred=[],this.parent.files=[],this.parent.step=function(file){this.parent.finished++,this.call_progress({total:this.parent.total,finished:this.parent.finished});var dta=this.parent.fileGUID_cred[file.guid];file.filename=this.parent.ES.decryptString(file.filename,this.parent.cred[dta.cred_pos].vault_key),file.file_data=this.parent.ES.decryptString(file.file_data,this.parent.cred[dta.cred_pos].vault_key),"files"===dta.on?this.parent.cred[dta.cred_pos][dta.on][dta.at]=file:this.parent.cred[dta.cred_pos][dta.on][dta.at].value=file,this.parent.total===this.parent.finished&&this.call_then(this.parent.cred)}.bind(this);for(var i=0;i<credentials.length;i++){var item=credentials[i];for(c=0;c<item.custom_fields.length;c++){var cf=item.custom_fields[c];"file"===cf.field_type&&(this.parent.total++,this.parent.fileGUID_cred[cf.value.guid]={cred_pos:i,on:"custom_fields",at:c},this.parent.FS.getFile(cf.value).then(function(data){this.parent.step(data)}.bind(this)))}for(var c=0;c<item.files.length;c++)this.parent.total++,this.parent.fileGUID_cred[item.files[c].guid]={cred_pos:i,on:"files",at:c},this.parent.FS.getFile(item.files[c]).then(function(data){this.parent.step(data)}.bind(this))}},t)}};PassmanExporter.csv={info:{name:"CSV",id:"csv",description:"Export credentials as a csv file."}},PassmanExporter.csv.export=function(credentials,FileService,EncryptService){return new C_Promise(function(){PassmanExporter.getCredentialsWithFiles(credentials,FileService,EncryptService).then(function(){for(var headers=["label","username","password","email","description","tags","url","custom_fields","files"],file_data='"'+headers.join('","')+'"\n',i=0;i<credentials.length;i++){for(var _credential=credentials[i],row_data=[],h=0;h<headers.length;h++){var field=headers[h];if("tags"===field){for(var _tags=[],t=0;t<_credential[field].length;t++)_tags.push(_credential[field][t].text);var tag_data="["+_tags.join(",")+"]";row_data.push('"'+tag_data+'"')}else if("custom_fields"==field||"files"==field){var _fields=JSON.stringify(_credential[field]);_fields=_fields.replaceAll('"','""'),row_data.push('"'+_fields+'"')}else row_data.push('"'+_credential[field]+'"')}var progress={percent:i/credentials.length*100,loaded:i,total:credentials.length};this.call_progress(progress),file_data+=row_data.join(",")+"\n"}this.call_then(),download(file_data,"passman-export.csv")}.bind(this)).progress(function(){})})},PassmanExporter.json={info:{name:"JSON",id:"json",description:"Export credentials as a JSON file."}},PassmanExporter.json.export=function(credentials,FileService,EncryptService){return new C_Promise(function(){PassmanExporter.getCredentialsWithFiles(credentials,FileService,EncryptService).then(function(){for(var _output=[],i=0;i<credentials.length;i++){var _credential=angular.copy(credentials[i]);delete _credential.vault_key,delete _credential.vault_id,delete _credential.shared_key,_output.push(_credential);var progress={percent:i/credentials.length*100,loaded:i,total:credentials.length};this.call_progress(progress)}var file_data=JSON.stringify(_output);this.call_then(),download(file_data,"passman-export.json")}.bind(this)).progress(function(){})})},function(){angular.module("passmanApp").controller("BookmarkletCtrl",["$scope","$rootScope","$location","VaultService","CredentialService","SettingsService","NotificationService","EncryptService","TagService","FileService","ShareService","$translate",function($scope,$rootScope,$location,VaultService,CredentialService,SettingsService,NotificationService,EncryptService,TagService,FileService,ShareService,$translate){if($scope.active_vault=!1,$scope.http_warning_hidden=!0,"http"===$location.$$protocol&&($scope.using_http=!0),$scope.logout=function(){$scope.active_vault=!1},SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));VaultService.getVault(_vault).then(function(vault){vault.vaultKey=angular.copy(SettingsService.getSetting("defaultVaultPass")),VaultService.setActiveVault(vault),$scope.active_vault=vault,$scope.pwSettings=VaultService.getVaultSetting("pwSettings",{length:12,useUppercase:!0,useLowercase:!0,useDigits:!0,useSpecialChars:!0,minimumDigitCount:3,avoidAmbiguousCharacters:!1,requireEveryCharType:!0,generateOnCreate:!0})})}VaultService.getVaults().then(function(vaults){$scope.vaults=vaults}),$scope.default_vault=!1,$scope.remember_vault_password=!1,$scope.list_selected_vault=!1,$scope.toggleDefaultVault=function(){$scope.default_vault=!$scope.default_vault,$scope.default_vault===!0?SettingsService.setSetting("defaultVault",$scope.list_selected_vault):SettingsService.setSetting("defaultVault",null)},$scope.toggleRememberPassword=function(){$scope.remember_vault_password=!$scope.remember_vault_password,$scope.remember_vault_password&&(SettingsService.setSetting("defaultVault",$scope.list_selected_vault),$scope.default_vault=!0),$scope.remember_vault_password!==!0&&SettingsService.setSetting("defaultVault",null)},$scope.clearState=function(){$scope.list_selected_vault=!1,$scope.creating_vault=!1,$scope.error=!1},$scope.selectVault=function(vault){$scope.list_selected_vault=vault},$scope.sharing_keys={},$scope.newVault=function(){$scope.creating_vault=!0;var key_size=1024;ShareService.generateRSAKeys(key_size).progress(function(progress){var p=progress>0?2:1,msg=$translate.instant("generating.sharing.keys");msg=msg.replace("%step",p),$scope.creating_keys=msg,$scope.$digest()}).then(function(kp){var pem=ShareService.rsaKeyPairToPEM(kp);$scope.creating_keys=!1,$scope.sharing_keys.private_sharing_key=pem.privateKey,$scope.sharing_keys.public_sharing_key=pem.publicKey,$scope.$digest()})};var _loginToVault=function(vault,vault_key){var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),delete _vault.credentials,$scope.active_vault=_vault};$scope.vaultDecryptionKey="",$scope.loginToVault=function(vault,vault_key){$scope.error=!1;var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),VaultService.setActiveVault(_vault);try{EncryptService.decryptString(vault.challenge_password),$scope.remember_vault_password&&SettingsService.setSetting("defaultVaultPass",vault_key),_loginToVault(vault,vault_key)}catch(e){$scope.error=$translate.instant("invalid.vault.key")}},$scope.createVault=function(vault_name,vault_key,vault_key2){return vault_key!==vault_key2?void($scope.error=$translate.instant("password.do.not.match")):void VaultService.createVault(vault_name).then(function(vault){$scope.vaults.push(vault);var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),VaultService.setActiveVault(_vault);var test_credential=CredentialService.newCredential();test_credential.label="Test key for vault "+vault_name,test_credential.hidden=!0,test_credential.vault_id=vault.vault_id,test_credential.password="lorum ipsum",CredentialService.createCredential(test_credential).then(function(){_vault.public_sharing_key=angular.copy($scope.sharing_keys.public_sharing_key),_vault.private_sharing_key=EncryptService.encryptString(angular.copy($scope.sharing_keys.private_sharing_key)),VaultService.updateSharingKeys(_vault).then(function(){_loginToVault(vault,vault_key)})})})},$scope.storedCredential=CredentialService.newCredential();var QueryString=function(){for(var query_string={},query=window.location.search.substring(1),vars=query.split("&"),i=0;i<vars.length;i++){var pair=vars[i].split("=");if("undefined"==typeof query_string[pair[0]])query_string[pair[0]]=decodeURIComponent(pair[1]);else if("string"==typeof query_string[pair[0]]){var arr=[query_string[pair[0]],decodeURIComponent(pair[1])];
-query_string[pair[0]]=arr}else query_string[pair[0]].push(decodeURIComponent(pair[1]))}return query_string}(),query_string=QueryString;$scope.storedCredential.label=query_string.title,$scope.storedCredential.url=query_string.url,$scope.setHttpWarning=function(state){$scope.http_warning_hidden=state},$translate(["general","password","custom.fields","files","otp"]).then(function(translations){$scope.tabs=[{title:translations.general,url:"views/partials/forms/edit_credential/basics.html",color:"blue"},{title:translations.password,url:"views/partials/forms/edit_credential/password.html",color:"green"},{title:translations["custom.fields"],url:"views/partials/forms/edit_credential/custom_fields.html",color:"orange"},{title:translations.files,url:"views/partials/forms/edit_credential/files.html",color:"yellow"},{title:translations.otp,url:"views/partials/forms/edit_credential/otp.html",color:"purple"}],$scope.currentTab=$scope.tabs[0]}),$scope.getTags=function($query){return TagService.searchTag($query)},$scope.onClickTab=function(tab){$scope.currentTab=tab},$scope.isActiveTab=function(tab){return tab.url===$scope.currentTab.url},$scope.pwGenerated=function(pass){$scope.storedCredential.password_repeat=pass};var _customField={label:"",value:"",secret:!1,field_type:"text"};$scope.selected_field_type="text",$scope.new_custom_field=angular.copy(_customField),$scope.addCustomField=function(){var _field=angular.copy($scope.new_custom_field);if(_field.label||NotificationService.showNotification($translate.instant("error.no.label"),3e3),_field.value||NotificationService.showNotification($translate.instant("error.no.value"),3e3),_field.label&&_field.value)if($scope.selected_field_type="text",_field.secret=angular.copy("password"===$scope.selected_field_type),_field.field_type=angular.copy($scope.selected_field_type),"file"===_field.field_type){var _file=$scope.new_custom_field.value;FileService.uploadFile(_file).then(function(result){delete result.file_data,result.filename=EncryptService.decryptString(result.filename),_field.value=result,$scope.storedCredential.custom_fields.push(_field),$scope.new_custom_field=angular.copy(_customField)})}else $scope.storedCredential.custom_fields.push(_field),$scope.new_custom_field=angular.copy(_customField)},$scope.addFileToCustomField=function(file){var _file={filename:file.name,size:file.size,mimetype:file.type,data:file.data};$scope.new_custom_field.value=_file,$scope.$digest()},$scope.deleteCustomField=function(field){field.hasOwnProperty("field_type")&&"file"===field.field_type&&FileService.deleteFile(field.value);var idx=$scope.storedCredential.custom_fields.indexOf(field);$scope.storedCredential.custom_fields.splice(idx,1)},$scope.new_file={name:"",data:null},$scope.deleteFile=function(file){var idx=$scope.storedCredential.files.indexOf(file);FileService.deleteFile(file).then(function(){$scope.storedCredential.files.splice(idx,1)})},$scope.fileLoaded=function(file){var _file={filename:file.name,size:file.size,mimetype:file.type,data:file.data};FileService.uploadFile(_file).then(function(result){delete result.file_data,result.filename=EncryptService.decryptString(result.filename),$scope.storedCredential.files.push(result)}),$scope.$digest()},$scope.fileLoadError=function(error){return error},$scope.selected_file="",$scope.fileprogress=[],$scope.fileSelectProgress=function(progress){progress&&($scope.fileprogress=progress,$scope.$digest())},$scope.renewIntervalValue=0,$scope.renewIntervalModifier="0",$scope.updateInterval=function(renewIntervalValue,renewIntervalModifier){var value=parseInt(renewIntervalValue),modifier=parseInt(renewIntervalModifier);value&&modifier&&($scope.storedCredential.renew_interval=value*modifier)},$scope.parseQR=function(QRCode){var parsedQR,qrInfo,re=/otpauth:\/\/(totp|hotp)\/(.*)\?(secret|issuer)=(.*)&(issuer|secret)=(.*)/;qrInfo=[],parsedQR=QRCode.qrData.match(re),parsedQR&&(qrInfo={type:parsedQR[1],label:decodeURIComponent(parsedQR[2]),qr_uri:QRCode}),qrInfo[parsedQR[3]]=parsedQR[4],qrInfo[parsedQR[5]]=parsedQR[6],$scope.storedCredential.otp=qrInfo,$scope.$digest()},$scope.saveCredential=function(){delete $scope.storedCredential.password_repeat,$scope.storedCredential.credential_id||($scope.storedCredential.vault_id=$scope.active_vault.vault_id,CredentialService.createCredential($scope.storedCredential).then(function(){NotificationService.showNotification($translate.instant("credential.created"),5e3)}))}}])}(),function(){angular.module("passmanApp").controller("CredentialCtrl",["$scope","VaultService","SettingsService","$location","CredentialService","$rootScope","FileService","EncryptService","TagService","$timeout","NotificationService","CacheService","ShareService","SharingACL","$interval","$filter","$routeParams","$sce","$translate",function($scope,VaultService,SettingsService,$location,CredentialService,$rootScope,FileService,EncryptService,TagService,$timeout,NotificationService,CacheService,ShareService,SharingACL,$interval,$filter,$routeParams,$sce,$translate){if($scope.active_vault=VaultService.getActiveVault(),SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=angular.copy(SettingsService.getSetting("defaultVaultPass")),VaultService.setActiveVault(_vault),$scope.active_vault=_vault}}else $scope.active_vault||$location.path("/");$scope.show_spinner=!0;var fetchCredentials=function(){VaultService.getVault({guid:$routeParams.vault_id}).then(function(vault){var vaultKey=angular.copy($scope.active_vault.vaultKey),_credentials=angular.copy(vault.credentials);vault.credentials=[],$scope.active_vault=vault,$scope.active_vault.vaultKey=vaultKey,VaultService.setActiveVault($scope.active_vault);for(var i=0;i<_credentials.length;i++){var _credential=_credentials[i];try{if(_credential.shared_key){var enc_key=EncryptService.decryptString(_credential.shared_key);_credential=ShareService.decryptSharedCredential(angular.copy(_credential),enc_key)}else _credential=CredentialService.decryptCredential(angular.copy(_credential));_credential.tags_raw=_credential.tags}catch(e){NotificationService.showNotification($translate.instant("error.decrypt"),5e3)}_credentials[i]=_credential}ShareService.getCredendialsSharedWithUs(vault.guid).then(function(shared_credentials){for(var c=0;c<shared_credentials.length;c++){var _shared_credential_data,_shared_credential=shared_credentials[c],decrypted_key=EncryptService.decryptString(_shared_credential.shared_key);try{_shared_credential_data=ShareService.decryptSharedCredential(_shared_credential.credential_data,decrypted_key)}catch(e){}_shared_credential_data&&(delete _shared_credential.credential_data,_shared_credential_data.acl=_shared_credential,_shared_credential_data.acl.permissions=new SharingACL(_shared_credential_data.acl.permissions),_shared_credential_data.tags_raw=_shared_credential_data.tags,_credentials.push(_shared_credential_data))}if(angular.merge($scope.active_vault.credentials,_credentials),$scope.show_spinner=!1,$rootScope.$broadcast("credentials_loaded"),!vault.private_sharing_key){var key_size=1024;ShareService.generateRSAKeys(key_size).then(function(kp){var pem=ShareService.rsaKeyPairToPEM(kp);$scope.creating_keys=!1,$scope.active_vault.private_sharing_key=pem.privateKey,$scope.active_vault.public_sharing_key=pem.publicKey,$scope.$digest(),VaultService.updateSharingKeys($scope.active_vault)})}})})},getPendingShareRequests=function(){ShareService.getPendingRequests().then(function(shareRequests){shareRequests.length>0&&($scope.incoming_share_requests=shareRequests,jQuery(".share_popup").dialog({width:600,position:["center",90]}))})},refresh_data_interval=null;$scope.active_vault&&($scope.$parent.selectedVault=!0,fetchCredentials(),getPendingShareRequests(),refresh_data_interval=$interval(function(){fetchCredentials(),getPendingShareRequests()},3e5)),$scope.$on("$destroy",function(){$interval.cancel(refresh_data_interval)}),$scope.permissions=new SharingACL(0),$scope.hasPermission=function(acl,permission){if(acl){var tmp=new SharingACL(acl.permission);return tmp.hasPermission(permission)}return!0},$scope.acceptShareRequest=function(share_request){var crypted_shared_key=share_request.shared_key,private_key=EncryptService.decryptString(VaultService.getActiveVault().private_sharing_key);private_key=ShareService.rsaPrivateKeyFromPEM(private_key),crypted_shared_key=private_key.decrypt(forge.util.decode64(crypted_shared_key)),crypted_shared_key=EncryptService.encryptString(crypted_shared_key),ShareService.saveSharingRequest(share_request,crypted_shared_key).then(function(){var idx=$scope.incoming_share_requests.indexOf(share_request);$scope.incoming_share_requests.splice(idx,1);for(var active_share_requests=!1,v=0;v<$scope.incoming_share_requests.length;v++)$scope.incoming_share_requests[v].target_vault_id===$scope.active_vault.vault_id&&(active_share_requests=!0);active_share_requests===!1&&(jQuery(".ui-dialog").remove(),fetchCredentials())})},$scope.declineShareRequest=function(share_request){ShareService.declineSharingRequest(share_request).then(function(){var idx=$scope.incoming_share_requests.indexOf(share_request);$scope.incoming_share_requests.splice(idx,1);for(var active_share_requests=!1,v=0;v<$scope.incoming_share_requests.length;v++)$scope.incoming_share_requests[v].target_vault_id===$scope.active_vault.vault_id&&(active_share_requests=!0);active_share_requests===!1&&(jQuery(".ui-dialog").remove(),fetchCredentials())})};var settingsLoaded=function(){$scope.settings=SettingsService.getSettings()};SettingsService.getSetting("settings_loaded")?settingsLoaded():$rootScope.$on("settings_loaded",function(){settingsLoaded()}),$scope.addCredential=function(){var new_credential=CredentialService.newCredential(),enc_c=CredentialService.encryptCredential(new_credential);SettingsService.setSetting("edit_credential",enc_c),$location.path("/vault/"+$scope.active_vault.guid+"/new")},$scope.editCredential=function(credential){var _credential=angular.copy(credential);$rootScope.$emit("app_menu",!1),SettingsService.setSetting("edit_credential",CredentialService.encryptCredential(_credential)),$location.path("/vault/"+$scope.active_vault.guid+"/edit/"+_credential.guid)},$scope.getRevisions=function(credential){var _credential=angular.copy(credential);$rootScope.$emit("app_menu",!1),SettingsService.setSetting("revision_credential",CredentialService.encryptCredential(_credential)),$location.path("/vault/"+$scope.active_vault.guid+"/"+_credential.guid+"/revisions")},$scope.shareCredential=function(credential){var _credential=angular.copy(credential);$rootScope.$emit("app_menu",!1),SettingsService.setSetting("share_credential",CredentialService.encryptCredential(_credential)),$location.path("/vault/"+$scope.active_vault.guid+"/"+_credential.guid+"/share")};var notification;$scope.deleteCredential=function(credential){var _credential=angular.copy(credential);try{_credential=CredentialService.decryptCredential(_credential)}catch(e){}_credential.delete_time=(new Date).getTime()/1e3;for(var i=0;i<$scope.active_vault.credentials.length;i++)$scope.active_vault.credentials[i].credential_id===credential.credential_id&&($scope.active_vault.credentials[i].delete_time=_credential.delete_time);$scope.closeSelected(),notification&&NotificationService.hideNotification(notification);var key=CredentialService.getSharedKeyFromCredential(_credential);CredentialService.updateCredential(_credential,!1,key).then(function(){notification=NotificationService.showNotification($translate.instant("credential.deleted"),5e3)})},$scope.recoverCredential=function(credential){var _credential=angular.copy(credential);try{_credential=CredentialService.decryptCredential(_credential)}catch(e){}for(var i=0;i<$scope.active_vault.credentials.length;i++)$scope.active_vault.credentials[i].credential_id===credential.credential_id&&($scope.active_vault.credentials[i].delete_time=0);_credential.delete_time=0,$scope.closeSelected(),notification&&NotificationService.hideNotification(notification);var key=CredentialService.getSharedKeyFromCredential(_credential);CredentialService.updateCredential(_credential,!1,key).then(function(){NotificationService.showNotification($translate.instant("credential.recovered"),5e3)})},$scope.destroyCredential=function(credential){var _credential=angular.copy(credential);CredentialService.destroyCredential(_credential.guid).then(function(){for(var i=0;i<$scope.active_vault.credentials.length;i++)if($scope.active_vault.credentials[i].credential_id===credential.credential_id){$scope.active_vault.credentials.splice(i,1),NotificationService.showNotification($translate.instant("credential.destroyed"),5e3);break}})},$scope.view_mode="list",$scope.switchViewMode=function(viewMode){$scope.view_mode=viewMode},$scope.filterOptions={filterText:"",fields:["label","username","email","custom_fields"]},$scope.filtered_credentials=[],$scope.$watch("[selectedtags, filterOptions, delete_time, active_vault.credentials]",function(){if($scope.active_vault&&$scope.active_vault.credentials){var credentials=angular.copy($scope.active_vault.credentials),filtered_credentials=$filter("credentialSearch")(credentials,$scope.filterOptions);filtered_credentials=$filter("tagFilter")(filtered_credentials,$scope.selectedtags),filtered_credentials=$filter("filter")(filtered_credentials,{hidden:0}),$scope.filtered_credentials=filtered_credentials,$scope.filterOptions.selectedtags=angular.copy($scope.selectedtags);for(var i=0;i<$scope.active_vault.credentials.length;i++){var _credential=$scope.active_vault.credentials[i];_credential.tags&&TagService.addTags(_credential.tags)}}},!0),$scope.selectedtags=[];var to;$rootScope.$on("selected_tags_updated",function(evt,_sTags){for(var _selectedTags=[],x=0;x<_sTags.length;x++)_selectedTags.push(_sTags[x].text);$scope.selectedtags=_selectedTags,$timeout.cancel(to),_selectedTags.length>0&&(to=$timeout(function(){if($scope.filtered_credentials){for(var _filtered_tags=[],i=0;i<$scope.filtered_credentials.length;i++)for(var tags=$scope.filtered_credentials[i].tags_raw,x=0;x<tags.length;x++){var tag=tags[x].text;_filtered_tags.indexOf(tag)===-1&&_filtered_tags.push(tag)}$rootScope.$emit("limit_tags_in_list",_filtered_tags)}},50))}),$scope.delete_time=0,$scope.showCredentialRow=function(credential){return 0===$scope.delete_time?0===credential.delete_time:credential.delete_time>$scope.delete_time},$rootScope.$on("set_delete_time",function(event,time){$scope.delete_time=time}),$scope.setDeleteTime=function(delete_time){$scope.delete_time=delete_time},$scope.selectedCredential=!1,$scope.selectCredential=function(credential){credential.description&&(credential.description_html=$sce.trustAsHtml(angular.copy(credential.description).replace("\n","<br />"))),$scope.selectedCredential=angular.copy(credential),$rootScope.$emit("app_menu",!0)},$scope.closeSelected=function(){$rootScope.$emit("app_menu",!1),$scope.selectedCredential=!1},$rootScope.$on("logout",function(){$scope.active_vault=null,$scope.credentials=[]}),$scope.clearState=function(){$scope.delete_time=0}}])}(),function(){angular.module("passmanApp").controller("CredentialEditCtrl",["$scope","VaultService","CredentialService","SettingsService","$location","$routeParams","FileService","EncryptService","TagService","NotificationService","ShareService","$translate",function($scope,VaultService,CredentialService,SettingsService,$location,$routeParams,FileService,EncryptService,TagService,NotificationService,ShareService,$translate){if($scope.active_vault=VaultService.getActiveVault(),SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=SettingsService.getSetting("defaultVaultPass"),VaultService.setActiveVault(_vault),$scope.active_vault=_vault}}else if(!$scope.active_vault)return void $location.path("/");VaultService.getVault($scope.active_vault).then(function(vault){vault.vaultKey=VaultService.getActiveVault().vaultKey,delete vault.credentials,VaultService.setActiveVault(vault),$scope.pwSettings=VaultService.getVaultSetting("pwSettings",{length:12,useUppercase:!0,useLowercase:!0,useDigits:!0,useSpecialChars:!0,minimumDigitCount:3,avoidAmbiguousCharacters:!1,requireEveryCharType:!0,generateOnCreate:!0})}),$scope.currentTab={title:$translate.instant("general"),url:"views/partials/forms/edit_credential/basics.html",color:"blue"},$scope.otpType="qrcode",$translate(["general","password","custom.fields","files","otp"]).then(function(translations){$scope.tabs=[{title:translations.general,url:"views/partials/forms/edit_credential/basics.html",color:"blue"},{title:translations.password,url:"views/partials/forms/edit_credential/password.html",color:"green"},{title:translations["custom.fields"],url:"views/partials/forms/edit_credential/custom_fields.html",color:"orange"},{title:translations.files,url:"views/partials/forms/edit_credential/files.html",color:"yellow"},{title:translations.otp,url:"views/partials/forms/edit_credential/otp.html",color:"purple"}],$scope.currentTab=$scope.tabs[0]}),$scope.active_vault&&($scope.$parent.selectedVault=!0);var storedCredential=SettingsService.getSetting("edit_credential");storedCredential?($scope.storedCredential=CredentialService.decryptCredential(angular.copy(storedCredential)),$scope.storedCredential.password_repeat=angular.copy($scope.storedCredential.password),$scope.storedCredential.expire_time=1e3*$scope.storedCredential.expire_time):CredentialService.getCredential($routeParams.credential_id).then(function(result){$scope.storedCredential=CredentialService.decryptCredential(angular.copy(result))}),$scope.getTags=function($query){return TagService.searchTag($query)},$scope.onClickTab=function(tab){$scope.currentTab=tab},$scope.isActiveTab=function(tab){return tab.url===$scope.currentTab.url},$scope.pwGenerated=function(pass){$scope.storedCredential.password_repeat=pass};var _customField={label:"",value:"",secret:!1,field_type:"text"};$scope.selected_field_type="text",$scope.new_custom_field=angular.copy(_customField),$scope.addCustomField=function(){var _field=angular.copy($scope.new_custom_field);if(_field.label||NotificationService.showNotification($translate.instant("error.no.label"),3e3),_field.value||NotificationService.showNotification($translate.instant("error.no.value"),3e3),_field.label&&_field.value)if($scope.selected_field_type="text",_field.secret="password"===_field.field_type,"file"===_field.field_type){var key=!1,_file=$scope.new_custom_field.value;!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),FileService.uploadFile(_file,key).then(function(result){delete result.file_data,result.filename=EncryptService.decryptString(result.filename,key),_field.value=result,$scope.storedCredential.custom_fields.push(_field),$scope.new_custom_field=angular.copy(_customField)})}else $scope.storedCredential.custom_fields.push(_field),$scope.new_custom_field=angular.copy(_customField)},$scope.addFileToCustomField=function(file){var _file={filename:file.name,size:file.size,mimetype:file.type,data:file.data};$scope.new_custom_field.value=_file,$scope.$digest()},$scope.deleteCustomField=function(field){field.hasOwnProperty("field_type")&&"file"===field.field_type&&FileService.deleteFile(field.value);var idx=$scope.storedCredential.custom_fields.indexOf(field);$scope.storedCredential.custom_fields.splice(idx,1)},$scope.new_file={name:"",data:null},$scope.deleteFile=function(file){var idx=$scope.storedCredential.files.indexOf(file);FileService.deleteFile(file).then(function(){$scope.storedCredential.files.splice(idx,1)})},$scope.fileLoaded=function(file){var key,_file={filename:file.name,size:file.size,mimetype:file.type,data:file.data};!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),FileService.uploadFile(_file,key).then(function(result){delete result.file_data,result.filename=EncryptService.decryptString(result.filename,key),$scope.storedCredential.files.push(result)}),$scope.$digest()},$scope.fileLoadError=function(error){console.log($translate.instant("error.loading.file"),error)},$scope.selected_file="",$scope.fileprogress=[],$scope.fileSelectProgress=function(progress){progress&&($scope.fileprogress=progress,$scope.$digest())},$scope.renewIntervalValue=0,$scope.renewIntervalModifier="0",$scope.updateInterval=function(renewIntervalValue,renewIntervalModifier){var value=parseInt(renewIntervalValue),modifier=parseInt(renewIntervalModifier);value&&modifier&&($scope.storedCredential.renew_interval=value*modifier)},$scope.parseQR=function(QRCode){if(!QRCode)return void NotificationService.showNotification($translate.instant("invalid.qr"),5e3);var uri=new URL(QRCode.qrData),type=uri.href.indexOf("totp/")!==-1?"totp":"hotp",label=uri.pathname.replace("//"+type+"/","");$scope.storedCredential.otp={type:type,label:decodeURIComponent(label),qr_uri:QRCode,issuer:uri.searchParams.get("issuer"),secret:uri.searchParams.get("secret")},$scope.$digest()},$scope.saveCredential=function(){if($scope.new_custom_field.label&&$scope.new_custom_field.value&&$scope.storedCredential.custom_fields.push(angular.copy($scope.new_custom_field)),$scope.storedCredential.password!==$scope.storedCredential.password_repeat)return void NotificationService.showNotification($translate.instant("password.do.not.match"),5e3);if(delete $scope.storedCredential.password_repeat,$scope.storedCredential.credential_id){var key,_credential;!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),_credential=key?ShareService.encryptSharedCredential($scope.storedCredential,key):angular.copy($scope.storedCredential),delete _credential.shared_key;var _useKey=null!=key,regex=/(<([^>]+)>)/gi;_credential.description&&""!==_credential.description&&(_credential.description=_credential.description.replace(regex,"")),CredentialService.updateCredential(_credential,_useKey).then(function(){SettingsService.setSetting("edit_credential",null),$location.path("/vault/"+$routeParams.vault_id),NotificationService.showNotification($translate.instant("credential.updated"),5e3)})}else $scope.storedCredential.vault_id=$scope.active_vault.vault_id,CredentialService.createCredential($scope.storedCredential).then(function(){$location.path("/vault/"+$routeParams.vault_id),NotificationService.showNotification($translate.instant("credential.created"),5e3)})},$scope.cancel=function(){$location.path("/vault/"+$routeParams.vault_id)}}])}(),function(){angular.module("passmanApp").controller("ExportCtrl",["$scope","$window","CredentialService","VaultService","FileService","EncryptService","$translate",function($scope,$window,CredentialService,VaultService,FileService,EncryptService,$translate){$scope.available_exporters=[],$scope.active_vault=VaultService.getActiveVault(),$scope.confirm_key="",$scope.$watch(function(){return $window.PassmanExporter},function(exporters){exporters=Object.keys(angular.copy(exporters));for(var i=0;i<exporters.length;i++){var exporter=exporters[i];$window.PassmanExporter[exporter].hasOwnProperty("info")&&$scope.available_exporters.push($window.PassmanExporter[exporter].info)}},!0),$scope.log=[],$scope.setExporter=function(exporter){exporter=JSON.parse(exporter),$scope.selectedExporter=exporter};var _log=function(str){$scope.log.push(str)};$scope.startExport=function(){if($scope.error=!1,VaultService.getActiveVault().vaultKey!==$scope.confirm_key){var msg=$translate.instant("invalid.vault.key");return $scope.error=msg,void _log(msg)}_log($translate.instant("export.starting"));var _credentials=[];VaultService.getVault(VaultService.getActiveVault()).then(function(vault){if(_log($translate.instant("export.decrypt")),vault.hasOwnProperty("credentials")&&vault.credentials.length>0){for(var i=0;i<vault.credentials.length;i++){var _credential=angular.copy(vault.credentials[i]);if(0===_credential.hidden){var key=CredentialService.getSharedKeyFromCredential(_credential);_credential=CredentialService.decryptCredential(_credential,key),_credential.vault_key=key,_credentials.push(_credential)}}$window.PassmanExporter[$scope.selectedExporter.id].export(_credentials,FileService,EncryptService).then(function(){_log($translate.instant("done"))})}})}}])}(),function(){angular.module("passmanApp").controller("GenericCsvImportCtrl",["$scope","CredentialService","$translate",function($scope,CredentialService,$translate){$scope.hello="world",$scope.credentialProperties=[{label:"Label",prop:"label",matching:["label","title","name"]},{label:"Username",prop:"username",matching:["username","user","login","login name"]},{label:"Password",prop:"password",matching:["password","pass","pw"]},{label:"TOTP Secret",prop:"otp",matching:["totp"]},{label:"Custom field",prop:"custom_field"},{label:"Notes",prop:"description",matching:["notes","description","comments"]},{label:"Email",prop:"email",matching:["email","mail"]},{label:"URL",prop:"url",matching:["website","url","fulladdress","site","web site"]},{label:"Tags",prop:"tags"},{label:"Ignored",prop:null}];var tagMapper=function(t){return{text:t}},rowToCredential=function(row){for(var _credential=PassmanImporter.newCredential(),k=0;k<$scope.import_fields.length;k++){var field=$scope.import_fields[k];if(field)if("otp"===field)_credential.otp.secret=row[k];else if("custom_field"===field){var key=$scope.matched?$scope.parsed_csv[0][k]:"Custom field "+k;_credential.custom_fields.push({label:key,value:row[k],secret:0})}else if("tags"===field){if(row[k]){var tags=row[k].split(",");_credential.tags=tags.map(tagMapper)}}else _credential[field]=row[k]}return _credential};$scope.inspectCredential=function(row){$scope.inspected_credential=rowToCredential(row)},$scope.csvLoaded=function(file){$scope.import_fields=[],$scope.inspected_credential=!1,$scope.matched=!1,$scope.skipFirstRow=!1;var file_data=file.data.split(",");file_data=decodeURIComponent(escape(window.atob(file_data[1]))),Papa.parse(file_data,{complete:function(results){if(results.data){for(var i=0;i<results.data[0].length;i++){var propName=results.data[0][i];$scope.import_fields[i]=null;for(var p=0;p<$scope.credentialProperties.length;p++){var credentialProperty=$scope.credentialProperties[p];credentialProperty.matching&&credentialProperty.matching.indexOf(propName.toLowerCase())!==-1&&($scope.import_fields[i]=credentialProperty.prop,$scope.matched=!0)}}$scope.matched&&$scope.inspectCredential(results.data[1]),$scope.parsed_csv=results.data,$scope.$apply()}}})};var addCredential=function(index){function handleState(index){$scope.parsed_csv[index+1]?($scope.import_progress={progress:index/$scope.parsed_csv.length*100,loaded:index,total:$scope.parsed_csv.length},addCredential(index+1)):($scope.import_progress={progress:100,loaded:$scope.parsed_csv.length,total:$scope.parsed_csv.length},$scope.log.push($translate.instant("done")),$scope.importing=!1)}var _credential=rowToCredential($scope.parsed_csv[index]);return _credential.vault_id=$scope.active_vault.vault_id,_credential.label?($scope.log.push($translate.instant("import.adding",{credential:_credential.label})),void CredentialService.createCredential(_credential).then(function(result){result.credential_id&&($scope.log.push($translate.instant("import.added",{credential:_credential.label})),handleState(index))})):($scope.log.push($translate.instant("import.skipping",{line:index})),void handleState(index))};$scope.importing=!1,$scope.startCSVImport=function(){$scope.importing=!0,$scope.log=[];var start=$scope.skipFirstRow?1:0;addCredential(start)},$scope.updateExample=function(){var start=$scope.skipFirstRow?1:0;$scope.inspectCredential($scope.parsed_csv[start])}}])}(),function(){angular.module("passmanApp").controller("ImportCtrl",["$scope","$window","CredentialService","VaultService","$translate",function($scope,$window,CredentialService,VaultService,$translate){$scope.available_importers=[],$scope.active_vault=VaultService.getActiveVault(),$scope.$watch(function(){return $window.PassmanImporter},function(importers){for(var key in importers){var importer=importers[key];importer.hasOwnProperty("info")&&$scope.available_importers.push(importer.info)}},!0),$scope.log=[],$scope.setImporter=function(importer){importer=JSON.parse(importer),$scope.selectedImporter=importer};var file_data,_log=function(str){$scope.log.push(str)};$scope.fileLoaded=function(file){file_data=file.data.split(","),file_data=decodeURIComponent(escape(window.atob(file_data[1]))),_log($translate.instant("import.file.read")),$scope.$digest()},$scope.fileLoadError=function(file){console.error($translate.instant("error.loading.file"),file)},$scope.fileSelectProgress=function(){};var parsed_data;$scope.import_progress={progress:0,loaded:0,total:0};var addCredential=function(parsed_data_index){if(parsed_data[parsed_data_index]){var _credential=parsed_data[parsed_data_index];if(!_credential.label)return void(parsed_data[parsed_data_index+1]&&(_log($translate.instant("import.no.label")),addCredential(parsed_data_index+1)));_log($translate.instant("import.adding",{credential:_credential.label})),_credential.vault_id=$scope.active_vault.vault_id,CredentialService.createCredential(_credential).then(function(result){result.credential_id&&(_log($translate.instant("import.added",{credential:_credential.label})),parsed_data[parsed_data_index+1]?($scope.import_progress={progress:parsed_data_index/parsed_data.length*100,loaded:parsed_data_index,total:parsed_data.length},addCredential(parsed_data_index+1)):($scope.import_progress={progress:100,loaded:parsed_data.length,total:parsed_data.length},_log($translate.instant("done"))))})}};$scope.file_read_progress={percent:0,loaded:0,total:0},$scope.startImport=function(){$scope.import_progress=0,$scope.file_read_percent=0,file_data&&$window.PassmanImporter[$scope.selectedImporter.id].readFile(file_data).then(function(parseddata){parsed_data=parseddata,$scope.file_read_progress={percent:100,loaded:parsed_data.length,total:parsed_data.length};var msg=$translate.instant("import.loaded").replace("{{num}}",parsed_data.length);_log(msg),parsed_data.length>0&&addCredential(0)}).progress(function(progress){$scope.file_read_progress=progress,$scope.$digest()})}}])}(),function(){angular.module("passmanApp").controller("MainCtrl",["$scope","$rootScope","$location","SettingsService","$window","$interval","$filter",function($scope,$rootScope,$location,SettingsService,$window,$interval,$filter){$scope.selectedVault=!1,$scope.http_warning_hidden=!0,"http"===$location.$$protocol&&"localhost"!==$location.$$host&&"127.0.0.1"!==$location.$host&&($scope.using_http=!0,$scope.http_warning_hidden=!1),$rootScope.$on("settings_loaded",function(){SettingsService.isEnabled("disable_contextmenu")&&document.addEventListener("contextmenu",function(event){event.preventDefault()}),SettingsService.isEnabled("https_check")&&($scope.http_warning_hidden=!0),SettingsService.isEnabled("disable_debugger")&&!function a(){
-try{!function b(i){1===(""+i/i).length&&i%20!==0||function(){}.constructor("debugger")(),b(++i)}(0)}catch(e){setTimeout(a,5e3)}}()}),$rootScope.setHttpWarning=function(state){$scope.http_warning_hidden=state},$rootScope.$on("app_menu",function(evt,shown){$scope.app_sidebar=shown}),$rootScope.$on("logout",function(){$scope.selectedVault=!1});var tickSessionTimer=function(){if($scope.session_time_left){$scope.session_time_left--;var session_time_left_formatted=$filter("toHHMMSS")($scope.session_time_left);$scope.translationData={session_time:session_time_left_formatted},$rootScope.$broadcast("logout_timer_tick_tack",$scope.session_time_left),0===$scope.session_time_left&&$window.location.reload()}};$scope.session_time_left=!1,$scope.$on("logout_timer_set",function(evt,timer){$scope.session_time_left=timer,$scope.translationData={session_time:timer},$interval(tickSessionTimer,1e3)})}])}(),function(){angular.module("passmanApp").controller("MenuCtrl",["$scope","VaultService","$location","$rootScope","TagService","SettingsService",function($scope,VaultService,$location,$rootScope,TagService,SettingsService){$rootScope.logout=function(){SettingsService.setSetting("defaultVaultPass",!1),TagService.resetTags(),$rootScope.$broadcast("logout"),$location.path("/")},$scope.selectedTags=[],$scope.getTags=function($query){return TagService.searchTag($query)},$scope.$watch(function(){return VaultService.getActiveVault()},function(vault){$scope.active_vault=vault}),$scope.filtered_tags=[],$rootScope.$on("limit_tags_in_list",function(evt,tags){$scope.filtered_tags=[];for(var i=0;i<tags.length;i++){for(var tag={text:tags[i]},found=!1,x=0;x<$scope.selectedTags.length;x++)$scope.selectedTags[x].text===tag.text&&(found=!0);found===!1&&$scope.filtered_tags.push(tag)}}),$scope.$watch("selectedTags",function(){$rootScope.$broadcast("selected_tags_updated",$scope.selectedTags)},!0),$scope.tagClicked=function(tag){$scope.selectedTags.push(tag)},$rootScope.$on("credentials_loaded",function(){$rootScope.$broadcast("selected_tags_updated",$scope.selectedTags)}),$scope.available_tags=TagService.getTags(),$scope.$watch(function(){return 0===$scope.selectedTags.length?TagService.getTags():$scope.filtered_tags},function(tags){$scope.available_tags=tags},!0),$scope.toggleDeleteTime=function(){$scope.delete_time>0?$scope.delete_time=0:$scope.delete_time=1,$rootScope.$broadcast("set_delete_time",$scope.delete_time)}}])}(),function(){angular.module("passmanApp").controller("PublicSharedCredential",["$scope","ShareService","$window","EncryptService","NotificationService","$translate",function($scope,ShareService,$window,EncryptService,NotificationService,$translate){var _key;$scope.loading=!1,$scope.loadSharedCredential=function(){$scope.loading=!0;var data=window.atob($window.location.hash.replace("#","")).split("<::>"),guid=data[0];_key=data[1],ShareService.getPublicSharedCredential(guid).then(function(sharedCredential){$scope.loading=!1,200===sharedCredential.status?$scope.shared_credential=ShareService.decryptSharedCredential(sharedCredential.data.credential_data,_key):$scope.expired=!0})},$scope.downloadFile=function(credential,file){ShareService.downloadSharedFile(credential,file).then(function(result){if(!result.hasOwnProperty("file_data"))return void NotificationService.showNotification($translate.instant("error.loading.file.perm"),5e3);var file_data=EncryptService.decryptString(result.file_data,_key);download(file_data,escapeHTML(file.filename),file.mimetype)})}}])}(),function(){angular.module("passmanApp").controller("RevisionCtrl",["$scope","SettingsService","VaultService","CredentialService","$location","$routeParams","$rootScope","NotificationService","$filter","ShareService","EncryptService","$translate",function($scope,SettingsService,VaultService,CredentialService,$location,$routeParams,$rootScope,NotificationService,$filter,ShareService,EncryptService,$translate){if($scope.active_vault=VaultService.getActiveVault(),SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=SettingsService.getSetting("defaultVaultPass"),VaultService.setActiveVault(_vault),VaultService.getVault(_vault).then(function(vault){vault.vaultKey=SettingsService.getSetting("defaultVaultPass"),VaultService.setActiveVault(vault),$scope.active_vault=vault,$scope.$parent.selectedVault=!0})}}else $scope.active_vault||$location.path("/");$scope.active_vault&&($scope.$parent.selectedVault=!0);var storedCredential=SettingsService.getSetting("revision_credential"),getRevisions=function(){CredentialService.getRevisions($scope.storedCredential.guid).then(function(revisions){$scope.revisions=revisions})};storedCredential?($scope.storedCredential=CredentialService.decryptCredential(angular.copy(storedCredential)),getRevisions()):CredentialService.getCredential($routeParams.credential_id).then(function(result){$scope.storedCredential=CredentialService.decryptCredential(angular.copy(result)),getRevisions()}),$scope.selectRevision=function(revision){var key;$scope.selectedRevision=angular.copy(revision),!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),key?$scope.selectedRevision.credential_data=ShareService.decryptSharedCredential(angular.copy(revision.credential_data),key):$scope.selectedRevision.credential_data=CredentialService.decryptCredential(angular.copy(revision.credential_data)),$rootScope.$emit("app_menu",!0)},$scope.closeSelected=function(){$rootScope.$emit("app_menu",!1),$scope.selectedRevision=!1},$scope.deleteRevision=function(revision){CredentialService.deleteRevision($scope.storedCredential.guid,revision.revision_id).then(function(){for(var i=0;i<$scope.revisions.length;i++)if($scope.revisions[i].revision_id===revision.revision_id){$scope.revisions.splice(i,1),NotificationService.showNotification($translate.instant("revision.deleted"),5e3);break}})},$scope.restoreRevision=function(revision){var key,_revision=angular.copy(revision),_credential=_revision.credential_data;!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),key&&(_credential=ShareService.encryptSharedCredential(_credential,key)),delete _credential.shared_key,_credential.revision_created=$filter("date")(1e3*_revision.created,"dd-MM-yyyy @ HH:mm:ss"),CredentialService.updateCredential(_credential,key).then(function(){SettingsService.setSetting("revision_credential",null),$rootScope.$emit("app_menu",!1),$location.path("/vault/"+$routeParams.vault_id),NotificationService.showNotification($translate.instant("revision.restored"),5e3)})},$scope.cancelRevision=function(){$location.path("/vault/"+$routeParams.vault_id),$scope.storedCredential=null,SettingsService.setSetting("revision_credential",null)}}])}(),function(){angular.module("passmanApp").controller("SettingsCtrl",["$scope","$rootScope","SettingsService","VaultService","CredentialService","$location","$routeParams","$http","EncryptService","NotificationService","$sce","$translate",function($scope,$rootScope,SettingsService,VaultService,CredentialService,$location,$routeParams,$http,EncryptService,NotificationService,$sce,$translate){if($scope.vault_settings={},$scope.new_vault_name="",$scope.showGenericImport=!1,$scope.active_vault=VaultService.getActiveVault(),SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=SettingsService.getSetting("defaultVaultPass"),VaultService.setActiveVault(_vault),$scope.active_vault=_vault}}else if(!$scope.active_vault)return void $location.path("/");VaultService.getVault($scope.active_vault).then(function(vault){vault.vaultKey=VaultService.getActiveVault().vaultKey,delete vault.credentials,VaultService.setActiveVault(vault),$scope.vault_settings=vault.vault_settings,$scope.vault_settings.hasOwnProperty("pwSettings")||($scope.vault_settings.pwSettings={length:12,useUppercase:!0,useLowercase:!0,useDigits:!0,useSpecialChars:!0,minimumDigitCount:3,avoidAmbiguousCharacters:!1,requireEveryCharType:!0,generateOnCreate:!0})});var key_strengths=["password.poor","password.poor","password.weak","password.good","password.strong"];$scope.minimal_value_key_strength=SettingsService.getSetting("vault_key_strength"),$translate(key_strengths[SettingsService.getSetting("vault_key_strength")]).then(function(translation){$scope.required_score={strength:translation}});var btn_txt=$translate.instant("bookmarklet.text"),http=location.protocol,slashes=http.concat("//"),host=slashes.concat(window.location.hostname),complete=host+location.pathname;$scope.bookmarklet=$sce.trustAsHtml('<a class="button" href="javascript:(function(){var a=window,b=document,c=encodeURIComponent,e=c(document.title),d=a.open(\''+complete+"bookmarklet?url='+c(b.location)+'&title='+e,'bkmk_popup','left='+((a.screenX||a.screenLeft)+10)+',top='+((a.screenY||a.screenTop)+10)+',height=750px,width=475px,resizable=0,alwaysRaised=1');a.setTimeout(function(){d.focus()},300);})();\">"+btn_txt+"</a>"),$scope.saveVaultSettings=function(){var _vault=$scope.active_vault;_vault.name=$scope.new_vault_name,_vault.vault_settings=angular.copy($scope.vault_settings),VaultService.updateVault(_vault).then(function(){$scope.active_vault.name=angular.copy(_vault.name),NotificationService.showNotification($translate.instant("settings.saved"),5e3)})},$scope.tabs=[{title:$translate.instant("settings.general"),url:"views/partials/forms/settings/general_settings.html"},{title:$translate.instant("settings.audit"),url:"views/partials/forms/settings/tool.html"},{title:$translate.instant("settings.password"),url:"views/partials/forms/settings/password_settings.html"},{title:$translate.instant("settings.import"),url:"views/partials/forms/settings/import.html"},{title:$translate.instant("settings.export"),url:"views/partials/forms/settings/export.html"},{title:$translate.instant("settings.sharing"),url:"views/partials/forms/settings/sharing.html"}],$scope.currentTab=$scope.tabs[0],$scope.onClickTab=function(tab){$scope.currentTab=tab},$scope.isActiveTab=function(tab){return tab.url===$scope.currentTab.url};var getPassmanVersion=function(){var url=OC.generateUrl("apps/passman/api/internal/version");$http.get(url).then(function(result){$scope.passman_version=result.data.version})};getPassmanVersion(),$scope.$watch(function(){return VaultService.getActiveVault()},function(vault){vault&&($scope.active_vault=vault)}),$rootScope.$on("logout",function(){$scope.selectedVault=!1});var getCurrentVaultCredentials=function(callback){VaultService.getVault($scope.active_vault).then(callback)};$scope.startScan=function(minStrength){getCurrentVaultCredentials(function(vault){for(var results=[],i=0;i<vault.credentials.length;i++){var c=angular.copy(vault.credentials[i]);if(c.password&&0===c.hidden)try{if(c=CredentialService.decryptCredential(c),c.password){var zxcvbn_result=zxcvbn(c.password);zxcvbn_result.score<=minStrength&&results.push({guid:c.guid,label:c.label,password:c.password,password_zxcvbn_result:zxcvbn_result})}}catch(e){console.warn(e)}}$scope.scan_result=results})},$scope.cur_state={},$scope.$on("$locationChangeStart",function(event){$scope.change_pw&&$scope.change_pw.total>0&&$scope.change_pw.done<$scope.change_pw.total&&(confirm($translate.instant("changepw.navigate.away.warning"))||event.preventDefault())}),$scope.changeVaultPassword=function(oldVaultPass,newVaultPass,newVaultPass2){return $scope.error="",oldVaultPass!==VaultService.getActiveVault().vaultKey?void($scope.error=$translate.instant("incorrect.password")):newVaultPass!==newVaultPass2?void($scope.error=$translate.instant("password.no.match")):(SettingsService.setSetting("defaultVault",null),SettingsService.setSetting("defaultVaultPass",null),void VaultService.getVault($scope.active_vault).then(function(vault){jQuery("input").attr("disabled",!0),jQuery("button").attr("disabled",!0);var _selected_credentials=angular.copy(vault.credentials);$scope.change_pw={percent:0,done:0,total:_selected_credentials.length};var changeCredential=function(index,oldVaultPass,newVaultPass){var usedKey=oldVaultPass;_selected_credentials[index].hasOwnProperty("shared_key")&&_selected_credentials[index].shared_key&&(usedKey=EncryptService.decryptString(angular.copy(_selected_credentials[index].shared_key),oldVaultPass)),CredentialService.reencryptCredential(_selected_credentials[index].guid,usedKey,newVaultPass).progress(function(data){$scope.cur_state=data}).then(function(){var percent=index/_selected_credentials.length*100;$scope.change_pw={percent:percent,done:index+1,total:_selected_credentials.length},index<_selected_credentials.length-1?changeCredential(index+1,oldVaultPass,newVaultPass):(vault.private_sharing_key=EncryptService.decryptString(angular.copy(vault.private_sharing_key),oldVaultPass),vault.private_sharing_key=EncryptService.encryptString(vault.private_sharing_key,newVaultPass),VaultService.updateSharingKeys(vault).then(function(){$rootScope.$broadcast("logout"),NotificationService.showNotification($translate.instant("login.new.pass"),5e3)}))})};changeCredential(0,VaultService.getActiveVault().vaultKey,newVaultPass)}))},$scope.confirm_vault_delete=!1,$scope.delete_vault_password="",$scope.delete_vault=function(){$scope.confirm_vault_delete&&$scope.delete_vault_password===VaultService.getActiveVault().vaultKey&&getCurrentVaultCredentials(function(vault){var credentials=vault.credentials;$scope.remove_pw={percent:0,done:0,total:vault.credentials.length};var deleteCredential=function(index){$scope.translationData={password:credentials[index].label},CredentialService.destroyCredential(credentials[index].guid).then(function(){var percent=index/vault.credentials.length*100;return $scope.remove_pw={percent:percent,done:index,total:vault.credentials.length},index===credentials.length-1?void VaultService.deleteVault(vault).then(function(){SettingsService.setSetting("defaultVaultPass",!1),SettingsService.setSetting("defaultVault",null),$rootScope.$broadcast("logout"),$location.path("/")}):void deleteCredential(index+1)})};deleteCredential(0)})},$rootScope.$on("logout",function(){$scope.active_vault=null,VaultService.setActiveVault(null),$location.path("/")}),$scope.cancel=function(){$location.path("/vault/"+$routeParams.vault_id)}}])}(),function(){angular.module("passmanApp").controller("ShareCtrl",["$scope","VaultService","CredentialService","SettingsService","$location","$routeParams","ShareService","NotificationService","SharingACL","EncryptService","$translate","$rootScope",function($scope,VaultService,CredentialService,SettingsService,$location,$routeParams,ShareService,NotificationService,SharingACL,EncryptService,$translate,$rootScope){$scope.active_vault=VaultService.getActiveVault(),$scope.tabs=[{title:$translate.instant("share.u.g"),url:"views/partials/forms/share_credential/basics.html"},{title:$translate.instant("share.link"),url:"views/partials/forms/share_credential/link_sharing.html",color:"green"}],$scope.currentTab=$scope.tabs[0];var settingsLoaded=function(){var settings=SettingsService.getSettings();0!==settings.user_sharing_enabled&&"0"!==settings.user_sharing_enabled||$scope.tabs.splice(0,1),0!==settings.link_sharing_enabled&&"0"!==settings.link_sharing_enabled||$scope.tabs.splice(1,1),$scope.tabs.length>0&&($scope.currentTab=$scope.tabs[0])};if(SettingsService.getSetting("settings_loaded")?settingsLoaded():$rootScope.$on("settings_loaded",function(){settingsLoaded()}),$scope.onClickTab=function(tab){$scope.currentTab=tab},$scope.isActiveTab=function(tab){return tab.url===$scope.currentTab.url},SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=angular.copy(SettingsService.getSetting("defaultVaultPass")),VaultService.setActiveVault(_vault),$scope.active_vault=_vault}}else $scope.active_vault||$location.path("/");var storedCredential=SettingsService.getSetting("share_credential");storedCredential?$scope.storedCredential=CredentialService.decryptCredential(angular.copy(storedCredential)):$location.path("/vault/"+$routeParams.vault_id),$scope.active_vault&&($scope.$parent.selectedVault=!0),$scope.cancel=function(){SettingsService.setSetting("share_credential",null),$location.path("/vault/"+$routeParams.vault_id)},$scope.default_permissions=new SharingACL(0),$scope.default_permissions.addPermission($scope.default_permissions.permissions.READ|$scope.default_permissions.permissions.WRITE|$scope.default_permissions.permissions.FILES);var link_acl=angular.copy($scope.default_permissions);link_acl.removePermission($scope.default_permissions.permissions.WRITE);var oneMonthLater=new Date;oneMonthLater.setMonth(oneMonthLater.getMonth()+1),$scope.share_settings={linkSharing:{enabled:!1,settings:{expire_time:oneMonthLater,expire_views:5,acl:link_acl}},credentialSharedWithUserAndGroup:[],cypher_progress:{done:0,total:0},upload_progress:{done:0,total:0}};var getAcl=function(){ShareService.getSharedCredentialACL($scope.storedCredential).then(function(aclList){for(var _list=[],enc_key=!!$scope.storedCredential.shared_key&&EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key)),i=0;i<aclList.length;i++){var acl=aclList[i];if(null===acl.user_id){if($scope.share_settings.linkSharing={enabled:!0,settings:{expire_time:new Date(1e3*acl.expire),expire_views:acl.expire_views,acl:new SharingACL(acl.permissions)}},enc_key){var hash=window.btoa($scope.storedCredential.guid+"<::>"+enc_key);$scope.share_link=getShareLink(hash)}}else{var obj={userId:acl.user_id,displayName:acl.user_id,type:"user",acl:new SharingACL(acl.permissions),acl_id:acl.acl_id,pending:acl.pending,credential_guid:acl.item_guid,created:acl.created};_list.push(obj)}}$scope.share_settings.credentialSharedWithUserAndGroup=_list})};getAcl();new SharingACL(0);$scope.$watch("share_settings.upload_progress.done",function(){$scope.share_settings.upload_progress.done===$scope.share_settings.upload_progress.total&&$scope.share_settings.upload_progress.total>0&&getAcl()}),$scope.inputSharedWith=[],$scope.searchUsers=function($query){return ShareService.search($query)},$scope.hasPermission=function(acl,permission){return acl.hasPermission(permission)},$scope.setPermission=function(acl,permission){acl.togglePermission(permission)},$scope.shareWith=function(shareWith){if($scope.inputSharedWith=[],shareWith.length>0)for(var i=0;i<shareWith.length;i++){for(var obj={userId:shareWith[i].uid,displayName:shareWith[i].text,type:shareWith[i].type,acl:angular.copy($scope.default_permissions),pending:!0,credential_guid:$scope.storedCredential.guid},found=!1,z=0;z<$scope.share_settings.credentialSharedWithUserAndGroup.length;z++)shareWith[z]&&$scope.share_settings.credentialSharedWithUserAndGroup[z].userId===shareWith[z].uid&&(found=!0);found===!1&&$scope.share_settings.credentialSharedWithUserAndGroup.push(obj)}},$scope.unshareUser=function(user){ShareService.unshareCredentialFromUser($scope.storedCredential,user.userId).then(function(result){if(result.result===!0){var idx=$scope.share_settings.credentialSharedWithUserAndGroup.indexOf(user);$scope.share_settings.credentialSharedWithUserAndGroup.splice(idx,1)}})},$scope.unshareCredential=function(credential){var _credential=angular.copy(credential),old_key=EncryptService.decryptString(angular.copy(_credential.shared_key)),new_key=VaultService.getActiveVault().vaultKey;_credential.shared_key=null,_credential.unshare_action=!0,_credential.skip_revision=!0,CredentialService.reencryptCredential(_credential.guid,old_key,new_key,!0).then(function(data){getAcl();var c=data.cryptogram;c.shared_key=null,c.unshare_action=!0,c.skip_revision=!0,ShareService.unshareCredential(c),CredentialService.updateCredential(c,!0).then(function(){NotificationService.showNotification($translate.instant("credential.unshared"),4e3),$scope.sharing_complete=!0,$scope.storedCredential.shared_key=null,$scope.share_settings.credentialSharedWithUserAndGroup=[]})})},$scope.applyShareToUser=function(user,enc_key){ShareService.getVaultsByUser(user.userId).then(function(data){$scope.share_settings.cypher_progress.total+=data.length,user.vaults=data;var start=(new Date).getTime()/1e3;ShareService.cypherRSAStringWithPublicKeyBulkAsync(user.vaults,enc_key).progress(function(){$scope.share_settings.cypher_progress.done++,$scope.share_settings.cypher_progress.percent=$scope.share_settings.cypher_progress.done/$scope.share_settings.cypher_progress.total*100,$scope.$digest()}).then(function(result){$scope.share_settings.cypher_progress.times.push({time:(new Date).getTime()/1e3-start,user:data[0].user_id}),user.vaults=result,user.hasOwnProperty("acl_id")||$scope.uploadChanges(user),$scope.$digest()})})},$scope.$on("$locationChangeStart",function(event){$scope.sharing_complete||confirm($translate.instant("share.navigate.away.warning"))||event.preventDefault()});var getShareLink=function(hash){var port,defaultPort="http"===$location.$$protocol?80:443;return port=defaultPort!==$location.$$port?":"+$location.$$port:"",$location.$$protocol+"://"+$location.$$host+port+OC.generateUrl("apps/passman/share/public#")+hash};$scope.sharing_complete=!0,$scope.applyShare=function(){if($scope.sharing_complete=!1,$scope.share_settings.cypher_progress.percent=0,$scope.share_settings.cypher_progress.done=0,$scope.share_settings.cypher_progress.total=0,$scope.share_settings.cypher_progress.times=[],$scope.share_settings.cypher_progress.times_total=[],$scope.share_settings.upload_progress.done=0,$scope.share_settings.upload_progress.total=0,$scope.storedCredential.shared_key&&""!==$scope.storedCredential.shared_key&&null!==$scope.storedCredential.shared_key){var enc_key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key));if($scope.share_settings.linkSharing.enabled){var expire_time=new Date(angular.copy($scope.share_settings.linkSharing.settings.expire_time)).getTime()/1e3,shareObj={item_id:$scope.storedCredential.credential_id,item_guid:$scope.storedCredential.guid,permissions:$scope.share_settings.linkSharing.settings.acl.getAccessLevel(),expire_timestamp:expire_time,expire_views:$scope.share_settings.linkSharing.settings.expire_views};ShareService.createPublicSharedCredential(shareObj).then(function(){var hash=window.btoa($scope.storedCredential.guid+"<::>"+enc_key);$scope.share_link=getShareLink(hash)})}for(var list=$scope.share_settings.credentialSharedWithUserAndGroup,i=0;i<list.length;i++){var iterator=i,target_user=list[i];if(target_user.hasOwnProperty("created")){var acl={user_id:target_user.userId,permission:target_user.acl.getAccessLevel()};ShareService.updateCredentialAcl($scope.storedCredential,acl)}else $scope.applyShareToUser(list[iterator],enc_key)}NotificationService.showNotification($translate.instant("saved"),4e3),$scope.sharing_complete=!0}else ShareService.generateSharedKey(20).then(function(key){var encryptedSharedCredential=angular.copy($scope.storedCredential),old_key=VaultService.getActiveVault().vaultKey;CredentialService.reencryptCredential(encryptedSharedCredential.guid,old_key,key).progress(function(){}).then(function(data){var _credential=data.cryptogram;_credential.set_share_key=!0,_credential.skip_revision=!0,_credential.shared_key=EncryptService.encryptString(key),CredentialService.updateCredential(_credential,!0).then(function(){$scope.storedCredential.shared_key=_credential.shared_key,NotificationService.showNotification($translate.instant("credential.shared"),4e3),$scope.sharing_complete=!0})});for(var list=$scope.share_settings.credentialSharedWithUserAndGroup,i=0;i<list.length;i++)"user"===list[i].type&&$scope.applyShareToUser(list[i],key);if($scope.share_settings.linkSharing.enabled){var expire_time=new Date(angular.copy($scope.share_settings.linkSharing.settings.expire_time)).getTime()/1e3,shareObj={item_id:$scope.storedCredential.credential_id,item_guid:$scope.storedCredential.guid,permissions:$scope.share_settings.linkSharing.settings.acl.getAccessLevel(),expire_timestamp:expire_time,expire_views:$scope.share_settings.linkSharing.settings.expire_views};ShareService.createPublicSharedCredential(shareObj).then(function(){var hash=window.btoa($scope.storedCredential.guid+"<::>"+key);$scope.share_link=getShareLink(hash)})}})},$scope.uploadChanges=function(user){$scope.share_settings.upload_progress.total++,user.accessLevel=angular.copy(user.acl.getAccessLevel()),ShareService.shareWithUser(storedCredential,user).then(function(){$scope.share_settings.upload_progress.done++,$scope.share_settings.upload_progress.percent=$scope.share_settings.upload_progress.done/$scope.share_settings.upload_progress.total*100})},$scope.calculate_total_time=function(){$scope.share_settings.cypher_progress.times=$scope.share_settings.cypher_progress.times||[];for(var total=0,i=0;i<$scope.share_settings.cypher_progress.times.length;i++)total+=$scope.share_settings.cypher_progress.times[i].time;return total}}])}(),function(){angular.module("passmanApp").controller("SharingSettingsCtrl",["$scope","VaultService","CredentialService","SettingsService","$location","$routeParams","ShareService","EncryptService",function($scope,VaultService,CredentialService,SettingsService,$location,$routeParams,ShareService,EncryptService){$scope.active_vault=VaultService.getActiveVault(),$scope.sharing_keys=angular.copy(ShareService.getSharingKeys()),$scope.progress=1,$scope.generating=!1,$scope.available_sizes=[{size:1024,name:1024},{size:2048,name:2048},{size:4096,name:4096}],$scope.setKeySize=function(size){for(var i=0;i<$scope.available_sizes.length;i++)if($scope.available_sizes[i].size===size)return void($scope.key_size=$scope.available_sizes[i])},$scope.setKeySize(2048),$scope.generateKeys=function(length){$scope.progress=1,$scope.generating=!0,ShareService.generateRSAKeys(length).progress(function(progress){$scope.progress=progress>0?2:1,$scope.$digest()}).then(function(kp){$scope.generating=!1;var pem=ShareService.rsaKeyPairToPEM(kp);$scope.active_vault.private_sharing_key=EncryptService.encryptString(pem.privateKey),$scope.active_vault.public_sharing_key=pem.publicKey,VaultService.updateSharingKeys($scope.active_vault).then(function(){$scope.sharing_keys=ShareService.getSharingKeys()})})},$scope.updateSharingKeys=function(){$scope.active_vault.private_sharing_key=EncryptService.encryptString(angular.copy($scope.sharing_keys.private_sharing_key)),$scope.active_vault.public_sharing_key=angular.copy($scope.sharing_keys.public_sharing_key),VaultService.updateSharingKeys($scope.active_vault).then(function(){$scope.sharing_keys=ShareService.getSharingKeys()})}}])}(),function(){angular.module("passmanApp").controller("VaultCtrl",["$scope","VaultService","SettingsService","CredentialService","$location","ShareService","EncryptService","$translate","$rootScope","$interval",function($scope,VaultService,SettingsService,CredentialService,$location,ShareService,EncryptService,$translate,$rootScope,$interval){VaultService.getVaults().then(function(vaults){if($scope.vaults=vaults,null!=SettingsService.getSetting("defaultVault"))for(var default_vault=SettingsService.getSetting("defaultVault"),i=0;i<vaults.length;i++){var vault=vaults[i];if(vault.guid===default_vault.guid){$scope.default_vault=!0,$scope.list_selected_vault=vault,SettingsService.setSetting("defaultVault",vault),SettingsService.getSetting("defaultVaultPass")&&$location.path("/vault/"+vault.guid),$scope.vault_tries[vault.guid]={tries:0,timeout:0};break}}});var key_strengths=["password.poor","password.poor","password.weak","password.good","password.strong"];$scope.default_vault=!1,$scope.remember_vault_password=!1,$scope.auto_logout_timer=!1,$scope.logout_timer="0",$scope.list_selected_vault=!1,$scope.minimal_value_key_strength=3;var settingsLoaded=function(){$scope.minimal_value_key_strength=SettingsService.getSetting("vault_key_strength"),$translate(key_strengths[SettingsService.getSetting("vault_key_strength")]).then(function(translation){$scope.required_score={strength:translation}})};SettingsService.getSetting("settings_loaded")?settingsLoaded():$rootScope.$on("settings_loaded",function(){settingsLoaded()}),$scope.toggleDefaultVault=function(){$scope.default_vault=!$scope.default_vault,$scope.default_vault===!0?SettingsService.setSetting("defaultVault",$scope.list_selected_vault):SettingsService.setSetting("defaultVault",null)},$scope.toggleRememberPassword=function(){$scope.remember_vault_password=!$scope.remember_vault_password,$scope.remember_vault_password&&(SettingsService.setSetting("defaultVault",$scope.list_selected_vault),$scope.default_vault=!0),$scope.remember_vault_password!==!0&&SettingsService.setSetting("defaultVault",null)},$scope.toggleAutoLogout=function(){$scope.auto_logout_timer=!$scope.auto_logout_timer},$scope.clearState=function(){$scope.list_selected_vault=!1,$scope.creating_vault=!1,$scope.error=!1},$scope.selectVault=function(vault){$scope.list_selected_vault=vault,$scope.vault_tries[vault.guid]||($scope.vault_tries[vault.guid]={tries:0,timeout:0})},$scope.sharing_keys={},$scope.newVault=function(){$scope.creating_vault=!0;var key_size=1024;ShareService.generateRSAKeys(key_size).progress(function(progress){var p=progress>0?2:1,msg=$translate.instant("generating.sharing.keys");msg=msg.replace("%step",p),$scope.creating_keys=msg,$scope.$digest()}).then(function(kp){var pem=ShareService.rsaKeyPairToPEM(kp);$scope.creating_keys=!1,$scope.sharing_keys.private_sharing_key=pem.privateKey,$scope.sharing_keys.public_sharing_key=pem.publicKey,$scope.$digest()})},$scope.requestDeletion=function(vault){$location.path("/vault/"+vault.guid+"/request-deletion")};var _loginToVault=function(vault,vault_key){var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),delete _vault.credentials;var timer=parseInt($scope.logout_timer);$scope.auto_logout_timer&&timer>0&&$rootScope.$broadcast("logout_timer_set",60*timer),VaultService.setActiveVault(_vault),$location.path("/vault/"+vault.guid)};$scope.selectLogoutTimer=function(time){$scope.auto_logout_timer=!0,$scope.logout_timer=time};var tickLockTimer=function(guid){$scope.vault_tries[guid].timeout=$scope.vault_tries[guid].timeout-1,$scope.vault_tries[guid].timeout<=0&&($interval.cancel($scope.vault_tries[guid].timer),$scope.vault_tries[guid].timeout=0)};$scope.vault_tries={},$scope.vaultDecryptionKey="",$scope.loginToVault=function(vault,vault_key){$scope.error=!1;var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),VaultService.setActiveVault(_vault);try{EncryptService.decryptString(vault.challenge_password),$scope.remember_vault_password&&SettingsService.setSetting("defaultVaultPass",vault_key),_loginToVault(vault,vault_key)}catch(e){if($scope.error=$translate.instant("invalid.vault.key"),$scope.vault_tries[vault.guid].tries=$scope.vault_tries[vault.guid].tries+1,$scope.vault_tries[vault.guid].tries>=3){var duration=Math.pow(2,1/7)*Math.pow(15,4/7)*Math.pow(Math.pow(2,2/7)*Math.pow(15,1/7),$scope.vault_tries[vault.guid].tries);$scope.vault_tries[vault.guid].timeout=duration,
-$scope.vault_tries[vault.guid].hasOwnProperty("timer")&&$interval.cancel($scope.vault_tries[vault.guid].timer),$scope.vault_tries[vault.guid].timer=$interval(function(){tickLockTimer(vault.guid)},1e3)}}},$scope.createVault=function(vault_name,vault_key,vault_key2){return vault_key!==vault_key2?void($scope.error=$translate.instant("password.do.not.match")):void VaultService.createVault(vault_name).then(function(vault){$scope.vaults.push(vault);var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),VaultService.setActiveVault(_vault),SettingsService.setSetting("defaultVaultPass",null),SettingsService.setSetting("defaultVault",null);var test_credential=CredentialService.newCredential();test_credential.label="Test key for vault "+vault_name,test_credential.hidden=!0,test_credential.vault_id=vault.vault_id,test_credential.password="lorum ipsum",CredentialService.createCredential(test_credential).then(function(){_vault.public_sharing_key=angular.copy($scope.sharing_keys.public_sharing_key),_vault.private_sharing_key=EncryptService.encryptString(angular.copy($scope.sharing_keys.private_sharing_key)),VaultService.updateSharingKeys(_vault).then(function(){_loginToVault(vault,vault_key)})})})}}])}(),function(){angular.module("passmanApp").controller("RequestDeleteCtrl",["$scope","$location","$http","$routeParams","VaultService","NotificationService","$translate",function($scope,$location,$http,$routeParams,VaultService,NotificationService,$translate){$scope.reason="",VaultService.getVault({guid:$routeParams.vault_id}).then(function(vault){$scope.pending_deletion=vault.delete_request_pending}),$scope.requestDeletion=function(){var queryUrl=OC.generateUrl("apps/passman/admin/request-deletion/"+$routeParams.vault_id),params={reason:$scope.reason};$http.post(queryUrl,params).then(function(){NotificationService.showNotification($translate.instant("deletion.requested"),5e3),$location.path("#/")})},$scope.removeRequestDeletion=function(){var queryUrl=OC.generateUrl("apps/passman/admin/request-deletion/"+$routeParams.vault_id);$http.delete(queryUrl).then(function(){NotificationService.showNotification($translate.instant("deletion.removed"),5e3),$location.path("#/")})}}])}(),angular.module("templates-main",["views/credential_revisions.html","views/edit_credential.html","views/partials/credential_template.html","views/partials/forms/edit_credential/basics.html","views/partials/forms/edit_credential/custom_fields.html","views/partials/forms/edit_credential/files.html","views/partials/forms/edit_credential/otp.html","views/partials/forms/edit_credential/password.html","views/partials/forms/settings/export.html","views/partials/forms/settings/general_settings.html","views/partials/forms/settings/generic_csv_import.html","views/partials/forms/settings/import.html","views/partials/forms/settings/password_settings.html","views/partials/forms/settings/sharing.html","views/partials/forms/settings/tool.html","views/partials/forms/share_credential/basics.html","views/partials/forms/share_credential/link_sharing.html","views/partials/password-meter.html","views/settings.html","views/share_credential.html","views/show_vault.html","views/vault_req_deletion.html","views/vaults.html"]),angular.module("views/credential_revisions.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/credential_revisions.html",'<div id="controls"><div class="actions creatable"><div class="breadcrumb"><div class="crumb svg ui-droppable"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg"><a ng-click="cancelRevision()">{{active_vault.name}}</a></div><div class="crumb svg last"><a ng-if="storedCredential.credential_id">{{ \'showing.revisions\' | translate}} "{{revision.credential_data.label}}"</a></div></div></div></div><div off-click="closeSelected()"><table class="credential-table" ng-init="menuOpen = false;"><tr ng-repeat="revision in revisions | orderBy:\'-created\'" ng-click="selectRevision(revision)" ng-class="{\'selected\': selectedRevision.revision_id == revision.revision_id}"><td><span class="icon"><i class="fa fa-lock"></i></span> <span class="label">{{ \'revision.of\' | translate}} {{revision.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}} ({{revision.credential_data.label}}) <span ng-if="revision.edited_by">{{ \'revision.edited.by\' | translate}} {{revision.edited_by}}</span></span></td></tr><tr ng-show="revisions.length == 0"><td>{{ \'no.revisions\' | translate}}</td></tr></table><div id="app-sidebar" class="detailsView scroll-container app_sidebar" ng-show="selectedRevision"><span class="close icon-close" ng-click="closeSelected()" alt="Close"></span> <b ng-show="selectedRevision">{{ \'revision.of\' | translate}} {{selectedRevision.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</b><div class="credential-data"><div class="row" ng-show="selectedRevision.credential_data.label"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'label\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.label"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.username"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'account\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.username"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.password"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'password\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.password" secret="\'true\'"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.otp.secret"><div class="col-xs-4 col-md-3 col-lg-3">{{\'otp\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span otp-generator secret="selectedRevision.credential_data.otp.secret"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.email"><div class="col-xs-4 col-md-3 col-lg-3">{{\'email\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.email"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.url"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'url\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.url"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.description"><div class="col-xs-4 col-md-3 col-lg-3">{{\'notes\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.description_html"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.files.length > 0"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'files\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><div ng-repeat="file in selectedRevision.credential_data.files" class="link" ng-click="downloadFile(selectedRevision.credential_data, file)">{{file.filename}} ({{file.size | bytes}})</div></div></div><div class="row" ng-repeat="field in selectedRevision.credential_data.custom_fields"><div class="col-xs-4 col-md-3 col-lg-3">{{field.label}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="field.value" secret="field.secret" ng-if="field.field_type !== \'file\' || !field.field_type"></span> <span ng-if="field.field_type === \'file\'" class="link" ng-click="downloadFile(selectedCredential, field.value)">{{field.value.filename}} ({{field.value.size | bytes}})</span></div></div><div class="row" ng-show="selectedRevision.credential_data.expire_time > 0"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'expire.time\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9">{{selectedRevision.credential_data.expire_time * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row" ng-show="selectedRevision.credential_data.changed"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'changed\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9">{{selectedRevision.credential_data.changed * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row" ng-show="selectedRevision.credential_data.created"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'created\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9">{{selectedRevision.credential_data.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row"><div class="col-xs-12"><div class="tags"><span class="tag" ng-repeat="tag in selectedRevision.credential_data.tags">{{tag.text}}</span></div></div></div></div><div ng-show="selectedRevision"><button class="button" ng-click="restoreRevision(selectedRevision)"><span class="fa fa-edit"></span> {{ \'restore.revision\' | translate}}</button> <button class="button" ng-click="deleteRevision(selectedRevision)"><span class="fa fa-trash"></span> {{ \'delete.revision\' | translate}}</button></div></div></div>')}]),angular.module("views/edit_credential.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/edit_credential.html",'<div id="controls"><div class="actions creatable"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg" data-dir="/Test"><a ng-click="cancel()">{{active_vault.name}}</a></div><div class="crumb svg last" data-dir="/Test"><a ng-if="storedCredential.credential_id">{{ \'edit.credential\' | translate}} "{{storedCredential.label}}"</a> <a ng-if="!storedCredential.credential_id">{{ \'create.credential\' | translate}}</a></div></div></div></div><ul class="tab_header"><li ng-repeat="tab in tabs track by $index" class="tab" ng-class="{active:isActiveTab(tab)}" ng-click="onClickTab(tab)" use-theme color="\'true\'">{{tab.title}}<div class="indicator" use-theme negative="\'true\'"></div></li></ul><div class="tab_container edit_credential" use-theme type="\'border-top-color\'"><div ng-include="currentTab.url"></div><button ng-click="saveCredential()" click-disable>{{ \'save\' | translate}}</button> <button ng-click="cancel()">{{ \'cancel\' | translate}}</button></div>')}]),angular.module("views/partials/credential_template.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/credential_template.html",'<div class="credential-data"><div class="row" ng-show="credential.label && showLabel"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'label\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.label"></span></div></div><div class="row" ng-show="credential.username"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'account\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.username"></span></div></div><div class="row" ng-show="credential.password"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'password\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.password" secret="\'true\'"></span></div></div><div class="row" ng-show="credential.otp.secret"><div class="col-xs-4 col-md-3 col-lg-3">{{\'otp\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span otp-generator secret="credential.otp.secret"></span></div></div><div class="row" ng-show="credential.email"><div class="col-xs-4 col-md-3 col-lg-3">{{\'email\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.email"></span></div></div><div class="row" ng-show="credential.url"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'url\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.url"></span></div></div><div class="row" ng-show="credential.description"><div class="col-xs-4 col-md-3 col-lg-3">{{\'notes\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.description_html"></span></div></div><div class="row" ng-show="credential.files.length > 0"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'files\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><div ng-repeat="file in credential.files" class="link" ng-click="downloadFile(credential, file)">{{file.filename}} ({{file.size | bytes}})</div></div></div><div class="row" ng-repeat="field in credential.custom_fields"><div class="col-xs-4 col-md-3 col-lg-3">{{field.label}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="field.value" secret="field.secret" ng-if="field.field_type !== \'file\' || !field.field_type"></span> <span ng-if="field.field_type === \'file\'" class="link" ng-click="downloadFile(credential, field.value)">{{field.value.filename}} ({{field.value.size | bytes}})</span></div></div><div class="row" ng-show="credential.expire_time > 0"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'expire.time\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9">{{credential.expire_time * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row" ng-show="credential.changed"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'changed\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9">{{credential.changed * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row" ng-show="credential.created"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'created\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9">{{credential.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row"><div class="col-xs-12"><div class="tags"><span class="tag" ng-repeat="tag in credential.tags track by $index">{{tag.text}}</span></div></div></div></div>')}]),angular.module("views/partials/forms/edit_credential/basics.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/edit_credential/basics.html",'<div class="row"><div class="col-xs-12 col-md-6"><label>{{ \'label\' | translate}}</label><div><input type="text" ng-model="storedCredential.label"></div><label>{{ \'username\' | translate}}</label><div><input type="text" ng-model="storedCredential.username"></div><label>{{ \'email\' | translate}}</label><div><input type="text" ng-model="storedCredential.email"></div><label>{{ \'password\' | translate}}</label><div><password-gen ng-model="storedCredential.password" settings="pwSettings" callback="pwGenerated"></password-gen><ng-password-meter password="storedCredential.password"></ng-password-meter></div><div><label>{{ \'password.r\' | translate}}</label><input type="password" ng-model="storedCredential.password_repeat"></div><label>{{ \'url\' | translate}}</label><div><input type="text" ng-model="storedCredential.url"></div></div><div class="col-xs-12 col-md-6"><label>{{ \'notes\' | translate}}</label><div><textarea class="credential_textarea" ng-model="storedCredential.description"></textarea></div><label>{{ \'add.tag\' | translate}}</label><div class="tags_input"><tags-input ng-model="storedCredential.tags" replace-spaces-with-dashes="false"><auto-complete source="getTags($query)" min-length="0"></auto-complete></tags-input></div></div></div>')}]),angular.module("views/partials/forms/edit_credential/custom_fields.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/edit_credential/custom_fields.html",'<div class="row"><div class="col-xs-12 col-md-4"><label>{{ \'field.label\' | translate}}</label><input type="text" ng-model="new_custom_field.label"></div><div class="col-xs-10 col-md-6 field-value"><div class="row"><div class="col-xs-12"><label>{{ \'field.value\' | translate}}</label></div></div><div class="row"><div class="col-xs-8 valueInput"><input type="text" ng-model="new_custom_field.value" ng-show="new_custom_field.field_type === \'text\'"><password-gen ng-model="new_custom_field.value" ng-show="new_custom_field.field_type ===\'password\'" settings="{generateOnCreate: false }"></password-gen><span ng-show="new_custom_field.field_type ===\'file\'"><input id="custom_field_file" class="inputfile" type="file" file-select success="addFileToCustomField" error="fileLoadError" progress="fileSelectProgress"><label for="custom_field_file"><i class="fa fa-upload" aria-hidden="true"></i> {{ new_custom_field.value.filename || \'select.file\' | translate}}</label></span></div><div class="col-xs-4 selectType"><select class="form-control" ng-model="new_custom_field.field_type"><option value="text">{{ \'text\' | translate}}</option><option value="password">{{ \'password\' | translate}}</option><option value="file">{{ \'file\' | translate}}</option></select></div></div><div class="row"><div class="col-xs-12"><ng-password-meter ng-if="new_custom_field.field_type ===\'password\'" password="new_custom_field.value"></ng-password-meter></div></div></div><div class="col-xs-2 col-md-2"><label class="invisible">{{\'add\' | translate}}</label><button ng-click="addCustomField()">+</button></div></div><div class="row custom_fields" ng-if="storedCredential.custom_fields.length > 0"><div class="col-xs-12 table"><table><thead><tr use-theme><td class="dragger"></td><th class="field_label">{{ \'label\' | translate}}</th><th class="field_value">{{ \'value\' | translate}}</th><th class="field_secret">{{ \'type\' | translate}}</th><th class="field_actions">{{ \'actions\' | translate}}</th></tr></thead><tbody ui-sortable ng-model="storedCredential.custom_fields"><tr ng-repeat="field in storedCredential.custom_fields"><td class="dragger"><i class="fa fa-arrows-v"></i></td><td><a href="#" editable-text="field.label">{{ field.label || "empty" }}</a></td><td><span ng-if="field.field_type === \'text\'"><a href="#" editable-text="field.value">{{ field.value || \'empty\' | translate }}</a></span> <span ng-if="field.field_type === \'password\'"><a href="#" editable-password="field.value"><span ng-repeat="n in [] | range:field.value.length">*</span></a></span> <span ng-if="field.field_type === \'file\'">{{field.value.filename}} ({{field.value.size | bytes}})</span></td><td>{{ field.field_type }}</td><td class="field_actions"><i class="fa fa-trash" ng-click="deleteCustomField(field)"></i></td></tr></tbody></table></div></div>')}]),angular.module("views/partials/forms/edit_credential/files.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/edit_credential/files.html",'<div class="row file_tab"><div class="col-xs-12 col-md-6"><input class="inputfile" id="file" type="file" file-select success="fileLoaded" error="fileLoadError" progress="fileSelectProgress"><label for="file"><i class="fa fa-upload" aria-hidden="true"></i> {{\'select.file\' | translate}}</label><span ng-if="fileprogress.file_percent > 0"><div progress-bar="fileprogress.file_percent"></div></span></div></div><div class="row files" ng-if="storedCredential.files.length > 0"><div class="col-xs-12 table"><table><thead use-theme><tr><th class="field_label">{{ \'file.name\' | translate }}</th><th class="field_value">{{ \'upload.date\' | translate}}</th><th class="field_secret">{{ \'size\' | translate}}</th><th class="field_actions">{{ \'actions\' | translate}}</th></tr></thead><tr ng-repeat="file in storedCredential.files"><td><a href="#" editable-text="file.filename">{{ file.filename || "empty" }}</a></td><td>{{file.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td><td>{{file.size | bytes}}</td><td class="field_actions"><i class="fa fa-trash" ng-click="deleteFile(file)"></i></td></tr></table></div></div>')}]),angular.module("views/partials/forms/edit_credential/otp.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/edit_credential/otp.html",'<div class="row"><div class="col-xs-12"><div class="col-xs-4 nopadding"><span class="otpText">{{ \'upload.qr\' | translate}}</span><select ng-model="otpType"><option value="qrcode">Upload QR code</option><option value="secret">Enter secret</option></select></div><div class="col-xs-6 nopadding"><input type="file" qrread on-read="parseQR(qrdata)" class="input_secret" on-read="parseQR(qrdata)" ng-show="otpType === \'qrcode\'"> <input type="text" ng-model="storedCredential.otp.secret" ng-show="otpType === \'secret\'"></div></div></div><div class="row"><div class="col-xs-12" ng-if="storedCredential.otp"><b>{{ \'current.qr\' | translate}}</b></div></div><div class="row"><div class="col-xs-5 col-sm-4 col-md-2" ng-if="storedCredential.otp.qr_uri"><img ng-src="{{storedCredential.otp.qr_uri.image}}"></div><div class="col-sm-4 col-sm-5 col-md-5"><table ng-show="storedCredential.otp"><tr ng-show="storedCredential.otp.type"><td>{{ \'type\' | translate}}:</td><td>{{storedCredential.otp.type}}</td></tr><tr ng-show="storedCredential.otp.label"><td>{{ \'label\' | translate}}:</td><td>{{storedCredential.otp.label}}</td></tr><tr ng-show="storedCredential.otp.issuer"><td>{{ \'issuer\' | translate}}:</td><td>{{storedCredential.otp.issuer}}</td></tr><tr ng-show="storedCredential.otp.secret"><td>{{ \'secret\' | translate}}:</td><td>{{storedCredential.otp.secret}}</td></tr><tr ng-show="storedCredential.otp.secret"><td>{{ \'otp\' | translate}}:</td><td><span otp-generator secret="storedCredential.otp.secret"></span></td></tr></table></div></div>')}]),angular.module("views/partials/forms/edit_credential/password.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/edit_credential/password.html",'<div class="row"><div class="col-xs-12 col-md-5 col-lg-5"><label>{{ \'password\' | translate}}</label><div><password-gen ng-model="storedCredential.password" settings="pwSettings" callback="pwGenerated"></password-gen><ng-password-meter password="storedCredential.password"></ng-password-meter></div><label>{{ \'password.r\' | translate}}</label><div><input type="password" ng-model="storedCredential.password_repeat"></div><label>{{ \'expire.date\' | translate}}</label><div><span datetime-picker ng-model="storedCredential.expire_time" class="link" future-only ng-show="storedCredential.expire_time == 0" close-on-select="false">{{\'no.expire.date\' | translate}}</span> <span datetime-picker ng-model="storedCredential.expire_time" class="link" future-only ng-show="storedCredential.expire_time != 0" close-on-select="false">{{ storedCredential.expire_time | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</span></div><label>{{ \'renew.interval\' | translate}}</label><div><input type="number" ng-model="renewIntervalValue" min="0" ng-change="updateInterval(renewIntervalValue, renewIntervalModifier)"><select ng-model="renewIntervalModifier" ng-change="updateInterval(renewIntervalValue, renewIntervalModifier)"><option value="0">{{ \'disabled\' | translate}}</option><option value="86400">{{ \'days\' | translate }}</option><option value="604800">{{ \'weeks\' | translate}}</option><option value="2592000">{{ \'months\' | translate}}</option><option value="31622400">{{ \'years\' | translate}}</option></select></div></div><div class="col-xs-12 col-md-7 col-lg-7"><b>{{ \'generation.settings\' | translate}}</b><div class="row"><div class="password_settings"><div class="col-xs-12 col-sm-5 col-lg-4"><label><span class="label">{{ \'password.generation.length\' | translate}}</span><br><input type="number" ng-model="pwSettings.length" min="1"></label><label><span class="label">{{\'password.generation.min_digits\' | translate}}</span><br><input type="number" ng-model="pwSettings.minimumDigitCount" min="0"></label></div><div class="col-xs-12 col-sm-6 col-lg-6"><label><input type="checkbox" ng-model="pwSettings.useUppercase"> <span class="label sm">{{ \'password.generation.uppercase\' | translate}}</span></label><label><input ng-model="pwSettings.useLowercase" type="checkbox" id="lower"> <span class="label sm">{{ \'password.generation.lowercase\' | translate}}</span></label><label><input ng-model="pwSettings.useDigits" type="checkbox" id="digits"> <span class="label sm">{{ \'password.generation.digits\' | translate}}</span></label><label><input type="checkbox" id="special" ng-model="pwSettings.useSpecialChars"> <span class="label sm">{{ \'password.generation.special\' | translate}}</span></label><label><input type="checkbox" id="ambig" ng-model="pwSettings.avoidAmbiguousCharacters"> <span class="label sm">{{ \'password.generation.ambiguous\' | translate}}</span></label><label><input type="checkbox" ng-model="pwSettings.requireEveryCharType" id="reqevery"> <span class="label sm">{{ \'password.generation.require_same\' | translate}}</span></label></div></div></div></div></div>')}]),angular.module("views/partials/forms/settings/export.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/settings/export.html",'<div ng-controller="ExportCtrl"><div class="row"><div class="col-xs-6"><label>{{ \'export.type\' | translate}}<select ng-init="raw" ng-model="raw" ng-change="setExporter(raw)"><option ng-repeat="exporter in available_exporters" value="{{exporter}}">{{exporter.name}}</option></select></label><div><b>{{selectedExporter.description}}</b></div><div ng-show="selectedExporter" class="col-xs-3 nopadding"><label>{{ \'export.confirm.text\' | translate }}</label><input type="password" ng-model="confirm_key"><br><div class="alert alert-warning" ng-show="error">{{error}}</div></div><div class="clearfix"><button class="button" ng-click="startExport()" ng-if="selectedExporter">{{ \'export\' | translate}}</button></div></div><div class="col-xs-6"><div ng-if="log" class="import_log"><textarea id="import_log" auto-scroll="log">{{log.join(\'\\n\')}}</textarea></div></div></div></div>')}]),angular.module("views/partials/forms/settings/general_settings.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/settings/general_settings.html",'<div class="row"><div class="col-xs-12 col-md-6"><h3>{{ \'rename.vault\' | translate}}</h3><label>{{ \'rename.vault.name\' | translate}}</label><input type="text" ng-model="$parent.new_vault_name"> <button ng-click="saveVaultSettings()">{{ \'change\' | translate}}</button><h3>{{ \'change.vault.key\' | translate}}</h3><label>{{ \'old.vault.password\' | translate}}</label><input type="password" ng-model="oldVaultPass"><label>{{ \'new.vault.password\' | translate}}</label><input type="password" ng-model="newVaultPass"><ng-password-meter password="newVaultPass" score="vault_key_score"></ng-password-meter><label>{{ \'new.vault.pw.r\' | translate}}</label><input type="password" ng-model="newVaultPass2"><div ng-show="error || vault_key_score.score < minimal_value_key_strength" class="error"><ul><li>{{error}}</li><li ng-show="vault_key_score.score < minimal_value_key_strength">{{\'min.vault.key.strength\' | translate:required_score}}</li></ul></div><button ng-click="changeVaultPassword(oldVaultPass,newVaultPass,newVaultPass2)" ng-disabled="vault_key_score.score < minimal_value_key_strength">{{ \'change\' | translate}}</button><div ng-show="change_pw.total > 0">{{\'warning.leave\' | translate}}<br>{{ \'processing\' | translate}} {{cur_state.process}}<div progress-bar="cur_state.calculated" index="cur_state.current" total="cur_state.total"></div>{{ \'total.progress\' | translate}}<div progress-bar="change_pw.percent" index="change_pw.done" total="change_pw.total"></div></div><h3>{{\'delete.vault\' | translate}}</h3><b>{{ \'vault.remove.notice\' | translate }}</b><label>{{\'vault.password\' | translate}}</label><input type="password" ng-model="$parent.delete_vault_password"> <input type="checkbox" ng-model="$parent.confirm_vault_delete"> {{\'delete.vault.checkbox\' | translate}}<br><button class="btn btn-danger" ng-click="delete_vault()">{{\'delete.vault.confirm\' | translate}}</button><div ng-show="remove_pw">{{\'deleting.pw\' | translate:translationData}}<div progress-bar="remove_pw.percent" index="remove_pw.done" total="remove_pw.total"></div></div></div><div class="col-xs-12 col-md-6"><h3>{{ \'about.passman\' | translate}}</h3><p>{{ \'version\' | translate}}: <b>{{passman_version}}</b><br><br><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6YS8F97PETVU2" target="_blank" class="link">{{ \'donate.support\' | translate}}</a><br></p><h3>{{ \'bookmarklet\' | translate}}</h3><div><p>{{ \'bookmarklet.info1\' | translate}}<br>{{ \'bookmarklet.info2\' | translate}}<br></p></div><div><p ng-bind-html="bookmarklet" style="margin-top: 5px"></p></div></div></div>')}]),angular.module("views/partials/forms/settings/generic_csv_import.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/settings/generic_csv_import.html",'<div ng-controller="GenericCsvImportCtrl"><div class="row"><div class="col-xs-12 col-md-3"><div>{{ \'select.csv\' | translate}} <input type="file" file-select accept=".csv" success="csvLoaded"></div><div ng-show="parsed_csv"><span translate="parsed.csv.rows" translate-value-rows="{{ parsed_csv.length }}"></span></div><div ng-show="parsed_csv"><input type="checkbox" ng-model="skipFirstRow" ng-checked="matched"> {{ \'skip.first.row\' | translate}}</div><div ng-show="import_fields.indexOf(\'label\') === -1 && parsed_csv"><b>{{ \'import.csv.label.req\' | translate}}</b></div><div ng-show="import_fields.indexOf(\'label\') !== -1 && parsed_csv"><button class="btn btn-success" ng-disabled="importing" ng-click="startCSVImport()"><i class="fa fa-spinner fa-spin" ng-show="importing"></i> {{ (importing) ? (\'import.importing\' | translate) : (\'import.start\' | translate) }}</button></div><div><div ng-if="import_progress.progress > 0">{{ \'upload.progress\' | translate}}<div progress-bar="import_progress.progress" index="import_progress.loaded" total="import_progress.total"></div></div></div><div><div ng-if="log" class="import_log"><textarea id="import_log" auto-scroll="log">{{log.join(\'\\n\')}}</textarea></div></div></div><div class="col-xs-12 col-md-9" ng-show="parsed_csv"><b>{{ \'first.five.lines\' | translate }}</b><br>{{ \'assign.column\' | translate }}<div class="import-table-outter"><table class="import-table"><tr ng-repeat="line in parsed_csv | limitTo:5"><td class="inspect"><i class="fa fa-search" ng-click="inspectCredential(line)" ng-if="($index > 0 && matched && import_fields.length > 0) || ($index >= 0 && !matched && import_fields.length > 0)"></i></td><td ng-repeat="prop in line track by $index">{{line[$index]}}</td></tr><tr ng-repeat="line in parsed_csv | limitTo:1"><td></td><td ng-repeat="prop in line track by $index"><select ng-model="import_fields[$index]" ng-change="updateExample()" ng-options="property.prop as property.label for property in credentialProperties"></select></td></tr></table></div><div ng-show="inspected_credential && import_fields.length > 0"><b>{{ \'example.credential\' | translate}}</b><div credential-template="inspected_credential" show-label></div></div></div></div></div>')}]),angular.module("views/partials/forms/settings/import.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/settings/import.html",'<div><div ng-click="showGenericImport = !showGenericImport;" class="link"><span ng-show="!showGenericImport">{{\'missing.importer\' | translate}}</span> <span ng-show="showGenericImport">{{\'missing.importer.back\' | translate}}</span></div></div><div ng-controller="ImportCtrl" ng-show="!showGenericImport"><div class="row"><div class="col-xs-6"><label>{{ \'import.type\' | translate}}<select ng-init="importerType" ng-model="importerType" ng-change="setImporter(importerType)"><option ng-repeat="importer in available_importers" value="{{importer}}">{{importer.name}}</option></select></label><div ng-show="selectedImporter"><b>{{ \'import.steps\' | translate }}</b><ul class="import-steps"><li ng-repeat="step in selectedImporter.exportSteps">{{step}}</li></ul></div><input ng-if="selectedImporter" type="file" file-select success="fileLoaded" error="fileLoadError" progress="fileSelectProgress"><br><button class="button" ng-click="startImport()" ng-if="selectedImporter">{{ \'import\' | translate}}</button><div ng-if="file_read_progress.percent > 0">{{ \'read.progress\' | translate}}<div progress-bar="file_read_progress.percent" index="file_read_progress.loaded" total="file_read_progress.total"></div></div><div ng-if="import_progress.progress > 0">{{ \'upload.progress\' | translate}}<div progress-bar="import_progress.progress" index="import_progress.loaded" total="import_progress.total"></div></div></div><div class="col-xs-6"><div ng-if="log" class="import_log"><textarea id="import_log" auto-scroll="log">{{log.join(\'\\n\')}}</textarea></div></div></div></div><div ng-include="\'views/partials/forms/settings/generic_csv_import.html\'" ng-show="showGenericImport"></div>');
-}]),angular.module("views/partials/forms/settings/password_settings.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/settings/password_settings.html",'<div class="password_settings"><div class="col-xs-12 col-sm-5 col-lg-4"><label><span class="label">{{ \'password.generation.length\' | translate}}</span><br><input type="number" ng-model="vault_settings.pwSettings.length" min="1"></label><label><span class="label">{{ \'password.generation.min_digits\' | translate}}</span><br><input type="number" ng-model="vault_settings.pwSettings.minimumDigitCount" min="0"></label><label><span class="label">Generate password on creation</span><br><input type="checkbox" ng-model="vault_settings.pwSettings.generateOnCreate" min="0"></label></div><div class="col-xs-12 col-sm-6 col-lg-6"><label><input type="checkbox" ng-model="vault_settings.pwSettings.useUppercase"> <span class="label sm">{{ \'password.generation.uppercase\' | translate}}</span></label><label><input ng-model="vault_settings.pwSettings.useLowercase" type="checkbox" id="lower"> <span class="label sm">{{ \'password.generation.lowercase\' | translate}}</span></label><label><input ng-model="vault_settings.pwSettings.useDigits" type="checkbox" id="digits"> <span class="label sm">{{ \'password.generation.digits\' | translate}}</span></label><label><input type="checkbox" id="special" ng-model="vault_settings.pwSettings.useSpecialChars"> <span class="label sm">{{ \'password.generation.special\' | translate}}</span></label><label><input type="checkbox" id="ambig" ng-model="vault_settings.pwSettings.avoidAmbiguousCharacters"> <span class="label sm">{{ \'password.generation.ambiguous\' | translate}}</span></label><label><input type="checkbox" ng-model="vault_settings.pwSettings.requireEveryCharType" id="reqevery"> <span class="label sm">{{ \'password.generation.require_same\' | translate}}</span></label></div></div><div class="row"><div class="col-xs-12"><button class="button" ng-click="saveVaultSettings()">{{ \'save\' | translate}}</button></div></div>')}]),angular.module("views/partials/forms/settings/sharing.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/settings/sharing.html",'<div ng-controller="SharingSettingsCtrl"><div class="row"><div class="col-md-6"><label>{{ \'priv.key\' | translate}}</label><textarea class="col-md-12">{{sharing_keys.private_sharing_key}}</textarea></div><div class="col-md-6"><label>{{ \'pub.key\' | translate}}</label><textarea class="col-md-12">{{sharing_keys.public_sharing_key}}</textarea></div></div><div class="row"><div class="col-md-12"><label>{{ \'key.size\' | translate}}<select ng-model="key_size" ng-options="size.name for size in available_sizes"></select><button ng-click="updateSharingKeys()"><i class="fa fa-fa-floppy-o"></i> {{ \'save.keys\' | translate}}</button> <button ng-if="!generating" ng-click="generateKeys(key_size.size)">{{ \'gen.keys\' | translate}}</button> <button ng-if="generating"><i class="fa fa-spinner fa-spin"></i> {{ \'generating.keys\' | translate}} ({{progress}}/2)</button></label></div></div></div>')}]),angular.module("views/partials/forms/settings/tool.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/settings/tool.html",'<div class="row"><div class="col-xs-12"><p>{{ \'tool.intro\' | translate}}</p></div><div class="col-xs-12" ng-init="minStrength = 3;">{{ \'min.strength\' | translate}} <input type="number" min="1" max="4" value="3" ng-model="minStrength"> <button ng-click="startScan(minStrength)">{{ \'scan.start\' | translate}}</button></div></div><div class="row" ng-show="scan_result"><div class="col-xs-12"><p>{{ \'scan.result.msg\' | translate}}<br><span translate="scan.result" translate-values="{ scan_result: scan_result.length}"></span><br></p><table class="table scan-result-table"><thead><tr><td>{{ \'label\' | translate}}</td><td>{{ \'score\' | translate}}</td><td>{{ \'password\' | translate}}</td><td>{{ \'action\' | translate}}</td></tr></thead><tbody><tr ng-repeat="result in scan_result | orderBy:\'password_zxcvbn_result.score\'"><td>{{result.label}}</td><td class="score"><ng-password-meter password="result.password"></ng-password-meter></td><td><span credential-field value="result.password" secret="\'true\'"></span></td><td><a class="link" ng-href="#/vault/{{active_vault.guid}}/edit/{{result.guid}}" tooltip="{{ \'edit.credential\' | translate}}"><i class="fa fa-edit"></i></a></td></tr></tbody></table></div></div>')}]),angular.module("views/partials/forms/share_credential/basics.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/share_credential/basics.html",'<div class="row"><div class="col-xs-12 col-md-6"><div><table class="table sharing_table"><thead><tr><td><tags-input ng-model="inputSharedWith" replace-spaces-with-dashes="false" add-from-autocomplete-only="true" placeholder="{{ \'search.u.g\' | translate}}"><auto-complete source="searchUsers($query)" min-length="0" template="autocomplete-template"></auto-complete></tags-input></td><td><button class="button" ng-click="shareWith(inputSharedWith)">+</button></td></tr><tr><td colspan="2"><small>{{ \'search.result.missing\' | translate}}</small></td></tr></thead></table><div ng-if="share_settings.cypher_progress.done > 0">{{\'cyphering\' | translate}}...<div progress-bar="share_settings.cypher_progress.percent" index="share_settings.cypher_progress.done" total="share_settings.cypher_progress.total"></div></div><div ng-if="share_settings.upload_progress.done > 0">{{ \'uploading\' | translate}}...<div progress-bar="share_settings.upload_progress.percent" index="share_settings.upload_progress.done" total="share_settings.upload_progress.total"></div></div></div></div><div class="col-xs-12 col-md-6" ng-show="share_settings.cypher_progress.times.length > 0"><table class="table"><thead><tr><td>{{ \'user\' | translate}}</td><td>{{ \'crypto.time\' | translate}}</td></tr></thead><tr ng-repeat="user in share_settings.cypher_progress.times"><td><i class="fa fa-cogs"></i> {{user.user}}</td><td>{{user.time}} s</td></tr></table>{{ \'crypto.total.time\' | translate}}: {{ calculate_total_time() }}</div></div><div class="row"><div class="col-xs-12 col-md-6"><table class="table shared_table" ng-show="share_settings.credentialSharedWithUserAndGroup.length > 0"><thead><tr><td>{{\'user\' | translate}}</td><td>{{ \'perm.read\' | translate}}</td><td>{{ \'perm.write\' | translate}}</td><td>{{ \'perm.files\' | translate}}</td><td>{{ \'perm.revisions\' | translate}}</td><td></td></tr></thead><tr ng-repeat="user in share_settings.credentialSharedWithUserAndGroup"><td><i class="fa fa-user" ng-if="user.pending === false"></i> <i class="fa fa-user-times" ng-if="user.pending === true"></i> {{user.userId}} <small ng-if="user.pending === true" class="pull-right col-xs-4">{{ \'pending\' | translate}}</small></td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.READ)" ng-checked="hasPermission(user.acl, default_permissions.permissions.READ)"></td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.WRITE)" ng-checked="hasPermission(user.acl, default_permissions.permissions.WRITE)"></td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.FILES)" ng-checked="hasPermission(user.acl, default_permissions.permissions.FILES)"></td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.HISTORY)" ng-checked="hasPermission(user.acl, default_permissions.permissions.HISTORY)"></td><td><i class="fa fa-trash" ng-click="unshareUser(user)"></i></td></tr></table></div></div><script type="text/ng-template" id="autocomplete-template"><i class="fa fa-user" ng-if="data.type === \'user\'"></i>\n\t<i class="fa fa-group" ng-if="data.type === \'group\'"></i>\n\t{{data.text}}</script>')}]),angular.module("views/partials/forms/share_credential/link_sharing.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/share_credential/link_sharing.html",'<div class="row"><div class="col-xs-12 col-md-6"><label><input type="checkbox" ng-model="share_settings.linkSharing.enabled"> {{ \'enable.link.sharing\' | translate}}.</label><br><div class="pull-left col-xs-6 nopadding"><span credential-field value="share_link" secret="false" use-input="true" input-placeholder="\'click.share\' | translate"></span></div><div ng-show="share_settings.linkSharing.enabled" class="clearfix">{{ \'share.until.date\' | translate}} <span datetime-picker ng-model="share_settings.linkSharing.settings.expire_time" class="link" future-only close-on-select="false" timestamp="true">{{ share_settings.linkSharing.settings.expire_time | date:\'dd-MM-yyyy @ HH:mm:ss\' }}</span></div><div ng-show="share_settings.linkSharing.enabled">{{ \'expire.views\' | translate}}<br><input type="number" ng-model="share_settings.linkSharing.settings.expire_views"></div><div ng-if="share_settings.linkSharing.enabled"><table><tr><td><input type="checkbox" ng-click="setPermission(share_settings.linkSharing.settings.acl, default_permissions.permissions.FILES)" ng-checked="hasPermission(share_settings.linkSharing.settings.acl, default_permissions.permissions.FILES)"></td><td>{{ \'show.files\' | translate}}</td></tr></table></div></div></div>')}]),angular.module("views/partials/password-meter.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/password-meter.html",'<div class="pass-meter {{masterClass}}" off-click="matchBreakdown = false;"><div class="{{colClass}} pass-meter-col {{first}}"><div class="indicator"></div></div><div class="{{colClass}} pass-meter-col {{second}}"><div class="indicator"></div></div><div class="{{colClass}} pass-meter-col {{third}}"><div class="indicator"></div></div><div class="{{colClass}} pass-meter-col {{fourth}}"><div class="indicator"></div></div><div class="details" ng-click="toggleScore()"><span ng-show="!scoreShown">{{ \'details\' | translate }}</span> <span ng-show="scoreShown">{{ \'hide.details\' | translate}}</span></div><div class="pass-meter-message">{{message}}</div><div class="detail_box" ng-show="scoreShown"><div class="row"><div class="col-xs-6">{{ \'password.score\' | translate}}:</div><div class="col-xs-6">{{score.score}}</div></div><div><b>{{ \'cracking.times\' | translate}}</b></div><div class="row"><div class="col-xs-6">{{ \'cracking.time.100h\' | translate}}<br><small>{{ \'cracking.time.100h.desc\' | translate}}</small></div><div class="col-xs-6">{{score.crack_times_display.online_throttling_100_per_hour}}</div></div><div class="row"><div class="col-xs-6">{{ \'cracking.time.10s\' | translate}}<br><small>{{ \'cracking.time.10s.desc\' | translate}}</small></div><div class="col-xs-6">{{score.crack_times_display.online_no_throttling_10_per_second}}</div></div><div class="row"><div class="col-xs-6">{{ \'cracking.time.10ks\' | translate}}<br><small>{{ \'cracking.time.10ks.desc\' | translate}}</small></div><div class="col-xs-6">{{score.crack_times_display.offline_slow_hashing_1e4_per_second}}</div></div><div class="row"><div class="col-xs-6">{{ \'cracking.time.10Bs\' | translate}}<br><small>{{ \'cracking.time.10Bs.desc\' | translate}}</small></div><div class="col-xs-6">{{score.crack_times_display.offline_fast_hashing_1e10_per_second}}</div></div><div class="row"><div class="col-xs-6">{{ \'match.sequence\' | translate}}:</div><div class="col-xs-6"><span class="link" ng-click="toggleMatchBreakdown()">{{ \'match.sequence.link\' | translate}}</span></div></div></div></div><div class="match-sequence"><div class="sequence_container" ng-style="{\'width\': score.sequence.length * 210 }"><div class="sequence" ng-repeat="sequence in score.sequence"><table><tr><td colspan="2" class="token"><code>{{sequence.token}}</code></td></tr><tr ng-if="sequence.pattern"><td>{{ \'pattern\' | translate}}</td><td>{{sequence.pattern}}</td></tr><tr ng-if="sequence.matched_word"><td>{{ \'matched.word\' | translate}}</td><td>{{sequence.matched_word}}</td></tr><tr ng-if="sequence.dictionary_name"><td>{{ \'dictionary.name\' | translate}}</td><td>{{sequence.dictionary_name}}</td></tr><tr ng-if="sequence.rank"><td>{{ \'rank\' | translate}}</td><td>{{sequence.rank}}</td></tr><tr ng-if="sequence.reversed"><td>{{ \'reversed\' | translate}}</td><td>{{sequence.reversed}}</td></tr><tr ng-if="sequence.guesses"><td>{{ \'guesses\' | translate}}</td><td>{{sequence.guesses}}</td></tr><tr ng-if="sequence.base_guesses"><td>{{ \'base.guesses\' | translate}}</td><td>{{sequence.base_guesses}}</td></tr><tr ng-if="sequence.uppercase_variations"><td>{{ \'uppercase.variations\' | translate}}</td><td>{{sequence.uppercase_variations}}</td></tr><tr ng-if="sequence.l33t_variations"><td>{{ \'leet.variations\' | translate}}</td><td>{{sequence.l33t_variations}}</td></tr></table></div></div></div>')}]),angular.module("views/settings.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/settings.html",'<div id="controls"><div class="actions creatable"><div class="breadcrumb"><div class="crumb svg ui-droppable"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg"><a ng-click="cancel()">{{active_vault.name}}</a></div><div class="crumb svg last"><a>{{ \'settings\' | translate}}</a></div></div></div></div><ul class="tab_header"><li ng-repeat="tab in tabs track by $index" class="tab" ng-class="{active:isActiveTab(tab)}" ng-click="onClickTab(tab)" use-theme color="\'true\'">{{tab.title}}<div class="indicator" use-theme negative="\'true\'"></div></li></ul><div class="tab_container settings edit_credential"><div ng-include="currentTab.url"></div></div>')}]),angular.module("views/share_credential.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/share_credential.html",'<div id="controls"><div class="actions creatable"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg" data-dir="/Test"><a ng-click="cancel()">{{active_vault.name}}</a></div><div class="crumb svg last" data-dir="/Test"><a ng-if="storedCredential.credential_id">{{ \'share.credential\' | translate}} {{storedCredential.label}}</a></div></div></div></div><ul class="tab_header"><li ng-repeat="tab in tabs track by $index" class="tab" ng-class="{active:isActiveTab(tab)}" ng-click="onClickTab(tab)" use-theme color="\'true\'">{{tab.title}}<div class="indicator" use-theme negative="\'true\'"></div></li></ul><div class="tab_container share_credential" ng-show="currentTab"><div ng-include="currentTab.url"></div><button ng-click="applyShare()" ng-disabled="share_settings.linkSharing.enabled === false && share_settings.credentialSharedWithUserAndGroup.length === 0">{{ \'share\' | translate}}</button> <button ng-click="cancel()">{{ \'cancel\' | translate}}</button> <button class="btn btn-danger" ng-disabled="!storedCredential.shared_key" ng-click="unshareCredential(storedCredential)">{{ \'unshare\' | translate}}</button></div>')}]),angular.module("views/show_vault.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/show_vault.html",'<div off-click="closeSelected()" off-click-filter="\'.download-js-link, .sidebar-shown\'"><div id="passman-controls" ng-class="{ \'sidebar-shown\': selectedCredential }"><div class="breadcrumb"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a><i class="fa fa-home"></i></a></div><div class="crumb svg last" ng-click="clearState()"><span>{{active_vault.name}}</span></div></div></div><div class="actions creatable"><span ng-click="addCredential()" class="button new"><span>+</span></span></div><div class="title" credential-counter="filtered_credentials" vault="active_vault" delete-time="delete_time" filters="filterOptions"></div><div class="searchboxContainer" ng-init="filterOptionShown = false;" off-click="filterOptionShown = false;"><input type="text" ng-model="filterOptions.filterText" class="searchbox" id="searchBox" placeholder="{{\'search.credential\' | translate}}" select-on-click clear-btn ng-click="filterOptionShown = true;"><div class="searchOptions" ng-show="filterOptionShown"><input type="checkbox" ng-model="filterOptions.useRegex"> {{ \'use.regex\' | translate }}</div></div><div class="viewModes"><div class="view-mode" ng-class="{\'active\': view_mode === \'list\' }" ng-click="switchViewMode(\'list\')"><i class="fa fa-list"></i></div><div class="view-mode" ng-class="{\'active\': view_mode === \'grid\' }" ng-click="switchViewMode(\'grid\')"><i class="fa fa-th-large"></i></div></div></div><div class="loaderContainer" ng-if="show_spinner"><div class="loader" use-theme type="\'border-bottom-color\'"></div></div><div ng-init="menuOpen = false;"><table class="credential-table" ng-if="view_mode === \'list\'"><tr ng-repeat="credential in filtered_credentials | orderBy:\'label\'" ng-if="showCredentialRow(credential)" ng-click="selectCredential(credential)" ng-dblclick="editCredential(credential)" ng-class="{\'selected\': selectedCredential.credential_id == credential.credential_id}"><td><span class="tags"><span class="tag" ng-repeat="tag in credential.tags_raw">{{ ::tag.text}}</span></span> <span class="icon"><i class="fa fa-lock" ng-if="!credential.acl && !credential.shared_key"></i> <i class="fa fa-share-alt" ng-if="credential.acl"></i> <i class="fa fa-share-alt-square" ng-if="credential.shared_key"></i></span> <span class="label">{{ ::credential.label}}</span></td></tr></table><ul class="grid-view" ng-if="view_mode === \'grid\'"><li class="credential" ng-repeat="credential in filtered_credentials | orderBy:\'label\'" ng-if="credential.hidden == 0 && showCredentialRow(credential)" ng-click="selectCredential(credential)" use-theme type="\'border-color\'"><div class="credential_content"><div class="label">{{ ::credential.label}}</div><div class="tags"><div class="tag" ng-repeat="tag in credential.tags_raw">{{ ::tag.text}}</div></div></div></li></ul></div><div id="app-sidebar" class="detailsView scroll-container app_sidebar" ng-show="selectedCredential"><h2>{{selectedCredential.label}}</h2><span class="close icon-close" ng-click="closeSelected()" alt="Close"></span><div credential-template="selectedCredential"></div><div ng-show="selectedCredential"><div><button class="button" ng-click="editCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)"><span class="fa fa-edit"></span> {{ \'edit\' | translate}}</button> <button class="button" ng-click="deleteCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)"><span class="fa fa-trash"></span> {{ \'delete\' | translate}}</button> <button class="button" ng-click="shareCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && selectedCredential.acl === undefined &&\n\t\t\t\t\t\t(settings.user_sharing_enabled === 1 || settings.user_sharing_enabled === \'1\' || settings.link_sharing_enabled === 1 || settings.link_sharing_enabled === \'1\')"><span class="fa fa-share"></span> {{ \'share\' | translate}}</button> <button class="button" ng-click="getRevisions(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.HISTORY)"><span class="fa fa-undo"></span> {{ \'revisions\' | translate}}</button> <button class="button" ng-if="selectedCredential.delete_time > 0" ng-click="recoverCredential(selectedCredential) && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)"><span class="fa fa-recycle"></span> {{\'recover\' | translate}}</button> <button class="button" ng-if="selectedCredential.delete_time > 0" ng-click="destroyCredential(selectedCredential)"><span class="fa fa-bomb"></span> {{\'destroy\' | translate}}</button></div></div></div></div><div class="share_popup" style="display: none">{{ \'sharereq.title\' | translate}}<br><p>{{ \'sharereq.line1\' | translate}}</p>{{active_vault.vault_id}}<table class="table"><thead><tr><td>{{ \'label\' | translate}}</td><td>{{ \'permissions\' | translate}}</td><td>{{ \'received.from\' | translate}}</td><td>{{ \'date\' | translate}}</td></tr></thead><tr ng-repeat="share_request in incoming_share_requests" ng-if="share_request.target_vault_id == active_vault.vault_id"><td>{{share_request.credential_label}}</td><td>{{share_request.permissions}}</td><td>{{share_request.from_user_id}}</td><td>{{share_request.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td><td><span class="link" ng-click="acceptShareRequest(share_request)">{{ \'accept\' | translate}}</span> | <span class="link" ng-click="declineShareRequest(share_request)">{{ \'decline\' | translate}}</span></td></tr></table></div>')}]),angular.module("views/vault_req_deletion.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/vault_req_deletion.html",'<div class="vault_wrapper"><div class="reset_form" ng-show="!pending_deletion">{{ \'req.intro1\' | translate }}<br>{{ \'req.intro2\' | translate }}<br>{{ \'req.intro3\' | translate }}<br><br><b>{{ \'request.deletion.warning\' | translate}}</b><label>{{ \'request.deletion.reason\' | translate }}</label><input type="text" ng-model="reason" class="form-control"> <button class="button button-red" ng-click="requestDeletion()">{{ \'request.deletion.accept\' | translate }}</button> <a class="pull-right button button-geen" ng-href="#/">{{ \'cancel\' | translate}}</a></div><div class="reset_form" ng-show="pending_deletion"><button class="button button-red" ng-click="removeRequestDeletion()">Cancel destruction request</button> <a class="pull-right button button-geen" ng-href="#/">Cancel</a></div></div>')}]),angular.module("views/vaults.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/vaults.html",'<div class="vault_wrapper"><div class="vaults" ng-if="!list_selected_vault && !creating_vault"><div class="ui-select-container ui-select-bootstrap vaultlist"><ul><li ng-click="newVault()">+ Create a new vault</li><li ng-repeat="vault in vaults" ng-class="{\'selected\': vault == list_selected_vault }" ng-click="selectVault(vault)"><div><span class="ui-select-choices-row-inner"><div class="ng-binding ng-scope">{{vault.name}} <span class="pull-right" style="color: #ce3702" ng-show="vault.delete_request_pending">{{ \'delete.request.pending\' | translate}}</span></div><small class="ng-binding ng-scope">{{ \'created\' | translate}}: {{vault.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}} | {{ \'last.access\' | translate}}: <span ng-if="vault.last_access > 0">{{vault.last_access * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</span> <span ng-if="vault.last_access === 0">{{\'never\' | translate}}</span></small></span></div></li><li ng-if="vaults.length === 0">{{ \'no.vaults\' | translate}}</li></ul></div></div><div ng-if="creating_vault"><div class="login_form" ng-init="vault_name = \'\'; vault_key=\'\'; ">{{\'new.vault.name\' | translate}}<div><input type="text" ng-model="vault_name" required></div><div>{{ \'new.vault.pass\' | translate}} <input type="password" ng-model="vault_key" required><ng-password-meter password="vault_key" score="vault_key_score"></ng-password-meter></div><div>{{ \'new.vault.passr\' | translate}} <input type="password" ng-model="vault_key2" required></div><div ng-show="error || vault_key_score.score < minimal_value_key_strength" class="error"><ul><li ng-show="error">{{error}}</li><li ng-show="vault_key_score.score < minimal_value_key_strength">{{\'min.vault.key.strength\' | translate:required_score}}</li></ul></div><div><small>{{\'new.vault.sharing_key_notice\' | translate}}</small></div><div class="button_wrapper"><button class="button button-geen" ng-if="!creating_keys" click-disable ng-click="createVault(vault_name, vault_key, vault_key2)" ng-disabled="vault_key_score.score < minimal_value_key_strength || vault_key !== vault_key2 || vault_key === \'\'">{{ \'new.vault.create\' | translate }}</button><div class="button" ng-if="creating_keys"><span><i class="fa fa-spinner fa-spin"></i> {{creating_keys}}</span></div><div class="button button-red" ng-click="clearState()">{{ \'cancel\' | translate}}</div><div class="hidden">{{sharing_keys}}</div></div></div></div><div ng-if="list_selected_vault != false"><div class="vaultlist"><ul><li ng-click="clearState()">{{ \'go.back.vaults\' | translate }}</li></ul></div><div class="login_form"><div ng-show="error" class="error"><ul><li>{{error}}</li></ul></div>{{ \'input.vault.password\' | translate}} {{list_selected_vault.name}}<div class="pw-input"><input type="password" ng-model="vault_key" ng-enter="loginToVault(list_selected_vault, vault_key)"> <small class="last_access">{{\'last.access\' | translate}}: <span ng-if="list_selected_vault.last_access > 0">{{list_selected_vault.last_access * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</span> <span ng-if="list_selected_vault.last_access === 0">Never</span></small></div><div class="login_opts"><div><label><input type="checkbox" ng-checked="default_vault" ng-click="toggleDefaultVault()"> {{ \'vault.default\' | translate}}</label></div><div><label><input type="checkbox" ng-checked="remember_vault_password" ng-click="toggleRememberPassword()"> {{ \'vault.auto.login\' | translate}}</label></div><div><label><input type="checkbox" ng-checked="auto_logout_timer" ng-click="toggleAutoLogout()"> {{ \'auto.logout\' | translate}}</label><select ng-model="logout_timer" ng-change="selectLogoutTimer(logout_timer)"><option value="0">Never</option><option value="30">30 minutes</option><option value="60">60 minutes</option><option value="90">90 minutes</option><option value="180">3 hour</option><option value="480">8 hour</option></select></div></div><div class="alert alert-danger" ng-show="vault_tries[list_selected_vault.guid].timeout !== 0" translate="vault.locked" translate-value-tries="{{ vault_tries[list_selected_vault.guid].tries }}" translate-value-time="{{ vault_tries[list_selected_vault.guid].timeout | toHHMMSS }}"></div><button class="button button-geen" ng-click="loginToVault(list_selected_vault, vault_key)" ng-disabled="vault_tries[list_selected_vault.guid].timeout !== 0">{{ \'vault.decrypt\' | translate}}</button> <span ng-click="forgottenPassword = true;" style="margin-top: 10px; padding: 6px 12px" class="link pull-right" ng-show="!forgottenPassword">Forgot password?</span> <button ng-show="forgottenPassword" class="pull-right button button-red" ng-click="requestDeletion(list_selected_vault)"><span ng-show="list_selected_vault.delete_request_pending">{{ \'cancel.request.deletion\' | translate }}</span> <span ng-show="!list_selected_vault.delete_request_pending">{{ \'request.deletion\' | translate }}</span></button></div></div></div>')}]),$(document).ready(function(){function format_date(date){date=new Date(date);var month=date.getMonth(),year=date.getFullYear(),day=date.getDate(),hour=date.getHours(),minutes=date.getMinutes(),seconds=date.getSeconds();return month+=1,month<10&&(month="0"+month),hour<10&&(hour="0"+hour),minutes<10&&(minutes="0"+minutes),seconds<10&&(seconds="0"+seconds),day+"-"+month+"-"+year+" "+hour+":"+minutes+":"+seconds}function acceptDeleteRequest(el,req){confirm(OC.L10N.translate("passman","Are you really sure?\nThis will delete the vault and all credentials in it!"))&&$.post(OC.generateUrl("apps/passman/admin/accept-delete-request"),req,function(){$(el).parent().parent().remove()})}function ignoreDeleteRequest(el,req){$.ajax({url:OC.generateUrl("apps/passman/admin/request-deletion/"+req.vault_guid),type:"DELETE",success:function(){$(el).parent().parent().remove()}})}var Settings=function(baseUrl){this._baseUrl=baseUrl,this._settings=[]};Settings.prototype={load:function(){var deferred=$.Deferred(),self=this;return $.ajax({url:this._baseUrl,method:"GET",async:!1}).done(function(settings){self._settings=settings}).fail(function(){deferred.reject()}),deferred.promise()},setUserKey:function(key,value){var request=$.ajax({url:this._baseUrl+"/"+key+"/"+value,method:"POST"});request.done(function(){$(".msg-passwords").removeClass("msg_error"),$(".msg-passwords").text("")}),request.fail(function(){$(".msg-passwords").addClass("msg_error"),$(".msg-passwords").text(t("passwords","Error while saving field")+" "+key+"!")})},setAdminKey:function(key,value){var request=$.ajax({url:this._baseUrl+"/"+key+"/"+value+"/admin1/admin2",method:"POST"});request.done(function(){$(".msg-passwords").removeClass("msg_error"),$(".msg-passwords").text("")}),request.fail(function(){$(".msg-passwords").addClass("msg_error"),$(".msg-passwords").text(t("passwords","Error while saving field")+" "+key+"!")})},getKey:function(key){return!!this._settings.hasOwnProperty(key)&&this._settings[key]},getAll:function(){return this._settings}};var settings=new Settings(OC.generateUrl("apps/passman/api/v2/settings"));settings.load(),$("#passman_link_sharing_enabled").prop("checked","1"===settings.getKey("link_sharing_enabled").toString().toLowerCase()),$("#passman_sharing_enabled").prop("checked","1"===settings.getKey("user_sharing_enabled").toString().toLowerCase()),$("#passman_check_version").prop("checked","1"===settings.getKey("check_version").toString().toLowerCase()),$("#passman_https_check").prop("checked","1"===settings.getKey("https_check").toString().toLowerCase()),$("#passman_disable_contextmenu").prop("checked","1"===settings.getKey("disable_contextmenu").toString().toLowerCase()),$("#passman_disable_debugger").prop("checked","1"===settings.getKey("disable_debugger").toString().toLowerCase()),$("#vault_key_strength").val(settings.getKey("vault_key_strength")),$("#passman_check_version").change(function(){settings.setAdminKey("check_version",$(this).is(":checked")?1:0)}),$("#passman_https_check").change(function(){settings.setAdminKey("https_check",$(this).is(":checked")?1:0)}),$("#passman_disable_contextmenu").change(function(){settings.setAdminKey("disable_contextmenu",$(this).is(":checked")?1:0)}),$("#passman_disable_debugger").change(function(){settings.setAdminKey("disable_debugger",$(this).is(":checked")?1:0)}),$("#passman_sharing_enabled").change(function(){settings.setAdminKey("user_sharing_enabled",$(this).is(":checked")?1:0)}),$("#passman_link_sharing_enabled").change(function(){settings.setAdminKey("link_sharing_enabled",$(this).is(":checked")?1:0)}),$("#vault_key_strength").change(function(){settings.setAdminKey("vault_key_strength",$(this).val())}),2===$('form[name="passman_settings"]').length&&$('form[name="passman_settings"]')[1].remove();var accountMover={source_account:"",destination_account:""};$(".username-autocomplete").autocomplete({source:OC.generateUrl("apps/passman/admin/search"),minLength:1,select:function(event,ui){accountMover[$(this).attr("id")]=ui.item.value}}),$("#move_credentials").click(function(){var self=this;$("#moveStatus").hide(),$(self).attr("disabled","disabled"),$(self).html('<i class="fa fa-spinner fa-spin"></i> '+OC.L10N.translate("passman","Moving")+"..."),accountMover.source_account&&accountMover.destination_account&&$.post(OC.generateUrl("apps/passman/admin/move"),accountMover,function(data){data.success&&($(self).removeAttr("disabled"),$(self).html("Move"),$("#moveStatus").fadeIn(),setTimeout(function(){$("#moveStatus").fadeOut()},3500))})}),$.get(OC.generateUrl("apps/passman/admin/delete-requests"),function(requests){var table=$("#requests-table tbody");$.each(requests,function(k,request){var accept=$('<span class="link">[Accept]&nbsp;</span>');accept.click(function(){var _self=this;acceptDeleteRequest(_self,request)});var ignore=$('<span class="link">[Ignore]</span>');ignore.click(function(){var _self=this;ignoreDeleteRequest(_self,request)});var cols=$("<td>"+request.id+"</td><td>"+request.displayName+"</td><td>"+request.reason+"</td><td>"+format_date(1e3*request.created)+"</td>"),actions=$("<td></td>").append(accept).append(ignore);
-table.append($("<tr></tr>").append(cols).append(actions))})}),$("#passman-tabs").tabs()}); \ No newline at end of file
+if(s.encryptedContent){var f="";if(e.util.isArray(s.encryptedContent))for(var l=0;l<s.encryptedContent.length;++l){if(s.encryptedContent[l].type!==t.Type.OCTETSTRING)throw new Error("Malformed PKCS#7 message, expecting encrypted content constructed of only OCTET STRING objects.");f+=s.encryptedContent[l].value}else f=s.encryptedContent;n.encryptedContent={algorithm:t.derToOid(s.encAlgorithm),parameter:e.util.createBuffer(s.encParameter.value),content:e.util.createBuffer(f)}}if(s.content){var f="";if(e.util.isArray(s.content))for(var l=0;l<s.content.length;++l){if(s.content[l].type!==t.Type.OCTETSTRING)throw new Error("Malformed PKCS#7 message, expecting content constructed of only OCTET STRING objects.");f+=s.content[l].value}else f=s.content;n.content=e.util.createBuffer(f)}return n.version=s.version.charCodeAt(0),n.rawCapture=s,s},f=function(t){if(void 0===t.encryptedContent.key)throw new Error("Symmetric key not available.");if(void 0===t.content){var n;switch(t.encryptedContent.algorithm){case e.pki.oids["aes128-CBC"]:case e.pki.oids["aes192-CBC"]:case e.pki.oids["aes256-CBC"]:n=e.aes.createDecryptionCipher(t.encryptedContent.key);break;case e.pki.oids.desCBC:case e.pki.oids["des-EDE3-CBC"]:n=e.des.createDecryptionCipher(t.encryptedContent.key);break;default:throw new Error("Unsupported symmetric cipher, OID "+t.encryptedContent.algorithm)}if(n.start(t.encryptedContent.parameter),n.update(t.encryptedContent.content),!n.finish())throw new Error("Symmetric decryption failed.");t.content=n.output}};n.createSignedData=function(){var r=null;return r={type:e.pki.oids.signedData,version:1,certificates:[],crls:[],digestAlgorithmIdentifiers:[],contentInfo:null,signerInfos:[],fromAsn1:function(t){a(r,t,n.asn1.signedDataValidator),r.certificates=[],r.crls=[],r.digestAlgorithmIdentifiers=[],r.contentInfo=null,r.signerInfos=[];for(var i=r.rawCapture.certificates.value,s=0;s<i.length;++s)r.certificates.push(e.pki.certificateFromAsn1(i[s]))},toAsn1:function(){if("content"in r)throw new Error("Signing PKCS#7 content not yet implemented.");r.contentInfo||r.sign();for(var n=[],i=0;i<r.certificates.length;++i)n.push(e.pki.certificateToAsn1(r.certificates[0]));var s=[];return t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(r.type).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,t.integerToDer(r.version).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.SET,!0,r.digestAlgorithmIdentifiers),r.contentInfo,t.create(t.Class.CONTEXT_SPECIFIC,0,!0,n),t.create(t.Class.CONTEXT_SPECIFIC,1,!0,s),t.create(t.Class.UNIVERSAL,t.Type.SET,!0,r.signerInfos)])])])},sign:function(n){if("content"in r)throw new Error("PKCS#7 signing not yet implemented.");"object"!=typeof r.content&&(r.contentInfo=t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(e.pki.oids.data).getBytes())]),"content"in r&&r.contentInfo.value.push(t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.OCTETSTRING,!1,r.content)])))},verify:function(){throw new Error("PKCS#7 signature verification not yet implemented.")},addCertificate:function(t){"string"==typeof t&&(t=e.pki.certificateFromPem(t)),r.certificates.push(t)},addCertificateRevokationList:function(e){throw new Error("PKCS#7 CRL support not yet implemented.")}}},n.createEncryptedData=function(){var t=null;return t={type:e.pki.oids.encryptedData,version:0,encryptedContent:{algorithm:e.pki.oids["aes256-CBC"]},fromAsn1:function(e){a(t,e,n.asn1.encryptedDataValidator)},decrypt:function(e){void 0!==e&&(t.encryptedContent.key=e),f(t)}}},n.createEnvelopedData=function(){var r=null;return r={type:e.pki.oids.envelopedData,version:0,recipients:[],encryptedContent:{algorithm:e.pki.oids["aes256-CBC"]},fromAsn1:function(e){var t=a(r,e,n.asn1.envelopedDataValidator);r.recipients=s(t.recipientInfos.value)},toAsn1:function(){return t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.OID,!1,t.oidToDer(r.type).getBytes()),t.create(t.Class.CONTEXT_SPECIFIC,0,!0,[t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,[t.create(t.Class.UNIVERSAL,t.Type.INTEGER,!1,t.integerToDer(r.version).getBytes()),t.create(t.Class.UNIVERSAL,t.Type.SET,!0,o(r.recipients)),t.create(t.Class.UNIVERSAL,t.Type.SEQUENCE,!0,u(r.encryptedContent))])])])},findRecipient:function(e){for(var t=e.issuer.attributes,n=0;n<r.recipients.length;++n){var i=r.recipients[n],s=i.issuer;if(i.serialNumber===e.serialNumber&&s.length===t.length){for(var o=!0,u=0;u<t.length;++u)if(s[u].type!==t[u].type||s[u].value!==t[u].value){o=!1;break}if(o)return i}}return null},decrypt:function(t,n){if(void 0===r.encryptedContent.key&&void 0!==t&&void 0!==n)switch(t.encryptedContent.algorithm){case e.pki.oids.rsaEncryption:case e.pki.oids.desCBC:var i=n.decrypt(t.encryptedContent.content);r.encryptedContent.key=e.util.createBuffer(i);break;default:throw new Error("Unsupported asymmetric cipher, OID "+t.encryptedContent.algorithm)}f(r)},addRecipient:function(t){r.recipients.push({version:0,issuer:t.issuer.attributes,serialNumber:t.serialNumber,encryptedContent:{algorithm:e.pki.oids.rsaEncryption,key:t.publicKey}})},encrypt:function(t,n){if(void 0===r.encryptedContent.content){n=n||r.encryptedContent.algorithm,t=t||r.encryptedContent.key;var i,s,o;switch(n){case e.pki.oids["aes128-CBC"]:i=16,s=16,o=e.aes.createEncryptionCipher;break;case e.pki.oids["aes192-CBC"]:i=24,s=16,o=e.aes.createEncryptionCipher;break;case e.pki.oids["aes256-CBC"]:i=32,s=16,o=e.aes.createEncryptionCipher;break;case e.pki.oids["des-EDE3-CBC"]:i=24,s=8,o=e.des.createEncryptionCipher;break;default:throw new Error("Unsupported symmetric cipher, OID "+n)}if(void 0===t)t=e.util.createBuffer(e.random.getBytes(i));else if(t.length()!=i)throw new Error("Symmetric key has wrong length; got "+t.length()+" bytes, expected "+i+".");r.encryptedContent.algorithm=n,r.encryptedContent.key=t,r.encryptedContent.parameter=e.util.createBuffer(e.random.getBytes(s));var u=o(t);if(u.start(r.encryptedContent.parameter.copy()),u.update(r.content),!u.finish())throw new Error("Symmetric encryption failed.");r.encryptedContent.content=u.output}for(var a=0;a<r.recipients.length;a++){var f=r.recipients[a];if(void 0===f.encryptedContent.content)switch(f.encryptedContent.algorithm){case e.pki.oids.rsaEncryption:f.encryptedContent.content=f.encryptedContent.key.encrypt(r.encryptedContent.key.data);break;default:throw new Error("Unsupported asymmetric cipher, OID "+f.encryptedContent.algorithm)}}}}}}var r="pkcs7";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return"undefined"==typeof forge&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);if(n=n||{},n.defined=n.defined||{},n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o<i.length;++o)i[o](n);return n[r]}},u=n;(n=function(e,t){return s="string"==typeof e?t.slice(2):e.slice(2),i?(delete n,u.apply(null,Array.prototype.slice.call(arguments,0))):(n=u,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/pkcs7",["require","module","./aes","./asn1","./des","./oids","./pem","./pkcs7asn1","./random","./util","./x509"],function(){o.apply(null,Array.prototype.slice.call(arguments,0))})}(),function(){function e(e){function n(t,n){var r=n.toString(16);r[0]>="8"&&(r="00"+r);var i=e.util.hexToBytes(r);t.putInt32(i.length),t.putBytes(i)}function r(e,t){e.putInt32(t.length),e.putString(t)}function i(){for(var t=e.md.sha1.create(),n=arguments.length,r=0;r<n;++r)t.update(arguments[r]);return t.digest()}var t=e.ssh=e.ssh||{};t.privateKeyToPutty=function(t,s,o){o=o||"",s=s||"";var u="ssh-rsa",a=""===s?"none":"aes256-cbc",f="PuTTY-User-Key-File-2: "+u+"\r\n";f+="Encryption: "+a+"\r\n",f+="Comment: "+o+"\r\n";var l=e.util.createBuffer();r(l,u),n(l,t.e),n(l,t.n);var c=e.util.encode64(l.bytes(),64),h=Math.floor(c.length/66)+1;f+="Public-Lines: "+h+"\r\n",f+=c;var p=e.util.createBuffer();n(p,t.d),n(p,t.p),n(p,t.q),n(p,t.qInv);var d;if(s){var v=p.length()+16-1;v-=v%16;var m=i(p.bytes());m.truncate(m.length()-v+p.length()),p.putBuffer(m);var g=e.util.createBuffer();g.putBuffer(i("\0\0\0\0",s)),g.putBuffer(i("\0\0\0",s));var y=e.aes.createEncryptionCipher(g.truncate(8),"CBC");y.start(e.util.createBuffer().fillWithByte(0,16)),y.update(p.copy()),y.finish();var b=y.output;b.truncate(16),d=e.util.encode64(b.bytes(),64)}else d=e.util.encode64(p.bytes(),64);h=Math.floor(d.length/66)+1,f+="\r\nPrivate-Lines: "+h+"\r\n",f+=d;var w=i("putty-private-key-file-mac-key",s),E=e.util.createBuffer();r(E,u),r(E,a),r(E,o),E.putInt32(l.length()),E.putBuffer(l),E.putInt32(p.length()),E.putBuffer(p);var S=e.hmac.create();return S.start("sha1",w),S.update(E.bytes()),f+="\r\nPrivate-MAC: "+S.digest().toHex()+"\r\n"},t.publicKeyToOpenSSH=function(t,i){var s="ssh-rsa";i=i||"";var o=e.util.createBuffer();return r(o,s),n(o,t.e),n(o,t.n),s+" "+e.util.encode64(o.bytes())+" "+i},t.privateKeyToOpenSSH=function(t,n){return n?e.pki.encryptRsaPrivateKey(t,n,{legacy:!0,algorithm:"aes128"}):e.pki.privateKeyToPem(t)}}var r="ssh";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return"undefined"==typeof forge&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);if(n=n||{},n.defined=n.defined||{},n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o<i.length;++o)i[o](n);return n[r]}},u=n;(n=function(e,t){return s="string"==typeof e?t.slice(2):e.slice(2),i?(delete n,u.apply(null,Array.prototype.slice.call(arguments,0))):(n=u,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/ssh",["require","module","./util","./sha1","./aes","./hmac"],function(){o.apply(null,Array.prototype.slice.call(arguments,0))})}(),function(){function e(e){var t="forge.task",n=0,r={},i=0;e.debug.set(t,"tasks",r);var s={};e.debug.set(t,"queues",s);var o="?",u=30,a=20,f="ready",l="running",c="blocked",h="sleeping",p="done",d="error",v="stop",m="start",g="block",y="unblock",b="sleep",w="wakeup",E="cancel",S="fail",x={};x[f]={},x[f][v]=f,x[f][m]=l,x[f][E]=p,x[f][S]=d,x[l]={},x[l][v]=f,x[l][m]=l,x[l][g]=c,x[l][y]=l,x[l][b]=h,x[l][w]=l,x[l][E]=p,x[l][S]=d,x[c]={},x[c][v]=c,x[c][m]=c,x[c][g]=c,x[c][y]=c,x[c][b]=c,x[c][w]=c,x[c][E]=p,x[c][S]=d,x[h]={},x[h][v]=h,x[h][m]=h,x[h][g]=h,x[h][y]=h,x[h][b]=h,x[h][w]=h,x[h][E]=p,x[h][S]=d,x[p]={},x[p][v]=p,x[p][m]=p,x[p][g]=p,x[p][y]=p,x[p][b]=p,x[p][w]=p,x[p][E]=p,x[p][S]=d,x[d]={},x[d][v]=d,x[d][m]=d,x[d][g]=d,x[d][y]=d,x[d][b]=d,x[d][w]=d,x[d][E]=d,x[d][S]=d;var T=function(s){this.id=-1,this.name=s.name||o,this.parent=s.parent||null,this.run=s.run,this.subtasks=[],this.error=!1,this.state=f,this.blocks=0,this.timeoutId=null,this.swapTime=null,this.userData=null,this.id=i++,r[this.id]=this,n>=1&&e.log.verbose(t,"[%s][%s] init",this.id,this.name,this)};T.prototype.debug=function(n){n=n||"",e.log.debug(t,n,"[%s][%s] task:",this.id,this.name,this,"subtasks:",this.subtasks.length,"queue:",s)},T.prototype.next=function(e,t){"function"==typeof e&&(t=e,e=this.name);var n=new T({run:t,name:e,parent:this});return n.state=l,n.type=this.type,n.successCallback=this.successCallback||null,n.failureCallback=this.failureCallback||null,this.subtasks.push(n),this},T.prototype.parallel=function(t,n){return e.util.isArray(t)&&(n=t,t=this.name),this.next(t,function(r){var i=r;i.block(n.length);for(var s=function(t,r){e.task.start({type:t,run:function(e){n[r](e)},success:function(e){i.unblock()},failure:function(e){i.unblock()}})},o=0;o<n.length;o++){var u=t+"__parallel-"+r.id+"-"+o,a=o;s(u,a)}})},T.prototype.stop=function(){this.state=x[this.state][v]},T.prototype.start=function(){this.error=!1,this.state=x[this.state][m],this.state===l&&(this.start=new Date,this.run(this),C(this,0))},T.prototype.block=function(e){e="undefined"==typeof e?1:e,this.blocks+=e,this.blocks>0&&(this.state=x[this.state][g])},T.prototype.unblock=function(e){return e="undefined"==typeof e?1:e,this.blocks-=e,0===this.blocks&&this.state!==p&&(this.state=l,C(this,0)),this.blocks},T.prototype.sleep=function(e){e="undefined"==typeof e?0:e,this.state=x[this.state][b];var t=this;this.timeoutId=setTimeout(function(){t.timeoutId=null,t.state=l,C(t,0)},e)},T.prototype.wait=function(e){e.wait(this)},T.prototype.wakeup=function(){this.state===h&&(cancelTimeout(this.timeoutId),this.timeoutId=null,this.state=l,C(this,0))},T.prototype.cancel=function(){this.state=x[this.state][E],this.permitsNeeded=0,null!==this.timeoutId&&(cancelTimeout(this.timeoutId),this.timeoutId=null),this.subtasks=[]},T.prototype.fail=function(e){if(this.error=!0,k(this,!0),e)e.error=this.error,e.swapTime=this.swapTime,e.userData=this.userData,C(e,0);else{if(null!==this.parent){for(var t=this.parent;null!==t.parent;)t.error=this.error,t.swapTime=this.swapTime,t.userData=this.userData,t=t.parent;k(t,!0)}this.failureCallback&&this.failureCallback(this)}};var N=function(e){e.error=!1,e.state=x[e.state][m],setTimeout(function(){e.state===l&&(e.swapTime=+new Date,e.run(e),C(e,0))},0)},C=function(e,t){var n=t>u||+new Date-e.swapTime>a,r=function(t){if(t++,e.state===l)if(n&&(e.swapTime=+new Date),e.subtasks.length>0){var r=e.subtasks.shift();r.error=e.error,r.swapTime=e.swapTime,r.userData=e.userData,r.run(r),r.error||C(r,t)}else k(e),e.error||null!==e.parent&&(e.parent.error=e.error,e.parent.swapTime=e.swapTime,e.parent.userData=e.userData,C(e.parent,t))};n?setTimeout(r,0):r(t)},k=function(i,o){i.state=p,delete r[i.id],n>=1&&e.log.verbose(t,"[%s][%s] finish",i.id,i.name,i),null===i.parent&&(i.type in s?0===s[i.type].length?e.log.error(t,"[%s][%s] task queue empty [%s]",i.id,i.name,i.type):s[i.type][0]!==i?e.log.error(t,"[%s][%s] task not first in queue [%s]",i.id,i.name,i.type):(s[i.type].shift(),0===s[i.type].length?(n>=1&&e.log.verbose(t,"[%s][%s] delete queue [%s]",i.id,i.name,i.type),delete s[i.type]):(n>=1&&e.log.verbose(t,"[%s][%s] queue start next [%s] remain:%s",i.id,i.name,i.type,s[i.type].length),s[i.type][0].start())):e.log.error(t,"[%s][%s] task queue missing [%s]",i.id,i.name,i.type),o||(i.error&&i.failureCallback?i.failureCallback(i):!i.error&&i.successCallback&&i.successCallback(i)))};e.task=e.task||{},e.task.start=function(r){var i=new T({run:r.run,name:r.name||o});i.type=r.type,i.successCallback=r.success||null,i.failureCallback=r.failure||null,i.type in s?s[r.type].push(i):(n>=1&&e.log.verbose(t,"[%s][%s] create queue [%s]",i.id,i.name,i.type),s[i.type]=[i],N(i))},e.task.cancel=function(e){e in s&&(s[e]=[s[e][0]])},e.task.createCondition=function(){var e={tasks:{}};return e.wait=function(t){t.id in e.tasks||(t.block(),e.tasks[t.id]=t)},e.notify=function(){var t=e.tasks;e.tasks={};for(var n in t)t[n].unblock()},e}}var r="task";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return"undefined"==typeof forge&&(forge={}),e(forge);var i=!0;n=function(e,n){n(t,module)}}var s,o=function(t,n){n.exports=function(n){var i=s.map(function(e){return t(e)}).concat(e);if(n=n||{},n.defined=n.defined||{},n.defined[r])return n[r];n.defined[r]=!0;for(var o=0;o<i.length;++o)i[o](n);return n[r]}},u=n;(n=function(e,t){return s="string"==typeof e?t.slice(2):e.slice(2),i?(delete n,u.apply(null,Array.prototype.slice.call(arguments,0))):(n=u,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/task",["require","module","./debug","./log","./util"],function(){o.apply(null,Array.prototype.slice.call(arguments,0))})}(),function(){var e="forge";if("function"!=typeof n){if("object"!=typeof module||!module.exports)return void("undefined"==typeof forge&&(forge={disableNativeCode:!1}));var r=!0;n=function(e,n){n(t,module)}}var i,s=function(t,n){n.exports=function(n){var r=i.map(function(e){return t(e)});if(n=n||{},n.defined=n.defined||{},n.defined[e])return n[e];n.defined[e]=!0;for(var s=0;s<r.length;++s)r[s](n);return n},n.exports.disableNativeCode=!1,n.exports(n.exports)},o=n;(n=function(e,t){return i="string"==typeof e?t.slice(2):e.slice(2),r?(delete n,o.apply(null,Array.prototype.slice.call(arguments,0))):(n=o,n.apply(null,Array.prototype.slice.call(arguments,0)))})("js/forge",["require","module","./aes","./aesCipherSuites","./asn1","./cipher","./cipherModes","./debug","./des","./hmac","./kem","./log","./md","./mgf1","./pbkdf2","./pem","./pkcs7","./pkcs1","./pkcs12","./pki","./prime","./prng","./pss","./random","./rc2","./ssh","./task","./tls","./util"],function(){s.apply(null,Array.prototype.slice.call(arguments,0))})}(),t("js/forge")}),function(root,factory){"function"==typeof define&&define.amd?define([],factory):"object"==typeof exports?module.exports=factory():root.download=factory()}(this,function(){return function download(data,strFileName,strMimeType){function dataUrlToBlob(strUrl){var parts=strUrl.split(/[:;,]/),type=parts[1],decoder="base64"==parts[2]?atob:decodeURIComponent,binData=decoder(parts.pop()),mx=binData.length,i=0,uiArr=new Uint8Array(mx);for(i;i<mx;++i)uiArr[i]=binData.charCodeAt(i);return new myBlob([uiArr],{type:type})}function saver(url,winMode){if("download"in anchor){var element=document.createElement("a");return element.setAttribute("href",url),element.setAttribute("download",fileName),element.style.display="none",document.body.appendChild(element),element.click(),document.body.removeChild(element),winMode===!0&&setTimeout(function(){self.URL.revokeObjectURL(element.href)},250),!0}if(/(Version)\/(\d+)\.(\d+)(?:\.(\d+))?.*Safari\//.test(navigator.userAgent))return url=url.replace(/^data:([\w\/\-\+]+)/,defaultMime),window.open(url)||confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")&&(location.href=url),!0;var f=document.createElement("iframe");document.body.appendChild(f),winMode||(url="data:"+url.replace(/^data:([\w\/\-\+]+)/,defaultMime)),f.src=url,setTimeout(function(){document.body.removeChild(f)},333)}var blob,reader,self=window,defaultMime="application/octet-stream",mimeType=strMimeType||defaultMime,payload=data,url=!strFileName&&!strMimeType&&payload,anchor=document.createElement("a"),toString=function(a){return String(a)},myBlob=self.Blob||self.MozBlob||self.WebKitBlob||toString,fileName=strFileName||"download";if(myBlob=myBlob.call?myBlob.bind(self):Blob,"true"===String(this)&&(payload=[payload,mimeType],mimeType=payload[0],payload=payload[1]),url&&url.length<2048&&(fileName=url.split("/").pop().split("?")[0],anchor.href=url,anchor.href.indexOf(url)!==-1)){var ajax=new XMLHttpRequest;return ajax.open("GET",url,!0),ajax.responseType="blob",ajax.onload=function(e){download(e.target.response,fileName,defaultMime)},setTimeout(function(){ajax.send()},0),ajax}if(/^data\:[\w+\-]+\/[\w+\-]+[,;]/.test(payload)){if(!(payload.length>2096103.424&&myBlob!==toString))return navigator.msSaveBlob?navigator.msSaveBlob(dataUrlToBlob(payload),fileName):saver(payload);payload=dataUrlToBlob(payload),mimeType=payload.type||defaultMime}if(blob=payload instanceof myBlob?payload:new myBlob([payload],{type:mimeType}),navigator.msSaveBlob)return navigator.msSaveBlob(blob,fileName);if(self.URL)saver(self.URL.createObjectURL(blob),!0);else{if("string"==typeof blob||blob.constructor===toString)try{return saver("data:"+mimeType+";base64,"+self.btoa(blob))}catch(y){return saver("data:"+mimeType+","+encodeURIComponent(blob))}reader=new FileReader,reader.onload=function(e){saver(this.result)},reader.readAsDataURL(blob)}return!0}}),!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t;return function t(e,n,o){function i(c,a){if(!n[c]){if(!e[c]){var s="function"==typeof require&&require;if(!a&&s)return s(c,!0);if(r)return r(c,!0);var l=new Error("Cannot find module '"+c+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[c]={exports:{}};e[c][0].call(u.exports,function(t){var n=e[c][1][t];return i(n?n:t)},u,u.exports,t,e,n,o)}return n[c].exports}for(var r="function"==typeof require&&require,c=0;c<o.length;c++)i(o[c]);return i}({1:[function(t,e,n){var o=t("matches-selector");e.exports=function(t,e,n){for(var i=n?t:t.parentNode;i&&i!==document;){if(o(i,e))return i;i=i.parentNode}}},{"matches-selector":5}],2:[function(t,e,n){function o(t,e,n,o,r){var c=i.apply(this,arguments);return t.addEventListener(n,c,r),{destroy:function(){t.removeEventListener(n,c,r)}}}function i(t,e,n,o){return function(n){n.delegateTarget=r(n.target,e,!0),n.delegateTarget&&o.call(t,n)}}var r=t("closest");e.exports=o},{closest:1}],3:[function(t,e,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){var e=Object.prototype.toString.call(t);return"[object Function]"===e}},{}],4:[function(t,e,n){function o(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!a.string(e))throw new TypeError("Second argument must be a String");if(!a.fn(n))throw new TypeError("Third argument must be a Function");if(a.node(t))return i(t,e,n);if(a.nodeList(t))return r(t,e,n);if(a.string(t))return c(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function i(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}function r(t,e,n){return Array.prototype.forEach.call(t,function(t){t.addEventListener(e,n)}),{destroy:function(){Array.prototype.forEach.call(t,function(t){t.removeEventListener(e,n)})}}}function c(t,e,n){return s(document.body,t,e,n)}var a=t("./is"),s=t("delegate");e.exports=o},{"./is":3,delegate:2}],5:[function(t,e,n){function o(t,e){if(r)return r.call(t,e);for(var n=t.parentNode.querySelectorAll(e),o=0;o<n.length;++o)if(n[o]==t)return!0;return!1}var i=Element.prototype,r=i.matchesSelector||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector;e.exports=o},{}],6:[function(t,e,n){function o(t){var e;if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName)t.focus(),t.setSelectionRange(0,t.value.length),e=t.value;else{t.hasAttribute("contenteditable")&&t.focus();var n=window.getSelection(),o=document.createRange();o.selectNodeContents(t),n.removeAllRanges(),n.addRange(o),e=n.toString()}return e}e.exports=o},{}],7:[function(t,e,n){function o(){}o.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){function o(){i.off(t,o),e.apply(n,arguments)}var i=this;return o._=e,this.on(t,o,n)},emit:function(t){var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,i=n.length;for(o;i>o;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],i=[];if(o&&e)for(var r=0,c=o.length;c>r;r++)o[r].fn!==e&&o[r].fn._!==e&&i.push(o[r]);return i.length?n[t]=i:delete n[t],this}},e.exports=o},{}],8:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","select"],r);else if("undefined"!=typeof o)r(n,e("select"));else{var c={exports:{}};r(c,i.select),i.clipboardAction=c.exports}}(this,function(t,e){function n(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},c=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),a=function(){function t(e){o(this,t),this.resolveOptions(e),this.initSelection()}return t.prototype.resolveOptions=function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.action=e.action,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""},t.prototype.initSelection=function(){this.text?this.selectFake():this.target&&this.selectTarget()},t.prototype.selectFake=function(){var e=this,n="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandler=document.body.addEventListener("click",function(){return e.removeFake()}),this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="fixed",this.fakeElem.style[n?"right":"left"]="-9999px",this.fakeElem.style.top=(window.pageYOffset||document.documentElement.scrollTop)+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,document.body.appendChild(this.fakeElem),this.selectedText=(0,i.default)(this.fakeElem),this.copyText()},t.prototype.removeFake=function(){this.fakeHandler&&(document.body.removeEventListener("click"),this.fakeHandler=null),this.fakeElem&&(document.body.removeChild(this.fakeElem),this.fakeElem=null)},t.prototype.selectTarget=function(){this.selectedText=(0,i.default)(this.target),this.copyText()},t.prototype.copyText=function(){var e=void 0;try{e=document.execCommand(this.action)}catch(n){e=!1}this.handleResult(e)},t.prototype.handleResult=function(e){e?this.emitter.emit("success",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)}):this.emitter.emit("error",{action:this.action,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})},t.prototype.clearSelection=function(){this.target&&this.target.blur(),window.getSelection().removeAllRanges()},t.prototype.destroy=function(){this.removeFake()},c(t,[{key:"action",set:function(){var e=arguments.length<=0||void 0===arguments[0]?"copy":arguments[0];if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(e){if(void 0!==e){if(!e||"object"!==("undefined"==typeof e?"undefined":r(e))||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=e}},get:function(){return this._target}}]),t}();t.exports=a})},{select:6}],9:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","./clipboard-action","tiny-emitter","good-listener"],r);else if("undefined"!=typeof o)r(n,e("./clipboard-action"),e("tiny-emitter"),e("good-listener"));else{var c={exports:{}};r(c,i.clipboardAction,i.tinyEmitter,i.goodListener),i.clipboard=c.exports}}(this,function(t,e,n,o){function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function c(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function s(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var l=i(e),u=i(n),f=i(o),d=function(t){function e(n,o){r(this,e);var i=c(this,t.call(this));return i.resolveOptions(o),i.listenClick(n),i}return a(e,t),e.prototype.resolveOptions=function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText},e.prototype.listenClick=function(e){var n=this;this.listener=(0,f.default)(e,"click",function(t){return n.onClick(t)})},e.prototype.onClick=function(e){var n=e.delegateTarget||e.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l.default({action:this.action(n),target:this.target(n),text:this.text(n),trigger:n,emitter:this})},e.prototype.defaultAction=function(e){return s("action",e)},e.prototype.defaultTarget=function(e){var n=s("target",e);return n?document.querySelector(n):void 0},e.prototype.defaultText=function(e){return s("text",e)},e.prototype.destroy=function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)},e}(u.default);t.exports=d})},{"./clipboard-action":8,"good-listener":4,"tiny-emitter":7}]},{},[9])(9)}),function(){var angular,Clipboard,MODULE_NAME="ngclipboard";"object"==typeof module&&module.exports?(angular=require("angular"),Clipboard=require("clipboard"),module.exports=MODULE_NAME):(angular=window.angular,Clipboard=window.Clipboard),angular.module(MODULE_NAME,[]).directive("ngclipboard",function(){return{restrict:"A",scope:{ngclipboardSuccess:"&",ngclipboardError:"&"},link:function(scope,element){var clipboard=new Clipboard(element[0]);clipboard.on("success",function(e){scope.$apply(function(){scope.ngclipboardSuccess({e:e})})}),clipboard.on("error",function(e){scope.$apply(function(){scope.ngclipboardError({e:e})})})}}})}(),!function(){var a={backspace:8,tab:9,enter:13,escape:27,space:32,up:38,down:40,left:37,right:39,delete:46,comma:188},b=9007199254740991,c=["text","email","url"],d=angular.module("ngTagsInput",[]);d.directive("tagsInput",["$timeout","$document","$window","$q","tagsInputConfig","tiUtil",function(d,e,f,g,h,i){function j(a,b,c,d){var e,f,h,j,k={};return e=function(b){return i.safeToString(b[a.displayProperty])},f=function(b,c){b[a.displayProperty]=c},h=function(b){var d=e(b),f=d&&d.length>=a.minLength&&d.length<=a.maxLength&&a.allowedTagsPattern.test(d)&&!i.findInObjectArray(k.items,b,a.keyProperty||a.displayProperty);return g.when(f&&c({$tag:b})).then(i.promisifyValue)},j=function(a){return g.when(d({$tag:a})).then(i.promisifyValue)},k.items=[],k.addText=function(a){var b={};return f(b,a),k.add(b)},k.add=function(c){var d=e(c);return a.replaceSpacesWithDashes&&(d=i.replaceSpacesWithDashes(d)),f(c,d),h(c).then(function(){k.items.push(c),b.trigger("tag-added",{$tag:c})}).catch(function(){d&&b.trigger("invalid-tag",{$tag:c})})},k.remove=function(a){var c=k.items[a];return j(c).then(function(){return k.items.splice(a,1),k.clearSelection(),b.trigger("tag-removed",{$tag:c}),c})},k.select=function(a){0>a?a=k.items.length-1:a>=k.items.length&&(a=0),k.index=a,k.selected=k.items[a]},k.selectPrior=function(){k.select(--k.index)},k.selectNext=function(){k.select(++k.index)},k.removeSelected=function(){return k.remove(k.index)},k.clearSelection=function(){k.selected=null,k.index=-1},k.clearSelection(),k}function k(a){return-1!==c.indexOf(a)}return{restrict:"E",require:"ngModel",scope:{tags:"=ngModel",text:"=?",templateScope:"=?",tagClass:"&",onTagAdding:"&",onTagAdded:"&",onInvalidTag:"&",onTagRemoving:"&",onTagRemoved:"&",onTagClicked:"&"},replace:!1,transclude:!0,templateUrl:"ngTagsInput/tags-input.html",controller:["$scope","$attrs","$element",function(a,c,d){a.events=i.simplePubSub(),h.load("tagsInput",a,c,{template:[String,"ngTagsInput/tag-item.html"],type:[String,"text",k],placeholder:[String,"Add a tag"],
+tabindex:[Number,null],removeTagSymbol:[String,String.fromCharCode(215)],replaceSpacesWithDashes:[Boolean,!0],minLength:[Number,3],maxLength:[Number,b],addOnEnter:[Boolean,!0],addOnSpace:[Boolean,!1],addOnComma:[Boolean,!0],addOnBlur:[Boolean,!0],addOnPaste:[Boolean,!1],pasteSplitPattern:[RegExp,/,/],allowedTagsPattern:[RegExp,/.+/],enableEditingLastTag:[Boolean,!1],minTags:[Number,0],maxTags:[Number,b],displayProperty:[String,"text"],keyProperty:[String,""],allowLeftoverText:[Boolean,!1],addFromAutocompleteOnly:[Boolean,!1],spellcheck:[Boolean,!0]}),a.tagList=new j(a.options,a.events,i.handleUndefinedResult(a.onTagAdding,!0),i.handleUndefinedResult(a.onTagRemoving,!0)),this.registerAutocomplete=function(){return d.find("input"),{addTag:function(b){return a.tagList.add(b)},getTags:function(){return a.tagList.items},getCurrentTagText:function(){return a.newTag.text()},getOptions:function(){return a.options},getTemplateScope:function(){return a.templateScope},on:function(b,c){return a.events.on(b,c,!0),this}}},this.registerTagItem=function(){return{getOptions:function(){return a.options},removeTag:function(b){a.disabled||a.tagList.remove(b)}}}}],link:function(b,c,g,h){var j,k,l=[a.enter,a.comma,a.space,a.backspace,a.delete,a.left,a.right],m=b.tagList,n=b.events,o=b.options,p=c.find("input"),q=["minTags","maxTags","allowLeftoverText"];j=function(){h.$setValidity("maxTags",m.items.length<=o.maxTags),h.$setValidity("minTags",m.items.length>=o.minTags),h.$setValidity("leftoverText",!(!b.hasFocus&&!o.allowLeftoverText)||!b.newTag.text())},k=function(){d(function(){p[0].focus()})},h.$isEmpty=function(a){return!a||!a.length},b.newTag={text:function(a){return angular.isDefined(a)?(b.text=a,void n.trigger("input-change",a)):b.text||""},invalid:null},b.track=function(a){return a[o.keyProperty||o.displayProperty]},b.getTagClass=function(a,c){var d=a===m.selected;return[b.tagClass({$tag:a,$index:c,$selected:d}),{selected:d}]},b.$watch("tags",function(a){a?(m.items=i.makeObjectArray(a,o.displayProperty),b.tags=m.items):m.items=[]}),b.$watch("tags.length",function(){j(),h.$validate()}),g.$observe("disabled",function(a){b.disabled=a}),b.eventHandlers={input:{keydown:function(a){n.trigger("input-keydown",a)},focus:function(){b.hasFocus||(b.hasFocus=!0,n.trigger("input-focus"))},blur:function(){d(function(){var a=e.prop("activeElement"),d=a===p[0],f=c[0].contains(a);!d&&f||(b.hasFocus=!1,n.trigger("input-blur"))})},paste:function(a){a.getTextData=function(){var b=a.clipboardData||a.originalEvent&&a.originalEvent.clipboardData;return b?b.getData("text/plain"):f.clipboardData.getData("Text")},n.trigger("input-paste",a)}},host:{click:function(){b.disabled||k()}},tag:{click:function(a){n.trigger("tag-clicked",{$tag:a})}}},n.on("tag-added",b.onTagAdded).on("invalid-tag",b.onInvalidTag).on("tag-removed",b.onTagRemoved).on("tag-clicked",b.onTagClicked).on("tag-added",function(){b.newTag.text("")}).on("tag-added tag-removed",function(){b.tags=m.items,h.$setDirty(),k()}).on("invalid-tag",function(){b.newTag.invalid=!0}).on("option-change",function(a){-1!==q.indexOf(a.name)&&j()}).on("input-change",function(){m.clearSelection(),b.newTag.invalid=null}).on("input-focus",function(){c.triggerHandler("focus"),h.$setValidity("leftoverText",!0)}).on("input-blur",function(){o.addOnBlur&&!o.addFromAutocompleteOnly&&m.addText(b.newTag.text()),c.triggerHandler("blur"),j()}).on("input-keydown",function(c){var d,e,f,g,h=c.keyCode,j={};i.isModifierOn(c)||-1===l.indexOf(h)||(j[a.enter]=o.addOnEnter,j[a.comma]=o.addOnComma,j[a.space]=o.addOnSpace,d=!o.addFromAutocompleteOnly&&j[h],e=(h===a.backspace||h===a.delete)&&m.selected,g=h===a.backspace&&0===b.newTag.text().length&&o.enableEditingLastTag,f=(h===a.backspace||h===a.left||h===a.right)&&0===b.newTag.text().length&&!o.enableEditingLastTag,d?m.addText(b.newTag.text()):g?(m.selectPrior(),m.removeSelected().then(function(a){a&&b.newTag.text(a[o.displayProperty])})):e?m.removeSelected():f&&(h===a.left||h===a.backspace?m.selectPrior():h===a.right&&m.selectNext()),(d||f||e||g)&&c.preventDefault())}).on("input-paste",function(a){if(o.addOnPaste){var b=a.getTextData(),c=b.split(o.pasteSplitPattern);c.length>1&&(c.forEach(function(a){m.addText(a)}),a.preventDefault())}})}}}]),d.directive("tiTagItem",["tiUtil",function(a){return{restrict:"E",require:"^tagsInput",template:'<ng-include src="$$template"></ng-include>',scope:{$scope:"=scope",data:"="},link:function(b,c,d,e){var f=e.registerTagItem(),g=f.getOptions();b.$$template=g.template,b.$$removeTagSymbol=g.removeTagSymbol,b.$getDisplayText=function(){return a.safeToString(b.data[g.displayProperty])},b.$removeTag=function(){f.removeTag(b.$index)},b.$watch("$parent.$index",function(a){b.$index=a})}}}]),d.directive("autoComplete",["$document","$timeout","$sce","$q","tagsInputConfig","tiUtil",function(b,c,d,e,f,g){function h(a,b,c){var d,f,h,i={};return h=function(){return b.tagsInput.keyProperty||b.tagsInput.displayProperty},d=function(a,c){return a.filter(function(a){return!g.findInObjectArray(c,a,h(),function(a,c){return b.tagsInput.replaceSpacesWithDashes&&(a=g.replaceSpacesWithDashes(a),c=g.replaceSpacesWithDashes(c)),g.defaultComparer(a,c)})})},i.reset=function(){f=null,i.items=[],i.visible=!1,i.index=-1,i.selected=null,i.query=null},i.show=function(){b.selectFirstMatch?i.select(0):i.selected=null,i.visible=!0},i.load=g.debounce(function(c,j){i.query=c;var k=e.when(a({$query:c}));f=k,k.then(function(a){k===f&&(a=g.makeObjectArray(a.data||a,h()),a=d(a,j),i.items=a.slice(0,b.maxResultsToShow),i.items.length>0?i.show():i.reset())})},b.debounceDelay),i.selectNext=function(){i.select(++i.index)},i.selectPrior=function(){i.select(--i.index)},i.select=function(a){0>a?a=i.items.length-1:a>=i.items.length&&(a=0),i.index=a,i.selected=i.items[a],c.trigger("suggestion-selected",a)},i.reset(),i}function i(a,b){var c=a.find("li").eq(b),d=c.parent(),e=c.prop("offsetTop"),f=c.prop("offsetHeight"),g=d.prop("clientHeight"),h=d.prop("scrollTop");h>e?d.prop("scrollTop",e):e+f>g+h&&d.prop("scrollTop",e+f-g)}return{restrict:"E",require:"^tagsInput",scope:{source:"&",matchClass:"&"},templateUrl:"ngTagsInput/auto-complete.html",controller:["$scope","$element","$attrs",function(a,b,c){a.events=g.simplePubSub(),f.load("autoComplete",a,c,{template:[String,"ngTagsInput/auto-complete-match.html"],debounceDelay:[Number,100],minLength:[Number,3],highlightMatchedText:[Boolean,!0],maxResultsToShow:[Number,10],loadOnDownArrow:[Boolean,!1],loadOnEmpty:[Boolean,!1],loadOnFocus:[Boolean,!1],selectFirstMatch:[Boolean,!0],displayProperty:[String,""]}),a.suggestionList=new h(a.source,a.options,a.events),this.registerAutocompleteMatch=function(){return{getOptions:function(){return a.options},getQuery:function(){return a.suggestionList.query}}}}],link:function(b,c,d,e){var f,h=[a.enter,a.tab,a.escape,a.up,a.down],j=b.suggestionList,k=e.registerAutocomplete(),l=b.options,m=b.events;l.tagsInput=k.getOptions(),f=function(a){return a&&a.length>=l.minLength||!a&&l.loadOnEmpty},b.templateScope=k.getTemplateScope(),b.addSuggestionByIndex=function(a){j.select(a),b.addSuggestion()},b.addSuggestion=function(){var a=!1;return j.selected&&(k.addTag(angular.copy(j.selected)),j.reset(),a=!0),a},b.track=function(a){return a[l.tagsInput.keyProperty||l.tagsInput.displayProperty]},b.getSuggestionClass=function(a,c){var d=a===j.selected;return[b.matchClass({$match:a,$index:c,$selected:d}),{selected:d}]},k.on("tag-added tag-removed invalid-tag input-blur",function(){j.reset()}).on("input-change",function(a){f(a)?j.load(a,k.getTags()):j.reset()}).on("input-focus",function(){var a=k.getCurrentTagText();l.loadOnFocus&&f(a)&&j.load(a,k.getTags())}).on("input-keydown",function(c){var d=c.keyCode,e=!1;if(!g.isModifierOn(c)&&-1!==h.indexOf(d))return j.visible?d===a.down?(j.selectNext(),e=!0):d===a.up?(j.selectPrior(),e=!0):d===a.escape?(j.reset(),e=!0):d!==a.enter&&d!==a.tab||(e=b.addSuggestion()):d===a.down&&b.options.loadOnDownArrow&&(j.load(k.getCurrentTagText(),k.getTags()),e=!0),e?(c.preventDefault(),c.stopImmediatePropagation(),!1):void 0}),m.on("suggestion-selected",function(a){i(c,a)})}}}]),d.directive("tiAutocompleteMatch",["$sce","tiUtil",function(a,b){return{restrict:"E",require:"^autoComplete",template:'<ng-include src="$$template"></ng-include>',scope:{$scope:"=scope",data:"="},link:function(c,d,e,f){var g=f.registerAutocompleteMatch(),h=g.getOptions();c.$$template=h.template,c.$index=c.$parent.$index,c.$highlight=function(c){return h.highlightMatchedText&&(c=b.safeHighlight(c,g.getQuery())),a.trustAsHtml(c)},c.$getDisplayText=function(){return b.safeToString(c.data[h.displayProperty||h.tagsInput.displayProperty])}}}}]),d.directive("tiTranscludeAppend",function(){return function(a,b,c,d,e){e(function(a){b.append(a)})}}),d.directive("tiAutosize",["tagsInputConfig",function(a){return{restrict:"A",require:"ngModel",link:function(b,c,d,e){var f,g,h=a.getTextAutosizeThreshold();f=angular.element('<span class="input"></span>'),f.css("display","none").css("visibility","hidden").css("width","auto").css("white-space","pre"),c.parent().append(f),g=function(a){var b,e=a;return angular.isString(e)&&0===e.length&&(e=d.placeholder),e&&(f.text(e),f.css("display",""),b=f.prop("offsetWidth"),f.css("display","none")),c.css("width",b?b+h+"px":""),a},e.$parsers.unshift(g),e.$formatters.unshift(g),d.$observe("placeholder",function(a){e.$modelValue||g(a)})}}}]),d.directive("tiBindAttrs",function(){return function(a,b,c){a.$watch(c.tiBindAttrs,function(a){angular.forEach(a,function(a,b){c.$set(b,a)})},!0)}}),d.provider("tagsInputConfig",function(){var a={},b={},c=3;this.setDefaults=function(b,c){return a[b]=c,this},this.setActiveInterpolation=function(a,c){return b[a]=c,this},this.setTextAutosizeThreshold=function(a){return c=a,this},this.$get=["$interpolate",function(d){var e={};return e[String]=function(a){return a},e[Number]=function(a){return parseInt(a,10)},e[Boolean]=function(a){return"true"===a.toLowerCase()},e[RegExp]=function(a){return new RegExp(a)},{load:function(c,f,g,h){var i=function(){return!0};f.options={},angular.forEach(h,function(h,j){var k,l,m,n,o,p;k=h[0],l=h[1],m=h[2]||i,n=e[k],o=function(){var b=a[c]&&a[c][j];return angular.isDefined(b)?b:l},p=function(a){f.options[j]=a&&m(a)?n(a):o()},b[c]&&b[c][j]?g.$observe(j,function(a){p(a),f.events.trigger("option-change",{name:j,newValue:a})}):p(g[j]&&d(g[j])(f.$parent))})},getTextAutosizeThreshold:function(){return c}}}]}),d.factory("tiUtil",["$timeout","$q",function(a,b){var c={};return c.debounce=function(b,c){var d;return function(){var e=arguments;a.cancel(d),d=a(function(){b.apply(null,e)},c)}},c.makeObjectArray=function(a,b){if(!angular.isArray(a)||0===a.length||angular.isObject(a[0]))return a;var c=[];return a.forEach(function(a){var d={};d[b]=a,c.push(d)}),c},c.findInObjectArray=function(a,b,d,e){var f=null;return e=e||c.defaultComparer,a.some(function(a){return e(a[d],b[d])?(f=a,!0):void 0}),f},c.defaultComparer=function(a,b){return c.safeToString(a).toLowerCase()===c.safeToString(b).toLowerCase()},c.safeHighlight=function(a,b){function d(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}if(!b)return a;a=c.encodeHTML(a),b=c.encodeHTML(b);var e=new RegExp("&[^;]+;|"+d(b),"gi");return a.replace(e,function(a){return a.toLowerCase()===b.toLowerCase()?"<em>"+a+"</em>":a})},c.safeToString=function(a){return angular.isUndefined(a)||null==a?"":a.toString().trim()},c.encodeHTML=function(a){return c.safeToString(a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},c.handleUndefinedResult=function(a,b){return function(){var c=a.apply(null,arguments);return angular.isUndefined(c)?b:c}},c.replaceSpacesWithDashes=function(a){return c.safeToString(a).replace(/\s/g,"-")},c.isModifierOn=function(a){return a.shiftKey||a.ctrlKey||a.altKey||a.metaKey},c.promisifyValue=function(a){return a=!!angular.isUndefined(a)||a,b[a?"when":"reject"]()},c.simplePubSub=function(){var a={};return{on:function(b,c,d){return b.split(" ").forEach(function(b){a[b]||(a[b]=[]);var e=d?[].unshift:[].push;e.call(a[b],c)}),this},trigger:function(b,d){var e=a[b]||[];return e.every(function(a){return c.handleUndefinedResult(a,!0)(d)}),this}}},c}]),d.run(["$templateCache",function(a){a.put("ngTagsInput/tags-input.html",'<div class="host" tabindex="-1" ng-click="eventHandlers.host.click()" ti-transclude-append><div class="tags" ng-class="{focused: hasFocus}"><ul class="tag-list"><li use-theme class="tag-item" ng-repeat="tag in tagList.items track by track(tag)" ng-class="getTagClass(tag, $index)" ng-click="eventHandlers.tag.click(tag)"><ti-tag-item scope="templateScope" data="::tag"></ti-tag-item></li></ul><input class="input" autocomplete="off" ng-model="newTag.text" ng-model-options="{getterSetter: true}" ng-keydown="eventHandlers.input.keydown($event)" ng-focus="eventHandlers.input.focus($event)" ng-blur="eventHandlers.input.blur($event)" ng-paste="eventHandlers.input.paste($event)" ng-trim="false" ng-class="{\'invalid-tag\': newTag.invalid}" ng-disabled="disabled" ti-bind-attrs="{type: options.type, placeholder: options.placeholder, tabindex: options.tabindex, spellcheck: options.spellcheck}" ti-autosize></div></div>'),a.put("ngTagsInput/tag-item.html",'<span ng-bind="$getDisplayText()"></span> <a class="remove-button" ng-click="$removeTag()" ng-bind="::$$removeTagSymbol"></a>'),a.put("ngTagsInput/auto-complete.html",'<div class="autocomplete" ng-if="suggestionList.visible"><ul class="suggestion-list"><li class="suggestion-item" ng-repeat="item in suggestionList.items track by track(item)" ng-class="getSuggestionClass(item, $index)" ng-click="addSuggestionByIndex($index)" ng-mouseenter="suggestionList.select($index)"><ti-autocomplete-match scope="templateScope" data="::item"></ti-autocomplete-match></li></ul></div>'),a.put("ngTagsInput/auto-complete-match.html",'<span ng-bind-html="$highlight($getDisplayText())"></span>')}])}(),angular.module("xeditable",[]).value("editableOptions",{theme:"default",icon_set:"default",buttons:"right",blurElem:"cancel",blurForm:"ignore",activate:"focus",isDisabled:!1,activationEvent:"click"}),angular.module("xeditable").directive("editableBsdate",["editableDirectiveFactory",function(a){return a({directiveName:"editableBsdate",inputTpl:"<div></div>",render:function(){this.parent.render.call(this);var a=angular.element('<input type="text" class="form-control" data-ng-model="$parent.$data"/>');a.attr("uib-datepicker-popup",this.attrs.eDatepickerPopupXEditable||"yyyy/MM/dd"),a.attr("is-open",this.attrs.eIsOpen),a.attr("date-disabled",this.attrs.eDateDisabled),a.attr("uib-datepicker-popup",this.attrs.eDatepickerPopup),a.attr("year-range",this.attrs.eYearRange||20),a.attr("show-button-bar",this.attrs.eShowButtonBar||!0),a.attr("current-text",this.attrs.eCurrentText||"Today"),a.attr("clear-text",this.attrs.eClearText||"Clear"),a.attr("close-text",this.attrs.eCloseText||"Done"),a.attr("close-on-date-selection",this.attrs.eCloseOnDateSelection||!0),a.attr("datepicker-append-to-body",this.attrs.eDatePickerAppendToBody||!1),a.attr("date-disabled",this.attrs.eDateDisabled),a.attr("name",this.attrs.eName),a.attr("on-open-focus",this.attrs.eOnOpenFocus||!0),a.attr("ng-readonly",this.attrs.eReadonly||!1),this.attrs.eNgChange&&(a.attr("ng-change",this.attrs.eNgChange),this.inputEl.removeAttr("ng-change")),this.attrs.eStyle&&(a.attr("style",this.attrs.eStyle),this.inputEl.removeAttr("style")),this.scope.dateOptions={formatDay:this.attrs.eFormatDay||"dd",formatMonth:this.attrs.eFormatMonth||"MMMM",formatYear:this.attrs.eFormatYear||"yyyy",formatDayHeader:this.attrs.eFormatDayHeader||"EEE",formatDayTitle:this.attrs.eFormatDayTitle||"MMMM yyyy",formatMonthTitle:this.attrs.eFormatMonthTitle||"yyyy",showWeeks:!this.attrs.eShowWeeks||"true"===this.attrs.eShowWeeks.toLowerCase(),startingDay:this.attrs.eStartingDay||0,minMode:this.attrs.eMinMode||"day",maxMode:this.attrs.eMaxMode||"year",initDate:this.scope.$eval(this.attrs.eInitDate)||new Date,datepickerMode:this.attrs.eDatepickerMode||"day",maxDate:this.scope.$eval(this.attrs.eMaxDate)||null,minDate:this.scope.$eval(this.attrs.eMinDate)||null};var b=angular.isDefined(this.attrs.eShowCalendarButton)?this.attrs.eShowCalendarButton:"true";if("true"===b){var c=angular.element('<button type="button" class="btn btn-default"><i class="glyphicon glyphicon-calendar"></i></button>'),d=angular.element('<span class="input-group-btn"></span>');c.attr("ng-click",this.attrs.eNgClick),d.append(c),this.inputEl.append(d)}else a.attr("ng-click",this.attrs.eNgClick);a.attr("datepicker-options","dateOptions"),this.inputEl.prepend(a),this.inputEl.removeAttr("class"),this.inputEl.removeAttr("ng-click"),this.inputEl.removeAttr("is-open"),this.inputEl.removeAttr("init-date"),this.inputEl.removeAttr("datepicker-popup"),this.inputEl.removeAttr("required"),this.inputEl.removeAttr("ng-model"),this.inputEl.removeAttr("date-picker-append-to-body"),this.inputEl.removeAttr("name"),this.inputEl.attr("class","input-group")}})}]),angular.module("xeditable").directive("editableBstime",["editableDirectiveFactory",function(a){return a({directiveName:"editableBstime",inputTpl:"<uib-timepicker></uib-timepicker>",render:function(){this.parent.render.call(this);var a=angular.element('<div class="well well-small" style="display:inline-block;"></div>');a.attr("ng-model",this.inputEl.attr("ng-model")),this.inputEl.removeAttr("ng-model"),this.attrs.eNgChange&&(a.attr("ng-change",this.inputEl.attr("ng-change")),this.inputEl.removeAttr("ng-change")),this.inputEl.wrap(a)}})}]),angular.module("xeditable").directive("editableCheckbox",["editableDirectiveFactory",function(a){return a({directiveName:"editableCheckbox",inputTpl:'<input type="checkbox">',render:function(){this.parent.render.call(this),this.attrs.eTitle&&(this.inputEl.wrap("<label></label>"),this.inputEl.parent().append("<span>"+this.attrs.eTitle+"</span>"))},autosubmit:function(){var a=this;a.inputEl.bind("change",function(){setTimeout(function(){a.scope.$apply(function(){a.scope.$form.$submit()})},500)})}})}]),angular.module("xeditable").directive("editableChecklist",["editableDirectiveFactory","editableNgOptionsParser",function(a,b){return a({directiveName:"editableChecklist",inputTpl:"<span></span>",useCopy:!0,render:function(){this.parent.render.call(this);var a=b(this.attrs.eNgOptions),c='<label ng-repeat="'+a.ngRepeat+'"><input type="checkbox" checklist-model="$parent.$parent.$data" checklist-value="'+a.locals.valueFn+'"><span ng-bind="'+a.locals.displayFn+'"></span></label>';this.inputEl.removeAttr("ng-model"),this.inputEl.removeAttr("ng-options"),this.inputEl.html(c)}})}]),angular.module("xeditable").directive("editableCombodate",["editableDirectiveFactory","editableCombodate",function(a,b){return a({directiveName:"editableCombodate",inputTpl:'<input type="text">',render:function(){this.parent.render.call(this);var a={value:new Date(this.scope.$data)},c=this;angular.forEach(["format","template","minYear","maxYear","yearDescending","minuteStep","secondStep","firstItem","errorClass","customClass","roundTime","smartDays"],function(b){var d="e"+b.charAt(0).toUpperCase()+b.slice(1);d in c.attrs&&(a[b]=c.attrs[d])});var d=b.getInstance(this.inputEl,a);d.$widget.find("select").bind("change",function(a){c.scope.$data=new Date(d.getValue()).toISOString()})}})}]),function(){var a=function(a){return a.toLowerCase().replace(/-(.)/g,function(a,b){return b.toUpperCase()})},b="text|password|email|tel|number|url|search|color|date|datetime|datetime-local|time|month|week|file".split("|");angular.forEach(b,function(b){var c=a("editable-"+b);angular.module("xeditable").directive(c,["editableDirectiveFactory",function(a){return a({directiveName:c,inputTpl:'<input type="'+b+'">',render:function(){if(this.parent.render.call(this),this.attrs.eLabel){var a=angular.element("<label>"+this.attrs.eLabel+"</label>");this.inputEl.parent().prepend(a)}this.attrs.eFormclass&&this.editorEl.addClass(this.attrs.eFormclass)}})}])}),angular.module("xeditable").directive("editableRange",["editableDirectiveFactory",function(a){return a({directiveName:"editableRange",inputTpl:'<input type="range" id="range" name="range">',render:function(){this.parent.render.call(this),this.inputEl.after("<output>{{$data}}</output>")}})}])}(),angular.module("xeditable").directive("editableTagsInput",["editableDirectiveFactory","editableUtils",function(a,b){var c=function(a){for(var b=0,c=d.length;c>b;b++)if(d[b].name===a)return b},d=[],e=a({directiveName:"editableTagsInput",inputTpl:"<tags-input></tags-input>",render:function(){var a=c(this.name);this.parent.render.call(this),this.inputEl.append(b.rename("auto-complete",d[a].element)),this.inputEl.removeAttr("ng-model"),this.inputEl.attr("ng-model","$parent.$data")}}),f=e.link;return e.link=function(a,b,c,e){var g=b.find("editable-tags-input-auto-complete");return d.push({name:c.name||c.editableTagsInput,element:g.clone()}),g.remove(),f(a,b,c,e)},e}]),angular.module("xeditable").directive("editableRadiolist",["editableDirectiveFactory","editableNgOptionsParser",function(a,b){return a({directiveName:"editableRadiolist",inputTpl:"<span></span>",render:function(){this.parent.render.call(this);var a=b(this.attrs.eNgOptions),c='<label data-ng-repeat="'+a.ngRepeat+'"><input type="radio" data-ng-disabled="::'+this.attrs.eNgDisabled+'" data-ng-model="$parent.$parent.$data" value="{{::'+a.locals.valueFn+'}}"><span data-ng-bind="::'+a.locals.displayFn+'"></span></label>';this.inputEl.removeAttr("ng-model"),this.inputEl.removeAttr("ng-options"),this.inputEl.html(c)},autosubmit:function(){var a=this;a.inputEl.bind("change",function(){setTimeout(function(){a.scope.$apply(function(){a.scope.$form.$submit()})},500)})}})}]),angular.module("xeditable").directive("editableSelect",["editableDirectiveFactory",function(a){return a({directiveName:"editableSelect",inputTpl:"<select></select>",render:function(){if(this.parent.render.call(this),this.attrs.ePlaceholder){var a=angular.element('<option value="">'+this.attrs.ePlaceholder+"</option>");this.inputEl.append(a)}},autosubmit:function(){var a=this;a.inputEl.bind("change",function(){a.scope.$apply(function(){a.scope.$form.$submit()})})}})}]),angular.module("xeditable").directive("editableTextarea",["editableDirectiveFactory",function(a){return a({directiveName:"editableTextarea",inputTpl:"<textarea></textarea>",addListeners:function(){var a=this;a.parent.addListeners.call(a),a.single&&"no"!==a.buttons&&a.autosubmit()},autosubmit:function(){var a=this;a.inputEl.bind("keydown",function(b){(b.ctrlKey||b.metaKey)&&13===b.keyCode&&a.scope.$apply(function(){a.scope.$form.$submit()})})}})}]),angular.module("xeditable").directive("editableUiSelect",["editableDirectiveFactory","editableUtils",function(a,b){var c=function(a){for(var b=0,c=d.length;c>b;b++)if(d[b].name===a)return b},d=[],e=[],f=a({directiveName:"editableUiSelect",inputTpl:"<ui-select></ui-select>",render:function(){var a=c(this.name);this.parent.render.call(this),this.inputEl.append(b.rename("ui-select-match",d[a].element)),this.inputEl.append(b.rename("ui-select-choices",e[a].element)),this.inputEl.removeAttr("ng-model"),this.inputEl.attr("ng-model","$parent.$parent.$data")}}),g=f.link;return f.link=function(a,b,c,f){var h=b.find("editable-ui-select-match"),i=b.find("editable-ui-select-choices");return d.push({name:c.name||c.editableUiSelect,element:h.clone()}),e.push({name:c.name||c.editableUiSelect,element:i.clone()}),h.remove(),i.remove(),g(a,b,c,f)},f}]),angular.module("xeditable").factory("editableController",["$q","editableUtils",function(a,b){function c(a,c,d,e,f,g,h,i,j,k){var l,m,n=this;n.scope=a,n.elem=d,n.attrs=c,n.inputEl=null,n.editorEl=null,n.single=!0,n.error="",n.theme=f[c.editableTheme]||f[h.theme]||f.default,n.parent={},n.icon_set="default"===h.icon_set?g.default[h.theme]:g.external[h.icon_set],n.inputTpl="",n.directiveName="",n.useCopy=!1,n.single=null,n.buttons="right",n.init=function(b){if(n.single=b,n.name=c.eName||c[n.directiveName],!c[n.directiveName])throw"You should provide value for `"+n.directiveName+"` in editable element!";l=e(c[n.directiveName]),n.single?n.buttons=n.attrs.buttons||h.buttons:n.buttons="no",c.eName&&n.scope.$watch("$data",function(a){n.scope.$form.$data[c.eName]=a}),c.onshow&&(n.onshow=function(){return n.catchError(e(c.onshow)(a))}),c.onhide&&(n.onhide=function(){return e(c.onhide)(a)}),c.oncancel&&(n.oncancel=function(){return e(c.oncancel)(a)}),c.onbeforesave&&(n.onbeforesave=function(){return n.catchError(e(c.onbeforesave)(a))}),c.onaftersave&&(n.onaftersave=function(){return n.catchError(e(c.onaftersave)(a))}),a.$parent.$watch(c[n.directiveName],function(a,b){n.setLocalValue(),n.handleEmpty()})},n.render=function(){var a=n.theme;n.inputEl=angular.element(n.inputTpl),n.controlsEl=angular.element(a.controlsTpl),n.controlsEl.append(n.inputEl),"no"!==n.buttons&&(n.buttonsEl=angular.element(a.buttonsTpl),n.submitEl=angular.element(a.submitTpl),n.cancelEl=angular.element(a.cancelTpl),n.icon_set&&(n.submitEl.find("span").addClass(n.icon_set.ok),n.cancelEl.find("span").addClass(n.icon_set.cancel)),n.buttonsEl.append(n.submitEl).append(n.cancelEl),n.controlsEl.append(n.buttonsEl),n.inputEl.addClass("editable-has-buttons")),n.errorEl=angular.element(a.errorTpl),n.controlsEl.append(n.errorEl),n.editorEl=angular.element(n.single?a.formTpl:a.noformTpl),n.editorEl.append(n.controlsEl);for(var d in c.$attr)if(!(d.length<=1)){var e=!1,f=d.substring(1,2);if("e"===d.substring(0,1)&&f===f.toUpperCase()&&(e=d.substring(1),"Form"!==e&&"NgSubmit"!==e)){e=e.substring(0,1).toLowerCase()+b.camelToDash(e.substring(1));var g="value"!==e&&""===c[d]?e:c[d];n.inputEl.attr(e,g)}}n.inputEl.addClass("editable-input"),n.inputEl.attr("ng-model","$parent.$data"),n.editorEl.addClass(b.camelToDash(n.directiveName)),n.single&&(n.editorEl.attr("editable-form","$form"),n.editorEl.attr("blur",n.attrs.blur||("no"===n.buttons?"cancel":h.blurElem))),angular.isFunction(a.postrender)&&a.postrender.call(n)},n.setLocalValue=function(){n.scope.$data=n.useCopy?angular.copy(l(a.$parent)):l(a.$parent)};var o=null;n.show=function(){return n.setLocalValue(),n.render(),d.after(n.editorEl),o=a.$new(),j(n.editorEl)(o),n.addListeners(),d.addClass("editable-hide"),n.onshow()},n.hide=function(){return o.$destroy(),n.controlsEl.remove(),n.editorEl.remove(),d.removeClass("editable-hide"),n.onhide()},n.cancel=function(){n.oncancel()},n.addListeners=function(){n.inputEl.bind("keyup",function(a){if(n.single)switch(a.keyCode){case 27:n.scope.$apply(function(){n.scope.$form.$cancel()})}}),n.single&&"no"===n.buttons&&n.autosubmit(),n.editorEl.bind("click",function(a){a.which&&1!==a.which||n.scope.$form.$visible&&(n.scope.$form._clicked=!0)})},n.setWaiting=function(a){a?(m=!n.inputEl.attr("disabled")&&!n.inputEl.attr("ng-disabled")&&!n.inputEl.attr("ng-enabled"),m&&(n.inputEl.attr("disabled","disabled"),n.buttonsEl&&n.buttonsEl.find("button").attr("disabled","disabled"))):m&&(n.inputEl.removeAttr("disabled"),n.buttonsEl&&n.buttonsEl.find("button").removeAttr("disabled"))},n.activate=function(a,b){setTimeout(function(){var c=n.inputEl[0];"focus"===h.activate&&c.focus&&(a&&(b=b||a,c.onfocus=function(){var c=this;setTimeout(function(){c.setSelectionRange(a,b)})}),c.focus()),"select"===h.activate&&c.select&&c.select()},0)},n.setError=function(b){angular.isObject(b)||(a.$error=b,n.error=b)},n.catchError=function(a,b){return angular.isObject(a)&&b!==!0?k.when(a).then(angular.bind(this,function(a){this.catchError(a,!0)}),angular.bind(this,function(a){this.catchError(a,!0)})):b&&angular.isObject(a)&&a.status&&200!==a.status&&a.data&&angular.isString(a.data)?(this.setError(a.data),a=a.data):angular.isString(a)&&this.setError(a),a},n.save=function(){l.assign(a.$parent,n.useCopy?angular.copy(n.scope.$data):n.scope.$data)},n.handleEmpty=function(){var b=l(a.$parent),c=null===b||void 0===b||""===b||angular.isArray(b)&&0===b.length;d.toggleClass("editable-empty",c)},n.autosubmit=angular.noop,n.onshow=angular.noop,n.onhide=angular.noop,n.oncancel=angular.noop,n.onbeforesave=angular.noop,n.onaftersave=angular.noop}return c.$inject=["$scope","$attrs","$element","$parse","editableThemes","editableIcons","editableOptions","$rootScope","$compile","$q"],c}]),angular.module("xeditable").factory("editableDirectiveFactory",["$parse","$compile","editableThemes","$rootScope","$document","editableController","editableFormController","editableOptions",function(a,b,c,d,e,f,g,h){return function(b){return{restrict:"A",scope:!0,require:[b.directiveName,"?^form"],controller:f,link:function(c,f,i,j){var k,l=j[0],m=!1;if(j[1])k=j[1],m=void 0===i.eSingle;else if(i.eForm){var n=a(i.eForm)(c);if(n)k=n,m=!0;else if(f&&"function"==typeof f.parents&&f.parents().last().find("form[name="+i.eForm+"]").length)k=null,m=!0;else for(var o=0;o<e[0].forms.length;o++)if(e[0].forms[o].name===i.eForm){k=null,m=!0;break}}angular.forEach(b,function(a,b){void 0!==l[b]&&(l.parent[b]=l[b])}),angular.extend(l,b);var p=angular.isDefined(i.editDisabled)?c.$eval(i.editDisabled):h.isDisabled;if(!p)if(l.init(!m),c.$editable=l,f.addClass("editable"),m)if(k){if(c.$form=k,!c.$form.$addEditable)throw"Form with editable elements should have `editable-form` attribute.";c.$form.$addEditable(l)}else d.$$editableBuffer=d.$$editableBuffer||{},d.$$editableBuffer[i.eForm]=d.$$editableBuffer[i.eForm]||[],d.$$editableBuffer[i.eForm].push(l),c.$form=null;else c.$form=g(),c.$form.$addEditable(l),i.eForm&&(a(i.eForm).assign||angular.noop)(c.$parent,c.$form),(!i.eForm||i.eClickable)&&(f.addClass("editable-click"),f.bind(h.activationEvent,function(a){a.preventDefault(),a.editable=l,c.$apply(function(){c.$form.$show()})}))}}}}]),angular.module("xeditable").factory("editableFormController",["$parse","$document","$rootScope","editablePromiseCollection","editableUtils",function(a,b,c,d,e){var f=[],g=function(a,b){if(b==a)return!0;for(var c=b.parentNode;null!==c;){if(c==a)return!0;c=c.parentNode}return!1},h=function(a,b){var c=!0,d=a.$editables;return angular.forEach(d,function(a){var d=a.editorEl[0];g(d,b.target)&&(c=!1)}),c};b.bind("click",function(a){if(!a.which||1===a.which){for(var b=[],d=[],e=0;e<f.length;e++)f[e]._clicked?f[e]._clicked=!1:f[e].$waiting||("cancel"===f[e]._blur&&h(f[e],a)&&b.push(f[e]),"submit"===f[e]._blur&&h(f[e],a)&&d.push(f[e]));(b.length||d.length)&&c.$apply(function(){angular.forEach(b,function(a){a.$cancel()}),angular.forEach(d,function(a){a.$submit()})})}}),c.$on("closeEdit",function(){for(var a=0;a<f.length;a++)f[a].$hide()});var i={$addEditable:function(a){this.$editables.push(a),a.elem.bind("$destroy",angular.bind(this,this.$removeEditable,a)),a.scope.$form||(a.scope.$form=this),this.$visible&&a.catchError(a.show()),a.catchError(a.setWaiting(this.$waiting))},$removeEditable:function(a){for(var b=0;b<this.$editables.length;b++)if(this.$editables[b]===a)return void this.$editables.splice(b,1)},$show:function(){if(!this.$visible){this.$visible=!0;var a=d();a.when(this.$onshow()),this.$setError(null,""),angular.forEach(this.$editables,function(b){a.when(b.show())}),a.then({onWait:angular.bind(this,this.$setWaiting),onTrue:angular.bind(this,this.$activate),onFalse:angular.bind(this,this.$activate),onString:angular.bind(this,this.$activate)}),setTimeout(angular.bind(this,function(){this._clicked=!1,-1===e.indexOf(f,this)&&f.push(this)}),0)}},$activate:function(a){var b;if(this.$editables.length){if(angular.isString(a))for(b=0;b<this.$editables.length;b++)if(this.$editables[b].name===a)return void this.$editables[b].activate();for(b=0;b<this.$editables.length;b++)if(this.$editables[b].error)return void this.$editables[b].activate();this.$editables[0].activate(this.$editables[0].elem[0].selectionStart,this.$editables[0].elem[0].selectionEnd)}},$hide:function(){this.$visible&&(this.$visible=!1,this.$onhide(),angular.forEach(this.$editables,function(a){a.hide()}),e.arrayRemove(f,this))},$cancel:function(){this.$visible&&(this.$oncancel(),angular.forEach(this.$editables,function(a){a.cancel();
+}),this.$hide())},$setWaiting:function(a){this.$waiting=!!a,angular.forEach(this.$editables,function(b){b.setWaiting(!!a)})},$setError:function(a,b){angular.forEach(this.$editables,function(c){a&&c.name!==a||c.setError(b)})},$submit:function(){function a(a){var b=d();b.when(this.$onbeforesave()),b.then({onWait:angular.bind(this,this.$setWaiting),onTrue:a?angular.bind(this,this.$save):angular.bind(this,this.$hide),onFalse:angular.bind(this,this.$hide),onString:angular.bind(this,this.$activate)})}if(!this.$waiting){this.$setError(null,"");var b=d();angular.forEach(this.$editables,function(a){b.when(a.onbeforesave())}),b.then({onWait:angular.bind(this,this.$setWaiting),onTrue:angular.bind(this,a,!0),onFalse:angular.bind(this,a,!1),onString:angular.bind(this,this.$activate)})}},$save:function(){angular.forEach(this.$editables,function(a){a.save()});var a=d();a.when(this.$onaftersave()),angular.forEach(this.$editables,function(b){a.when(b.onaftersave())}),a.then({onWait:angular.bind(this,this.$setWaiting),onTrue:angular.bind(this,this.$hide),onFalse:angular.bind(this,this.$hide),onString:angular.bind(this,this.$activate)})},$onshow:angular.noop,$oncancel:angular.noop,$onhide:angular.noop,$onbeforesave:angular.noop,$onaftersave:angular.noop};return function(){return angular.extend({$editables:[],$visible:!1,$waiting:!1,$data:{},_clicked:!1,_blur:null},i)}}]),angular.module("xeditable").directive("editableForm",["$rootScope","$parse","editableFormController","editableOptions",function(a,b,c,d){return{restrict:"A",require:["form"],compile:function(){return{pre:function(b,d,e,f){var g,h=f[0];e.editableForm?b[e.editableForm]&&b[e.editableForm].$show?(g=b[e.editableForm],angular.extend(h,g)):(g=c(),b[e.editableForm]=g,angular.extend(g,h)):(g=c(),angular.extend(h,g));var i=a.$$editableBuffer,j=h.$name;j&&i&&i[j]&&(angular.forEach(i[j],function(a){g.$addEditable(a)}),delete i[j])},post:function(a,c,e,f){var g;g=e.editableForm&&a[e.editableForm]&&a[e.editableForm].$show?a[e.editableForm]:f[0],e.onshow&&(g.$onshow=angular.bind(g,b(e.onshow),a)),e.onhide&&(g.$onhide=angular.bind(g,b(e.onhide),a)),e.oncancel&&(g.$oncancel=angular.bind(g,b(e.oncancel),a)),e.shown&&b(e.shown)(a)&&g.$show(),g._blur=e.blur||d.blurForm,e.ngSubmit||e.submit||(e.onbeforesave&&(g.$onbeforesave=function(){return b(e.onbeforesave)(a,{$data:g.$data})}),e.onaftersave&&(g.$onaftersave=function(){return b(e.onaftersave)(a,{$data:g.$data})}),c.bind("submit",function(b){b.preventDefault(),a.$apply(function(){g.$submit()})})),c.bind("click",function(a){a.which&&1!==a.which||g.$visible&&(g._clicked=!0)})}}}}}]),angular.module("xeditable").factory("editablePromiseCollection",["$q",function(a){function b(){return{promises:[],hasFalse:!1,hasString:!1,when:function(b,c){if(b===!1)this.hasFalse=!0;else if(!c&&angular.isObject(b))this.promises.push(a.when(b));else{if(!angular.isString(b))return;this.hasString=!0}},then:function(b){function c(){h.hasString||h.hasFalse?!h.hasString&&h.hasFalse?e():f():d()}b=b||{};var d=b.onTrue||angular.noop,e=b.onFalse||angular.noop,f=b.onString||angular.noop,g=b.onWait||angular.noop,h=this;this.promises.length?(g(!0),a.all(this.promises).then(function(a){g(!1),angular.forEach(a,function(a){h.when(a,!0)}),c()},function(a){g(!1),f()})):c()}}}return b}]),angular.module("xeditable").factory("editableUtils",[function(){return{indexOf:function(a,b){if(a.indexOf)return a.indexOf(b);for(var c=0;c<a.length;c++)if(b===a[c])return c;return-1},arrayRemove:function(a,b){var c=this.indexOf(a,b);return c>=0&&a.splice(c,1),b},camelToDash:function(a){var b=/[A-Z]/g;return a.replace(b,function(a,b){return(b?"-":"")+a.toLowerCase()})},dashToCamel:function(a){var b=/([\:\-\_]+(.))/g,c=/^moz([A-Z])/;return a.replace(b,function(a,b,c,d){return d?c.toUpperCase():c}).replace(c,"Moz$1")},rename:function(a,b){var c=angular.element("<"+a+"/>");c.html(b.html());for(var d=b[0].attributes,e=0;e<d.length;++e)c.attr(d.item(e).nodeName,d.item(e).value);return c}}}]),angular.module("xeditable").factory("editableNgOptionsParser",[function(){function a(a){var c;if(!(c=a.match(b)))throw"ng-options parse error";var d,e=c[2]||c[1],f=c[4]||c[6],g=c[5],h=(c[3]||"",c[2]?c[1]:f),i=c[7],j=c[8],k=j?c[8]:null;return void 0===g?(d=f+" in "+i,void 0!==j&&(d+=" track by "+k)):d="("+g+", "+f+") in "+i,{ngRepeat:d,locals:{valueName:f,keyName:g,valueFn:h,displayFn:e}}}var b=/^\s*(.*?)(?:\s+as\s+(.*?))?(?:\s+group\s+by\s+(.*))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+(.*?)(?:\s+track\s+by\s+(.*?))?$/;return a}]),angular.module("xeditable").factory("editableCombodate",[function(){function a(a,b){if(this.$element=angular.element(a),"INPUT"!=this.$element[0].nodeName)throw"Combodate should be applied to INPUT element";var c=(new Date).getFullYear();this.defaults={format:"YYYY-MM-DD HH:mm",template:"D / MMM / YYYY H : mm",value:null,minYear:1970,maxYear:c,yearDescending:!0,minuteStep:5,secondStep:1,firstItem:"empty",errorClass:null,customClass:"",roundTime:!0,smartDays:!0},this.options=angular.extend({},this.defaults,b),this.init()}return a.prototype={constructor:a,init:function(){if(this.map={day:["D","date"],month:["M","month"],year:["Y","year"],hour:["[Hh]","hours"],minute:["m","minutes"],second:["s","seconds"],ampm:["[Aa]",""]},this.$widget=angular.element('<span class="combodate"></span>').html(this.getTemplate()),this.initCombos(),this.options.smartDays){var a=this;this.$widget.find("select").bind("change",function(b){(angular.element(b.target).hasClass("month")||angular.element(b.target).hasClass("year"))&&a.fillCombo("day")})}this.$widget.find("select").css("width","auto"),this.$element.css("display","none").after(this.$widget),this.setValue(this.$element.val()||this.options.value)},getTemplate:function(){var a=this.options.template,b=this.options.customClass;return angular.forEach(this.map,function(b,c){b=b[0];var d=new RegExp(b+"+"),e=b.length>1?b.substring(1,2):b;a=a.replace(d,"{"+e+"}")}),a=a.replace(/ /g,"&nbsp;"),angular.forEach(this.map,function(c,d){c=c[0];var e=c.length>1?c.substring(1,2):c;a=a.replace("{"+e+"}",'<select class="'+d+" "+b+'"></select>')}),a},initCombos:function(){for(var a in this.map){var b=this.$widget[0].querySelectorAll("."+a);this["$"+a]=b.length?angular.element(b):null,this.fillCombo(a)}},fillCombo:function(a){var b=this["$"+a];if(b){var c="fill"+a.charAt(0).toUpperCase()+a.slice(1),d=this[c](),e=b.val();b.html("");for(var f=0;f<d.length;f++)b.append('<option value="'+d[f][0]+'">'+d[f][1]+"</option>");b.val(e)}},fillCommon:function(a){var b,c=[];if("name"===this.options.firstItem){b=moment.relativeTime||moment.langData()._relativeTime;var d="function"==typeof b[a]?b[a](1,!0,a,!1):b[a];d=d.split(" ").reverse()[0],c.push(["",d])}else"empty"===this.options.firstItem&&c.push(["",""]);return c},fillDay:function(){var a,b,c=this.fillCommon("d"),d=-1!==this.options.template.indexOf("DD"),e=31;if(this.options.smartDays&&this.$month&&this.$year){var f=parseInt(this.$month.val(),10),g=parseInt(this.$year.val(),10);isNaN(f)||isNaN(g)||(e=moment([g,f]).daysInMonth())}for(b=1;e>=b;b++)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillMonth:function(){var a,b,c=this.fillCommon("M"),d=-1!==this.options.template.indexOf("MMMM"),e=-1!==this.options.template.indexOf("MMM"),f=-1!==this.options.template.indexOf("MM");for(b=0;11>=b;b++)a=d?moment().date(1).month(b).format("MMMM"):e?moment().date(1).month(b).format("MMM"):f?this.leadZero(b+1):b+1,c.push([b,a]);return c},fillYear:function(){var a,b,c=[],d=-1!==this.options.template.indexOf("YYYY");for(b=this.options.maxYear;b>=this.options.minYear;b--)a=d?b:(b+"").substring(2),c[this.options.yearDescending?"push":"unshift"]([b,a]);return c=this.fillCommon("y").concat(c)},fillHour:function(){var a,b,c=this.fillCommon("h"),d=-1!==this.options.template.indexOf("h"),e=(-1!==this.options.template.indexOf("H"),-1!==this.options.template.toLowerCase().indexOf("hh")),f=d?1:0,g=d?12:23;for(b=f;g>=b;b++)a=e?this.leadZero(b):b,c.push([b,a]);return c},fillMinute:function(){var a,b,c=this.fillCommon("m"),d=-1!==this.options.template.indexOf("mm");for(b=0;59>=b;b+=this.options.minuteStep)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillSecond:function(){var a,b,c=this.fillCommon("s"),d=-1!==this.options.template.indexOf("ss");for(b=0;59>=b;b+=this.options.secondStep)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillAmpm:function(){var a=-1!==this.options.template.indexOf("a"),b=(-1!==this.options.template.indexOf("A"),[["am",a?"am":"AM"],["pm",a?"pm":"PM"]]);return b},getValue:function(a){var b,c={},d=this,e=!1;return angular.forEach(this.map,function(a,b){if("ampm"!==b){var f="day"===b?1:0;return c[b]=d["$"+b]?parseInt(d["$"+b].val(),10):f,isNaN(c[b])?(e=!0,!1):void 0}}),e?"":(this.$ampm&&(12===c.hour?c.hour="am"===this.$ampm.val()?0:12:c.hour="am"===this.$ampm.val()?c.hour:c.hour+12),b=moment([c.year,c.month,c.day,c.hour,c.minute,c.second]),this.highlight(b),a=void 0===a?this.options.format:a,null===a?b.isValid()?b:null:b.isValid()?b.format(a):"")},setValue:function(a){function b(a,b){var c={};return angular.forEach(a.children("option"),function(a,d){var e=angular.element(a).attr("value");if(""!==e){var f=Math.abs(e-b);("undefined"==typeof c.distance||f<c.distance)&&(c={value:e,distance:f})}}),c.value}if(a){var c="string"==typeof a?moment(a,this.options.format,!0):moment(a),d=this,e={};c.isValid()&&(angular.forEach(this.map,function(a,b){"ampm"!==b&&(e[b]=c[a[1]]())}),this.$ampm&&(e.hour>=12?(e.ampm="pm",e.hour>12&&(e.hour-=12)):(e.ampm="am",0===e.hour&&(e.hour=12))),angular.forEach(e,function(a,c){d["$"+c]&&("minute"===c&&d.options.minuteStep>1&&d.options.roundTime&&(a=b(d["$"+c],a)),"second"===c&&d.options.secondStep>1&&d.options.roundTime&&(a=b(d["$"+c],a)),d["$"+c].val(a))}),this.options.smartDays&&this.fillCombo("day"),this.$element.val(c.format(this.options.format)).triggerHandler("change"))}},highlight:function(a){a.isValid()?this.options.errorClass?this.$widget.removeClass(this.options.errorClass):this.$widget.find("select").css("border-color",this.borderColor):this.options.errorClass?this.$widget.addClass(this.options.errorClass):(this.borderColor||(this.borderColor=this.$widget.find("select").css("border-color")),this.$widget.find("select").css("border-color","red"))},leadZero:function(a){return 9>=a?"0"+a:a},destroy:function(){this.$widget.remove(),this.$element.removeData("combodate").show()}},{getInstance:function(b,c){return new a(b,c)}}}]),angular.module("xeditable").factory("editableIcons",function(){var a={default:{bs2:{ok:"icon-ok icon-white",cancel:"icon-remove"},bs3:{ok:"glyphicon glyphicon-ok",cancel:"glyphicon glyphicon-remove"}},external:{"font-awesome":{ok:"fa fa-check",cancel:"fa fa-times"}}};return a}),angular.module("xeditable").factory("editableThemes",function(){var a={default:{formTpl:'<form class="editable-wrap"></form>',noformTpl:'<span class="editable-wrap"></span>',controlsTpl:'<span class="editable-controls"></span>',inputTpl:"",errorTpl:'<div class="editable-error" data-ng-if="$error" data-ng-bind="$error"></div>',buttonsTpl:'<span class="editable-buttons"></span>',submitTpl:'<button type="submit">save</button>',cancelTpl:'<button type="button" ng-click="$form.$cancel()">cancel</button>'},bs2:{formTpl:'<form class="form-inline editable-wrap" role="form"></form>',noformTpl:'<span class="editable-wrap"></span>',controlsTpl:'<div class="editable-controls controls control-group" ng-class="{\'error\': $error}"></div>',inputTpl:"",errorTpl:'<div class="editable-error help-block" data-ng-if="$error" data-ng-bind="$error"></div>',buttonsTpl:'<span class="editable-buttons"></span>',submitTpl:'<button type="submit" class="btn btn-primary"><span></span></button>',cancelTpl:'<button type="button" class="btn" ng-click="$form.$cancel()"><span></span></button>'},bs3:{formTpl:'<form class="form-inline editable-wrap" role="form"></form>',noformTpl:'<span class="editable-wrap"></span>',controlsTpl:'<div class="editable-controls form-group" ng-class="{\'has-error\': $error}"></div>',inputTpl:"",errorTpl:'<div class="editable-error help-block" data-ng-if="$error" data-ng-bind="$error"></div>',buttonsTpl:'<span class="editable-buttons"></span>',submitTpl:'<button type="submit" class="btn btn-primary"><span></span></button>',cancelTpl:'<button type="button" class="btn btn-default" ng-click="$form.$cancel()"><span></span></button>',buttonsClass:"",inputClass:"",postrender:function(){switch(this.directiveName){case"editableText":case"editableSelect":case"editableTextarea":case"editableEmail":case"editableTel":case"editableNumber":case"editableUrl":case"editableSearch":case"editableDate":case"editableDatetime":case"editableBsdate":case"editableTime":case"editableMonth":case"editableWeek":case"editablePassword":case"editableDatetimeLocal":if(this.inputEl.addClass("form-control"),this.theme.inputClass){if(this.inputEl.attr("multiple")&&("input-sm"===this.theme.inputClass||"input-lg"===this.theme.inputClass))break;this.inputEl.addClass(this.theme.inputClass)}break;case"editableCheckbox":this.editorEl.addClass("checkbox")}this.buttonsEl&&this.theme.buttonsClass&&this.buttonsEl.find("button").addClass(this.theme.buttonsClass)}},semantic:{formTpl:'<form class="editable-wrap ui form" ng-class="{\'error\': $error}" role="form"></form>',noformTpl:'<span class="editable-wrap"></span>',controlsTpl:'<div class="editable-controls ui fluid input" ng-class="{\'error\': $error}"></div>',inputTpl:"",errorTpl:'<div class="editable-error ui error message" data-ng-if="$error" data-ng-bind="$error"></div>',buttonsTpl:'<span class="mini ui buttons"></span>',submitTpl:'<button type="submit" class="ui primary button"><i class="ui check icon"></i></button>',cancelTpl:'<button type="button" class="ui button" ng-click="$form.$cancel()"><i class="ui cancel icon"></i></button>'}};return a}),function(T){function z(a,c,b){var g=0,f=[0],h="",l=null,h=b||"UTF8";if("UTF8"!==h&&"UTF16"!==h)throw"encoding must be UTF8 or UTF16";if("HEX"===c){if(0!==a.length%2)throw"srcString of HEX type must be in byte increments";l=B(a),g=l.binLen,f=l.value}else if("ASCII"===c||"TEXT"===c)l=J(a,h),g=l.binLen,f=l.value;else{if("B64"!==c)throw"inputFormat must be HEX, TEXT, ASCII, or B64";l=K(a),g=l.binLen,f=l.value}this.getHash=function(a,c,b,h){var p,l=null,d=f.slice(),n=g;if(3===arguments.length?"number"!=typeof b&&(h=b,b=1):2===arguments.length&&(b=1),b!==parseInt(b,10)||1>b)throw"numRounds must a integer >= 1";switch(c){case"HEX":l=L;break;case"B64":l=M;break;default:throw"format must be HEX or B64"}if("SHA-1"===a)for(p=0;p<b;p++)d=y(d,n),n=160;else if("SHA-224"===a)for(p=0;p<b;p++)d=v(d,n,a),n=224;else if("SHA-256"===a)for(p=0;p<b;p++)d=v(d,n,a),n=256;else if("SHA-384"===a)for(p=0;p<b;p++)d=v(d,n,a),n=384;else{if("SHA-512"!==a)throw"Chosen SHA variant is not supported";for(p=0;p<b;p++)d=v(d,n,a),n=512}return l(d,N(h))},this.getHMAC=function(a,b,c,l,s){var d,n,p,m,w=[],x=[];switch(d=null,l){case"HEX":l=L;break;case"B64":l=M;break;default:throw"outputFormat must be HEX or B64"}if("SHA-1"===c)n=64,m=160;else if("SHA-224"===c)n=64,m=224;else if("SHA-256"===c)n=64,m=256;else if("SHA-384"===c)n=128,m=384;else{if("SHA-512"!==c)throw"Chosen SHA variant is not supported";n=128,m=512}if("HEX"===b)d=B(a),p=d.binLen,d=d.value;else if("ASCII"===b||"TEXT"===b)d=J(a,h),p=d.binLen,d=d.value;else{if("B64"!==b)throw"inputFormat must be HEX, TEXT, ASCII, or B64";d=K(a),p=d.binLen,d=d.value}for(a=8*n,b=n/4-1,n<p/8?(d="SHA-1"===c?y(d,p):v(d,p,c),d[b]&=4294967040):n>p/8&&(d[b]&=4294967040),n=0;n<=b;n+=1)w[n]=909522486^d[n],x[n]=1549556828^d[n];return c="SHA-1"===c?y(x.concat(y(w.concat(f),a+g)),a+m):v(x.concat(v(w.concat(f),a+g,c)),a+m,c),l(c,N(s))}}function s(a,c){this.a=a,this.b=c}function J(a,c){var g,l,b=[],f=[],h=0;if("UTF8"===c)for(l=0;l<a.length;l+=1)for(g=a.charCodeAt(l),f=[],2048<g?(f[0]=224|(61440&g)>>>12,f[1]=128|(4032&g)>>>6,f[2]=128|63&g):128<g?(f[0]=192|(1984&g)>>>6,f[1]=128|63&g):f[0]=g,g=0;g<f.length;g+=1)b[h>>>2]|=f[g]<<24-h%4*8,h+=1;else if("UTF16"===c)for(l=0;l<a.length;l+=1)b[h>>>2]|=a.charCodeAt(l)<<16-h%4*8,h+=2;return{value:b,binLen:8*h}}function B(a){var g,f,c=[],b=a.length;if(0!==b%2)throw"String of HEX type must be in byte increments";for(g=0;g<b;g+=2){if(f=parseInt(a.substr(g,2),16),isNaN(f))throw"String of HEX type contains invalid characters";c[g>>>3]|=f<<24-g%8*4}return{value:c,binLen:4*b}}function K(a){var g,f,h,l,r,c=[],b=0;if(-1===a.search(/^[a-zA-Z0-9=+\/]+$/))throw"Invalid character in base-64 string";if(g=a.indexOf("="),a=a.replace(/\=/g,""),-1!==g&&g<a.length)throw"Invalid '=' found in base-64 string";for(f=0;f<a.length;f+=4){for(r=a.substr(f,4),h=l=0;h<r.length;h+=1)g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(r[h]),l|=g<<18-6*h;for(h=0;h<r.length-1;h+=1)c[b>>2]|=(l>>>16-8*h&255)<<24-b%4*8,b+=1}return{value:c,binLen:8*b}}function L(a,c){var f,h,b="",g=4*a.length;for(f=0;f<g;f+=1)h=a[f>>>2]>>>8*(3-f%4),b+="0123456789abcdef".charAt(h>>>4&15)+"0123456789abcdef".charAt(15&h);return c.outputUpper?b.toUpperCase():b}function M(a,c){var f,h,l,b="",g=4*a.length;for(f=0;f<g;f+=3)for(l=(a[f>>>2]>>>8*(3-f%4)&255)<<16|(a[f+1>>>2]>>>8*(3-(f+1)%4)&255)<<8|a[f+2>>>2]>>>8*(3-(f+2)%4)&255,h=0;4>h;h+=1)b=8*f+6*h<=32*a.length?b+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l>>>6*(3-h)&63):b+c.b64Pad;return b}function N(a){var c={outputUpper:!1,b64Pad:"="};try{a.hasOwnProperty("outputUpper")&&(c.outputUpper=a.outputUpper),a.hasOwnProperty("b64Pad")&&(c.b64Pad=a.b64Pad)}catch(b){}if("boolean"!=typeof c.outputUpper)throw"Invalid outputUpper formatting option";if("string"!=typeof c.b64Pad)throw"Invalid b64Pad formatting option";return c}function U(a,c){return a<<c|a>>>32-c}function u(a,c){return a>>>c|a<<32-c}function t(a,c){var b=null,b=new s(a.a,a.b);return b=32>=c?new s(b.a>>>c|b.b<<32-c&4294967295,b.b>>>c|b.a<<32-c&4294967295):new s(b.b>>>c-32|b.a<<64-c&4294967295,b.a>>>c-32|b.b<<64-c&4294967295)}function O(a,c){var b=null;return b=32>=c?new s(a.a>>>c,a.b>>>c|a.a<<32-c&4294967295):new s(0,a.a>>>c-32)}function V(a,c,b){return a^c^b}function P(a,c,b){return a&c^~a&b}function W(a,c,b){return new s(a.a&c.a^~a.a&b.a,a.b&c.b^~a.b&b.b)}function Q(a,c,b){return a&c^a&b^c&b}function X(a,c,b){return new s(a.a&c.a^a.a&b.a^c.a&b.a,a.b&c.b^a.b&b.b^c.b&b.b)}function Y(a){return u(a,2)^u(a,13)^u(a,22)}function Z(a){var c=t(a,28),b=t(a,34);return a=t(a,39),new s(c.a^b.a^a.a,c.b^b.b^a.b)}function $(a){return u(a,6)^u(a,11)^u(a,25)}function aa(a){var c=t(a,14),b=t(a,18);return a=t(a,41),new s(c.a^b.a^a.a,c.b^b.b^a.b)}function ba(a){return u(a,7)^u(a,18)^a>>>3}function ca(a){var c=t(a,1),b=t(a,8);return a=O(a,7),new s(c.a^b.a^a.a,c.b^b.b^a.b)}function da(a){return u(a,17)^u(a,19)^a>>>10}function ea(a){var c=t(a,19),b=t(a,61);return a=O(a,6),new s(c.a^b.a^a.a,c.b^b.b^a.b)}function R(a,c){var b=(65535&a)+(65535&c);return((a>>>16)+(c>>>16)+(b>>>16)&65535)<<16|65535&b}function fa(a,c,b,g){var f=(65535&a)+(65535&c)+(65535&b)+(65535&g);return((a>>>16)+(c>>>16)+(b>>>16)+(g>>>16)+(f>>>16)&65535)<<16|65535&f}function S(a,c,b,g,f){var h=(65535&a)+(65535&c)+(65535&b)+(65535&g)+(65535&f);return((a>>>16)+(c>>>16)+(b>>>16)+(g>>>16)+(f>>>16)+(h>>>16)&65535)<<16|65535&h}function ga(a,c){var b,g,f;return b=(65535&a.b)+(65535&c.b),g=(a.b>>>16)+(c.b>>>16)+(b>>>16),f=(65535&g)<<16|65535&b,b=(65535&a.a)+(65535&c.a)+(g>>>16),g=(a.a>>>16)+(c.a>>>16)+(b>>>16),new s((65535&g)<<16|65535&b,f)}function ha(a,c,b,g){var f,h,l;return f=(65535&a.b)+(65535&c.b)+(65535&b.b)+(65535&g.b),h=(a.b>>>16)+(c.b>>>16)+(b.b>>>16)+(g.b>>>16)+(f>>>16),l=(65535&h)<<16|65535&f,f=(65535&a.a)+(65535&c.a)+(65535&b.a)+(65535&g.a)+(h>>>16),h=(a.a>>>16)+(c.a>>>16)+(b.a>>>16)+(g.a>>>16)+(f>>>16),new s((65535&h)<<16|65535&f,l)}function ia(a,c,b,g,f){var h,l,r;return h=(65535&a.b)+(65535&c.b)+(65535&b.b)+(65535&g.b)+(65535&f.b),l=(a.b>>>16)+(c.b>>>16)+(b.b>>>16)+(g.b>>>16)+(f.b>>>16)+(h>>>16),r=(65535&l)<<16|65535&h,h=(65535&a.a)+(65535&c.a)+(65535&b.a)+(65535&g.a)+(65535&f.a)+(l>>>16),l=(a.a>>>16)+(c.a>>>16)+(b.a>>>16)+(g.a>>>16)+(f.a>>>16)+(h>>>16),new s((65535&l)<<16|65535&h,r)}function y(a,c){var g,f,h,l,r,s,p,m,x,b=[],u=P,t=V,v=Q,d=U,n=R,w=S,q=[1732584193,4023233417,2562383102,271733878,3285377520];for(a[c>>>5]|=128<<24-c%32,a[(c+65>>>9<<4)+15]=c,x=a.length,p=0;p<x;p+=16){for(g=q[0],f=q[1],h=q[2],l=q[3],r=q[4],m=0;80>m;m+=1)b[m]=16>m?a[m+p]:d(b[m-3]^b[m-8]^b[m-14]^b[m-16],1),s=20>m?w(d(g,5),u(f,h,l),r,1518500249,b[m]):40>m?w(d(g,5),t(f,h,l),r,1859775393,b[m]):60>m?w(d(g,5),v(f,h,l),r,2400959708,b[m]):w(d(g,5),t(f,h,l),r,3395469782,b[m]),r=l,l=h,h=d(f,30),f=g,g=s;q[0]=n(g,q[0]),q[1]=n(f,q[1]),q[2]=n(h,q[2]),q[3]=n(l,q[3]),q[4]=n(r,q[4])}return q}function v(a,c,b){var g,f,h,l,r,t,u,v,z,d,n,p,m,w,x,q,y,C,D,E,F,G,H,I,e,B,A=[],k=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];if(d=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428],f=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],"SHA-224"===b||"SHA-256"===b)n=64,g=(c+65>>>9<<4)+15,w=16,x=1,e=Number,q=R,y=fa,C=S,D=ba,E=da,F=Y,G=$,I=Q,H=P,d="SHA-224"===b?d:f;else{if("SHA-384"!==b&&"SHA-512"!==b)throw"Unexpected error in SHA-2 implementation";n=80,g=(c+128>>>10<<5)+31,w=32,x=2,e=s,q=ga,y=ha,C=ia,D=ca,E=ea,F=Z,G=aa,I=X,H=W,k=[new e(k[0],3609767458),new e(k[1],602891725),new e(k[2],3964484399),new e(k[3],2173295548),new e(k[4],4081628472),new e(k[5],3053834265),new e(k[6],2937671579),new e(k[7],3664609560),new e(k[8],2734883394),new e(k[9],1164996542),new e(k[10],1323610764),new e(k[11],3590304994),new e(k[12],4068182383),new e(k[13],991336113),new e(k[14],633803317),new e(k[15],3479774868),new e(k[16],2666613458),new e(k[17],944711139),new e(k[18],2341262773),new e(k[19],2007800933),new e(k[20],1495990901),new e(k[21],1856431235),new e(k[22],3175218132),new e(k[23],2198950837),new e(k[24],3999719339),new e(k[25],766784016),new e(k[26],2566594879),new e(k[27],3203337956),new e(k[28],1034457026),new e(k[29],2466948901),new e(k[30],3758326383),new e(k[31],168717936),new e(k[32],1188179964),new e(k[33],1546045734),new e(k[34],1522805485),new e(k[35],2643833823),new e(k[36],2343527390),new e(k[37],1014477480),new e(k[38],1206759142),new e(k[39],344077627),new e(k[40],1290863460),new e(k[41],3158454273),new e(k[42],3505952657),new e(k[43],106217008),new e(k[44],3606008344),new e(k[45],1432725776),new e(k[46],1467031594),new e(k[47],851169720),new e(k[48],3100823752),new e(k[49],1363258195),new e(k[50],3750685593),new e(k[51],3785050280),new e(k[52],3318307427),new e(k[53],3812723403),new e(k[54],2003034995),new e(k[55],3602036899),new e(k[56],1575990012),new e(k[57],1125592928),new e(k[58],2716904306),new e(k[59],442776044),new e(k[60],593698344),new e(k[61],3733110249),new e(k[62],2999351573),new e(k[63],3815920427),new e(3391569614,3928383900),new e(3515267271,566280711),new e(3940187606,3454069534),new e(4118630271,4000239992),new e(116418474,1914138554),new e(174292421,2731055270),new e(289380356,3203993006),new e(460393269,320620315),new e(685471733,587496836),new e(852142971,1086792851),new e(1017036298,365543100),new e(1126000580,2618297676),new e(1288033470,3409855158),new e(1501505948,4234509866),new e(1607167915,987167468),new e(1816402316,1246189591)],d="SHA-384"===b?[new e(3418070365,d[0]),new e(1654270250,d[1]),new e(2438529370,d[2]),new e(355462360,d[3]),new e(1731405415,d[4]),new e(41048885895,d[5]),new e(3675008525,d[6]),new e(1203062813,d[7])]:[new e(f[0],4089235720),new e(f[1],2227873595),new e(f[2],4271175723),new e(f[3],1595750129),new e(f[4],2917565137),new e(f[5],725511199),new e(f[6],4215389547),new e(f[7],327033209)]}for(a[c>>>5]|=128<<24-c%32,a[g]=c,B=a.length,p=0;p<B;p+=w){for(c=d[0],g=d[1],f=d[2],h=d[3],l=d[4],r=d[5],t=d[6],u=d[7],m=0;m<n;m+=1)A[m]=16>m?new e(a[m*x+p],a[m*x+p+1]):y(E(A[m-2]),A[m-7],D(A[m-15]),A[m-16]),v=C(u,G(l),H(l,r,t),k[m],A[m]),z=q(F(c),I(c,g,f)),u=t,t=r,r=l,l=q(h,v),h=f,f=g,g=c,c=q(v,z);d[0]=q(c,d[0]),d[1]=q(g,d[1]),d[2]=q(f,d[2]),d[3]=q(h,d[3]),d[4]=q(l,d[4]),d[5]=q(r,d[5]),d[6]=q(t,d[6]),d[7]=q(u,d[7])}if("SHA-224"===b)a=[d[0],d[1],d[2],d[3],d[4],d[5],d[6]];else if("SHA-256"===b)a=d;else if("SHA-384"===b)a=[d[0].a,d[0].b,d[1].a,d[1].b,d[2].a,d[2].b,d[3].a,d[3].b,d[4].a,d[4].b,d[5].a,d[5].b];else{if("SHA-512"!==b)throw"Unexpected error in SHA-2 implementation";a=[d[0].a,d[0].b,d[1].a,d[1].b,d[2].a,d[2].b,d[3].a,d[3].b,d[4].a,d[4].b,d[5].a,d[5].b,d[6].a,d[6].b,d[7].a,d[7].b]}return a}"function"!=typeof define||(define.amd,0)?"undefined"!=typeof exports?"undefined"!=typeof module&&module.exports?module.exports=exports=z:exports=z:T.jsSHA=z:define(function(){return z})}(this),_aa={},_aa._ab=function(f,e){for(var d=qrcode.width,b=qrcode.height,c=!0,g=0;g<e.Length&&c;g+=2){var a=Math.floor(e[g]),h=Math.floor(e[g+1]);if(a<-1||a>d||h<-1||h>b)throw"Error._ab ";c=!1,a==-1?(e[g]=0,c=!0):a==d&&(e[g]=d-1,c=!0),h==-1?(e[g+1]=0,c=!0):h==b&&(e[g+1]=b-1,c=!0)}c=!0;for(var g=e.Length-2;g>=0&&c;g-=2){var a=Math.floor(e[g]),h=Math.floor(e[g+1]);if(a<-1||a>d||h<-1||h>b)throw"Error._ab ";c=!1,a==-1?(e[g]=0,c=!0):a==d&&(e[g]=d-1,c=!0),h==-1?(e[g+1]=0,c=!0):h==b&&(e[g+1]=b-1,c=!0)}},_aa._af=function(b,d,a){for(var l=new _ac(d),k=new Array(d<<1),g=0;g<d;g++){for(var h=k.length,j=g+.5,i=0;i<h;i+=2)k[i]=(i>>1)+.5,k[i+1]=j;a._ad(k),_aa._ab(b,k);try{for(var i=0;i<h;i+=2){var e=4*Math.floor(k[i])+Math.floor(k[i+1])*qrcode.width*4,f=b[Math.floor(k[i])+qrcode.width*Math.floor(k[i+1])];qrcode.imagedata.data[e]=f?255:0,qrcode.imagedata.data[e+1]=f?255:0,qrcode.imagedata.data[e+2]=0,qrcode.imagedata.data[e+3]=255,f&&l._dq(i>>1,g)}}catch(c){throw"Error._ab"}}return l},_aa._ah=function(h,o,l,k,r,q,b,a,f,e,n,m,t,s,d,c,j,i){var g=_ae._ag(l,k,r,q,b,a,f,e,n,m,t,s,d,c,j,i);return _aa._af(h,o,g)},_a3._bv=new Array(31892,34236,39577,42195,48118,51042,55367,58893,63784,68472,70749,76311,79154,84390,87683,92361,96236,102084,102881,110507,110734,117786,119615,126325,127568,133589,136944,141498,145311,150283,152622,158308,161089,167017),_a3.VERSIONS=_ay(),_a3._av=function(a){if(a<1||a>40)throw"bad arguments";return _a3.VERSIONS[a-1]},_a3._at=function(b){if(b%4!=1)throw"Error _at";try{return _a3._av(b-17>>2)}catch(a){throw"Error _av"}},_a3._aw=function(d){for(var b=4294967295,f=0,c=0;c<_a3._bv.length;c++){var a=_a3._bv[c];if(a==d)return this._av(c+7);var e=_ax._gj(d,a);e<b&&(f=c+7,b=e)}return b<=3?this._av(f):null},_ae._ag=function(q,e,o,d,n,c,m,b,h,r,l,f,a,j,i,s){var g=this._be(q,e,o,d,n,c,m,b),k=this._bf(h,r,l,f,a,j,i,s);return k.times(g)},_ae._bf=function(f,h,d,g,b,e,a,c){return dy2=c-e,dy3=h-g+e-c,0==dy2&&0==dy3?new _ae(d-f,b-d,f,g-h,e-g,h,0,0,1):(dx1=d-b,dx2=a-b,dx3=f-d+b-a,dy1=g-e,_dr=dx1*dy2-dx2*dy1,a13=(dx3*dy2-dx2*dy3)/_dr,a23=(dx1*dy3-dx3*dy1)/_dr,new _ae(d-f+a13*d,a-f+a23*a,f,g-h+a13*g,c-h+a23*c,h,a13,a23,1))},_ae._be=function(f,h,d,g,b,e,a,c){return this._bf(f,h,d,g,b,e,a,c)._fr()};var _ca=21522,_cb=new Array(new Array(21522,0),new Array(20773,1),new Array(24188,2),new Array(23371,3),new Array(17913,4),new Array(16590,5),new Array(20375,6),new Array(19104,7),new Array(30660,8),new Array(29427,9),new Array(32170,10),new Array(30877,11),new Array(26159,12),new Array(25368,13),new Array(27713,14),new Array(26998,15),new Array(5769,16),new Array(5054,17),new Array(7399,18),new Array(6608,19),new Array(1890,20),new Array(597,21),new Array(3340,22),new Array(2107,23),new Array(13663,24),new Array(12392,25),new Array(16177,26),new Array(14854,27),new Array(9396,28),new Array(8579,29),new Array(11994,30),new Array(11245,31)),_ch=new Array(0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4);_ax._gj=function(d,c){return d^=c,_ch[15&d]+_ch[15&_ew(d,4)]+_ch[15&_ew(d,8)]+_ch[15&_ew(d,12)]+_ch[15&_ew(d,16)]+_ch[15&_ew(d,20)]+_ch[15&_ew(d,24)]+_ch[15&_ew(d,28)]},_ax._ci=function(a){var b=_ax._cj(a);return null!=b?b:_ax._cj(a^_ca)},_ax._cj=function(d){for(var b=4294967295,a=0,c=0;c<_cb.length;c++){var g=_cb[c],f=g[0];if(f==d)return new _ax(g[1]);var e=this._gj(d,f);e<b&&(a=g[1],b=e)}return b<=3?new _ax(a):null},_cg.forBits=function(a){if(a<0||a>=FOR_BITS.Length)throw"bad arguments";return FOR_BITS[a]};var L=new _cg(0,1,"L"),M=new _cg(1,0,"M"),Q=new _cg(2,3,"Q"),H=new _cg(3,2,"H"),FOR_BITS=new Array(M,L,H,Q);_dl._gn=function(c,h,s){if(c.length!=h._dp)throw"bad arguments";for(var k=h._bu(s),e=0,d=k._fb(),r=0;r<d.length;r++)e+=d[r].Count;for(var l=new Array(e),n=0,o=0;o<d.length;o++)for(var f=d[o],r=0;r<f.Count;r++){var m=f._dm,t=k._bo+m;l[n++]=new _dl(m,new Array(t))}for(var u=l[0]._dw.length,b=l.length-1;b>=0;){var w=l[b]._dw.length;if(w==u)break;b--}b++;for(var g=u-k._bo,a=0,r=0;r<g;r++)for(var o=0;o<n;o++)l[o]._dw[r]=c[a++];for(var o=b;o<n;o++)l[o]._dw[g]=c[a++];for(var q=l[0]._dw.length,r=g;r<q;r++)for(var o=0;o<n;o++){var v=o<b?r:r+1;l[o]._dw[v]=c[a++]}return l},_dx={},_dx._gl=function(a){if(a<0||a>7)throw"bad arguments";return _dx._dy[a]},_dx._dy=new Array(new _fg,new _fh,new _fi,new _fj,new _fk,new _fl,new _fm,new _fn),_az._bb=new _az(285),_az._bc=new _az(301),_az._bd=function(d,c){return d^c},Decoder={},Decoder.rsDecoder=new _db(_az._bb),Decoder.correctErrors=function(g,b){for(var d=g.length,f=new Array(d),e=0;e<d;e++)f[e]=255&g[e];var a=g.length-b;try{Decoder.rsDecoder.decode(f,a)}catch(c){throw c}for(var e=0;e<b;e++)g[e]=f[e]},Decoder.decode=function(r){for(var b=new _cl(r),o=b._cq(),c=b._cm()._cg,q=b._gk(),a=_dl._gn(q,o,c),f=0,k=0;k<a.Length;k++)f+=a[k]._du;for(var e=new Array(f),n=0,h=0;h<a.length;h++){var m=a[h],d=m.Codewords,g=m._du;Decoder.correctErrors(d,g);for(var k=0;k<g;k++)e[n++]=d[k]}var l=new QRCodeDataBlockReader(e,o._fd,c.Bits);return l},qrcode={},qrcode.imagedata=null,qrcode.width=0,qrcode.height=0,qrcode.qrCodeSymbol=null,qrcode.debug=!1,qrcode._eo=[[10,9,8,8],[12,11,16,10],[14,13,16,12]],qrcode.callback=null,qrcode.decode=function(d){if(0==arguments.length){var b=document.getElementById("qr-canvas"),a=b.getContext("2d");return qrcode.width=b.width,qrcode.height=b.height,qrcode.imagedata=a.getImageData(0,0,qrcode.width,qrcode.height),qrcode.result=qrcode.process(a),null!=qrcode.callback&&qrcode.callback(qrcode.result),qrcode.result}var c=new Image;c.onload=function(){var i=document.createElement("canvas"),h=i.getContext("2d"),f=document.getElementById("out-canvas");if(null!=f){var g=f.getContext("2d");g.clearRect(0,0,320,240),g.drawImage(c,0,0,320,240)}i.width=c.width,i.height=c.height,h.drawImage(c,0,0),qrcode.width=c.width,qrcode.height=c.height;try{qrcode.imagedata=h.getImageData(0,0,c.width,c.height)}catch(j){return qrcode.result="Cross domain image reading not supported in your browser! Save it to your computer then drag and drop the file!",void(null!=qrcode.callback&&qrcode.callback(qrcode.result))}try{qrcode.result=qrcode.process(h)}catch(j){console.log(j),qrcode.result="error decoding QR Code"}null!=qrcode.callback&&qrcode.callback(qrcode.result)},c.src=d},qrcode.decode_utf8=function(a){return decodeURIComponent(escape(a))},qrcode.process=function(r){var c=((new Date).getTime(),qrcode.grayScaleToBitmap(qrcode.grayscale()));if(qrcode.debug){for(var m=0;m<qrcode.height;m++)for(var n=0;n<qrcode.width;n++){var o=4*n+m*qrcode.width*4;qrcode.imagedata.data[o]=(c[n+m*qrcode.width],0),qrcode.imagedata.data[o+1]=(c[n+m*qrcode.width],0),qrcode.imagedata.data[o+2]=c[n+m*qrcode.width]?255:0}r.putImageData(qrcode.imagedata,0,0)}var h=new Detector(c),q=h.detect();qrcode.debug&&r.putImageData(qrcode.imagedata,0,0);
+for(var k=Decoder.decode(q.bits),g=k.DataByte,l="",f=0;f<g.length;f++)for(var e=0;e<g[f].length;e++)l+=String.fromCharCode(g[f][e]);(new Date).getTime();return qrcode.decode_utf8(l)},qrcode.getPixel=function(a,b){if(qrcode.width<a)throw"point error";if(qrcode.height<b)throw"point error";return point=4*a+b*qrcode.width*4,p=(33*qrcode.imagedata.data[point]+34*qrcode.imagedata.data[point+1]+33*qrcode.imagedata.data[point+2])/100,p},qrcode.binarize=function(d){for(var c=new Array(qrcode.width*qrcode.height),e=0;e<qrcode.height;e++)for(var b=0;b<qrcode.width;b++){var a=qrcode.getPixel(b,e);c[b+e*qrcode.width]=a<=d}return c},qrcode._em=function(d){for(var c=4,k=Math.floor(qrcode.width/c),j=Math.floor(qrcode.height/c),f=new Array(c),g=0;g<c;g++){f[g]=new Array(c);for(var e=0;e<c;e++)f[g][e]=new Array(0,0)}for(var o=0;o<c;o++)for(var a=0;a<c;a++){f[a][o][0]=255;for(var l=0;l<j;l++)for(var n=0;n<k;n++){var h=d[k*a+n+(j*o+l)*qrcode.width];h<f[a][o][0]&&(f[a][o][0]=h),h>f[a][o][1]&&(f[a][o][1]=h)}}for(var m=new Array(c),b=0;b<c;b++)m[b]=new Array(c);for(var o=0;o<c;o++)for(var a=0;a<c;a++)m[a][o]=Math.floor((f[a][o][0]+f[a][o][1])/2);return m},qrcode.grayScaleToBitmap=function(f){for(var j=qrcode._em(f),b=j.length,e=Math.floor(qrcode.width/b),d=Math.floor(qrcode.height/b),c=new Array(qrcode.height*qrcode.width),i=0;i<b;i++)for(var a=0;a<b;a++)for(var g=0;g<d;g++)for(var h=0;h<e;h++)c[e*a+h+(d*i+g)*qrcode.width]=f[e*a+h+(d*i+g)*qrcode.width]<j[a][i];return c},qrcode.grayscale=function(){for(var c=new Array(qrcode.width*qrcode.height),d=0;d<qrcode.height;d++)for(var b=0;b<qrcode.width;b++){var a=qrcode.getPixel(b,d);c[b+d*qrcode.width]=a}return c},Array.prototype.remove=function(c,b){var a=this.slice((b||c)+1||this.length);return this.length=c<0?this.length+c:c,this.push.apply(this,a)};var _gf=3,_eh=57,_el=8,_eg=2;qrcode._er=function(c){function b(l,k){return xDiff=l.X-k.X,yDiff=l.Y-k.Y,Math.sqrt(xDiff*xDiff+yDiff*yDiff)}function d(k,o,n){var m=o.x,l=o.y;return(n.x-m)*(k.y-l)-(n.y-l)*(k.x-m)}var a,j,h,i=b(c[0],c[1]),f=b(c[1],c[2]),e=b(c[0],c[2]);if(f>=i&&f>=e?(j=c[0],a=c[1],h=c[2]):e>=f&&e>=i?(j=c[1],a=c[0],h=c[2]):(j=c[2],a=c[0],h=c[1]),d(a,j,h)<0){var g=a;a=h,h=g}c[0]=a,c[1]=j,c[2]=h},angular.module("ui.sortable",[]).value("uiSortableConfig",{items:"> [ng-repeat],> [data-ng-repeat],> [x-ng-repeat]"}).directive("uiSortable",["uiSortableConfig","$timeout","$log",function(uiSortableConfig,$timeout,$log){return{require:"?ngModel",scope:{ngModel:"=",uiSortable:"="},link:function(scope,element,attrs,ngModel){function combineCallbacks(first,second){var firstIsFunc="function"==typeof first,secondIsFunc="function"==typeof second;return firstIsFunc&&secondIsFunc?function(){first.apply(this,arguments),second.apply(this,arguments)}:secondIsFunc?second:first}function getSortableWidgetInstance(element){var data=element.data("ui-sortable");return data&&"object"==typeof data&&"ui-sortable"===data.widgetFullName?data:null}function patchSortableOption(key,value){return callbacks[key]?("stop"===key&&(value=combineCallbacks(value,function(){scope.$apply()}),value=combineCallbacks(value,afterStop)),value=combineCallbacks(callbacks[key],value)):wrappers[key]&&(value=wrappers[key](value)),value||"items"!==key&&"ui-model-items"!==key||(value=uiSortableConfig.items),value}function patchUISortableOptions(newVal,oldVal,sortableWidgetInstance){function addDummyOptionKey(value,key){key in opts||(opts[key]=null)}angular.forEach(callbacks,addDummyOptionKey);var optsDiff=null;if(oldVal){var defaultOptions;angular.forEach(oldVal,function(oldValue,key){if(!(newVal&&key in newVal)){if(key in directiveOpts)return void("ui-floating"===key?opts[key]="auto":opts[key]=patchSortableOption(key,void 0));defaultOptions||(defaultOptions=angular.element.ui.sortable().options);var defaultValue=defaultOptions[key];defaultValue=patchSortableOption(key,defaultValue),optsDiff||(optsDiff={}),optsDiff[key]=defaultValue,opts[key]=defaultValue}})}return angular.forEach(newVal,function(value,key){return key in directiveOpts?("ui-floating"!==key||value!==!1&&value!==!0||!sortableWidgetInstance||(sortableWidgetInstance.floating=value),void(opts[key]=patchSortableOption(key,value))):(value=patchSortableOption(key,value),optsDiff||(optsDiff={}),optsDiff[key]=value,void(opts[key]=value))}),optsDiff}function getPlaceholderElement(element){var placeholder=element.sortable("option","placeholder");if(placeholder&&placeholder.element&&"function"==typeof placeholder.element){var result=placeholder.element();return result=angular.element(result)}return null}function getPlaceholderExcludesludes(element,placeholder){var notCssSelector=opts["ui-model-items"].replace(/[^,]*>/g,""),excludes=element.find('[class="'+placeholder.attr("class")+'"]:not('+notCssSelector+")");return excludes}function hasSortingHelper(element,ui){var helperOption=element.sortable("option","helper");return"clone"===helperOption||"function"==typeof helperOption&&ui.item.sortable.isCustomHelperUsed()}function getSortingHelper(element,ui,savedNodes){var result=null;return hasSortingHelper(element,ui)&&"parent"===element.sortable("option","appendTo")&&(result=savedNodes.last()),result}function isFloating(item){return/left|right/.test(item.css("float"))||/inline|table-cell/.test(item.css("display"))}function getElementScope(elementScopes,element){for(var result=null,i=0;i<elementScopes.length;i++){var x=elementScopes[i];if(x.element[0]===element[0]){result=x.scope;break}}return result}function afterStop(e,ui){ui.item.sortable._destroy()}function getItemIndex(item){return item.parent().find(opts["ui-model-items"]).index(item)}function wireUp(){scope.$watchCollection("ngModel",function(){$timeout(function(){getSortableWidgetInstance(element)&&element.sortable("refresh")},0,!1)}),callbacks.start=function(e,ui){if("auto"===opts["ui-floating"]){var siblings=ui.item.siblings(),sortableWidgetInstance=getSortableWidgetInstance(angular.element(e.target));sortableWidgetInstance.floating=isFloating(siblings)}var index=getItemIndex(ui.item);ui.item.sortable={model:ngModel.$modelValue[index],index:index,source:ui.item.parent(),sourceModel:ngModel.$modelValue,cancel:function(){ui.item.sortable._isCanceled=!0},isCanceled:function(){return ui.item.sortable._isCanceled},isCustomHelperUsed:function(){return!!ui.item.sortable._isCustomHelperUsed},_isCanceled:!1,_isCustomHelperUsed:ui.item.sortable._isCustomHelperUsed,_destroy:function(){angular.forEach(ui.item.sortable,function(value,key){ui.item.sortable[key]=void 0})}}},callbacks.activate=function(e,ui){savedNodes=element.contents();var placeholder=getPlaceholderElement(element);if(placeholder&&placeholder.length){var excludes=getPlaceholderExcludesludes(element,placeholder);savedNodes=savedNodes.not(excludes)}var connectedSortables=ui.item.sortable._connectedSortables||[];connectedSortables.push({element:element,scope:scope}),ui.item.sortable._connectedSortables=connectedSortables},callbacks.update=function(e,ui){if(!ui.item.sortable.received){ui.item.sortable.dropindex=getItemIndex(ui.item);var droptarget=ui.item.parent();ui.item.sortable.droptarget=droptarget;var droptargetScope=getElementScope(ui.item.sortable._connectedSortables,droptarget);ui.item.sortable.droptargetModel=droptargetScope.ngModel,element.sortable("cancel")}var sortingHelper=!ui.item.sortable.received&&getSortingHelper(element,ui,savedNodes);sortingHelper&&sortingHelper.length&&(savedNodes=savedNodes.not(sortingHelper)),savedNodes.appendTo(element),ui.item.sortable.received&&(savedNodes=null),ui.item.sortable.received&&!ui.item.sortable.isCanceled()&&scope.$apply(function(){ngModel.$modelValue.splice(ui.item.sortable.dropindex,0,ui.item.sortable.moved)})},callbacks.stop=function(e,ui){if(!ui.item.sortable.received&&"dropindex"in ui.item.sortable&&!ui.item.sortable.isCanceled())scope.$apply(function(){ngModel.$modelValue.splice(ui.item.sortable.dropindex,0,ngModel.$modelValue.splice(ui.item.sortable.index,1)[0])});else if((!("dropindex"in ui.item.sortable)||ui.item.sortable.isCanceled())&&!angular.equals(element.contents(),savedNodes)){var sortingHelper=getSortingHelper(element,ui,savedNodes);sortingHelper&&sortingHelper.length&&(savedNodes=savedNodes.not(sortingHelper)),savedNodes.appendTo(element)}savedNodes=null},callbacks.receive=function(e,ui){ui.item.sortable.received=!0},callbacks.remove=function(e,ui){"dropindex"in ui.item.sortable||(element.sortable("cancel"),ui.item.sortable.cancel()),ui.item.sortable.isCanceled()||scope.$apply(function(){ui.item.sortable.moved=ngModel.$modelValue.splice(ui.item.sortable.index,1)[0]})},wrappers.helper=function(inner){return inner&&"function"==typeof inner?function(e,item){var oldItemSortable=item.sortable,index=getItemIndex(item);item.sortable={model:ngModel.$modelValue[index],index:index,source:item.parent(),sourceModel:ngModel.$modelValue,_restore:function(){angular.forEach(item.sortable,function(value,key){item.sortable[key]=void 0}),item.sortable=oldItemSortable}};var innerResult=inner.apply(this,arguments);return item.sortable._restore(),item.sortable._isCustomHelperUsed=item!==innerResult,innerResult}:inner},scope.$watchCollection("uiSortable",function(newVal,oldVal){var sortableWidgetInstance=getSortableWidgetInstance(element);if(sortableWidgetInstance){var optsDiff=patchUISortableOptions(newVal,oldVal,sortableWidgetInstance);optsDiff&&element.sortable("option",optsDiff)}},!0),patchUISortableOptions(opts)}function init(){ngModel?wireUp():$log.info("ui.sortable: ngModel not provided!",element),element.sortable(opts)}function initIfEnabled(){return(!scope.uiSortable||!scope.uiSortable.disabled)&&(init(),initIfEnabled.cancelWatcher(),initIfEnabled.cancelWatcher=angular.noop,!0)}var savedNodes,opts={},directiveOpts={"ui-floating":void 0,"ui-model-items":uiSortableConfig.items},callbacks={receive:null,remove:null,start:null,stop:null,update:null},wrappers={helper:null};return angular.extend(opts,directiveOpts,uiSortableConfig,scope.uiSortable),angular.element.fn&&angular.element.fn.jquery?(initIfEnabled.cancelWatcher=angular.noop,void(initIfEnabled()||(initIfEnabled.cancelWatcher=scope.$watch("uiSortable.disabled",initIfEnabled)))):void $log.error("ui.sortable: jQuery should be included before AngularJS!")}}}]),!function(e){function t(t,r){if(r=r||{},r.worker&&S.WORKERS_SUPPORTED){var n=f();return n.userStep=r.step,n.userChunk=r.chunk,n.userComplete=r.complete,n.userError=r.error,r.step=m(r.step),r.chunk=m(r.chunk),r.complete=m(r.complete),r.error=m(r.error),delete r.worker,void n.postMessage({input:t,config:r,workerId:n.id})}var o=null;return"string"==typeof t?o=r.download?new i(r):new a(r):(e.File&&t instanceof File||t instanceof Object)&&(o=new s(r)),o.stream(t)}function r(e,t){function r(){"object"==typeof t&&("string"==typeof t.delimiter&&1==t.delimiter.length&&-1==S.BAD_DELIMITERS.indexOf(t.delimiter)&&(u=t.delimiter),("boolean"==typeof t.quotes||t.quotes instanceof Array)&&(o=t.quotes),"string"==typeof t.newline&&(h=t.newline))}function n(e){if("object"!=typeof e)return[];var t=[];for(var r in e)t.push(r);return t}function i(e,t){var r="";"string"==typeof e&&(e=JSON.parse(e)),"string"==typeof t&&(t=JSON.parse(t));var n=e instanceof Array&&e.length>0,i=!(t[0]instanceof Array);if(n){for(var a=0;a<e.length;a++)a>0&&(r+=u),r+=s(e[a],a);t.length>0&&(r+=h)}for(var o=0;o<t.length;o++){for(var f=n?e.length:t[o].length,c=0;f>c;c++){c>0&&(r+=u);var d=n&&i?e[c]:c;r+=s(t[o][d],c)}o<t.length-1&&(r+=h)}return r}function s(e,t){if("undefined"==typeof e||null===e)return"";e=e.toString().replace(/"/g,'""');var r="boolean"==typeof o&&o||o instanceof Array&&o[t]||a(e,S.BAD_DELIMITERS)||e.indexOf(u)>-1||" "==e.charAt(0)||" "==e.charAt(e.length-1);return r?'"'+e+'"':e}function a(e,t){for(var r=0;r<t.length;r++)if(e.indexOf(t[r])>-1)return!0;return!1}var o=!1,u=",",h="\r\n";if(r(),"string"==typeof e&&(e=JSON.parse(e)),e instanceof Array){if(!e.length||e[0]instanceof Array)return i(null,e);if("object"==typeof e[0])return i(n(e[0]),e)}else if("object"==typeof e)return"string"==typeof e.data&&(e.data=JSON.parse(e.data)),e.data instanceof Array&&(e.fields||(e.fields=e.data[0]instanceof Array?e.fields:n(e.data[0])),e.data[0]instanceof Array||"object"==typeof e.data[0]||(e.data=[e.data])),i(e.fields||[],e.data||[]);throw"exception: Unable to serialize unrecognized input"}function n(t){function r(e){var t=_(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null),this._handle=new o(t),this._handle.streamer=this,this._config=t}this._handle=null,this._paused=!1,this._finished=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},r.call(this,t),this.parseChunk=function(t){if(this.isFirstChunk&&m(this._config.beforeFirstChunk)){var r=this._config.beforeFirstChunk(t);void 0!==r&&(t=r)}this.isFirstChunk=!1;var n=this._partialLine+t;this._partialLine="";var i=this._handle.parse(n,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var s=i.meta.cursor;this._finished||(this._partialLine=n.substring(s-this._baseIndex),this._baseIndex=s),i&&i.data&&(this._rowCount+=i.data.length);var a=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(y)e.postMessage({results:i,workerId:S.WORKER_ID,finished:a});else if(m(this._config.chunk)){if(this._config.chunk(i,this._handle),this._paused)return;i=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(i.data),this._completeResults.errors=this._completeResults.errors.concat(i.errors),this._completeResults.meta=i.meta),!a||!m(this._config.complete)||i&&i.meta.aborted||this._config.complete(this._completeResults),a||i&&i.meta.paused||this._nextChunk(),i}},this._sendError=function(t){m(this._config.error)?this._config.error(t):y&&this._config.error&&e.postMessage({workerId:S.WORKER_ID,error:t,finished:!1})}}function i(e){function t(e){var t=e.getResponseHeader("Content-Range");return parseInt(t.substr(t.lastIndexOf("/")+1))}e=e||{},e.chunkSize||(e.chunkSize=S.RemoteChunkSize),n.call(this,e);var r;this._nextChunk=k?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)return void this._chunkLoaded();if(r=new XMLHttpRequest,k||(r.onload=g(this._chunkLoaded,this),r.onerror=g(this._chunkError,this)),r.open("GET",this._input,!k),this._config.chunkSize){var e=this._start+this._config.chunkSize-1;r.setRequestHeader("Range","bytes="+this._start+"-"+e),r.setRequestHeader("If-None-Match","webkit-no-cache")}try{r.send()}catch(t){this._chunkError(t.message)}k&&0==r.status?this._chunkError():this._start+=this._config.chunkSize},this._chunkLoaded=function(){if(4==r.readyState){if(r.status<200||r.status>=400)return void this._chunkError();this._finished=!this._config.chunkSize||this._start>t(r),this.parseChunk(r.responseText)}},this._chunkError=function(e){var t=r.statusText||e;this._sendError(t)}}function s(e){e=e||{},e.chunkSize||(e.chunkSize=S.LocalChunkSize),n.call(this,e);var t,r,i="undefined"!=typeof FileReader;this.stream=function(e){this._input=e,r=e.slice||e.webkitSlice||e.mozSlice,i?(t=new FileReader,t.onload=g(this._chunkLoaded,this),t.onerror=g(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var n=Math.min(this._start+this._config.chunkSize,this._input.size);e=r.call(e,this._start,n)}var s=t.readAsText(e,this._config.encoding);i||this._chunkLoaded({target:{result:s}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function a(e){e=e||{},n.call(this,e);var t,r;this.stream=function(e){return t=e,r=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e=this._config.chunkSize,t=e?r.substr(0,e):r;return r=e?r.substr(e):"",this._finished=!r,this.parseChunk(t)}}}function o(e){function t(){if(b&&d&&(h("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+S.DefaultDelimiter+"'"),d=!1),e.skipEmptyLines)for(var t=0;t<b.data.length;t++)1==b.data[t].length&&""==b.data[t][0]&&b.data.splice(t--,1);return r()&&n(),i()}function r(){return e.header&&0==y.length}function n(){if(b){for(var e=0;r()&&e<b.data.length;e++)for(var t=0;t<b.data[e].length;t++)y.push(b.data[e][t]);b.data.splice(0,1)}}function i(){if(!b||!e.header&&!e.dynamicTyping)return b;for(var t=0;t<b.data.length;t++){for(var r={},n=0;n<b.data[t].length;n++){if(e.dynamicTyping){var i=b.data[t][n];b.data[t][n]="true"==i||"TRUE"==i||"false"!=i&&"FALSE"!=i&&o(i)}e.header&&(n>=y.length?(r.__parsed_extra||(r.__parsed_extra=[]),r.__parsed_extra.push(b.data[t][n])):r[y[n]]=b.data[t][n])}e.header&&(b.data[t]=r,n>y.length?h("FieldMismatch","TooManyFields","Too many fields: expected "+y.length+" fields but parsed "+n,t):n<y.length&&h("FieldMismatch","TooFewFields","Too few fields: expected "+y.length+" fields but parsed "+n,t))}return e.header&&b.meta&&(b.meta.fields=y),b}function s(t){for(var r,n,i,s=[",","\t","|",";",S.RECORD_SEP,S.UNIT_SEP],a=0;a<s.length;a++){var o=s[a],h=0,f=0;i=void 0;for(var c=new u({delimiter:o,preview:10}).parse(t),d=0;d<c.data.length;d++){var l=c.data[d].length;f+=l,"undefined"!=typeof i?l>1&&(h+=Math.abs(l-i),i=l):i=l}c.data.length>0&&(f/=c.data.length),("undefined"==typeof n||n>h)&&f>1.99&&(n=h,r=o)}return e.delimiter=r,{successful:!!r,bestDelimiter:r}}function a(e){e=e.substr(0,1048576);var t=e.split("\r");if(1==t.length)return"\n";for(var r=0,n=0;n<t.length;n++)"\n"==t[n][0]&&r++;return r>=t.length/2?"\r\n":"\r"}function o(e){var t=l.test(e);return t?parseFloat(e):e}function h(e,t,r,n){b.errors.push({type:e,code:t,message:r,row:n})}var f,c,d,l=/^\s*-?(\d*\.?\d+|\d+\.?\d*)(e[-+]?\d+)?\s*$/i,p=this,g=0,v=!1,k=!1,y=[],b={data:[],errors:[],meta:{}};if(m(e.step)){var R=e.step;e.step=function(n){if(b=n,r())t();else{if(t(),0==b.data.length)return;g+=n.data.length,e.preview&&g>e.preview?c.abort():R(b,p)}}}this.parse=function(r,n,i){if(e.newline||(e.newline=a(r)),d=!1,!e.delimiter){var o=s(r);o.successful?e.delimiter=o.bestDelimiter:(d=!0,e.delimiter=S.DefaultDelimiter),b.meta.delimiter=e.delimiter}var h=_(e);return e.preview&&e.header&&h.preview++,f=r,c=new u(h),b=c.parse(f,n,i),t(),v?{meta:{paused:!0}}:b||{meta:{paused:!1}}},this.paused=function(){return v},this.pause=function(){v=!0,c.abort(),f=f.substr(c.getCharIndex())},this.resume=function(){v=!1,p.streamer.parseChunk(f)},this.aborted=function(){return k},this.abort=function(){k=!0,c.abort(),b.meta.aborted=!0,m(e.complete)&&e.complete(b),f=""}}function u(e){e=e||{};var t=e.delimiter,r=e.newline,n=e.comments,i=e.step,s=e.preview,a=e.fastMode;if(("string"!=typeof t||S.BAD_DELIMITERS.indexOf(t)>-1)&&(t=","),n===t)throw"Comment character same as delimiter";n===!0?n="#":("string"!=typeof n||S.BAD_DELIMITERS.indexOf(n)>-1)&&(n=!1),"\n"!=r&&"\r"!=r&&"\r\n"!=r&&(r="\n");var o=0,u=!1;this.parse=function(e,h,f){function c(e){b.push(e),S=o}function d(t){return f?p():("undefined"==typeof t&&(t=e.substr(o)),w.push(t),o=g,c(w),y&&_(),p())}function l(t){o=t,c(w),w=[],O=e.indexOf(r,o)}function p(e){return{data:b,errors:R,meta:{delimiter:t,linebreak:r,aborted:u,truncated:!!e,cursor:S+(h||0)}}}function _(){i(p()),b=[],R=[]}if("string"!=typeof e)throw"Input must be a string";var g=e.length,m=t.length,v=r.length,k=n.length,y="function"==typeof i;o=0;var b=[],R=[],w=[],S=0;if(!e)return p();if(a||a!==!1&&-1===e.indexOf('"')){for(var C=e.split(r),E=0;E<C.length;E++){var w=C[E];if(o+=w.length,E!==C.length-1)o+=r.length;else if(f)return p();if(!n||w.substr(0,k)!=n){if(y){if(b=[],c(w.split(t)),_(),u)return p()}else c(w.split(t));if(s&&E>=s)return b=b.slice(0,s),p(!0)}}return p()}for(var x=e.indexOf(t,o),O=e.indexOf(r,o);;)if('"'!=e[o])if(n&&0===w.length&&e.substr(o,k)===n){if(-1==O)return p();o=O+v,O=e.indexOf(r,o),x=e.indexOf(t,o)}else if(-1!==x&&(O>x||-1===O))w.push(e.substring(o,x)),o=x+m,x=e.indexOf(t,o);else{if(-1===O)break;if(w.push(e.substring(o,O)),l(O+v),y&&(_(),u))return p();if(s&&b.length>=s)return p(!0)}else{var I=o;for(o++;;){var I=e.indexOf('"',I+1);if(-1===I)return f||R.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:b.length,index:o}),d();if(I===g-1){var D=e.substring(o,I).replace(/""/g,'"');return d(D)}if('"'!=e[I+1]){if(e[I+1]==t){w.push(e.substring(o,I).replace(/""/g,'"')),o=I+1+m,x=e.indexOf(t,o),O=e.indexOf(r,o);break}if(e.substr(I+1,v)===r){if(w.push(e.substring(o,I).replace(/""/g,'"')),l(I+1+v),x=e.indexOf(t,o),y&&(_(),u))return p();if(s&&b.length>=s)return p(!0);break}}else I++}}return d()},this.abort=function(){u=!0},this.getCharIndex=function(){return o}}function h(){var e=document.getElementsByTagName("script");return e.length?e[e.length-1].src:""}function f(){if(!S.WORKERS_SUPPORTED)return!1;if(!b&&null===S.SCRIPT_PATH)throw new Error("Script path cannot be determined automatically when Papa Parse is loaded asynchronously. You need to set Papa.SCRIPT_PATH manually.");var t=S.SCRIPT_PATH||v;t+=(-1!==t.indexOf("?")?"&":"?")+"papaworker";var r=new e.Worker(t);return r.onmessage=c,r.id=w++,R[r.id]=r,r}function c(e){var t=e.data,r=R[t.workerId],n=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var i=function(){n=!0,d(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},s={abort:i,pause:l,resume:l};if(m(r.userStep)){for(var a=0;a<t.results.data.length&&(r.userStep({data:[t.results.data[a]],errors:t.results.errors,meta:t.results.meta},s),!n);a++);delete t.results}else m(r.userChunk)&&(r.userChunk(t.results,s,t.file),delete t.results)}t.finished&&!n&&d(t.workerId,t.results)}function d(e,t){var r=R[e];m(r.userComplete)&&r.userComplete(t),r.terminate(),delete R[e]}function l(){throw"Not implemented."}function p(t){var r=t.data;if("undefined"==typeof S.WORKER_ID&&r&&(S.WORKER_ID=r.workerId),"string"==typeof r.input)e.postMessage({workerId:S.WORKER_ID,results:S.parse(r.input,r.config),finished:!0});else if(e.File&&r.input instanceof File||r.input instanceof Object){var n=S.parse(r.input,r.config);n&&e.postMessage({workerId:S.WORKER_ID,results:n,finished:!0})}}function _(e){if("object"!=typeof e)return e;var t=e instanceof Array?[]:{};for(var r in e)t[r]=_(e[r]);return t}function g(e,t){return function(){e.apply(t,arguments)}}function m(e){return"function"==typeof e}var v,k=!e.document&&!!e.postMessage,y=k&&/(\?|&)papaworker(=|&|$)/.test(e.location.search),b=!1,R={},w=0,S={};if(S.parse=t,S.unparse=r,S.RECORD_SEP=String.fromCharCode(30),S.UNIT_SEP=String.fromCharCode(31),S.BYTE_ORDER_MARK="\ufeff",S.BAD_DELIMITERS=["\r","\n",'"',S.BYTE_ORDER_MARK],S.WORKERS_SUPPORTED=!k&&!!e.Worker,S.SCRIPT_PATH=null,S.LocalChunkSize=10485760,S.RemoteChunkSize=5242880,S.DefaultDelimiter=",",S.Parser=u,S.ParserHandle=o,S.NetworkStreamer=i,S.FileStreamer=s,S.StringStreamer=a,"undefined"!=typeof module&&module.exports?module.exports=S:m(e.define)&&e.define.amd?define(function(){return S}):e.Papa=S,e.jQuery){var C=e.jQuery;C.fn.parse=function(t){function r(){if(0==a.length)return void(m(t.complete)&&t.complete());var e=a[0];if(m(t.before)){var r=t.before(e.file,e.inputElem);if("object"==typeof r){if("abort"==r.action)return void n("AbortError",e.file,e.inputElem,r.reason);if("skip"==r.action)return void i();"object"==typeof r.config&&(e.instanceConfig=C.extend(e.instanceConfig,r.config))}else if("skip"==r)return void i()}var s=e.instanceConfig.complete;e.instanceConfig.complete=function(t){m(s)&&s(t,e.file,e.inputElem),i()},S.parse(e.file,e.instanceConfig)}function n(e,r,n,i){m(t.error)&&t.error({name:e},r,n,i)}function i(){a.splice(0,1),r()}var s=t.config||{},a=[];return this.each(function(){var t="INPUT"==C(this).prop("tagName").toUpperCase()&&"file"==C(this).attr("type").toLowerCase()&&e.FileReader;if(!t||!this.files||0==this.files.length)return!0;for(var r=0;r<this.files.length;r++)a.push({file:this.files[r],inputElem:this,instanceConfig:C.extend({},s)})}),r(),this}}y?e.onmessage=p:S.WORKERS_SUPPORTED&&(v=h(),document.body?document.addEventListener("DOMContentLoaded",function(){b=!0},!0):b=!0),i.prototype=Object.create(n.prototype),i.prototype.constructor=i,s.prototype=Object.create(n.prototype),s.prototype.constructor=s,a.prototype=Object.create(a.prototype),a.prototype.constructor=a}("undefined"!=typeof window?window:this);var CRYPTO={paranoia_level:null,PASSWORD:{generate:function(length,callback,progress,start_string){return sjcl.random.isReady(paranoia_level)?(null==start_string&&(start_string=""),start_string.length<length?(start_string+=CRYPTO.RANDOM.getRandomASCII(),null!=progress&&progress(start_string.length/length*100),void setTimeout(this.generate(length,callback,progress,start_string),100)):(callback(start_string),void(null!=progress&&progress(100)))):void setTimeout(this.generate(length,callback,progress,start_string),500)},logRepeatedCharCount:function(str){var chars=[];for(i=0;i<str.length;i++)chars[str.charAt(i)]=null==chars[str.charAt(i)]?0:chars[str.charAt(i)]+1;return chars}},RANDOM:{getRandomASCII:function(){for(var ret="";ret.length<4;){var int=sjcl.random.randomWords(1,paranoia_level);int=int[0];var tmp=this._isASCII((4278190080&int)>>24);tmp&&(ret+=tmp),tmp=this._isASCII((16711680&int)>>16),tmp&&(ret+=tmp),tmp=this._isASCII((65280&int)>>8),tmp&&(ret+=tmp),tmp=this._isASCII(255&int),tmp&&(ret+=tmp)}return ret},_isASCII:function(data){return data>31&&data<127&&String.fromCharCode(data)}},initEngines:function(default_paranoia){paranoia_level=default_paranoia||10,sjcl.random.setDefaultParanoia(this.paranoia_level),sjcl.random.startCollectors(),console.warn("Crypto stuff initialized")}};CRYPTO.initEngines(),function(){angular.module("passmanApp",["ngAnimate","ngCookies","ngResource","ngRoute","ngSanitize","ngTouch","templates-main","LocalStorageModule","offClick","ngPasswordMeter","ngclipboard","xeditable","ngTagsInput","angularjs-datetime-picker","ui.sortable","pascalprecht.translate"]).config(function($routeProvider){$routeProvider.when("/",{templateUrl:"views/vaults.html",controller:"VaultCtrl"}).when("/vault/:vault_id",{templateUrl:"views/show_vault.html",controller:"CredentialCtrl"}).when("/vault/:vault_id/new",{templateUrl:"views/edit_credential.html",controller:"CredentialEditCtrl"}).when("/vault/:vault_id/edit/:credential_id",{templateUrl:"views/edit_credential.html",controller:"CredentialEditCtrl"}).when("/vault/:vault_id/:credential_id/share",{templateUrl:"views/share_credential.html",controller:"ShareCtrl"}).when("/vault/:vault_id/:credential_id/revisions",{templateUrl:"views/credential_revisions.html",controller:"RevisionCtrl"}).when("/vault/:vault_id/request-deletion",{templateUrl:"views/vault_req_deletion.html",controller:"RequestDeleteCtrl"}).when("/vault/:vault_id/settings",{templateUrl:"views/settings.html",controller:"SettingsCtrl"}).otherwise({redirectTo:"/"})}).config(["$httpProvider",function($httpProvider){$httpProvider.defaults.headers.common.requesttoken=oc_requesttoken}]).config(function(localStorageServiceProvider){localStorageServiceProvider.setNotify(!0,!0)}).config(function($translateProvider){$translateProvider.useSanitizeValueStrategy("sanitizeParameters"),$translateProvider.useUrlLoader(OC.generateUrl("/apps/passman/api/v2/language")),$translateProvider.preferredLanguage("en")}).run(["$rootScope",function($rootScope){$rootScope.$on("$routeChangeSuccess",function(e,curr,prev){$(".ui-dialog-content").dialog("close")})}]),jQuery(document).ready(function(){var findItemByID=function(id){var credentials,foundItem=!1;return credentials=angular.element("#app-content-wrapper").scope().credentials,angular.forEach(credentials,function(credential){credential.credential_id===id&&(foundItem=credential)}),foundItem};jQuery(document).on("click",".undoDelete",function(){var credential=findItemByID($(this).attr("data-item-id"));angular.element("#app-content-wrapper").scope().recoverCredential(credential),angular.element("#app-content-wrapper").scope().$apply()}),jQuery(document).on("click",".undoRestore",function(){var credential=findItemByID($(this).attr("data-item-id"));angular.element("#app-content-wrapper").scope().deleteCredential(credential),angular.element("#app-content-wrapper").scope().$apply()})})}(),function(){angular.module("passmanApp").filter("as",function($parse){return function(value,context,path){return $parse(path).assign(context,value)}})}(),function(){angular.module("passmanApp").filter("bytes",function(){return function(bytes,precision){if(isNaN(parseFloat(bytes))||!isFinite(bytes))return"-";"undefined"==typeof precision&&(precision=1);var units=["bytes","kB","MB","GB","TB","PB"],number=Math.floor(Math.log(bytes)/Math.log(1024));return(bytes/Math.pow(1024,Math.floor(number))).toFixed(precision)+" "+units[number]}})}(),function(){angular.module("passmanApp").filter("credentialSearch",function(){return function(credentials,filter){var _credentials=[];if(credentials){if(!filter)return credentials;if(""===filter.filterText.trim())return credentials;for(var matchedWithFilter=function(c){for(var f=0;f<filter.fields.length;f++){var field=filter.fields[f],fieldValue="string"==typeof c[field]?c[field]:JSON.stringify(c[field]);if(filter.hasOwnProperty("useRegex")&&filter.useRegex===!0)try{var patt=new RegExp(filter.filterText);if(patt.test(fieldValue))return!0}catch(e){}if(fieldValue.toLowerCase().indexOf(filter.filterText.toLowerCase())>=0)return!0}return!1},ci=0;ci<credentials.length;ci++){var c=credentials[ci];matchedWithFilter(c)&&_credentials.push(c)}return _credentials}return[]}})}(),function(){angular.module("passmanApp").filter("propsFilter",function(){return function(items,props){var out=[];if(angular.isArray(items)){var keys=Object.keys(props);items.forEach(function(item){for(var itemMatches=!1,i=0;i<keys.length;i++){var prop=keys[i],text=props[prop].toLowerCase();if(item[prop].toString().toLowerCase().indexOf(text)!==-1){itemMatches=!0;break}}itemMatches&&out.push(item)})}else out=items;return out}})}(),function(){angular.module("passmanApp").filter("range",function(){return function(val,range){range=parseInt(range);for(var i=0;i<range;i++)val.push(i);return val}})}(),function(){angular.module("passmanApp").filter("tagFilter",function(){return function(credentials,tags){var _credentials=[];if(tags.length>0)for(var ci=0;ci<credentials.length;ci++){for(var c=credentials[ci],matches=0,ct=0;ct<c.tags_raw.length;ct++){var t=c.tags_raw[ct];tags.indexOf(t.text)!==-1&&matches++}matches===tags.length&&_credentials.push(c)}return 0===tags.length&&(_credentials=credentials),_credentials}})}(),function(){angular.module("passmanApp").filter("toHHMMSS",function(){return function(_seconds){var sec_num=parseInt(_seconds,10),hours=Math.floor(sec_num/3600),minutes=Math.floor((sec_num-3600*hours)/60),seconds=sec_num-3600*hours-60*minutes;return hours<10&&(hours="0"+hours),minutes<10&&(minutes="0"+minutes),seconds<10&&(seconds="0"+seconds),hours+":"+minutes+":"+seconds}})}(),function(){angular.module("passmanApp").service("CacheService",["localStorageService","EncryptService",function(localStorageService,EncryptService){return{get:function(name){return EncryptService.decryptString(localStorageService.get(name))},set:function(key,value){value=EncryptService.encryptString(value),localStorageService.set(key,value)}}}])}(),function(){angular.module("passmanApp").service("CredentialService",["$http","EncryptService","VaultService","FileService",function($http,EncryptService,VaultService,FileService){var credential={credential_id:null,guid:null,vault_id:null,label:null,description:null,created:null,changed:null,tags:[],email:null,
+icon:{type:!1,content:""},username:null,password:null,url:null,favicon:null,renew_interval:null,expire_time:0,delete_time:0,files:[],custom_fields:[],otp:{},hidden:!1},_encryptedFields=["description","username","password","files","custom_fields","otp","email","tags","url"];return{newCredential:function(){return angular.copy(credential)},createCredential:function(credential){for(var _credential=angular.copy(credential),i=0;i<_encryptedFields.length;i++){var field=_encryptedFields[i],fieldValue=angular.copy(credential[field]);_credential[field]=EncryptService.encryptString(JSON.stringify(fieldValue))}_credential.expire_time=new Date(angular.copy(credential.expire_time)).getTime()/1e3;var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials");return $http.post(queryUrl,_credential).then(function(response){return response.data?response.data:response})},getEncryptedFields:function(){return _encryptedFields},updateCredential:function(credential,skipEncryption,key){var _credential=angular.copy(credential);if(!skipEncryption)for(var i=0;i<_encryptedFields.length;i++){var field=_encryptedFields[i],fieldValue=angular.copy(credential[field]);_credential[field]=EncryptService.encryptString(JSON.stringify(fieldValue),key)}_credential.expire_time=new Date(angular.copy(credential.expire_time)).getTime()/1e3;var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+credential.guid);return $http.patch(queryUrl,_credential).then(function(response){return response.data?response.data:response})},getCredential:function(guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+guid);return $http.get(queryUrl).then(function(response){return response.data?response.data:response})},destroyCredential:function(guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+guid);return $http.delete(queryUrl).then(function(response){return response.data?response.data:response})},encryptCredential:function(credential,key){for(var i=0;i<_encryptedFields.length;i++){var field=_encryptedFields[i],fieldValue=angular.copy(credential[field]);credential[field]=EncryptService.encryptString(JSON.stringify(fieldValue),key)}return credential},decryptCredential:function(credential,key){for(var i=0;i<_encryptedFields.length;i++){var field_decrypted_value,field=_encryptedFields[i],fieldValue=angular.copy(credential[field]);try{field_decrypted_value=EncryptService.decryptString(fieldValue,key)}catch(e){throw e}try{credential[field]=JSON.parse(field_decrypted_value)}catch(e){console.warn("Field"+field+" in "+credential.label+" could not be parsed! Value:"+fieldValue)}}return credential},getSharedKeyFromCredential:function(credential){var key=null;return!credential.hasOwnProperty("acl")&&credential.hasOwnProperty("shared_key")&&credential.shared_key&&(key=EncryptService.decryptString(angular.copy(credential.shared_key))),credential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy(credential.acl.shared_key))),key},getRevisions:function(guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+guid+"/revision");return $http.get(queryUrl).then(function(response){return response.data?response.data:response})},updateRevision:function(revision){var _revision=angular.copy(revision);_revision.credential_data=window.btoa(JSON.stringify(_revision.credential_data));var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+revision.credential_data.guid+"/revision/"+revision.revision_id);return $http.patch(queryUrl,_revision).then(function(response){return response.data?response.data:response})},deleteRevision:function(credential_guid,revision_id){var queryUrl=OC.generateUrl("apps/passman/api/v2/credentials/"+credential_guid+"/revision/"+revision_id);return $http.delete(queryUrl).then(function(response){return response.data?response.data:response})},reencryptCredential:function(credential_guid,old_password,new_password,skipSharingKey){var service=this,progress_datatype=function(current,total,process){this.process=process,this.current=current,this.total=total,this.calculated=current/total*100},promise_credential_update=function(){service.getCredential(credential_guid).then(function(credential){this.parent.plain_credential=service.decryptCredential(credential,this.parent.old_password);var tmp=angular.copy(this.parent.plain_credential);if(tmp.hasOwnProperty("shared_key")&&null!==tmp.shared_key&&!skipSharingKey){var shared_key=EncryptService.decryptString(angular.copy(tmp.shared_key)).trim();tmp.shared_key=EncryptService.encryptString(angular.copy(shared_key),this.parent.new_password),tmp.set_share_key=!0,tmp.skip_revision=!0,this.parent.new_password=shared_key}this.parent.new_credential_cryptogram=service.encryptCredential(tmp,this.parent.new_password),this.call_progress(new progress_datatype(1,2,"credential")),this.parent.new_credential_cryptogram.skip_revision=!0,service.updateCredential(this.parent.new_credential_cryptogram,!0).then(function(){this.call_progress(new progress_datatype(2,2,"credential")),this.call_then({plain_text:this.parent.plain_credential,cryptogram:this.parent.new_credential_cryptogram})}.bind(this))}.bind(this))},promise_files_update=function(){this.total=2*this.parent.plain_credential.files.length,this.current=0;for(var i=0;i<this.parent.plain_credential.files.length;i++){var _file=this.parent.plain_credential.files[i];FileService.getFile(_file).then(function(fileData){fileData.filename=EncryptService.decryptString(fileData.filename,this.parent.old_password),fileData.file_data=EncryptService.decryptString(fileData.file_data,this.parent.old_password),this.current++,this.call_progress(new progress_datatype(this.current,this.total,"files")),FileService.updateFile(fileData,this.parent.new_password).then(function(){this.current++,this.call_progress(new progress_datatype(this.current,this.total,"files")),this.current===this.total&&this.call_then("All files has been updated")}.bind(this))}.bind(this))}0===this.parent.plain_credential.files.length&&(this.call_progress(new progress_datatype(0,0,"files")),this.call_then("No files to update"))},promise_revisions_update=function(){service.getRevisions(this.parent.plain_credential.guid).then(function(revisions){this.total=2*revisions.length,this.upload=0,this.current=0,this.revisions=revisions;var revision_workload=function(){if(0===this.revisions.length)return this.call_progress(new progress_datatype(0,0,"revisions")),void this.call_then("No history to update");var _revision=revisions[this.current];_revision.credential_data=service.decryptCredential(_revision.credential_data,this.parent.old_password),_revision.credential_data=service.encryptCredential(_revision.credential_data,this.parent.new_password),this.current++,this.call_progress(new progress_datatype(this.current+this.upload,this.total,"revisions")),service.updateRevision(_revision).then(function(){this.upload++,this.call_progress(new progress_datatype(this.upload+this.current,this.total,"revisions")),this.current+this.upload===this.total&&this.call_then("History updated")}.bind(this)),this.current!==this.total/2&&setTimeout(revision_workload.bind(this),1)};setTimeout(revision_workload.bind(this),1)}.bind(this))},promise_workload=function(){this.old_password=angular.copy(old_password),this.new_password=angular.copy(new_password),this.promises=0;var master_promise=this,password_data=function(){this.old_password=master_promise.old_password,this.new_password=master_promise.new_password,this.plain_credential=master_promise.plain_credential};this.credential_data={},new C_Promise(promise_credential_update,new password_data).progress(function(data){master_promise.call_progress(data)}).then(function(data){console.warn("End credential update"),master_promise.plain_credential=data.plain_text,master_promise.promises++,master_promise.credential_data=data,new C_Promise(promise_files_update,new password_data).progress(function(data){master_promise.call_progress(data)}).then(function(){console.warn("End files update"),master_promise.promises--,0===master_promise.promises&&master_promise.call_then(master_promise.credential_data)}),master_promise.promises++,new C_Promise(promise_revisions_update,new password_data).progress(function(data){master_promise.call_progress(data)}).then(function(){console.warn("End revisions update"),master_promise.promises--,0===master_promise.promises&&master_promise.call_then(master_promise.credential_data)})})};return new C_Promise(promise_workload)}}}])}(),function(){angular.module("passmanApp").service("EncryptService",["VaultService",function(VaultService){var encryption_config={adata:"",iter:1e3,ks:256,mode:"ccm",ts:64};return{encryptString:function(string,_key){_key||(_key=VaultService.getActiveVault().vaultKey);var rp={},ct=sjcl.encrypt(_key,string,encryption_config,rp);return window.btoa(ct)},decryptString:function(ciphertext,_key){_key||(_key=VaultService.getActiveVault().vaultKey),ciphertext=window.atob(ciphertext);var rp={};try{return sjcl.decrypt(_key,ciphertext,encryption_config,rp)}catch(e){throw e}}}}])}(),function(){angular.module("passmanApp").service("FileService",["$http","EncryptService",function($http,EncryptService){return{uploadFile:function(file,key){var queryUrl=OC.generateUrl("apps/passman/api/v2/file"),_file=angular.copy(file);_file.filename=EncryptService.encryptString(_file.filename,key);var data=EncryptService.encryptString(angular.copy(file.data),key);return _file.data=data,$http.post(queryUrl,_file).then(function(response){return response.data?response.data:response})},deleteFile:function(file){var queryUrl=OC.generateUrl("apps/passman/api/v2/file/"+file.file_id),_file=angular.copy(file);return $http.delete(queryUrl,_file).then(function(response){return response.data?response.data:response})},getFile:function(file){var queryUrl=OC.generateUrl("apps/passman/api/v2/file/"+file.file_id),_file=angular.copy(file);return $http.get(queryUrl,_file).then(function(response){return response.data?"[object Array]"===Object.prototype.toString.call(response.data)?response.data.pop():response.data:response})},updateFile:function(file,key){var queryUrl=OC.generateUrl("apps/passman/api/v2/file/"+file.file_id),_file=angular.copy(file);_file.filename=EncryptService.encryptString(_file.filename,key);var data=EncryptService.encryptString(angular.copy(file.file_data),key);return _file.file_data=data,$http.patch(queryUrl,_file).then(function(response){return response.data?response.data:response})},dataURItoBlob:function(dataURI,ftype){var byteString,ab,ia,bb,i;for(byteString=atob(dataURI.split(",")[1]),ab=new ArrayBuffer(byteString.length),ia=new Uint8Array(ab),i=0;i<byteString.length;i++)ia[i]=byteString.charCodeAt(i);return bb=new Blob([ab],{type:ftype}),URL.createObjectURL(bb)}}}])}(),function(){angular.module("passmanApp").service("IconService",["$http",function($http){return{getIcons:function(){var queryUrl=OC.generateUrl("apps/passman/api/v2/icon/list");return $http.get(queryUrl).then(function(response){return response.data?response.data:response})}}}])}(),function(){angular.module("passmanApp").service("NotificationService",["$timeout",function($timeout){var to;return{showNotification:function(text,time,closeCallback){var notification=OC.Notification.showHtml(text);return to=$timeout(function(){OC.Notification.hide(notification,closeCallback)},time),notification},hideNotification:function(notification){$timeout.cancel(to),OC.Notification.hide(notification)},hideAll:function(){OC.Notification.hide()}}}])}(),function(){angular.module("passmanApp").service("SettingsService",["localStorageService","$http","$rootScope",function(localStorageService,$http,$rootScope){var settings={defaultVault:null,defaultVaultPass:null};$http.get(OC.generateUrl("apps/passman/api/v2/settings")).then(function(response){response.data&&(settings=angular.merge(settings,response.data),$rootScope.$broadcast("settings_loaded"))});var cookie=localStorageService.get("settings");return settings=angular.merge(settings,cookie),{getSettings:function(){return settings},getSetting:function(name){return settings[name]},setSetting:function(name,value){settings[name]=value,localStorageService.set("settings",settings)},isEnabled:function(name){return 1===settings[name]||"1"===settings[name]}}}])}(),function(){angular.module("passmanApp").service("ShareService",["$http","VaultService","EncryptService","CredentialService",function($http,VaultService,EncryptService,CredentialService){var paranoia_level=10;return sjcl.random.setDefaultParanoia(paranoia_level),sjcl.random.startCollectors(),{search:function(string){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/search");return $http.post(queryUrl,{search:string}).then(function(response){return response.data?response.data:response})},shareWithUser:function(credential,target_user_data){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/share");return $http.post(queryUrl,{item_id:credential.credential_id,item_guid:credential.guid,permissions:target_user_data.accessLevel,vaults:target_user_data.vaults})},getVaultsByUser:function(userId){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/vaults/"+userId);return $http.get(queryUrl,{search:userId}).then(function(response){if(response.data){for(var i=0;i<response.data.length;i++)response.data[i].public_sharing_key=forge.pki.publicKeyFromPem(response.data[i].public_sharing_key);return response.data}return response})},getPendingRequests:function(){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/pending");return $http.get(queryUrl).then(function(response){if(response.data)return response.data})},saveSharingRequest:function(request,crypted_shared_key){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/save");return $http.post(queryUrl,{item_guid:request.item_guid,target_vault_guid:request.target_vault_guid,final_shared_key:crypted_shared_key}).then(function(response){return response.data})},declineSharingRequest:function(request){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/decline/"+request.req_id);return $http.delete(queryUrl).then(function(response){return response.data})},unshareCredential:function(credential){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid);return $http.delete(queryUrl).then(function(response){return response.data})},unshareCredentialFromUser:function(credential,user_id){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid+"/"+user_id);return $http.delete(queryUrl).then(function(response){return response.data})},createPublicSharedCredential:function(shareObj){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/public");return $http.post(queryUrl,shareObj).then(function(response){return response.data})},getPublicSharedCredential:function(credential_guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential_guid+"/public");return $http.get(queryUrl).then(function(response){return response.data?response:response},function(result){return result})},getSharedCredentialACL:function(credential){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid+"/acl");return $http.get(queryUrl).then(function(response){return response.data?response.data:response},function(result){return result})},updateCredentialAcl:function(credential,acl){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid+"/acl");return $http.patch(queryUrl,acl).then(function(response){return response.data})},getCredendialsSharedWithUs:function(vault_guid){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/vault/"+vault_guid+"/get");return $http.get(queryUrl).then(function(response){if(response.data)return response.data})},downloadSharedFile:function(credential,file){var queryUrl=OC.generateUrl("apps/passman/api/v2/sharing/credential/"+credential.guid+"/file/"+file.guid);return $http.get(queryUrl).then(function(response){if(response.data)return response.data})},encryptSharedCredential:function(credential,sharedKey){var _credential=angular.copy(credential);_credential.shared_key=EncryptService.encryptString(sharedKey);for(var encrypted_fields=CredentialService.getEncryptedFields(),i=0;i<encrypted_fields.length;i++){var field=encrypted_fields[i],fieldValue=angular.copy(credential[field]);_credential[field]=EncryptService.encryptString(JSON.stringify(fieldValue),sharedKey)}return _credential},decryptSharedCredential:function(credential,sharedKey){for(var _credential=angular.copy(credential),encrypted_fields=CredentialService.getEncryptedFields(),i=0;i<encrypted_fields.length;i++){var field_decrypted_value,field=encrypted_fields[i],fieldValue=angular.copy(_credential[field]);if(_credential.hasOwnProperty(field)){try{field_decrypted_value=EncryptService.decryptString(fieldValue,sharedKey)}catch(e){throw e}try{_credential[field]=JSON.parse(field_decrypted_value)}catch(e){throw console.warn("Field"+field+" in "+_credential.label+" could not be parsed! Value:"+fieldValue),e}}}return _credential},generateRSAKeys:function(key_length){var p=new C_Promise(function(){var state=forge.pki.rsa.createKeyPairGenerationState(key_length,65537),step=function(){forge.pki.rsa.stepKeyPairGenerationState(state,100)?this.call_then(state.keys):(null!==state.p?this.call_progress(50):this.call_progress(0),setTimeout(step.bind(this),1))};setTimeout(step.bind(this),100)});return p},generateSharedKey:function(size){return size=size||20,new C_Promise(function(){var t=this;CRYPTO.PASSWORD.generate(size,function(pass){t.call_then(pass)},function(progress){t.call_progress(progress)})})},rsaKeyPairToPEM:function(keypair){return{publicKey:forge.pki.publicKeyToPem(keypair.publicKey),privateKey:forge.pki.privateKeyToPem(keypair.privateKey)}},getSharingKeys:function(){var vault=VaultService.getActiveVault();return{private_sharing_key:EncryptService.decryptString(angular.copy(vault.private_sharing_key)),public_sharing_key:vault.public_sharing_key}},rsaPrivateKeyFromPEM:function(private_pem){return forge.pki.privateKeyFromPem(private_pem)},rsaPublicKeyFromPEM:function(public_pem){return forge.pki.publicKeyFromPem(public_pem)},cypherRSAStringWithPublicKeyBulkAsync:function(vaults,string){var workload=function(){if(this.current_index<this.vaults.length>0&&this.vaults.length>0){var _vault=angular.copy(this.vaults[this.current_index]);_vault.key=forge.util.encode64(_vault.public_sharing_key.encrypt(this.string)),this.data.push(_vault),this.current_index++,this.call_progress(this.current_index),setTimeout(workload.bind(this),1)}else this.call_then(this.data)};return new C_Promise(function(){this.data=[],this.vaults=vaults,this.string=string,this.current_index=0,setTimeout(workload.bind(this),0)})}}}])}(),function(){angular.module("passmanApp").service("TagService",["$filter",function($filter){var _tags=[];return{getTags:function(){return _tags},searchTag:function(string){return $filter("filter")(_tags,{text:string})},addTags:function(tags){for(var i=0;i<tags.length;i++)tags[i].text&&0===$filter("filter")(_tags,{text:tags[i].text}).length&&_tags.push(tags[i])},resetTags:function(){_tags=[]}}}])}(),function(){angular.module("passmanApp").service("VaultService",["$http",function($http){var _activeVault,service={getVaults:function(){var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults");return $http.get(queryUrl).then(function(response){return response.data?response.data:response})},setActiveVault:function(vault){_activeVault=angular.copy(vault)},getActiveVault:function(){return _activeVault},getVaultSetting:function(key,default_value){return _activeVault.vault_settings&&void 0!==_activeVault.vault_settings[key]?_activeVault.vault_settings[key]:default_value},setVaultSetting:function(key,value){return!!_activeVault.vault_settings&&(_activeVault.vault_settings[key]=value,void this.updateVault(_activeVault))},createVault:function(vaultName){var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults");return $http.post(queryUrl,{vault_name:vaultName}).then(function(response){return response.data?response.data:response})},getVault:function(vault){var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults/"+vault.guid);return $http.get(queryUrl).then(function(response){return response.data?(response.data.vault_settings?response.data.vault_settings=JSON.parse(window.atob(response.data.vault_settings)):response.data.vault_settings={},response.data):response})},updateVault:function(vault){var _vault=angular.copy(vault);delete _vault.defaultVaultPass,delete _vault.defaultVault,delete _vault.vaultKey,_vault.vault_settings=window.btoa(JSON.stringify(_vault.vault_settings));var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults/"+_vault.guid);return $http.patch(queryUrl,_vault).then(function(response){return response.data?response.data:response})},updateSharingKeys:function(vault){var _vault=angular.copy(vault);delete _vault.vaultKey;var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults/"+_vault.guid+"/sharing-keys");return $http.post(queryUrl,_vault).then(function(response){return response.data?response.data:response})},deleteVault:function(vault){var queryUrl=OC.generateUrl("apps/passman/api/v2/vaults/"+vault.guid);return $http.delete(queryUrl).then(function(response){return response.data?response.data:response})}};return service}])}(),function(){angular.module("passmanApp").factory("SharingACL",function(){function ACL(acl_permission){this.permission=acl_permission}return ACL.prototype.permissions={READ:1,WRITE:2,FILES:4,HISTORY:8,OWNER:128},ACL.prototype.hasPermission=function(permission){return permission===(this.permission&permission)},ACL.prototype.addPermission=function(permission){this.permission=this.permission|permission},ACL.prototype.removePermission=function(permission){this.permission=this.permission&~permission},ACL.prototype.togglePermission=function(permission){this.permission^=permission},ACL.prototype.getAccessLevel=function(){return this.permission},ACL})}(),function(){angular.module("passmanApp").directive("autoScroll",function(){return{restrict:"A",scope:{autoScroll:"="},link:function(scope,el){scope.$watch("autoScroll",function(){$(el).scrollTop($(el)[0].scrollHeight)},!0)}}})}(),function(){angular.module("passmanApp").directive("clearBtn",["$parse",function($parse){return{link:function(scope,elm,attr){elm.wrap("<div style='position: relative'></div>");var btn="<span id="+Math.round(1e9*Math.random())+' class="searchclear ng-hide fa fa-times-circle-o"></span>',angularBtn=angular.element(btn);elm.after(angularBtn),angularBtn.on("click",function(){elm.val("").trigger("change"),$parse(attr.ngModel).assign(scope,""),scope.$apply()}),elm.bind("focus keyup change paste propertychange",function(){elm.val()&&elm.val().length>0?angularBtn.removeClass("ng-hide"):angularBtn.addClass("ng-hide")})}}}])}(),function(){angular.module("passmanApp").directive("clickDisable",function(){return function(scope,element){element.bind("click",function(){element.prepend('<i class="fa fa-spin fa-spinner"></i>&nbsp;'),element.attr("disabled","disabled")})}})}(),function(){angular.module("passmanApp").directive("selectOnClick",["$window",function($window){return{restrict:"A",link:function(scope,element){element.on("click",function(){$window.getSelection().toString()||this.setSelectionRange(0,this.value.length)})}}}])}(),function(){angular.module("passmanApp").directive("colorFromString",[function(){return{restrict:"A",scope:{string:"=colorFromString"},link:function(scope,el){function genColor(str){for(var hash=0,i=0;i<str.length;i++)hash=str.charCodeAt(i)+((hash<<5)-hash);var c=(16777215&hash).toString(16).toUpperCase();return"#"+"00000".substring(0,6-c.length)+c}scope.$watch("string",function(){jQuery(el).css("border-color",genColor(scope.string))})}}}])}(),function(){angular.module("passmanApp").directive("credentialCounter",[function(){return{template:'<div ng-show="counter" translate="number.filtered" translate-values="{number_filtered: counter, credential_number: total}"></div>',replace:!1,restrict:"A",scope:{filteredCredentials:"=credentialCounter",deleteTime:"=",vault:"=",filters:"="},link:function(scope){function countCredentials(){var countedCredentials=0,total=0;scope.vault&&scope.vault.hasOwnProperty("credentials")&&(angular.forEach(scope.vault.credentials,function(credential){var pos=scope.filteredCredentials.map(function(c){return c.guid}).indexOf(credential.guid);0===scope.deleteTime&&0===credential.hidden&&0===credential.delete_time&&(total+=1,countedCredentials=pos!==-1?countedCredentials+1:countedCredentials),scope.deleteTime>0&&0===credential.hidden&&credential.delete_time>0&&(total+=1,countedCredentials=pos!==-1?countedCredentials+1:countedCredentials)}),scope.counter=countedCredentials,scope.total=total)}scope.$watch("[filteredCredentials, deleteTime, filters]",function(){countCredentials()},!0)}}}])}(),function(){angular.module("passmanApp").directive("credentialField",["$timeout","$translate",function($timeout,$translate){return{scope:{value:"=value",secret:"=secret",inputField:"=useInput",inputFieldplaceholder:"=inputPlaceholder"},restrict:"A",replace:"true",template:'<span class="credential_field"><div class="value" ng-class="{\'ellipsis\': isLink}"><span ng-if="secret"><span ng-repeat="n in [] | range:value.length" ng-if="!valueVisible">*</span></span><span ng-if="valueVisible && !inputField" ng-bind-html="value"></span><span ng-if="valueVisible && inputField"><input type="text" ng-model="value" select-on-click placeholder="{{ inputFieldplaceholder }}!"</span></div><div class="tools"><div class="cell" ng-if="toggle" tooltip="tggltxt" ng-click="toggleVisibility()"><i class="fa" ng-class="{\'fa-eye\': !valueVisible, \'fa-eye-slash\': valueVisible }"></i></div><div class="cell" ng-if="isLink"><a ng-href="{{value}}" target="_blank" rel="nofollow noopener noreferrer"><i tooltip="\'Open in new window\'" class="link fa fa-external-link"></i></a></div><div class="cell" ngclipboard-success="onSuccess(e);" ngclipboard-error="onError(e);" ngclipboard data-clipboard-text="{{value}}"><i tooltip="copy_msg" class="fa fa-files-o"></i></div></div></span>',link:function(scope){var expression=/(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/gi,regex=new RegExp(expression);$translate(["toggle.visibility","copy.field","copy","copied"]).then(function(translations){scope.tggltxt=translations["toggle.visibility"],scope.copy_msg=translations["copy.field"]}),scope.$watch("value",function(){scope.value&&(scope.secret&&(scope.valueVisible=!1),regex.test(scope.value)&&(scope.isLink=!0,"http"!==scope.value.substr(0,4)&&(scope.value="http://"+scope.value)))}),scope.toggle||scope.secret&&(scope.toggle=!0);var timer;scope.onSuccess=function(){scope.copy_msg=$translate.instant("copied"),$timeout.cancel(timer),timer=$timeout(function(){scope.copy_msg=$translate.instant("copy")},5e3)},scope.valueVisible=!0,scope.toggleVisibility=function(){scope.valueVisible=!scope.valueVisible}}}}])}(),function(){angular.module("passmanApp").directive("credentialTemplate",["EncryptService","$translate","FileService","ShareService","NotificationService","CredentialService",function(EncryptService,$translate,FileService,ShareService,NotificationService,CredentialService){return{templateUrl:"views/partials/credential_template.html",replace:!0,restrict:"A",scope:{credential:"=credentialTemplate"},link:function(scope,element,attrs){scope.downloadFile=function(credential,file){var callback=function(result){var key=CredentialService.getSharedKeyFromCredential(credential);if(!result.hasOwnProperty("file_data"))return void NotificationService.showNotification($translate.instant("error.loading.file.perm"),5e3);var file_data=EncryptService.decryptString(result.file_data,key);download(file_data,escapeHTML(file.filename),file.mimetype)};credential.hasOwnProperty("acl")?ShareService.downloadSharedFile(credential,file).then(callback):FileService.getFile(file).then(callback)},scope.showLabel=attrs.hasOwnProperty("showLabel")}}}])}(),function(){angular.module("passmanApp").directive("fileSelect",["$window",function($window){return{restrict:"A",scope:{success:"&success",error:"&error",progress:"&progress"},link:function(scope,el){scope.success=scope.success(),scope.error=scope.error(),scope.progress=scope.progress();var _currentFile,fileReader=new $window.FileReader;fileReader.onload=function(){_currentFile.data=fileReader.result,scope.success(_currentFile)},fileReader.onprogress=function(event){var percent=event.loaded/event.total*100;scope.progress&&scope.$apply(scope.progress({file_total:event.total,file_loaded:event.loaded,file_percent:percent}))},fileReader.onerror=function(){scope.error()},el.bind("change",function(e){var i,_queueTotalFileSize=0;for(i=0;i<e.target.files.length;i++)_queueTotalFileSize+=e.target.files[i].size;for(i=0;i<e.target.files.length;i++){_currentFile=e.target.files[i];var mb_limit=5;_currentFile.size>1024*mb_limit*1024&&scope.error("TO_BIG",_currentFile),fileReader.readAsDataURL(_currentFile)}})}}}])}(),function(){angular.module("passmanApp").directive("credentialIcon",["$window",function($window){return{template:'<img ng-src="{{ iconUrl }}" class="icon-image">',restrict:"E",scope:{credential:"="},link:function(scope,element){scope.credential&&scope.$watch("credential",function(){if(scope.credential.icon&&scope.credential.icon.type)scope.iconUrl="data:image/"+scope.credential.icon.type+";base64,"+scope.credential.icon.content;else if(scope.credential.url){var url=window.btoa(angular.copy(scope.credential.url)).replace("/","_");scope.iconUrl=OC.generateUrl("apps/passman/api/v2/icon/")+url+"/"+scope.credential.credential_id}},!0)}}}])}(),function(){angular.module("passmanApp").directive("iconPicker",["$window","IconService","$http",function($window,IconService,$http){return{templateUrl:"views/partials/icon-picker.html",restrict:"A",scope:{credential:"=iconPicker"},link:function(scope,element){IconService.getIcons().then(function(icons){scope.iconGroupsAll=icons,scope.iconGroups=icons}),scope.selectIcon=function(icon){scope.selectedIcon=icon},scope.jumpToGroup=function(groupName){var offset=$("#"+groupName).position();$(".iconList").scrollTop(offset.top)};var search=document.getElementById("iconPicker-Search");search.addEventListener("keypress",function(e){13===e.keyCode&&e.preventDefault()}),search.addEventListener("keyup",function(e){var g={};g.Numix=[],scope.iconGroupsAll.Numix.forEach(function(element){scope.isAllowedIcon(element)&&g.Numix.push(element)}),g["essential-collection"]=[],scope.iconGroupsAll["essential-collection"].forEach(function(element){scope.isAllowedIcon(element)&&g["essential-collection"].push(element)}),g["font-awesome"]=[],scope.iconGroupsAll["font-awesome"].forEach(function(element){scope.isAllowedIcon(element)&&g["font-awesome"].push(element)}),scope.iconGroups=g,scope.$apply()}),scope.isAllowedIcon=function(IconElement){var searchval=search.value.toLowerCase(),urlCropped=IconElement.url.substring(IconElement.url.lastIndexOf("/")+1,IconElement.url.length);return!(!urlCropped.includes(searchval)&&IconElement.pack.toLowerCase()!==searchval)},$("#iconPicker-CustomIcon").on("change",function(ev){console.log("upload"),scope.customIcon={};var f=ev.target.files[0],fr=new FileReader;fr.onload=function(ev2){scope.customIcon.data=ev2.target.result,scope.$apply()},fr.readAsDataURL(f)}),scope.useIcon=function(){if(scope.customIcon){var data=scope.customIcon.data;return scope.credential.icon.type=data.substring(data.lastIndexOf(":")+1,data.lastIndexOf(";")),scope.credential.icon.content=data.substring(data.lastIndexOf(",")+1,data.length),void $("#iconPicker").dialog("close")}$http.get(scope.selectedIcon.url).then(function(result){var base64Data=window.btoa(result.data),mimeType="svg+xml";scope.credential.icon||(scope.credential.icon={}),scope.credential.icon.type=mimeType,scope.credential.icon.content=base64Data,$("#iconPicker").dialog("close")})},$(element).click(function(){$("#iconPicker").dialog({width:800,height:380,close:function(){$(this).dialog("destroy");
+}})})}}}])}(),function(){angular.module("passmanApp").directive("ngEnter",function(){return function(scope,element,attrs){element.bind("keydown keypress",function(event){13===event.which&&(scope.$apply(function(){scope.$eval(attrs.ngEnter)}),event.preventDefault())})}})}(),function(){angular.module("passmanApp").directive("otpGenerator",["$compile","$timeout",function($compile,$timeout){function dec2hex(s){return(s<15.5?"0":"")+Math.round(s).toString(16)}function hex2dec(s){return parseInt(s,16)}function base32tohex(base32){if(base32){var i,base32chars="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bits="",hex="";for(i=0;i<base32.length;i++){var val=base32chars.indexOf(base32.charAt(i).toUpperCase());bits+=leftpad(val.toString(2),5,"0")}for(i=0;i+4<=bits.length;i+=4){var chunk=bits.substr(i,4);hex+=parseInt(chunk,2).toString(16)}return hex}}function leftpad(str,len,pad){return len+1>=str.length&&(str=Array(len+1-str.length).join(pad)+str),str}return{restrict:"A",template:'<span class="otp_generator"><span credential-field value="otp" secret="\'true\'"></span> <span ng-bind="timeleft"></span></span>',transclude:!1,scope:{secret:"="},replace:!0,link:function(scope){scope.otp=null,scope.timeleft=null,scope.timer=null;var updateOtp=function(){if(scope.secret){var key=base32tohex(scope.secret),epoch=Math.round((new Date).getTime()/1e3),time=leftpad(dec2hex(Math.floor(epoch/30)),16,"0"),hmacObj=new jsSHA(time,"HEX"),hmac=hmacObj.getHMAC(key,"HEX","SHA-1","HEX"),offset=hex2dec(hmac.substring(hmac.length-1)),otp=(hex2dec(hmac.substr(2*offset,8))&hex2dec("7fffffff"))+"";otp=otp.substr(otp.length-6,6),scope.otp=otp}},timer=function(){var epoch=Math.round((new Date).getTime()/1e3),countDown=30-epoch%30;epoch%30===0&&updateOtp(),scope.timeleft=countDown,scope.timer=$timeout(timer,1e3)};scope.$watch("secret",function(n){n?($timeout.cancel(scope.timer),updateOtp(),timer()):$timeout.cancel(scope.timer)},!0),scope.$on("$destroy",function(){$timeout.cancel(scope.timer)})}}}])}(),function(){angular.module("passmanApp").directive("passwordGen",function($timeout,$translate){function Arcfour(){this.j=this.i=0,this.S=[]}function ARC4init(r){var t,n,e;for(t=0;256>t;++t)this.S[t]=t;for(t=n=0;256>t;++t)n=n+this.S[t]+r[t%r.length]&255,e=this.S[t],this.S[t]=this.S[n],this.S[n]=e;this.j=this.i=0}function ARC4next(){var r;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,r=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=r,this.S[r+this.S[this.i]&255]}function prng_newstate(){return new Arcfour}function generatePassword(r,t,n,e,o,i,p,g){var _,a,s,f,d,h,u,l,c,v,w,y,m;if(void 0===r&&(r=8+get_random(0,1)),r>256&&(r=256,document.getElementById("length").value=256),i>256&&(i=256),void 0===t&&(t=!0),void 0===n&&(n=!0),void 0===e&&(e=!0),void 0===o&&(o=!1),void 0===i&&(i=0),void 0===p&&(p=!1),void 0===g&&(g=!0),_=0,a=0,s=0,g&&(_=a=s=1),f=[],n&&_>0)for(d=0;_>d;d++)f[f.length]="L";if(t&&a>0)for(d=0;a>d;d++)f[f.length]="U";if(e&&i>0)for(d=0;i>d;d++)f[f.length]="D";if(o&&s>0)for(d=0;s>d;d++)f[f.length]="S";for(;f.length<r;)f[f.length]="A";for(f.sort(function(){return 2*get_random(0,1)-1}),h="",u="abcdefghjkmnpqrstuvwxyz",p||(u+="ilo"),n&&(h+=u),l="ABCDEFGHJKMNPQRSTUVWXYZ",p||(l+="ILO"),t&&(h+=l),c="23456789",p||(c+="10"),e&&(h+=c),v="!@#$%^&*",o&&(h+=v),w="",y=0;r>y;y++){switch(f[y]){case"L":m=u;break;case"U":m=l;break;case"D":m=c;break;case"S":m=v;break;case"A":m=h}d=get_random(0,m.length-1),w+=m.charAt(d)}return w}function rng_seed_int(r){rng_pool[rng_pptr++]^=255&r,rng_pool[rng_pptr++]^=r>>8&255,rng_pool[rng_pptr++]^=r>>16&255,rng_pool[rng_pptr++]^=r>>24&255,rng_pptr>=rng_psize&&(rng_pptr-=rng_psize)}function rng_seed_time(){rng_seed_int((new Date).getTime())}function rng_get_byte(){if(null==rng_state){for(rng_seed_time(),rng_state=prng_newstate(),rng_state.init(rng_pool),rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr)rng_pool[rng_pptr]=0;rng_pptr=0}return rng_state.next()}function rng_get_bytes(r){var t;for(t=0;t<r.length;++t)r[t]=rng_get_byte()}function SecureRandom(){}function get_random(r,t){var n,e,o,i=t-r+1;for(rng_seed_time(),n=[],e=0;4>e;e++)n[e]=0;for(rng_get_bytes(n),o=0,e=0;4>e;e++)o*=256,o+=n[e];return o%=i,o+=r}var rng_psize,rng_state,rng_pool,rng_pptr,t,z,crypt_obj,num,buf,i;if(Arcfour.prototype.init=ARC4init,Arcfour.prototype.next=ARC4next,rng_psize=256,null==rng_pool){if(rng_pool=[],rng_pptr=0,"undefined"!=typeof navigator&&"Netscape"==navigator.appName&&navigator.appVersion<"5"&&"undefined"!=typeof window&&window.crypto)for(z=window.crypto.random(32),t=0;t<z.length;++t)rng_pool[rng_pptr++]=255&z.charCodeAt(t);try{if(crypt_obj=null,"undefined"!=typeof window&&void 0!==window.crypto?crypt_obj=window.crypto:"undefined"!=typeof window&&void 0!==window.msCrypto&&(crypt_obj=window.msCrypto),void 0!==crypt_obj&&"function"==typeof crypt_obj.getRandomValues&&rng_psize>rng_pptr)for(num=Math.floor((rng_psize-rng_pptr)/2)+1,buf=new Uint16Array(num),crypt_obj.getRandomValues(buf),i=0;i<buf.length;i++)t=buf[i],rng_pool[rng_pptr++]=t>>>8,rng_pool[rng_pptr++]=255&t}catch(e){}for(;rng_psize>rng_pptr;)t=Math.floor(65536*sjcl.random.randomWords(1)),rng_pool[rng_pptr++]=t>>>8,rng_pool[rng_pptr++]=255&t;rng_pptr=0,rng_seed_time()}return SecureRandom.prototype.nextBytes=rng_get_bytes,{scope:{model:"=ngModel",length:"@",placeholder:"@",settings:"=settings",callback:"&callback"},restrict:"E",replace:"true",template:'<div class=" pw-gen "><div class="input-group "><input ng-show="!passwordVisible" type="password" ng-disabled="disabled" class="form-control " ng-model="password" placeholder="{{placeholder}}"><input ng-show="passwordVisible" type="text" ng-disabled="disabled" class="form-control " ng-model="password" placeholder="{{placeholder}}"><span class="generate_pw"><div class="cell" tooltip="gen_msg" ng-click="generatePasswordStart()"><i class="fa fa-refresh"></i></div><div class="cell" tooltip="tggltxt" ng-click="toggleVisibility()"><i class="fa" ng-class="{\'fa-eye\': passwordVisible, \'fa-eye-slash\': !passwordVisible }"></i></div><div class="cell" tooltip="\'Copy password to clipboard\'"><i class="fa fa-clipboard" ngclipboard-success="onSuccess(e);" ngclipboard-error="onError(e);" ngclipboard data-clipboard-text="{{password}}"></i></div></button></div></div>',link:function(scope){scope.callback=scope.callback(),scope.$watch("model",function(){scope.password=scope.model}),scope.passwordVisible=!1,scope.toggleVisibility=function(){scope.passwordVisible=!scope.passwordVisible},scope.passwordNotNull=!1,scope.$watch("settings",function(){scope.settings&&!scope.password&&scope.settings.generateOnCreate&&scope.generatePasswordStart()}),$translate(["password.gen","password.copy","copied","toggle.visibility"]).then(function(translations){scope.tggltxt=translations["toggle.visibility"],scope.copy_msg=translations["password.copy"],scope.gen_msg=translations["password.gen"]}),scope.$watch("password",function(){scope.model=scope.password,scope.password_repeat=scope.model}),scope.onSuccess=function(e){OC.Notification.showTemporary($translate.instant("password.copied")),e.clearSelection()},scope.onError=function(){OC.Notification.showTemporary("Press Ctrl+C to copy!")},scope.progressDivShow=!1,scope.generatePasswordStart=function(){scope.progressDivShow=!0,scope.progressValue=0,scope.progressWidth={width:scope.progressValue+"%"},scope.generatePasswordProgress()},scope.generatePasswordProgress=function(){$timeout(function(){scope.progressValue<100?(scope.password=scope._generatePassword(scope.settings),scope.progressValue+=10,scope.progressWidth={width:scope.progressValue+"%"},scope.disabled=!0,scope.generatePasswordProgress()):(scope.disabled=!1,scope.callback&&scope.callback(scope.password))},10)},scope._generatePassword=function(settings){var _settings={length:12,useUppercase:!0,useLowercase:!0,useDigits:!0,useSpecialChars:!0,minimumDigitCount:3,avoidAmbiguousCharacters:!1,requireEveryCharType:!0};settings=angular.merge(_settings,settings);var password=generatePassword(settings.length,settings.useUppercase,settings.useLowercase,settings.useDigits,settings.useSpecialChars,settings.minimumDigitCount,settings.avoidAmbiguousCharacters,settings.requireEveryCharType);return password}}}})}(),function(){angular.module("passmanApp").directive("progressBar",["$translate",function($translate){return{restrict:"A",template:'<div class="progress"><div class="progress-bar" role="progressbar" aria-valuenow="{{progress}}"aria-valuemin="0" aria-valuemax="100" style="width:{{progress}}%;" use-theme><span class="sr-only">{{progress}}% {{completed_text}}</span><span ng-if="index && total" class="progress-label" use-theme type="\'color\'" color="\'true\'">{{index}} / {{total}}</span><span ng-if="!index && !total" class="progress-label" use-theme type="\'color\'" color="\'true\'">{{progress}}%</span></div></div>',scope:{progress:"=progressBar",index:"=index",total:"=total"},link:function(scope){$translate(["complete"]).then(function(translations){scope.completed_text=translations.complete})}}}])}(),function(){angular.module("passmanApp").directive("qrread",["$parse",function($parse){return{scope:!0,link:function(scope,element,attributes){var invoker=$parse(attributes.onRead);scope.imageData=null,qrcode.callback=function(result){invoker(scope,{qrdata:{qrData:result,image:scope.imageData}})},element.bind("change",function(changeEvent){var reader=new FileReader,file=changeEvent.target.files[0];reader.readAsDataURL(file),reader.onload=function(){return function(e){scope.imageData=e.target.result,qrcode.decode(e.target.result)}}(file)})}}}])}(),function(){angular.module("passmanApp").directive("tooltip",[function(){return{restrict:"A",scope:{tooltip:"=tooltip"},link:function(scope,el){scope.$watch("tooltip",function(){scope.tooltip&&(jQuery(el).attr("title",scope.tooltip),jQuery(el).tooltip(),jQuery(el).attr("title",scope.tooltip).tooltip("fixTitle"),jQuery(".tooltip-inner").text(scope.tooltip),jQuery(el).is(":visible"))})}}}])}(),function(){angular.module("passmanApp").directive("useTheme",[function(){function invertColor(hexTripletColor){var color=hexTripletColor;return color=color.substring(1),color=parseInt(color,16),color^=16777215,color=color.toString(16),color=("000000"+color).slice(-6),color="#"+color}return{restrict:"A",scope:{type:"=type",color:"=",negative:"="},link:function(scope,el){var _color=jQuery("#header").css("background-color"),_bg=_color;scope.negative&&(_bg=invertColor(_bg)),scope.type?jQuery(el).css(scope.type,_bg):jQuery(el).css("background-color",_bg),scope.color&&jQuery(el).css("color",invertColor(_color))}}}])}();var PassmanImporter={};!function(window,$,PassmanImporter){PassmanImporter.parseRow_=function(row){row=row.trim();var isQuoted=!1;return'"'===row.charAt(0)&&(row=row.substring(1),isQuoted=!0),'"'===row.charAt(row.length-2)&&(row=row.substring(0,row.length-2),isQuoted=!0),row=isQuoted===!0?row.split('","'):row.split(",")},PassmanImporter.htmlDecode=function(input){var e=document.createElement("div");return e.innerHTML=input,e.childNodes[0].nodeValue},PassmanImporter.toObject_=function(headings,row){for(var result={},i=0,ii=row.length;i<ii;i++)headings[i]?(headings[i]=headings[i].replace(",","_").toLowerCase().replace(" ","_").replace("(","").replace(")","").replace('"',""),result[headings[i]]=row[i]):result[ii]=row[i];return result},PassmanImporter.join_=function(arr,sep){for(var parts=[],i=0,ii=arr.length;i<ii;i++)arr[i]&&parts.push(arr[i]);return parts.join(sep)},PassmanImporter.newCredential=function(){var credential={credential_id:null,guid:null,vault_id:null,label:null,description:null,created:null,changed:null,tags:[],email:null,username:null,password:null,url:null,favicon:null,renew_interval:null,expire_time:0,delete_time:0,files:[],custom_fields:[],otp:{},hidden:!1};return credential},PassmanImporter.readCsv=function(csv,hasHeadings){hasHeadings=void 0===hasHeadings||hasHeadings;var lines=[];return Papa.parse(csv,{complete:function(results){if(results.data)for(var headings=hasHeadings?results.data[0]:null,start=hasHeadings?1:0,i=start;i<results.data.length;i++){var _row=hasHeadings?PassmanImporter.toObject_(headings,results.data[i]):results.data[i];lines.push(_row)}}}),lines},PassmanImporter.readJson=function(string){return JSON.parse(string)}}(window,$,PassmanImporter),String.prototype.replaceAll=function(search,replacement){var target=this;return target.replace(new RegExp(search,"g"),replacement)},Array.prototype.clean=function(deleteValue){for(var i=0;i<this.length;i++)this[i]===deleteValue&&(this.splice(i,1),i--);return this};var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.clippers={info:{name:"Clipperz.is",id:"clippers",exportSteps:["Go to menu -> Export -> Download HTML + JSON. Fields will be imported as custom fields."]}},PassmanImporter.clippers.readFile=function(file_data){return new C_Promise(function(){var credential_list=[],re=/<textarea>(.*?)<\/textarea>/gi,matches=re.exec(file_data);if(matches){var raw_json=matches[0].substring(10);raw_json=PassmanImporter.htmlDecode(raw_json.slice(0,-11));for(var json_objects=PassmanImporter.readJson(raw_json),i=0;i<json_objects.length;i++){var card=json_objects[i];re=/(\w+)/gi;var tags=card.label.match(re);card.label=card.label.replace(tags.join(" "),"").trim(),tags=tags.map(function(item){return{text:item.replace("","")}});var _credential=PassmanImporter.newCredential();_credential.label=card.label,_credential.description=card.data.notes,_credential.tags=tags;for(var field in card.currentVersion.fields){var field_data=card.currentVersion.fields[field];_credential.custom_fields.push({label:field_data.label,value:field_data.value,secret:field_data.hidden===!0})}_credential.label&&credential_list.push(_credential);var progress={percent:i/json_objects.length*100,loaded:i,total:json_objects.length};this.call_progress(progress)}}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.dashLaneCsv={info:{name:"Dashlane 4 csv",id:"dashLaneCsv",exportSteps:["Create an csv export. Go to File -> export -> Unsecured archive (readable) in CSV format"]}},PassmanImporter.dashLaneCsv.readFile=function(file_data){return new C_Promise(function(){for(var rows=file_data.split("\n"),credential_list=[],i=0;i<rows.length;i++){var row=rows[i],row_data=row.split('","');'"'===row_data[0].charAt(0)&&(row_data[0]=row_data[0].substring(1)),'"'===row_data[row_data.length-1].toString().charAt(row_data[row_data.length-1].length-1)&&(row_data[row_data.length-1]=row_data[row_data.length-1].substring(0,row_data[row_data.length-1].length-1));var _credential=PassmanImporter.newCredential();_credential.label=row_data[0],_credential.username=row_data[2],_credential.password=row_data[row_data.length-2],_credential.url=row_data[0],_credential.description=row_data[row_data.length-1],_credential.label&&credential_list.push(_credential);var progress={percent:i/rows.length*100,loaded:i,total:rows.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){function parseEnpass(fileData){var lastProperty,matches,loginBlocks,property;loginBlocks=fileData.replaceAll("Title :","<~passman~>\nTitle :").split("<~passman~>\n").clean("");for(var regex=/(.*) : (.*)/,results=[],l=0;l<loginBlocks.length;l++){for(var loginBlock=loginBlocks[l],lrow=loginBlock.split("\n"),result={},r=0;r<lrow.length;r++){var row=lrow[r];matches=regex.exec(row),matches?(property=matches[1],result[property]=matches[2]):lastProperty&&(result[lastProperty]+="\n"+row),property&&(lastProperty=property)}results.push(result)}return results}PassmanImporter.EnPassTXT={info:{name:"EnPass text file",id:"EnPassTXT",exportSteps:['Access your Enpass Database. Select "File" > "Export" > "As Text"']}},PassmanImporter.EnPassTXT.readFile=function(file_data){var mapper={Title:"label",Username:"username",Password:"password",Email:"email",Url:"url",Note:"description"},secret_fields=["cvc","pin","security answer"];return new C_Promise(function(){for(var credential_list=[],credentials=parseEnpass(file_data),i=0;i<credentials.length;i++){var enpass_credential=credentials[i],new_credential=PassmanImporter.newCredential();for(var key in enpass_credential)if(enpass_credential.hasOwnProperty(key))if(mapper.hasOwnProperty(key)){var prop=mapper[key];new_credential[prop]=enpass_credential[key]}else if("TOTP"!==key){var isSecret=secret_fields.indexOf(key.toLowerCase())!==-1?1:0;new_credential.custom_fields.push({label:key,value:enpass_credential[key],secret:isSecret})}enpass_credential.hasOwnProperty("TOTP")&&(new_credential.otp.secret=enpass_credential.TOTP);var progress={percent:i/credentials.length*100,loaded:i,total:credentials.length};credential_list.push(new_credential),this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.keepassCsv={info:{name:"KeePass csv",id:"keepassCsv",exportSteps:["Create an csv export with the following options enabled: http://i.imgur.com/CaeTA4d.png"]}},PassmanImporter.keepassCsv.readFile=function(file_data){var p=new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row.account,_credential.username=row.login_name,_credential.password=row.password,_credential.url=row.web_site,row.hasOwnProperty("expires")&&(row.expires=row.expires.replace('"',""),_credential.expire_time=new Date(row.expires).getTime()/1e3);var tags=row.group?[{text:row.group}]:[];if(row.hasOwnProperty("group_tree"))for(var exploded_tree=row.group_tree.split("\\\\"),t=0;t<exploded_tree.length;t++)exploded_tree[t].trim().length>0&&tags.push({text:exploded_tree[t].trim()});_credential.tags=tags,credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)});return p}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.lastpassCsv={info:{name:"LastPass csv",id:"lastpassCsv",exportSteps:["Create an csv export. Go to More options -> Advanced -> Export -> Last Pass CSV File"]}},PassmanImporter.lastpassCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=PassmanImporter.htmlDecode(row.name),_credential.username=row.username,_credential.password=row.password,_credential.url=row.url,_credential.tags=row.grouping?[{text:row.grouping}]:[],_credential.description=row.extra,_credential.label&&"undefined"!==_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){var steps=["Backups for the Passwords app need to be enabled on the Admin panel (they are disabled by default).","On the Passwords App, in the bottom left corner, press Settings",'Press "Download Backup"',"Confirm the export and save the file"];PassmanImporter.passwordsApp={info:{name:"Passwords App csv",id:"passwordsApp",exportSteps:steps}},PassmanImporter.passwordsApp.readFile=function(file_data){var p=new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row.website+" - "+row.username,_credential.username=row.username,_credential.password=row.password,_credential.url=row.fulladdress,_credential.description=row.notes,credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)});return p}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.padlock={info:{name:"Padlock",id:"padlock",exportSteps:["Create a csv export. Go to Menu -> Settings -> Export Data and copy text into a .csv file"]}},PassmanImporter.padlock.readFile=function(file_data){return new C_Promise(function(){for(var rows=PassmanImporter.readCsv(file_data,!0),credential_list=[],i=0;i<rows.length;i++){var row=rows[i],_credential=PassmanImporter.newCredential(),j=0;for(var k in row)row[k]&&("name"!=k?"username"!=k?"password"!=k?"url"!=k.toLowerCase()?"e-mail"!=k.toLowerCase()&&"email"!=k.toLowerCase()?"description"!=k.toLowerCase()?(_credential.custom_fields[j]={label:k,value:row[k],secret:!0,field_type:"text"},j++):_credential.description=row[k]:_credential.email=row[k]:_credential.url=row[k]:_credential.password=row.password:_credential.username=row.username:_credential.label=row.name);_credential.label&&credential_list.push(_credential);var progress={percent:i/rows.length*100,loaded:i,total:rows.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.passmanJson={info:{name:"Passman JSON",id:"passmanJson",exportSteps:["Export the item in passman as passman json, with all fields enabled"]}},PassmanImporter.passmanJson.readFile=function(file_data){return new C_Promise(function(){for(var parsed_json=PassmanImporter.readJson(file_data),credential_list=[],i=0;i<parsed_json.length;i++){var item=parsed_json[i],_credential=PassmanImporter.newCredential();if(_credential.label=item.label,_credential.username=item.username,_credential.password=item.password,_credential.email=item.email,_credential.url=item.url,_credential.tags=item.tags,_credential.description=item.description,item.hasOwnProperty("customFields")&&item.customFields.length>0)for(var cf=0;cf<item.customFields.length;cf++)_credential.custom_fields.push({label:item.customFields[cf].label,value:item.customFields[cf].value,secret:"1"===item.customFields[cf].clicktoshow});item.hasOwnProperty("otpsecret")&&item.otpsecret&&(_credential.otp={issuer:item.otpsecret.issuer,label:item.otpsecret.label,qr_uri:{image:item.otpsecret.qrCode,qrData:""},secret:item.otpsecret.secret,type:item.otpsecret.type}),_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_json.length*100,loaded:i,total:parsed_json.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.passpackCsv={info:{name:"Passpack csv",id:"passpackCsv",exportSteps:["Go to Tools -> Export. Select Comma Separated Values, All entries then continue."]}},PassmanImporter.passpackCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data,!1),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row[0],_credential.username=row[1],_credential.password=row[2],_credential.url=row[3];var tags=row[4].split(" ");tags.length>0&&(_credential.tags=tags.map(function(item){if(item)return{text:item}}).filter(function(item){return item})),_credential.description=row[5],_credential.email=row[6],_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.randomData={info:{name:"Random data",id:"randomData",exportSteps:["Create's 50 random credentials for testing purposes."]}},PassmanImporter.randomData.readFile=function(){return new C_Promise(function(){var label,tags=["Social media","Hosting","Forums","Webshops","FTP","SSH","Banking","Applications","Server stuff","mysql","Wifi","Games","Certificate","Serials"],credential_list=[],_this=this,generateCredential=function(max,i,callback){if(jQuery){var url=OC.generateUrl("apps/passman/api/internal/generate_person");$.ajax({url:url,dataType:"json",success:function(data){if(data){var _credential=PassmanImporter.newCredential();label=Math.random()>=.5?data.domain:data.email_d+" - "+data.email_u,_credential.label=label,_credential.username=data.username,_credential.password=data.password,_credential.url=data.url;for(var tag_amount=Math.floor(5*Math.random()),ta=0,_tags=[];ta<tag_amount;){var item=tags[Math.floor(Math.random()*tags.length)];_tags.indexOf(item)===-1&&(_tags.push(item),ta++)}if(_credential.tags=_tags.map(function(item){if(item)return{text:item}}).filter(function(item){return item}),credential_list.push(_credential),i<max){var progress={percent:i/max*100,loaded:i,total:max};_this.call_progress(progress),generateCredential(max,i+1,callback)}else callback(credential_list)}else generateCredential(max,i,callback)}})}};generateCredential(50,1,function(credential_list){_this.call_then(credential_list)})})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};!function(window,$,PassmanImporter){PassmanImporter.teamPassCsv={info:{name:"TeamPass csv",id:"teamPassCsv",exportSteps:["Go to Tools -> Export. Select Comma Separated Values, All entries then continue."]}},PassmanImporter.teamPassCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data,!1),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();_credential.label=row[1],_credential.description=row[2],_credential.password=row[3],_credential.username=row[4];var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};credential_list.push(_credential),this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter);var PassmanImporter=PassmanImporter||{};if(function(window,$,PassmanImporter){PassmanImporter.zohoCsv={info:{name:"ZOHO csv",id:"zohoCsv",exportSteps:['Create an csv export. Go to Tools -> Export secrets -> Select "General CSV" and click "Export Secrets"']}},PassmanImporter.zohoCsv.readFile=function(file_data){return new C_Promise(function(){for(var parsed_csv=PassmanImporter.readCsv(file_data),credential_list=[],i=0;i<parsed_csv.length;i++){var row=parsed_csv[i],_credential=PassmanImporter.newCredential();if(_credential.label=row.secret_name,_credential.url=row.secret_url,_credential.description=row.notes,row.hasOwnProperty("secretdata"))for(var rows=row.secretdata.split("\n"),r=0;r<rows.length;r++){var cells=rows[r].split(":"),key=cells[0],value=cells.slice(1).join(":");key&&value&&_credential.custom_fields.push({label:key,value:value,secret:!1})}""!==_credential.label&&credential_list.push(_credential);var progress={percent:i/parsed_csv.length*100,loaded:i,total:parsed_csv.length};this.call_progress(progress)}this.call_then(credential_list)})}}(window,$,PassmanImporter),!window.PassmanExporter)var PassmanExporter={getCredentialsWithFiles:function(credentials,FileService,EncryptService){var t={cred:credentials,FS:FileService,ES:EncryptService};return new C_Promise(function(){var _this=this.parent,credentials=_this.cred;this.parent.total=0,this.parent.finished=0,this.parent.fileGUID_cred=[],this.parent.files=[],this.parent.step=function(file){this.parent.finished++,this.call_progress({total:this.parent.total,finished:this.parent.finished});var dta=this.parent.fileGUID_cred[file.guid];file.filename=this.parent.ES.decryptString(file.filename,this.parent.cred[dta.cred_pos].vault_key),file.file_data=this.parent.ES.decryptString(file.file_data,this.parent.cred[dta.cred_pos].vault_key),"files"===dta.on?this.parent.cred[dta.cred_pos][dta.on][dta.at]=file:this.parent.cred[dta.cred_pos][dta.on][dta.at].value=file,this.parent.total===this.parent.finished&&this.call_then(this.parent.cred)}.bind(this);for(var i=0;i<credentials.length;i++){var item=credentials[i];for(c=0;c<item.custom_fields.length;c++){var cf=item.custom_fields[c];"file"===cf.field_type&&(this.parent.total++,this.parent.fileGUID_cred[cf.value.guid]={cred_pos:i,on:"custom_fields",at:c},this.parent.FS.getFile(cf.value).then(function(data){this.parent.step(data)}.bind(this)))}for(var c=0;c<item.files.length;c++)this.parent.total++,this.parent.fileGUID_cred[item.files[c].guid]={cred_pos:i,on:"files",at:c},this.parent.FS.getFile(item.files[c]).then(function(data){this.parent.step(data)}.bind(this))}0===this.parent.total&&this.call_then(this.parent.cred)},t)}};PassmanExporter.csv={info:{name:"CSV",id:"csv",description:"Export credentials as a csv file."}},PassmanExporter.csv.export=function(credentials,FileService,EncryptService){return new C_Promise(function(){PassmanExporter.getCredentialsWithFiles(credentials,FileService,EncryptService).then(function(){for(var headers=["label","username","password","email","description","tags","url","custom_fields","files"],file_data='"'+headers.join('","')+'"\n',i=0;i<credentials.length;i++){for(var _credential=credentials[i],row_data=[],h=0;h<headers.length;h++){var field=headers[h];if("tags"===field){for(var _tags=[],t=0;t<_credential[field].length;t++)_tags.push(_credential[field][t].text);var tag_data="["+_tags.join(",")+"]";row_data.push('"'+tag_data.replaceAll('"','""')+'"')}else if("custom_fields"==field||"files"==field){var _fields=JSON.stringify(_credential[field]);_fields=_fields.replaceAll('"','""'),row_data.push('"'+_fields+'"')}else row_data.push('"'+_credential[field].replaceAll('"','""')+'"')}var progress={percent:i/credentials.length*100,loaded:i,total:credentials.length};this.call_progress(progress),file_data+=row_data.join(",")+"\n"}this.call_then(),download(file_data,"passman-export.csv","text/csv")}.bind(this)).progress(function(){})})},PassmanExporter.json={info:{name:"JSON",id:"json",description:"Export credentials as a JSON file."}},PassmanExporter.json.export=function(credentials,FileService,EncryptService){return new C_Promise(function(){PassmanExporter.getCredentialsWithFiles(credentials,FileService,EncryptService).then(function(){for(var _output=[],i=0;i<credentials.length;i++){var _credential=angular.copy(credentials[i]);delete _credential.vault_key,delete _credential.vault_id,delete _credential.shared_key,_output.push(_credential);var progress={percent:i/credentials.length*100,loaded:i,total:credentials.length};this.call_progress(progress)}var file_data=JSON.stringify(_output);this.call_then(),download(file_data,"passman-export.json")}.bind(this)).progress(function(){})})},function(){angular.module("passmanApp").controller("BookmarkletCtrl",["$scope","$rootScope","$location","VaultService","CredentialService","SettingsService","NotificationService","EncryptService","TagService","FileService","ShareService","$translate",function($scope,$rootScope,$location,VaultService,CredentialService,SettingsService,NotificationService,EncryptService,TagService,FileService,ShareService,$translate){if($scope.active_vault=!1,$scope.http_warning_hidden=!0,"http"===$location.$$protocol&&($scope.using_http=!0),$scope.logout=function(){$rootScope.override_default_vault=!0,$scope.active_vault=!1},SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));VaultService.getVault(_vault).then(function(vault){vault.vaultKey=angular.copy(SettingsService.getSetting("defaultVaultPass")),VaultService.setActiveVault(vault),
+$scope.active_vault=vault,$scope.pwSettings=VaultService.getVaultSetting("pwSettings",{length:12,useUppercase:!0,useLowercase:!0,useDigits:!0,useSpecialChars:!0,minimumDigitCount:3,avoidAmbiguousCharacters:!1,requireEveryCharType:!0,generateOnCreate:!0})})}VaultService.getVaults().then(function(vaults){$scope.vaults=vaults}),$scope.default_vault=!1,$scope.remember_vault_password=!1,$scope.list_selected_vault=!1,$scope.toggleDefaultVault=function(){$scope.default_vault=!$scope.default_vault,$scope.default_vault===!0?SettingsService.setSetting("defaultVault",$scope.list_selected_vault):SettingsService.setSetting("defaultVault",null)},$scope.toggleRememberPassword=function(){$scope.remember_vault_password=!$scope.remember_vault_password,$scope.remember_vault_password&&(SettingsService.setSetting("defaultVault",$scope.list_selected_vault),$scope.default_vault=!0),$scope.remember_vault_password!==!0&&SettingsService.setSetting("defaultVault",null)},$scope.clearState=function(){$scope.list_selected_vault=!1,$scope.creating_vault=!1,$scope.error=!1},$scope.selectVault=function(vault){$scope.list_selected_vault=vault},$scope.sharing_keys={},$scope.newVault=function(){$scope.creating_vault=!0;var key_size=1024;ShareService.generateRSAKeys(key_size).progress(function(progress){var p=progress>0?2:1,msg=$translate.instant("generating.sharing.keys");msg=msg.replace("%step",p),$scope.creating_keys=msg,$scope.$digest()}).then(function(kp){var pem=ShareService.rsaKeyPairToPEM(kp);$scope.creating_keys=!1,$scope.sharing_keys.private_sharing_key=pem.privateKey,$scope.sharing_keys.public_sharing_key=pem.publicKey,$scope.$digest()})};var _loginToVault=function(vault,vault_key){var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),delete _vault.credentials,$scope.active_vault=_vault};$scope.vaultDecryptionKey="",$scope.loginToVault=function(vault,vault_key){$scope.error=!1;var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),VaultService.setActiveVault(_vault);try{EncryptService.decryptString(vault.challenge_password),$scope.remember_vault_password&&SettingsService.setSetting("defaultVaultPass",vault_key),_loginToVault(vault,vault_key)}catch(e){$scope.error=$translate.instant("invalid.vault.key")}},$scope.createVault=function(vault_name,vault_key,vault_key2){return vault_key!==vault_key2?void($scope.error=$translate.instant("password.do.not.match")):void VaultService.createVault(vault_name).then(function(vault){$scope.vaults.push(vault);var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),VaultService.setActiveVault(_vault);var test_credential=CredentialService.newCredential();test_credential.label="Test key for vault "+vault_name,test_credential.hidden=!0,test_credential.vault_id=vault.vault_id,test_credential.password="lorum ipsum",CredentialService.createCredential(test_credential).then(function(){_vault.public_sharing_key=angular.copy($scope.sharing_keys.public_sharing_key),_vault.private_sharing_key=EncryptService.encryptString(angular.copy($scope.sharing_keys.private_sharing_key)),VaultService.updateSharingKeys(_vault).then(function(){_loginToVault(vault,vault_key)})})})},$scope.storedCredential=CredentialService.newCredential();var QueryString=function(){for(var query_string={},query=window.location.search.substring(1),vars=query.split("&"),i=0;i<vars.length;i++){var pair=vars[i].split("=");if("undefined"==typeof query_string[pair[0]])query_string[pair[0]]=decodeURIComponent(pair[1]);else if("string"==typeof query_string[pair[0]]){var arr=[query_string[pair[0]],decodeURIComponent(pair[1])];query_string[pair[0]]=arr}else query_string[pair[0]].push(decodeURIComponent(pair[1]))}return query_string}(),query_string=QueryString;$scope.storedCredential.label=query_string.title,$scope.storedCredential.url=query_string.url,$scope.setHttpWarning=function(state){$scope.http_warning_hidden=state},$translate(["general","password","custom.fields","files","otp"]).then(function(translations){$scope.tabs=[{title:translations.general,url:"views/partials/forms/edit_credential/basics.html",color:"blue"},{title:translations.password,url:"views/partials/forms/edit_credential/password.html",color:"green"},{title:translations["custom.fields"],url:"views/partials/forms/edit_credential/custom_fields.html",color:"orange"},{title:translations.files,url:"views/partials/forms/edit_credential/files.html",color:"yellow"},{title:translations.otp,url:"views/partials/forms/edit_credential/otp.html",color:"purple"}],$scope.currentTab=$scope.tabs[0]}),$scope.getTags=function($query){return TagService.searchTag($query)},$scope.onClickTab=function(tab){$scope.currentTab=tab},$scope.isActiveTab=function(tab){return tab.url===$scope.currentTab.url},$scope.pwGenerated=function(pass){$scope.storedCredential.password_repeat=pass};var _customField={label:"",value:"",secret:!1,field_type:"text"};$scope.selected_field_type="text",$scope.new_custom_field=angular.copy(_customField),$scope.addCustomField=function(){var _field=angular.copy($scope.new_custom_field);if(_field.label||NotificationService.showNotification($translate.instant("error.no.label"),3e3),_field.value||NotificationService.showNotification($translate.instant("error.no.value"),3e3),_field.label&&_field.value)if($scope.selected_field_type="text",_field.secret=angular.copy("password"===$scope.selected_field_type),_field.field_type=angular.copy($scope.selected_field_type),"file"===_field.field_type){var _file=$scope.new_custom_field.value;FileService.uploadFile(_file).then(function(result){delete result.file_data,result.filename=EncryptService.decryptString(result.filename),_field.value=result,$scope.storedCredential.custom_fields.push(_field),$scope.new_custom_field=angular.copy(_customField)})}else $scope.storedCredential.custom_fields.push(_field),$scope.new_custom_field=angular.copy(_customField)},$scope.addFileToCustomField=function(file){var _file={filename:file.name,size:file.size,mimetype:file.type,data:file.data};$scope.new_custom_field.value=_file,$scope.$digest()},$scope.deleteCustomField=function(field){field.hasOwnProperty("field_type")&&"file"===field.field_type&&FileService.deleteFile(field.value);var idx=$scope.storedCredential.custom_fields.indexOf(field);$scope.storedCredential.custom_fields.splice(idx,1)},$scope.new_file={name:"",data:null},$scope.deleteFile=function(file){var idx=$scope.storedCredential.files.indexOf(file);FileService.deleteFile(file).then(function(){$scope.storedCredential.files.splice(idx,1)})},$scope.fileLoaded=function(file){var _file={filename:file.name,size:file.size,mimetype:file.type,data:file.data};FileService.uploadFile(_file).then(function(result){delete result.file_data,result.filename=EncryptService.decryptString(result.filename),$scope.storedCredential.files.push(result)}),$scope.$digest()},$scope.fileLoadError=function(error){return error},$scope.selected_file="",$scope.fileprogress=[],$scope.fileSelectProgress=function(progress){progress&&($scope.fileprogress=progress,$scope.$digest())},$scope.renewIntervalValue=0,$scope.renewIntervalModifier="0",$scope.updateInterval=function(renewIntervalValue,renewIntervalModifier){var value=parseInt(renewIntervalValue),modifier=parseInt(renewIntervalModifier);value&&modifier&&($scope.storedCredential.renew_interval=value*modifier)},$scope.parseQR=function(QRCode){var parsedQR,qrInfo,re=/otpauth:\/\/(totp|hotp)\/(.*)\?(secret|issuer)=(.*)&(issuer|secret)=(.*)/;qrInfo=[],parsedQR=QRCode.qrData.match(re),parsedQR&&(qrInfo={type:parsedQR[1],label:decodeURIComponent(parsedQR[2]),qr_uri:QRCode}),qrInfo[parsedQR[3]]=parsedQR[4],qrInfo[parsedQR[5]]=parsedQR[6],$scope.storedCredential.otp=qrInfo,$scope.$digest()},$scope.saveCredential=function(){delete $scope.storedCredential.password_repeat,$scope.storedCredential.credential_id||($scope.storedCredential.vault_id=$scope.active_vault.vault_id,CredentialService.createCredential($scope.storedCredential).then(function(){NotificationService.showNotification($translate.instant("credential.created"),5e3)}))}}])}(),function(){angular.module("passmanApp").controller("CredentialCtrl",["$scope","VaultService","SettingsService","$location","CredentialService","$rootScope","FileService","EncryptService","TagService","$timeout","NotificationService","CacheService","ShareService","SharingACL","$interval","$filter","$routeParams","$sce","$translate",function($scope,VaultService,SettingsService,$location,CredentialService,$rootScope,FileService,EncryptService,TagService,$timeout,NotificationService,CacheService,ShareService,SharingACL,$interval,$filter,$routeParams,$sce,$translate){if($scope.active_vault=VaultService.getActiveVault(),SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=angular.copy(SettingsService.getSetting("defaultVaultPass")),VaultService.setActiveVault(_vault),$scope.active_vault=_vault}}else $scope.active_vault||$location.path("/");$scope.show_spinner=!0;var fetchCredentials=function(){VaultService.getVault({guid:$routeParams.vault_id}).then(function(vault){var vaultKey=angular.copy($scope.active_vault.vaultKey),_credentials=angular.copy(vault.credentials);vault.credentials=[],$scope.active_vault=vault,$scope.active_vault.vaultKey=vaultKey,$rootScope.vaultCache||($rootScope.vaultCache=[]),VaultService.setActiveVault($scope.active_vault);for(var i=0;i<_credentials.length;i++){var _credential=_credentials[i];try{if(_credential.shared_key){var enc_key=EncryptService.decryptString(_credential.shared_key);_credential=ShareService.decryptSharedCredential(angular.copy(_credential),enc_key)}else _credential=CredentialService.decryptCredential(angular.copy(_credential));_credential.tags_raw=_credential.tags}catch(e){NotificationService.showNotification($translate.instant("error.decrypt"),5e3)}_credentials[i]=_credential}ShareService.getCredendialsSharedWithUs(vault.guid).then(function(shared_credentials){for(var c=0;c<shared_credentials.length;c++){var _shared_credential_data,_shared_credential=shared_credentials[c],decrypted_key=EncryptService.decryptString(_shared_credential.shared_key);try{_shared_credential_data=ShareService.decryptSharedCredential(_shared_credential.credential_data,decrypted_key)}catch(e){}_shared_credential_data&&(delete _shared_credential.credential_data,_shared_credential_data.acl=_shared_credential,_shared_credential_data.acl.permissions=new SharingACL(_shared_credential_data.acl.permissions),_shared_credential_data.tags_raw=_shared_credential_data.tags,_credentials.push(_shared_credential_data))}if(angular.merge($scope.active_vault.credentials,_credentials),$scope.show_spinner=!1,$rootScope.$broadcast("credentials_loaded"),$rootScope.vaultCache[$scope.active_vault.guid]=angular.copy($scope.active_vault),!vault.private_sharing_key){var key_size=1024;ShareService.generateRSAKeys(key_size).then(function(kp){var pem=ShareService.rsaKeyPairToPEM(kp);$scope.creating_keys=!1,$scope.active_vault.private_sharing_key=pem.privateKey,$scope.active_vault.public_sharing_key=pem.publicKey,$scope.$digest(),VaultService.updateSharingKeys($scope.active_vault)})}})})},getPendingShareRequests=function(){ShareService.getPendingRequests().then(function(shareRequests){shareRequests.length>0&&($scope.incoming_share_requests=shareRequests,jQuery(".share_popup").dialog({width:600,position:["center",90]}))})},refresh_data_interval=null;$scope.active_vault&&($scope.$parent.selectedVault=!0,$rootScope.vaultCache&&$rootScope.vaultCache[$scope.active_vault.guid]?($scope.active_vault=$rootScope.vaultCache[$scope.active_vault.guid],$rootScope.$broadcast("credentials_loaded"),$scope.show_spinner=!1):fetchCredentials(),getPendingShareRequests(),refresh_data_interval=$interval(function(){fetchCredentials(),getPendingShareRequests()},3e5)),$scope.$on("$destroy",function(){$interval.cancel(refresh_data_interval)}),$scope.permissions=new SharingACL(0),$scope.hasPermission=function(acl,permission){if(acl){var tmp=new SharingACL(acl.permission);return tmp.hasPermission(permission)}return!0},$scope.acceptShareRequest=function(share_request){var crypted_shared_key=share_request.shared_key,private_key=EncryptService.decryptString(VaultService.getActiveVault().private_sharing_key);private_key=ShareService.rsaPrivateKeyFromPEM(private_key),crypted_shared_key=private_key.decrypt(forge.util.decode64(crypted_shared_key)),crypted_shared_key=EncryptService.encryptString(crypted_shared_key),ShareService.saveSharingRequest(share_request,crypted_shared_key).then(function(){var idx=$scope.incoming_share_requests.indexOf(share_request);$scope.incoming_share_requests.splice(idx,1);for(var active_share_requests=!1,v=0;v<$scope.incoming_share_requests.length;v++)$scope.incoming_share_requests[v].target_vault_id===$scope.active_vault.vault_id&&(active_share_requests=!0);active_share_requests===!1&&(jQuery(".ui-dialog").remove(),fetchCredentials())})},$scope.declineShareRequest=function(share_request){ShareService.declineSharingRequest(share_request).then(function(){var idx=$scope.incoming_share_requests.indexOf(share_request);$scope.incoming_share_requests.splice(idx,1);for(var active_share_requests=!1,v=0;v<$scope.incoming_share_requests.length;v++)$scope.incoming_share_requests[v].target_vault_id===$scope.active_vault.vault_id&&(active_share_requests=!0);active_share_requests===!1&&(jQuery(".ui-dialog").remove(),fetchCredentials())})};var settingsLoaded=function(){$scope.settings=SettingsService.getSettings()};SettingsService.getSetting("settings_loaded")?settingsLoaded():$rootScope.$on("settings_loaded",function(){settingsLoaded()}),$scope.addCredential=function(){var new_credential=CredentialService.newCredential(),enc_c=CredentialService.encryptCredential(new_credential);SettingsService.setSetting("edit_credential",enc_c),$location.path("/vault/"+$scope.active_vault.guid+"/new")},$scope.editCredential=function(credential){var _credential=angular.copy(credential);$rootScope.$emit("app_menu",!1),SettingsService.setSetting("edit_credential",CredentialService.encryptCredential(_credential)),$location.path("/vault/"+$scope.active_vault.guid+"/edit/"+_credential.guid)},$scope.getRevisions=function(credential){var _credential=angular.copy(credential);$rootScope.$emit("app_menu",!1),SettingsService.setSetting("revision_credential",CredentialService.encryptCredential(_credential)),$location.path("/vault/"+$scope.active_vault.guid+"/"+_credential.guid+"/revisions")},$scope.shareCredential=function(credential){var _credential=angular.copy(credential);$rootScope.$emit("app_menu",!1),SettingsService.setSetting("share_credential",CredentialService.encryptCredential(_credential)),$location.path("/vault/"+$scope.active_vault.guid+"/"+_credential.guid+"/share")};var notification;$scope.deleteCredential=function(credential){var _credential=angular.copy(credential);try{_credential=CredentialService.decryptCredential(_credential)}catch(e){}_credential.delete_time=(new Date).getTime()/1e3;for(var i=0;i<$scope.active_vault.credentials.length;i++)$scope.active_vault.credentials[i].credential_id===credential.credential_id&&($scope.active_vault.credentials[i].delete_time=_credential.delete_time);$scope.closeSelected(),notification&&NotificationService.hideNotification(notification);var key=CredentialService.getSharedKeyFromCredential(_credential);CredentialService.updateCredential(_credential,!1,key).then(function(){notification=NotificationService.showNotification($translate.instant("credential.deleted"),5e3)})},$scope.recoverCredential=function(credential){var _credential=angular.copy(credential);try{_credential=CredentialService.decryptCredential(_credential)}catch(e){}for(var i=0;i<$scope.active_vault.credentials.length;i++)$scope.active_vault.credentials[i].credential_id===credential.credential_id&&($scope.active_vault.credentials[i].delete_time=0);_credential.delete_time=0,$scope.closeSelected(),notification&&NotificationService.hideNotification(notification);var key=CredentialService.getSharedKeyFromCredential(_credential);CredentialService.updateCredential(_credential,!1,key).then(function(){NotificationService.showNotification($translate.instant("credential.recovered"),5e3)})},$scope.destroyCredential=function(credential){var _credential=angular.copy(credential);CredentialService.destroyCredential(_credential.guid).then(function(){for(var i=0;i<$scope.active_vault.credentials.length;i++)if($scope.active_vault.credentials[i].credential_id===credential.credential_id){$scope.active_vault.credentials.splice(i,1),NotificationService.showNotification($translate.instant("credential.destroyed"),5e3);break}})},$scope.view_mode="list",$scope.switchViewMode=function(viewMode){$scope.view_mode=viewMode},$rootScope.$on("push_decrypted_credential_to_list",function(){$rootScope.$broadcast("credentials_loaded")}),$scope.filterOptions={filterText:"",fields:["label","username","email","custom_fields"]},$scope.$on("nc_searchbox",function(event,args){$scope.filterOptions.filterText=args}),$scope.filtered_credentials=[],$scope.$watch("[selectedtags, filterOptions, delete_time, active_vault.credentials]",function(){if($scope.active_vault&&$scope.active_vault.credentials){var credentials=angular.copy($scope.active_vault.credentials),filtered_credentials=$filter("credentialSearch")(credentials,$scope.filterOptions);filtered_credentials=$filter("tagFilter")(filtered_credentials,$scope.selectedtags),filtered_credentials=$filter("filter")(filtered_credentials,{hidden:0}),$scope.filtered_credentials=filtered_credentials,$scope.filterOptions.selectedtags=angular.copy($scope.selectedtags);for(var i=0;i<$scope.active_vault.credentials.length;i++){var _credential=$scope.active_vault.credentials[i];_credential.tags&&TagService.addTags(_credential.tags)}}},!0),$scope.no_credentials_label=[],$scope.no_credentials_label.all=!0,$scope.no_credentials_label.s_good=!1,$scope.no_credentials_label.s_medium=!1,$scope.no_credentials_label.s_low=!1,$scope.no_credentials_label.expired=!1,$scope.disableAllLabels=function(){$scope.no_credentials_label.all=!1,$scope.no_credentials_label.s_good=!1,$scope.no_credentials_label.s_medium=!1,$scope.no_credentials_label.s_low=!1,$scope.no_credentials_label.expired=!1},$scope.$on("filterSpecial",function(event,args){switch($scope.disableAllLabels(),args){case"strength_good":$scope.filterStrength(3,1e3),$scope.no_credentials_label.s_good=!0;break;case"strength_medium":$scope.filterStrength(2,3),$scope.no_credentials_label.s_medium=!0;break;case"strength_low":$scope.filterStrength(0,1),$scope.no_credentials_label.s_low=!0;break;case"expired":$scope.filterExpired(),$scope.no_credentials_label.expired=!0;break;case"all":$scope.filterAll(),$scope.no_credentials_label.all=!0}}),$scope.getListSizes=function(){for(var l=$scope.filtered_credentials,deleted=0,i=0;i<l.length;i++)l[i].delete_time>0&&deleted++;var result=[];return result.listsize=l.length,result.listsize_wout_deleted=l.length-deleted,result.listsize_deleted=deleted,result},$scope.filterAll=function(){$scope.selectedtags=[],$scope.filterOptions.filterText="";for(var creds_filtered=[],i=0;i<$scope.active_vault.credentials.length;i++)0===$scope.active_vault.credentials[i].delete_time&&creds_filtered.push($scope.active_vault.credentials[i]);$scope.filtered_credentials=$scope.filterHidden(creds_filtered)},$scope.filterStrength=function(strength_min,strength_max){for(var initialCredentials=$scope.active_vault.credentials,postFiltered=[],i=0;i<initialCredentials.length;i++){var _credential=initialCredentials[i],zxcvbn_result=zxcvbn(_credential.password);zxcvbn_result.score>=strength_min&&zxcvbn_result.score<=strength_max&&postFiltered.push(initialCredentials[i])}$scope.filtered_credentials=$scope.filterHidden(postFiltered)},$scope.filterExpired=function(){for(var initialCredentials=$scope.active_vault.credentials,now=Date.now(),postFiltered=[],i=0;i<initialCredentials.length;i++){var _credential=initialCredentials[i];0!==_credential.expire_time&&_credential.expire_time<=now&&postFiltered.push(initialCredentials[i])}$scope.filtered_credentials=$scope.filterHidden(postFiltered)},$scope.filterHidden=function(list){for(var list_without_hidden=[],i=0;i<list.length;i++)1!==list[i].hidden&&list_without_hidden.push(list[i]);return list_without_hidden},$scope.selectedtags=[];var to;$rootScope.$on("selected_tags_updated",function(evt,_sTags){for(var _selectedTags=[],x=0;x<_sTags.length;x++)_selectedTags.push(_sTags[x].text);$scope.selectedtags=_selectedTags,$timeout.cancel(to),_selectedTags.length>0&&(to=$timeout(function(){if($scope.filtered_credentials){for(var _filtered_tags=[],i=0;i<$scope.filtered_credentials.length;i++)for(var tags=$scope.filtered_credentials[i].tags_raw,x=0;x<tags.length;x++){var tag=tags[x].text;_filtered_tags.indexOf(tag)===-1&&_filtered_tags.push(tag)}$rootScope.$emit("limit_tags_in_list",_filtered_tags)}},50))}),$scope.delete_time=0,$scope.showCredentialRow=function(credential){return 0===$scope.delete_time?0===credential.delete_time:credential.delete_time>$scope.delete_time},$rootScope.$on("set_delete_time",function(event,time){$scope.delete_time=time}),$scope.setDeleteTime=function(delete_time){$scope.delete_time=delete_time},$scope.selectedCredential=!1,$scope.selectCredential=function(credential){credential.description&&(credential.description_html=$sce.trustAsHtml(angular.copy(credential.description).replace("\n","<br />"))),$scope.selectedCredential=angular.copy(credential),$rootScope.$emit("app_menu",!0)},$scope.closeSelected=function(){$rootScope.$emit("app_menu",!1),$scope.selectedCredential=!1},$rootScope.$on("logout",function(){$scope.active_vault&&($rootScope.vaultCache[$scope.active_vault.guid]=null),$scope.active_vault=null,$scope.credentials=[]}),$scope.clearState=function(){$scope.delete_time=0}}])}(),function(){angular.module("passmanApp").controller("CredentialEditCtrl",["$scope","VaultService","CredentialService","SettingsService","$location","$routeParams","FileService","EncryptService","TagService","NotificationService","ShareService","$translate","$rootScope",function($scope,VaultService,CredentialService,SettingsService,$location,$routeParams,FileService,EncryptService,TagService,NotificationService,ShareService,$translate,$rootScope){if($scope.active_vault=VaultService.getActiveVault(),SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=SettingsService.getSetting("defaultVaultPass"),VaultService.setActiveVault(_vault),$scope.active_vault=_vault}}else if(!$scope.active_vault)return void $location.path("/");VaultService.getVault($scope.active_vault).then(function(vault){vault.vaultKey=VaultService.getActiveVault().vaultKey,delete vault.credentials,VaultService.setActiveVault(vault),$scope.pwSettings=VaultService.getVaultSetting("pwSettings",{length:12,useUppercase:!0,useLowercase:!0,useDigits:!0,useSpecialChars:!0,minimumDigitCount:3,avoidAmbiguousCharacters:!1,requireEveryCharType:!0,generateOnCreate:!0})}),$scope.currentTab={title:$translate.instant("general"),url:"views/partials/forms/edit_credential/basics.html",color:"blue"},$scope.otpType="qrcode",$translate(["general","password","custom.fields","files","otp"]).then(function(translations){$scope.tabs=[{title:translations.general,url:"views/partials/forms/edit_credential/basics.html",color:"blue"},{title:translations.password,url:"views/partials/forms/edit_credential/password.html",color:"green"},{title:translations["custom.fields"],url:"views/partials/forms/edit_credential/custom_fields.html",color:"orange"},{title:translations.files,url:"views/partials/forms/edit_credential/files.html",color:"yellow"},{title:translations.otp,url:"views/partials/forms/edit_credential/otp.html",color:"purple"}],$scope.currentTab=$scope.tabs[0]}),$scope.active_vault&&($scope.$parent.selectedVault=!0);var storedCredential=SettingsService.getSetting("edit_credential");storedCredential?($scope.storedCredential=CredentialService.decryptCredential(angular.copy(storedCredential)),$scope.storedCredential.password_repeat=angular.copy($scope.storedCredential.password),$scope.storedCredential.expire_time=1e3*$scope.storedCredential.expire_time):CredentialService.getCredential($routeParams.credential_id).then(function(result){$scope.storedCredential=CredentialService.decryptCredential(angular.copy(result))}),$scope.getTags=function($query){return TagService.searchTag($query)},$scope.onClickTab=function(tab){$scope.currentTab=tab},$scope.isActiveTab=function(tab){return tab.url===$scope.currentTab.url},$scope.pwGenerated=function(pass){$scope.storedCredential.password_repeat=pass};var _customField={label:"",value:"",secret:!1,field_type:"text"};$scope.selected_field_type="text",$scope.new_custom_field=angular.copy(_customField),$scope.addCustomField=function(){var _field=angular.copy($scope.new_custom_field);if(_field.label||NotificationService.showNotification($translate.instant("error.no.label"),3e3),_field.value||NotificationService.showNotification($translate.instant("error.no.value"),3e3),_field.label&&_field.value)if($scope.selected_field_type="text",_field.secret="password"===_field.field_type,"file"===_field.field_type){var key=!1,_file=$scope.new_custom_field.value;!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),FileService.uploadFile(_file,key).then(function(result){delete result.file_data,result.filename=EncryptService.decryptString(result.filename,key),_field.value=result,$scope.storedCredential.custom_fields.push(_field),$scope.new_custom_field=angular.copy(_customField)})}else $scope.storedCredential.custom_fields.push(_field),$scope.new_custom_field=angular.copy(_customField)},$scope.addFileToCustomField=function(file){$scope.new_custom_field.value={filename:file.name,size:file.size,mimetype:file.type,data:file.data},$scope.$digest()},$scope.deleteCustomField=function(field){field.hasOwnProperty("field_type")&&"file"===field.field_type&&FileService.deleteFile(field.value);var idx=$scope.storedCredential.custom_fields.indexOf(field);$scope.storedCredential.custom_fields.splice(idx,1)},$scope.new_file={name:"",data:null},$scope.deleteFile=function(file){var idx=$scope.storedCredential.files.indexOf(file);FileService.deleteFile(file).then(function(){$scope.storedCredential.files.splice(idx,1)})},$scope.fileLoaded=function(file){var key,_file={filename:file.name,size:file.size,mimetype:file.type,data:file.data};!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),FileService.uploadFile(_file,key).then(function(result){delete result.file_data,result.filename=EncryptService.decryptString(result.filename,key),$scope.storedCredential.files.push(result)}),$scope.$digest()},$scope.fileLoadError=function(error){console.log($translate.instant("error.loading.file"),error)},$scope.selected_file="",$scope.fileprogress=[],$scope.fileSelectProgress=function(progress){progress&&($scope.fileprogress=progress,$scope.$digest())},$scope.renewIntervalValue=0,$scope.renewIntervalModifier="0",$scope.updateInterval=function(renewIntervalValue,renewIntervalModifier){var value=parseInt(renewIntervalValue),modifier=parseInt(renewIntervalModifier);value&&modifier&&($scope.storedCredential.renew_interval=value*modifier)},$scope.parseQR=function(QRCode){if(!QRCode)return void NotificationService.showNotification($translate.instant("invalid.qr"),5e3);var uri=new URL(QRCode.qrData),type=uri.href.indexOf("totp/")!==-1?"totp":"hotp",label=uri.pathname.replace("//"+type+"/","");$scope.storedCredential.otp={type:type,label:decodeURIComponent(label),qr_uri:QRCode,issuer:uri.searchParams.get("issuer"),secret:uri.searchParams.get("secret")},$scope.$digest()},$scope.saving=!1,$scope.saveCredential=function(){if($scope.saving=!0,$scope.new_custom_field.label&&$scope.new_custom_field.value&&$scope.storedCredential.custom_fields.push(angular.copy($scope.new_custom_field)),$scope.storedCredential.password!==$scope.storedCredential.password_repeat)return $scope.saving=!1,void NotificationService.showNotification($translate.instant("password.do.not.match"),5e3);if(delete $scope.storedCredential.password_repeat,$scope.storedCredential.credential_id){var key,_credential;!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),_credential=key?ShareService.encryptSharedCredential($scope.storedCredential,key):angular.copy($scope.storedCredential),delete _credential.shared_key;var _useKey=null!=key,regex=/(<([^>]+)>)/gi;_credential.description&&""!==_credential.description&&(_credential.description=_credential.description.replace(regex,"")),CredentialService.updateCredential(_credential,_useKey).then(function(updated_cred){$scope.saving=!1,SettingsService.setSetting("edit_credential",null),$location.path("/vault/"+$routeParams.vault_id),NotificationService.showNotification($translate.instant("credential.updated"),5e3),$scope.updateExistingListWithCredential(updated_cred)})}else $scope.storedCredential.vault_id=$scope.active_vault.vault_id,CredentialService.createCredential($scope.storedCredential).then(function(new_cred){$scope.saving=!1,$location.path("/vault/"+$routeParams.vault_id),NotificationService.showNotification($translate.instant("credential.created"),5e3),$scope.updateExistingListWithCredential(new_cred)});$scope.refreshListWithSaved()},$scope.refreshListWithSaved=function(){for(var current_vault=$rootScope.vaultCache[$scope.active_vault.guid],cv_credentials=current_vault.credentials,i=0;i<cv_credentials.length;i++)cv_credentials[i].credential_id===$scope.storedCredential.credential_id&&(cv_credentials[i]=$scope.storedCredential);current_vault.credentials=cv_credentials,$rootScope.vaultCache[$scope.active_vault.guid]=current_vault},$scope.updateExistingListWithCredential=function(credential){try{if(credential.shared_key){var enc_key=EncryptService.decryptString(credential.shared_key);credential=ShareService.decryptSharedCredential(credential,enc_key)}else credential=CredentialService.decryptCredential(credential);credential.tags_raw=credential.tags;for(var found=!1,credList=$rootScope.vaultCache[$scope.active_vault.guid].credentials,i=0;i<credList.length;i++)credList[i].credential_id===credential.credential_id&&($rootScope.vaultCache[$scope.active_vault.guid].credentials[i]=credential,found=!0);found||$rootScope.vaultCache[$scope.active_vault.guid].credentials.push(credential),$rootScope.$broadcast("push_decrypted_credential_to_list",credential)}catch(e){NotificationService.showNotification($translate.instant("error.decrypt"),5e3),console.log(e)}},$scope.cancel=function(){$location.path("/vault/"+$routeParams.vault_id)}}])}(),function(){angular.module("passmanApp").controller("ExportCtrl",["$scope","$window","CredentialService","VaultService","FileService","EncryptService","$translate",function($scope,$window,CredentialService,VaultService,FileService,EncryptService,$translate){
+$scope.available_exporters=[],$scope.active_vault=VaultService.getActiveVault(),$scope.confirm_key="",$scope.$watch(function(){return $window.PassmanExporter},function(exporters){exporters=Object.keys(angular.copy(exporters));for(var i=0;i<exporters.length;i++){var exporter=exporters[i];$window.PassmanExporter[exporter].hasOwnProperty("info")&&$scope.available_exporters.push($window.PassmanExporter[exporter].info)}},!0),$scope.log=[],$scope.setExporter=function(exporter){exporter=JSON.parse(exporter),$scope.selectedExporter=exporter};var _log=function(str){$scope.log.push(str)};$scope.startExport=function(){if($scope.error=!1,VaultService.getActiveVault().vaultKey!==$scope.confirm_key){var msg=$translate.instant("invalid.vault.key");return $scope.error=msg,void _log(msg)}_log($translate.instant("export.starting"));var _credentials=[];VaultService.getVault(VaultService.getActiveVault()).then(function(vault){if(_log($translate.instant("export.decrypt")),vault.hasOwnProperty("credentials")&&vault.credentials.length>0){for(var i=0;i<vault.credentials.length;i++){var _credential=angular.copy(vault.credentials[i]);if(0===_credential.hidden){var key=CredentialService.getSharedKeyFromCredential(_credential);_credential=CredentialService.decryptCredential(_credential,key),_credential.vault_key=key,_credentials.push(_credential)}}$window.PassmanExporter[$scope.selectedExporter.id].export(_credentials,FileService,EncryptService).then(function(){_log($translate.instant("done"))})}})}}])}(),function(){angular.module("passmanApp").controller("GenericCsvImportCtrl",["$scope","CredentialService","$translate",function($scope,CredentialService,$translate){$scope.hello="world",$scope.credentialProperties=[{label:"Label",prop:"label",matching:["label","title","name"]},{label:"Username",prop:"username",matching:["username","user","login","login name"]},{label:"Password",prop:"password",matching:["password","pass","pw"]},{label:"TOTP Secret",prop:"otp",matching:["totp"]},{label:"Custom field",prop:"custom_field"},{label:"Notes",prop:"description",matching:["notes","description","comments"]},{label:"Email",prop:"email",matching:["email","mail"]},{label:"URL",prop:"url",matching:["website","url","fulladdress","site","web site"]},{label:"Tags",prop:"tags"},{label:"Ignored",prop:null}];var tagMapper=function(t){return{text:t}},rowToCredential=function(row){for(var _credential=PassmanImporter.newCredential(),k=0;k<$scope.import_fields.length;k++){var field=$scope.import_fields[k];if(field)if("otp"===field)_credential.otp.secret=row[k];else if("custom_field"===field){var key=$scope.matched?$scope.parsed_csv[0][k]:"Custom field "+k;_credential.custom_fields.push({label:key,value:row[k],secret:0})}else if("tags"===field){if(row[k]){var tags=row[k].split(",");_credential.tags=tags.map(tagMapper)}}else _credential[field]=row[k]}return _credential};$scope.inspectCredential=function(row){$scope.inspected_credential=rowToCredential(row)},$scope.csvLoaded=function(file){$scope.import_fields=[],$scope.inspected_credential=!1,$scope.matched=!1,$scope.skipFirstRow=!1;var file_data=file.data.split(",");file_data=decodeURIComponent(escape(window.atob(file_data[1]))),Papa.parse(file_data,{complete:function(results){if(results.data){for(var i=0;i<results.data[0].length;i++){var propName=results.data[0][i];$scope.import_fields[i]=null;for(var p=0;p<$scope.credentialProperties.length;p++){var credentialProperty=$scope.credentialProperties[p];credentialProperty.matching&&credentialProperty.matching.indexOf(propName.toLowerCase())!==-1&&($scope.import_fields[i]=credentialProperty.prop,$scope.matched=!0)}}$scope.matched&&$scope.inspectCredential(results.data[1]),$scope.parsed_csv=results.data,$scope.$apply()}}})};var addCredential=function(index){function handleState(index){$scope.parsed_csv[index+1]?($scope.import_progress={progress:index/$scope.parsed_csv.length*100,loaded:index,total:$scope.parsed_csv.length},addCredential(index+1)):($scope.import_progress={progress:100,loaded:$scope.parsed_csv.length,total:$scope.parsed_csv.length},$scope.log.push($translate.instant("done")),$scope.importing=!1)}var _credential=rowToCredential($scope.parsed_csv[index]);return _credential.vault_id=$scope.active_vault.vault_id,_credential.label?($scope.log.push($translate.instant("import.adding",{credential:_credential.label})),void CredentialService.createCredential(_credential).then(function(result){result.credential_id&&($scope.log.push($translate.instant("import.added",{credential:_credential.label})),handleState(index))})):($scope.log.push($translate.instant("import.skipping",{line:index})),void handleState(index))};$scope.importing=!1,$scope.startCSVImport=function(){$scope.importing=!0,$scope.log=[];var start=$scope.skipFirstRow?1:0;addCredential(start)},$scope.updateExample=function(){var start=$scope.skipFirstRow?1:0;$scope.inspectCredential($scope.parsed_csv[start])}}])}(),function(){angular.module("passmanApp").controller("ImportCtrl",["$scope","$window","CredentialService","VaultService","$translate",function($scope,$window,CredentialService,VaultService,$translate){$scope.available_importers=[],$scope.active_vault=VaultService.getActiveVault(),$scope.$watch(function(){return $window.PassmanImporter},function(importers){for(var key in importers){var importer=importers[key];importer.hasOwnProperty("info")&&$scope.available_importers.push(importer.info)}},!0),$scope.log=[],$scope.setImporter=function(importer){importer=JSON.parse(importer),$scope.selectedImporter=importer};var file_data,_log=function(str){$scope.log.push(str)};$scope.fileLoaded=function(file){file_data=file.data.split(","),file_data=decodeURIComponent(escape(window.atob(file_data[1]))),_log($translate.instant("import.file.read")),$scope.$digest()},$scope.fileLoadError=function(file){console.error($translate.instant("error.loading.file"),file)},$scope.fileSelectProgress=function(){};var parsed_data;$scope.import_progress={progress:0,loaded:0,total:0};var addCredential=function(parsed_data_index){if(parsed_data[parsed_data_index]){var _credential=parsed_data[parsed_data_index];if(!_credential.label)return void(parsed_data[parsed_data_index+1]&&(_log($translate.instant("import.no.label")),addCredential(parsed_data_index+1)));_log($translate.instant("import.adding",{credential:_credential.label})),_credential.vault_id=$scope.active_vault.vault_id,CredentialService.createCredential(_credential).then(function(result){result.credential_id&&(_log($translate.instant("import.added",{credential:_credential.label})),parsed_data[parsed_data_index+1]?($scope.import_progress={progress:parsed_data_index/parsed_data.length*100,loaded:parsed_data_index,total:parsed_data.length},addCredential(parsed_data_index+1)):($scope.import_progress={progress:100,loaded:parsed_data.length,total:parsed_data.length},_log($translate.instant("done"))))})}};$scope.file_read_progress={percent:0,loaded:0,total:0},$scope.startImport=function(){$scope.import_progress=0,$scope.file_read_percent=0,file_data&&$window.PassmanImporter[$scope.selectedImporter.id].readFile(file_data).then(function(parseddata){parsed_data=parseddata,$scope.file_read_progress={percent:100,loaded:parsed_data.length,total:parsed_data.length};var msg=$translate.instant("import.loaded").replace("{{num}}",parsed_data.length);_log(msg),parsed_data.length>0&&addCredential(0)}).progress(function(progress){$scope.file_read_progress=progress,$scope.$digest()})}}])}(),function(){angular.module("passmanApp").controller("MainCtrl",["$scope","$rootScope","$location","SettingsService","$window","$interval","$filter",function($scope,$rootScope,$location,SettingsService,$window,$interval,$filter){$scope.selectedVault=!1,$scope.http_warning_hidden=!0,"http"===$location.$$protocol&&"localhost"!==$location.$$host&&"127.0.0.1"!==$location.$host&&($scope.using_http=!0,$scope.http_warning_hidden=!1),$scope.removeHiddenStyles=function(){document.getElementById("warning_bar").classList.remove("template-hidden")},$rootScope.$on("settings_loaded",function(){SettingsService.isEnabled("disable_contextmenu")&&document.addEventListener("contextmenu",function(event){event.preventDefault()}),SettingsService.isEnabled("https_check")&&($scope.http_warning_hidden=!0),SettingsService.isEnabled("disable_debugger")&&!function a(){try{!function b(i){1===(""+i/i).length&&i%20!==0||function(){}.constructor("debugger")(),b(++i)}(0)}catch(e){setTimeout(a,5e3)}}()}),$rootScope.setHttpWarning=function(state){$scope.http_warning_hidden=state},$rootScope.$on("app_menu",function(evt,shown){$scope.app_sidebar=shown}),$rootScope.$on("logout",function(){$scope.selectedVault=!1});var tickSessionTimer=function(){if($scope.session_time_left){$scope.session_time_left--;var session_time_left_formatted=$filter("toHHMMSS")($scope.session_time_left);$scope.translationData={session_time:session_time_left_formatted},$rootScope.$broadcast("logout_timer_tick_tack",$scope.session_time_left),0===$scope.session_time_left&&$window.location.reload()}};$scope.session_time_left=!1,$scope.$on("logout_timer_set",function(evt,timer){$scope.session_time_left=timer,$scope.translationData={session_time:timer},$interval(tickSessionTimer,1e3)})}])}(),function(){angular.module("passmanApp").controller("MenuCtrl",["$scope","VaultService","$location","$rootScope","TagService","SettingsService","$translate",function($scope,VaultService,$location,$rootScope,TagService,SettingsService,$translate){$rootScope.logout=function(){$rootScope.override_default_vault=!0,SettingsService.setSetting("defaultVaultPass",!1),TagService.resetTags(),$rootScope.$broadcast("logout"),$location.path("/")},$scope.removeHiddenStyles=function(){document.getElementById("app-navigation").classList.remove("template-hidden")},$scope.selectedTags=[],$scope.getTags=function($query){return TagService.searchTag($query)},$scope.$watch(function(){return VaultService.getActiveVault()},function(vault){$scope.active_vault=vault}),$scope.filtered_tags=[],$rootScope.$on("limit_tags_in_list",function(evt,tags){$scope.filtered_tags=[];for(var i=0;i<tags.length;i++){for(var tag={text:tags[i]},found=!1,x=0;x<$scope.selectedTags.length;x++)$scope.selectedTags[x].text===tag.text&&(found=!0);found===!1&&$scope.filtered_tags.push(tag)}}),$scope.$watch("selectedTags",function(){$rootScope.$broadcast("selected_tags_updated",$scope.selectedTags)},!0),$scope.tagSelected=function(tag){for(var i=0;i<$scope.selectedTags.length;i++)if($scope.selectedTags[i].text===tag.text)return!0;return!1},$scope.removeTagFromSelected=function(tag){for(var where=-1,i=0;i<$scope.selectedTags.length;i++)$scope.selectedTags[i].text===tag.text&&(where=i);$scope.selectedTags.splice(where,1)},$scope.clearForm=function(){document.getElementById("tagsearch").value=""},$scope.tagClickedString=function(tagtext){var tag=[];tag.text=tagtext,$scope.tagClicked(tag)},$scope.tagClicked=function(tag){$scope.tagSelected(tag)?$scope.removeTagFromSelected(tag):$scope.selectedTags.push(tag)};var native_search=document.getElementById("searchbox");null!==native_search&&(native_search.nextElementSibling.addEventListener("click",function(e){$scope.$apply(function(){$rootScope.$broadcast("nc_searchbox","")})}),native_search.classList.remove("hidden"),native_search.addEventListener("keypress",function(e){13===e.keyCode&&e.preventDefault()}),native_search.addEventListener("keyup",function(e){$scope.$apply(function(){$rootScope.$broadcast("nc_searchbox",native_search.value)})})),$scope.clickedNavigationItem="all",$scope.filterCredentialBySpecial=function(string){$scope.clickedNavigationItem=string,"nav_trashbin"!==string&&($scope.delete_time=0,$rootScope.$broadcast("set_delete_time",$scope.delete_time)),$scope.selectedTags=[],$rootScope.$broadcast("filterSpecial",string),$scope.settingsShown=!1},$scope.collapsedDefaultValue=!0,$scope.tagCollapsibleOpen=VaultService.getVaultSetting("vaultTagCollapsedState",$scope.collapsedDefaultValue),$scope.tagCollapsibleClicked=function(){VaultService.getVaultSetting("vaultTagCollapsedState",$scope.collapsedDefaultValue)===!0?VaultService.setVaultSetting("vaultTagCollapsedState",!1):VaultService.setVaultSetting("vaultTagCollapsedState",!0)},$scope.tagCollapsibleState=function(){return VaultService.getVaultSetting("vaultTagCollapsedState",$scope.collapsedDefaultValue)?"":"open"},$scope.initPlaceholder=function(){$translate.onReady().then(function(){var string=$translate.instant("navigation.advanced.filter");document.getElementById("tags-input-outer").setAttribute("placeholder",string),document.getElementById("tags-input-outer").firstChild.firstChild.childNodes[1].setAttribute("placeholder",string)})},$scope.legacyNavbarDefault=!0,$scope.legacyNavbarAlreadyInitialized=!1,"undefined"==typeof $scope.legacyNavbar&&($scope.legacyNavbar=$scope.legacyNavbarDefault),$scope.$watch("legacyNavbar",function(newValue,oldValue){VaultService.setVaultSetting("vaultNavBarLegacy",newValue)}),$scope.initializeNavbar=function(){$scope.legacyNavbarAlreadyInitialized||($scope.legacyNavbar=VaultService.getVaultSetting("vaultNavBarLegacy",$scope.legacyNavbarDefault),$scope.legacyNavbarAlreadyInitialized=!0)},$rootScope.$on("credentials_loaded",function(){$rootScope.$broadcast("selected_tags_updated",$scope.selectedTags),$scope.initializeNavbar()}),$scope.available_tags=TagService.getTags(),$scope.$watch(function(){return 0===$scope.selectedTags.length?TagService.getTags():TagService.getTags()},function(tags){$scope.available_tags=TagService.getTags()},!0),$scope.toggleDeleteTime=function(){$scope.delete_time>0?$scope.delete_time=0:($scope.delete_time=1,this.filterCredentialBySpecial("nav_trashbin")),$rootScope.$broadcast("set_delete_time",$scope.delete_time)}}])}(),function(){angular.module("passmanApp").controller("PublicSharedCredential",["$scope","ShareService","$window","EncryptService","NotificationService","$translate",function($scope,ShareService,$window,EncryptService,NotificationService,$translate){var _key;$scope.loading=!1,$scope.loadSharedCredential=function(){$scope.loading=!0;var data=window.atob($window.location.hash.replace("#","")).split("<::>"),guid=data[0];_key=data[1],ShareService.getPublicSharedCredential(guid).then(function(sharedCredential){$scope.loading=!1,200===sharedCredential.status?$scope.shared_credential=ShareService.decryptSharedCredential(sharedCredential.data.credential_data,_key):$scope.expired=!0})},$scope.downloadFile=function(credential,file){ShareService.downloadSharedFile(credential,file).then(function(result){if(!result.hasOwnProperty("file_data"))return void NotificationService.showNotification($translate.instant("error.loading.file.perm"),5e3);var file_data=EncryptService.decryptString(result.file_data,_key);download(file_data,escapeHTML(file.filename),file.mimetype)})}}])}(),function(){angular.module("passmanApp").controller("RevisionCtrl",["$scope","SettingsService","VaultService","CredentialService","$location","$routeParams","$rootScope","NotificationService","$filter","ShareService","EncryptService","$translate",function($scope,SettingsService,VaultService,CredentialService,$location,$routeParams,$rootScope,NotificationService,$filter,ShareService,EncryptService,$translate){if($scope.active_vault=VaultService.getActiveVault(),SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=SettingsService.getSetting("defaultVaultPass"),VaultService.setActiveVault(_vault),VaultService.getVault(_vault).then(function(vault){vault.vaultKey=SettingsService.getSetting("defaultVaultPass"),VaultService.setActiveVault(vault),$scope.active_vault=vault,$scope.$parent.selectedVault=!0})}}else $scope.active_vault||$location.path("/");$scope.active_vault&&($scope.$parent.selectedVault=!0);var storedCredential=SettingsService.getSetting("revision_credential"),getRevisions=function(){CredentialService.getRevisions($scope.storedCredential.guid).then(function(revisions){$scope.revisions=revisions})};storedCredential?($scope.storedCredential=CredentialService.decryptCredential(angular.copy(storedCredential)),getRevisions()):CredentialService.getCredential($routeParams.credential_id).then(function(result){$scope.storedCredential=CredentialService.decryptCredential(angular.copy(result)),getRevisions()}),$scope.selectRevision=function(revision){var key;$scope.selectedRevision=angular.copy(revision),!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),key?$scope.selectedRevision.credential_data=ShareService.decryptSharedCredential(angular.copy(revision.credential_data),key):$scope.selectedRevision.credential_data=CredentialService.decryptCredential(angular.copy(revision.credential_data)),$rootScope.$emit("app_menu",!0)},$scope.closeSelected=function(){$rootScope.$emit("app_menu",!1),$scope.selectedRevision=!1},$scope.deleteRevision=function(revision){CredentialService.deleteRevision($scope.storedCredential.guid,revision.revision_id).then(function(){for(var i=0;i<$scope.revisions.length;i++)if($scope.revisions[i].revision_id===revision.revision_id){$scope.revisions.splice(i,1),NotificationService.showNotification($translate.instant("revision.deleted"),5e3);break}})},$scope.restoreRevision=function(revision){var key,_revision=angular.copy(revision),_credential=_revision.credential_data;!$scope.storedCredential.hasOwnProperty("acl")&&$scope.storedCredential.hasOwnProperty("shared_key")&&$scope.storedCredential.shared_key&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key))),$scope.storedCredential.hasOwnProperty("acl")&&(key=EncryptService.decryptString(angular.copy($scope.storedCredential.acl.shared_key))),key&&(_credential=ShareService.encryptSharedCredential(_credential,key)),delete _credential.shared_key,_credential.revision_created=$filter("date")(1e3*_revision.created,"dd-MM-yyyy @ HH:mm:ss"),CredentialService.updateCredential(_credential,key).then(function(restored_cred){SettingsService.setSetting("revision_credential",null),$rootScope.$emit("app_menu",!1),$location.path("/vault/"+$routeParams.vault_id),NotificationService.showNotification($translate.instant("revision.restored"),5e3),$scope.updateExistingListWithCredential(restored_cred)})},$scope.updateExistingListWithCredential=function(credential){try{if(credential.shared_key){var enc_key=EncryptService.decryptString(credential.shared_key);credential=ShareService.decryptSharedCredential(credential,enc_key)}else credential=CredentialService.decryptCredential(credential);credential.tags_raw=credential.tags;for(var found=!1,credList=$rootScope.vaultCache[$scope.active_vault.guid].credentials,i=0;i<credList.length;i++)credList[i].credential_id===credential.credential_id&&($rootScope.vaultCache[$scope.active_vault.guid].credentials[i]=credential,found=!0);found||$rootScope.vaultCache[$scope.active_vault.guid].credentials.push(credential),$rootScope.$broadcast("push_decrypted_credential_to_list",credential)}catch(e){NotificationService.showNotification($translate.instant("error.decrypt"),5e3),console.log(e)}},$scope.cancelRevision=function(){$location.path("/vault/"+$routeParams.vault_id),$scope.storedCredential=null,SettingsService.setSetting("revision_credential",null)}}])}(),function(){angular.module("passmanApp").controller("SettingsCtrl",["$scope","$rootScope","SettingsService","VaultService","CredentialService","$location","$routeParams","$http","EncryptService","NotificationService","$sce","$translate",function($scope,$rootScope,SettingsService,VaultService,CredentialService,$location,$routeParams,$http,EncryptService,NotificationService,$sce,$translate){if($scope.vault_settings={},$scope.new_vault_name="",$scope.showGenericImport=!1,$scope.active_vault=VaultService.getActiveVault(),SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=SettingsService.getSetting("defaultVaultPass"),VaultService.setActiveVault(_vault),$scope.active_vault=_vault}}else if(!$scope.active_vault)return void $location.path("/");VaultService.getVault($scope.active_vault).then(function(vault){vault.vaultKey=VaultService.getActiveVault().vaultKey,delete vault.credentials,VaultService.setActiveVault(vault),$scope.vault_settings=vault.vault_settings,$scope.vault_settings.hasOwnProperty("pwSettings")||($scope.vault_settings.pwSettings={length:12,useUppercase:!0,useLowercase:!0,useDigits:!0,useSpecialChars:!0,minimumDigitCount:3,avoidAmbiguousCharacters:!1,requireEveryCharType:!0,generateOnCreate:!0})});var key_strengths=["password.poor","password.poor","password.weak","password.good","password.strong"];$scope.minimal_value_key_strength=SettingsService.getSetting("vault_key_strength"),$translate(key_strengths[SettingsService.getSetting("vault_key_strength")]).then(function(translation){$scope.required_score={strength:translation}});var btn_txt=$translate.instant("bookmarklet.text"),http=location.protocol,slashes=http.concat("//"),host=slashes.concat(window.location.hostname),complete=host+location.pathname;$scope.bookmarklet=$sce.trustAsHtml('<a class="button" href="javascript:(function(){var a=window,b=document,c=encodeURIComponent,e=c(document.title),d=a.open(\''+complete+"bookmarklet?url='+c(b.location)+'&title='+e,'bkmk_popup','left='+((a.screenX||a.screenLeft)+10)+',top='+((a.screenY||a.screenTop)+10)+',height=750px,width=475px,resizable=0,alwaysRaised=1');a.setTimeout(function(){d.focus()},300);})();\">"+btn_txt+"</a>"),$scope.saveVaultSettings=function(){var _vault=$scope.active_vault;_vault.name=$scope.new_vault_name,_vault.vault_settings=angular.copy($scope.vault_settings),VaultService.updateVault(_vault).then(function(){$scope.active_vault.name=angular.copy(_vault.name),NotificationService.showNotification($translate.instant("settings.saved"),5e3)})},$scope.tabs=[{title:$translate.instant("settings.general"),url:"views/partials/forms/settings/general_settings.html"},{title:$translate.instant("settings.audit"),url:"views/partials/forms/settings/tool.html"},{title:$translate.instant("settings.password"),url:"views/partials/forms/settings/password_settings.html"},{title:$translate.instant("settings.import"),url:"views/partials/forms/settings/import.html"},{title:$translate.instant("settings.export"),url:"views/partials/forms/settings/export.html"},{title:$translate.instant("settings.sharing"),url:"views/partials/forms/settings/sharing.html"}],$scope.currentTab=$scope.tabs[0],$scope.onClickTab=function(tab){$scope.currentTab=tab},$scope.isActiveTab=function(tab){return tab.url===$scope.currentTab.url};var getPassmanVersion=function(){var url=OC.generateUrl("apps/passman/api/internal/version");$http.get(url).then(function(result){$scope.passman_version=result.data.version})};getPassmanVersion(),$scope.$watch(function(){return VaultService.getActiveVault()},function(vault){vault&&($scope.active_vault=vault)}),$rootScope.$on("logout",function(){$scope.selectedVault=!1});var getCurrentVaultCredentials=function(callback){VaultService.getVault($scope.active_vault).then(callback)};$scope.startScan=function(minStrength){getCurrentVaultCredentials(function(vault){for(var results=[],i=0;i<vault.credentials.length;i++){var c=angular.copy(vault.credentials[i]);if(c.password&&0===c.hidden)try{if(c=CredentialService.decryptCredential(c),c.password){var zxcvbn_result=zxcvbn(c.password);zxcvbn_result.score<=minStrength&&results.push({guid:c.guid,label:c.label,password:c.password,password_zxcvbn_result:zxcvbn_result})}}catch(e){console.warn(e)}}$scope.scan_result=results})},$scope.cur_state={},$scope.$on("$locationChangeStart",function(event){$scope.change_pw&&$scope.change_pw.total>0&&$scope.change_pw.done<$scope.change_pw.total&&(confirm($translate.instant("changepw.navigate.away.warning"))||event.preventDefault())}),$scope.changeVaultPassword=function(oldVaultPass,newVaultPass,newVaultPass2){return $scope.error="",oldVaultPass!==VaultService.getActiveVault().vaultKey?void($scope.error=$translate.instant("incorrect.password")):newVaultPass!==newVaultPass2?void($scope.error=$translate.instant("password.no.match")):(SettingsService.setSetting("defaultVault",null),SettingsService.setSetting("defaultVaultPass",null),void VaultService.getVault($scope.active_vault).then(function(vault){jQuery("input").attr("disabled",!0),jQuery("button").attr("disabled",!0);var _selected_credentials=angular.copy(vault.credentials);$scope.change_pw={percent:0,done:0,total:_selected_credentials.length};var changeCredential=function(index,oldVaultPass,newVaultPass){var usedKey=oldVaultPass;_selected_credentials[index].hasOwnProperty("shared_key")&&_selected_credentials[index].shared_key&&(usedKey=EncryptService.decryptString(angular.copy(_selected_credentials[index].shared_key),oldVaultPass)),CredentialService.reencryptCredential(_selected_credentials[index].guid,usedKey,newVaultPass).progress(function(data){$scope.cur_state=data}).then(function(){var percent=index/_selected_credentials.length*100;$scope.change_pw={percent:percent,done:index+1,total:_selected_credentials.length},index<_selected_credentials.length-1?changeCredential(index+1,oldVaultPass,newVaultPass):(vault.private_sharing_key=EncryptService.decryptString(angular.copy(vault.private_sharing_key),oldVaultPass),vault.private_sharing_key=EncryptService.encryptString(vault.private_sharing_key,newVaultPass),VaultService.updateSharingKeys(vault).then(function(){$rootScope.$broadcast("logout"),NotificationService.showNotification($translate.instant("login.new.pass"),5e3)}))})};changeCredential(0,VaultService.getActiveVault().vaultKey,newVaultPass)}))},$scope.confirm_vault_delete=!1,$scope.delete_vault_password="",$scope.delete_vault=function(){$scope.confirm_vault_delete&&$scope.delete_vault_password===VaultService.getActiveVault().vaultKey&&getCurrentVaultCredentials(function(vault){var credentials=vault.credentials;$scope.remove_pw={percent:0,done:0,total:vault.credentials.length};var deleteCredential=function(index){$scope.translationData={password:credentials[index].label},CredentialService.destroyCredential(credentials[index].guid).then(function(){var percent=index/vault.credentials.length*100;return $scope.remove_pw={percent:percent,done:index,total:vault.credentials.length},index===credentials.length-1?void VaultService.deleteVault(vault).then(function(){SettingsService.setSetting("defaultVaultPass",!1),SettingsService.setSetting("defaultVault",null),$rootScope.$broadcast("logout"),$location.path("/")}):void deleteCredential(index+1)})};deleteCredential(0)})},$rootScope.$on("logout",function(){$scope.active_vault=null,VaultService.setActiveVault(null),$location.path("/")}),$scope.cancel=function(){$location.path("/vault/"+$routeParams.vault_id)}}])}(),function(){angular.module("passmanApp").controller("ShareCtrl",["$scope","VaultService","CredentialService","SettingsService","$location","$routeParams","ShareService","NotificationService","SharingACL","EncryptService","$translate","$rootScope",function($scope,VaultService,CredentialService,SettingsService,$location,$routeParams,ShareService,NotificationService,SharingACL,EncryptService,$translate,$rootScope){$scope.active_vault=VaultService.getActiveVault(),$scope.tabs=[{title:$translate.instant("share.u.g"),url:"views/partials/forms/share_credential/basics.html"},{title:$translate.instant("share.link"),url:"views/partials/forms/share_credential/link_sharing.html",color:"green"}],$scope.currentTab=$scope.tabs[0];var settingsLoaded=function(){var settings=SettingsService.getSettings();0!==settings.user_sharing_enabled&&"0"!==settings.user_sharing_enabled||$scope.tabs.splice(0,1),0!==settings.link_sharing_enabled&&"0"!==settings.link_sharing_enabled||$scope.tabs.splice(1,1),$scope.tabs.length>0&&($scope.currentTab=$scope.tabs[0])};if(SettingsService.getSetting("settings_loaded")?settingsLoaded():$rootScope.$on("settings_loaded",function(){settingsLoaded()}),$scope.onClickTab=function(tab){$scope.currentTab=tab},$scope.isActiveTab=function(tab){return tab.url===$scope.currentTab.url},SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){if(SettingsService.getSetting("defaultVault")&&SettingsService.getSetting("defaultVaultPass")){var _vault=angular.copy(SettingsService.getSetting("defaultVault"));_vault.vaultKey=angular.copy(SettingsService.getSetting("defaultVaultPass")),VaultService.setActiveVault(_vault),$scope.active_vault=_vault}}else $scope.active_vault||$location.path("/");var storedCredential=SettingsService.getSetting("share_credential");storedCredential?$scope.storedCredential=CredentialService.decryptCredential(angular.copy(storedCredential)):$location.path("/vault/"+$routeParams.vault_id),$scope.active_vault&&($scope.$parent.selectedVault=!0),$scope.cancel=function(){SettingsService.setSetting("share_credential",null),$location.path("/vault/"+$routeParams.vault_id)},$scope.default_permissions=new SharingACL(0),$scope.default_permissions.addPermission($scope.default_permissions.permissions.READ|$scope.default_permissions.permissions.WRITE|$scope.default_permissions.permissions.FILES);var link_acl=angular.copy($scope.default_permissions);link_acl.removePermission($scope.default_permissions.permissions.WRITE);var oneMonthLater=new Date;oneMonthLater.setMonth(oneMonthLater.getMonth()+1),$scope.share_settings={linkSharing:{enabled:!1,settings:{expire_time:oneMonthLater,expire_views:5,acl:link_acl}},credentialSharedWithUserAndGroup:[],cypher_progress:{done:0,total:0},upload_progress:{done:0,total:0}};var getAcl=function(){ShareService.getSharedCredentialACL($scope.storedCredential).then(function(aclList){for(var _list=[],enc_key=!!$scope.storedCredential.shared_key&&EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key)),i=0;i<aclList.length;i++){var acl=aclList[i];if(null===acl.user_id){if($scope.share_settings.linkSharing={enabled:!0,settings:{expire_time:new Date(1e3*acl.expire),expire_views:acl.expire_views,acl:new SharingACL(acl.permissions)}},enc_key){var hash=window.btoa($scope.storedCredential.guid+"<::>"+enc_key);$scope.share_link=getShareLink(hash)}}else{var obj={userId:acl.user_id,displayName:acl.user_id,type:"user",acl:new SharingACL(acl.permissions),acl_id:acl.acl_id,pending:acl.pending,credential_guid:acl.item_guid,created:acl.created};_list.push(obj)}}$scope.share_settings.credentialSharedWithUserAndGroup=_list})};getAcl();new SharingACL(0);$scope.$watch("share_settings.upload_progress.done",function(){$scope.share_settings.upload_progress.done===$scope.share_settings.upload_progress.total&&$scope.share_settings.upload_progress.total>0&&getAcl()}),$scope.inputSharedWith=[],$scope.searchUsers=function($query){return ShareService.search($query)},$scope.hasPermission=function(acl,permission){return acl.hasPermission(permission)},$scope.setPermission=function(acl,permission){acl.togglePermission(permission)},$scope.shareWith=function(shareWith){if($scope.inputSharedWith=[],shareWith.length>0)for(var i=0;i<shareWith.length;i++){for(var obj={userId:shareWith[i].uid,displayName:shareWith[i].text,type:shareWith[i].type,acl:angular.copy($scope.default_permissions),pending:!0,credential_guid:$scope.storedCredential.guid},found=!1,z=0;z<$scope.share_settings.credentialSharedWithUserAndGroup.length;z++)shareWith[z]&&$scope.share_settings.credentialSharedWithUserAndGroup[z].userId===shareWith[z].uid&&(found=!0);found===!1&&$scope.share_settings.credentialSharedWithUserAndGroup.push(obj);
+}},$scope.unshareUser=function(user){ShareService.unshareCredentialFromUser($scope.storedCredential,user.userId).then(function(result){if(result.result===!0){var idx=$scope.share_settings.credentialSharedWithUserAndGroup.indexOf(user);$scope.share_settings.credentialSharedWithUserAndGroup.splice(idx,1)}})},$scope.unshareCredential=function(credential){var _credential=angular.copy(credential),old_key=EncryptService.decryptString(angular.copy(_credential.shared_key)),new_key=VaultService.getActiveVault().vaultKey;_credential.shared_key=null,_credential.unshare_action=!0,_credential.skip_revision=!0,CredentialService.reencryptCredential(_credential.guid,old_key,new_key,!0).then(function(data){getAcl();var c=data.cryptogram;c.shared_key=null,c.unshare_action=!0,c.skip_revision=!0,ShareService.unshareCredential(c),CredentialService.updateCredential(c,!0).then(function(){NotificationService.showNotification($translate.instant("credential.unshared"),4e3),$scope.sharing_complete=!0,$scope.storedCredential.shared_key=null,$scope.share_settings.credentialSharedWithUserAndGroup=[]})})},$scope.applyShareToUser=function(user,enc_key){ShareService.getVaultsByUser(user.userId).then(function(data){$scope.share_settings.cypher_progress.total+=data.length,user.vaults=data;var start=(new Date).getTime()/1e3;ShareService.cypherRSAStringWithPublicKeyBulkAsync(user.vaults,enc_key).progress(function(){$scope.share_settings.cypher_progress.done++,$scope.share_settings.cypher_progress.percent=$scope.share_settings.cypher_progress.done/$scope.share_settings.cypher_progress.total*100,$scope.$digest()}).then(function(result){$scope.share_settings.cypher_progress.times.push({time:(new Date).getTime()/1e3-start,user:data[0].user_id}),user.vaults=result,user.hasOwnProperty("acl_id")||$scope.uploadChanges(user),$scope.$digest()})})},$scope.$on("$locationChangeStart",function(event){$scope.sharing_complete||confirm($translate.instant("share.navigate.away.warning"))||event.preventDefault()});var getShareLink=function(hash){var port,defaultPort="http"===$location.$$protocol?80:443;return port=defaultPort!==$location.$$port?":"+$location.$$port:"",$location.$$protocol+"://"+$location.$$host+port+OC.generateUrl("apps/passman/share/public#")+hash};$scope.sharing_complete=!0,$scope.applyShare=function(){if($scope.sharing_complete=!1,$scope.share_settings.cypher_progress.percent=0,$scope.share_settings.cypher_progress.done=0,$scope.share_settings.cypher_progress.total=0,$scope.share_settings.cypher_progress.times=[],$scope.share_settings.cypher_progress.times_total=[],$scope.share_settings.upload_progress.done=0,$scope.share_settings.upload_progress.total=0,$scope.storedCredential.shared_key&&""!==$scope.storedCredential.shared_key&&null!==$scope.storedCredential.shared_key){var enc_key=EncryptService.decryptString(angular.copy($scope.storedCredential.shared_key));if($scope.share_settings.linkSharing.enabled){var expire_time=new Date(angular.copy($scope.share_settings.linkSharing.settings.expire_time)).getTime()/1e3,shareObj={item_id:$scope.storedCredential.credential_id,item_guid:$scope.storedCredential.guid,permissions:$scope.share_settings.linkSharing.settings.acl.getAccessLevel(),expire_timestamp:expire_time,expire_views:$scope.share_settings.linkSharing.settings.expire_views};ShareService.createPublicSharedCredential(shareObj).then(function(){var hash=window.btoa($scope.storedCredential.guid+"<::>"+enc_key);$scope.share_link=getShareLink(hash)})}for(var list=$scope.share_settings.credentialSharedWithUserAndGroup,i=0;i<list.length;i++){var iterator=i,target_user=list[i];if(target_user.hasOwnProperty("created")){var acl={user_id:target_user.userId,permission:target_user.acl.getAccessLevel()};ShareService.updateCredentialAcl($scope.storedCredential,acl)}else $scope.applyShareToUser(list[iterator],enc_key)}NotificationService.showNotification($translate.instant("saved"),4e3),$scope.sharing_complete=!0}else ShareService.generateSharedKey(20).then(function(key){var encryptedSharedCredential=angular.copy($scope.storedCredential),old_key=VaultService.getActiveVault().vaultKey;CredentialService.reencryptCredential(encryptedSharedCredential.guid,old_key,key).progress(function(){}).then(function(data){var _credential=data.cryptogram;_credential.set_share_key=!0,_credential.skip_revision=!0,_credential.shared_key=EncryptService.encryptString(key),CredentialService.updateCredential(_credential,!0).then(function(){$scope.storedCredential.shared_key=_credential.shared_key,NotificationService.showNotification($translate.instant("credential.shared"),4e3),$scope.sharing_complete=!0})});for(var list=$scope.share_settings.credentialSharedWithUserAndGroup,i=0;i<list.length;i++)"user"===list[i].type&&$scope.applyShareToUser(list[i],key);if($scope.share_settings.linkSharing.enabled){var expire_time=new Date(angular.copy($scope.share_settings.linkSharing.settings.expire_time)).getTime()/1e3,shareObj={item_id:$scope.storedCredential.credential_id,item_guid:$scope.storedCredential.guid,permissions:$scope.share_settings.linkSharing.settings.acl.getAccessLevel(),expire_timestamp:expire_time,expire_views:$scope.share_settings.linkSharing.settings.expire_views};ShareService.createPublicSharedCredential(shareObj).then(function(){var hash=window.btoa($scope.storedCredential.guid+"<::>"+key);$scope.share_link=getShareLink(hash)})}})},$scope.uploadChanges=function(user){$scope.share_settings.upload_progress.total++,user.accessLevel=angular.copy(user.acl.getAccessLevel()),ShareService.shareWithUser(storedCredential,user).then(function(){$scope.share_settings.upload_progress.done++,$scope.share_settings.upload_progress.percent=$scope.share_settings.upload_progress.done/$scope.share_settings.upload_progress.total*100})},$scope.calculate_total_time=function(){$scope.share_settings.cypher_progress.times=$scope.share_settings.cypher_progress.times||[];for(var total=0,i=0;i<$scope.share_settings.cypher_progress.times.length;i++)total+=$scope.share_settings.cypher_progress.times[i].time;return total}}])}(),function(){angular.module("passmanApp").controller("SharingSettingsCtrl",["$scope","VaultService","CredentialService","SettingsService","$location","$routeParams","ShareService","EncryptService",function($scope,VaultService,CredentialService,SettingsService,$location,$routeParams,ShareService,EncryptService){$scope.active_vault=VaultService.getActiveVault(),$scope.sharing_keys=angular.copy(ShareService.getSharingKeys()),$scope.progress=1,$scope.generating=!1,$scope.available_sizes=[{size:1024,name:1024},{size:2048,name:2048},{size:4096,name:4096}],$scope.setKeySize=function(size){for(var i=0;i<$scope.available_sizes.length;i++)if($scope.available_sizes[i].size===size)return void($scope.key_size=$scope.available_sizes[i])},$scope.setKeySize(2048),$scope.generateKeys=function(length){$scope.progress=1,$scope.generating=!0,ShareService.generateRSAKeys(length).progress(function(progress){$scope.progress=progress>0?2:1,$scope.$digest()}).then(function(kp){$scope.generating=!1;var pem=ShareService.rsaKeyPairToPEM(kp);$scope.active_vault.private_sharing_key=EncryptService.encryptString(pem.privateKey),$scope.active_vault.public_sharing_key=pem.publicKey,VaultService.updateSharingKeys($scope.active_vault).then(function(){$scope.sharing_keys=ShareService.getSharingKeys()})})},$scope.updateSharingKeys=function(){$scope.active_vault.private_sharing_key=EncryptService.encryptString(angular.copy($scope.sharing_keys.private_sharing_key)),$scope.active_vault.public_sharing_key=angular.copy($scope.sharing_keys.public_sharing_key),VaultService.updateSharingKeys($scope.active_vault).then(function(){$scope.sharing_keys=ShareService.getSharingKeys()})}}])}(),function(){angular.module("passmanApp").controller("VaultCtrl",["$scope","VaultService","SettingsService","CredentialService","$location","ShareService","EncryptService","$translate","$rootScope","$interval",function($scope,VaultService,SettingsService,CredentialService,$location,ShareService,EncryptService,$translate,$rootScope,$interval){VaultService.getVaults().then(function(vaults){if($scope.vaults=vaults,null!=SettingsService.getSetting("defaultVault"))for(var default_vault=SettingsService.getSetting("defaultVault"),i=0;i<vaults.length;i++){var vault=vaults[i];if(vault.guid===default_vault.guid){$scope.default_vault=!0,$rootScope.override_default_vault||($scope.list_selected_vault=vault,$rootScope.override_default_vault=!1),SettingsService.setSetting("defaultVault",vault),SettingsService.getSetting("defaultVaultPass")&&$location.path("/vault/"+vault.guid),$scope.vault_tries[vault.guid]={tries:0,timeout:0};break}}});var key_strengths=["password.poor","password.poor","password.weak","password.good","password.strong"];$scope.default_vault=!1,$scope.remember_vault_password=!1,$scope.auto_logout_timer=!1,$scope.logout_timer="0",$scope.list_selected_vault=!1,$scope.minimal_value_key_strength=3;var settingsLoaded=function(){$scope.minimal_value_key_strength=SettingsService.getSetting("vault_key_strength"),$translate(key_strengths[SettingsService.getSetting("vault_key_strength")]).then(function(translation){$scope.required_score={strength:translation}})};SettingsService.getSetting("settings_loaded")?settingsLoaded():$rootScope.$on("settings_loaded",function(){settingsLoaded()}),$scope.toggleDefaultVault=function(){$scope.default_vault=!$scope.default_vault,$scope.default_vault===!0?SettingsService.setSetting("defaultVault",$scope.list_selected_vault):SettingsService.setSetting("defaultVault",null)},$scope.toggleRememberPassword=function(){$scope.remember_vault_password=!$scope.remember_vault_password,$scope.remember_vault_password&&(SettingsService.setSetting("defaultVault",$scope.list_selected_vault),$scope.default_vault=!0),$scope.remember_vault_password!==!0&&SettingsService.setSetting("defaultVault",null)},$scope.toggleAutoLogout=function(){$scope.auto_logout_timer=!$scope.auto_logout_timer},$scope.clearState=function(){$scope.list_selected_vault=!1,$scope.creating_vault=!1,$scope.error=!1},$scope.selectVault=function(vault){$scope.list_selected_vault=vault,$scope.vault_tries[vault.guid]||($scope.vault_tries[vault.guid]={tries:0,timeout:0})},$scope.sharing_keys={},$scope.newVault=function(){$scope.creating_vault=!0;var key_size=1024;ShareService.generateRSAKeys(key_size).progress(function(progress){var p=progress>0?2:1,msg=$translate.instant("generating.sharing.keys");msg=msg.replace("%step",p),$scope.creating_keys=msg,$scope.$digest()}).then(function(kp){var pem=ShareService.rsaKeyPairToPEM(kp);$scope.creating_keys=!1,$scope.sharing_keys.private_sharing_key=pem.privateKey,$scope.sharing_keys.public_sharing_key=pem.publicKey,$scope.$digest()})},$scope.requestDeletion=function(vault){$location.path("/vault/"+vault.guid+"/request-deletion")};var _loginToVault=function(vault,vault_key){var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),delete _vault.credentials;var timer=parseInt($scope.logout_timer);$scope.auto_logout_timer&&timer>0&&$rootScope.$broadcast("logout_timer_set",60*timer),VaultService.setActiveVault(_vault),$location.path("/vault/"+vault.guid)};$scope.selectLogoutTimer=function(time){$scope.auto_logout_timer=!0,$scope.logout_timer=time};var tickLockTimer=function(guid){$scope.vault_tries[guid].timeout=$scope.vault_tries[guid].timeout-1,$scope.vault_tries[guid].timeout<=0&&($interval.cancel($scope.vault_tries[guid].timer),$scope.vault_tries[guid].timeout=0)};$scope.vault_tries={},$scope.vaultDecryptionKey="",$scope.loginToVault=function(vault,vault_key){$scope.error=!1;var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),VaultService.setActiveVault(_vault);try{EncryptService.decryptString(vault.challenge_password),$scope.remember_vault_password&&SettingsService.setSetting("defaultVaultPass",vault_key),_loginToVault(vault,vault_key)}catch(e){if($scope.error=$translate.instant("invalid.vault.key"),$scope.vault_tries[vault.guid].tries=$scope.vault_tries[vault.guid].tries+1,$scope.vault_tries[vault.guid].tries>=3){var duration=Math.pow(2,1/7)*Math.pow(15,4/7)*Math.pow(Math.pow(2,2/7)*Math.pow(15,1/7),$scope.vault_tries[vault.guid].tries);$scope.vault_tries[vault.guid].timeout=duration,$scope.vault_tries[vault.guid].hasOwnProperty("timer")&&$interval.cancel($scope.vault_tries[vault.guid].timer),$scope.vault_tries[vault.guid].timer=$interval(function(){tickLockTimer(vault.guid)},1e3)}}},$scope.createVault=function(vault_name,vault_key,vault_key2){return vault_key!==vault_key2?void($scope.error=$translate.instant("password.do.not.match")):void VaultService.createVault(vault_name).then(function(vault){$scope.vaults.push(vault);var _vault=angular.copy(vault);_vault.vaultKey=angular.copy(vault_key),VaultService.setActiveVault(_vault),SettingsService.setSetting("defaultVaultPass",null),SettingsService.setSetting("defaultVault",null);var test_credential=CredentialService.newCredential();test_credential.label="Test key for vault "+vault_name,test_credential.hidden=!0,test_credential.vault_id=vault.vault_id,test_credential.password="lorum ipsum",CredentialService.createCredential(test_credential).then(function(){_vault.public_sharing_key=angular.copy($scope.sharing_keys.public_sharing_key),_vault.private_sharing_key=EncryptService.encryptString(angular.copy($scope.sharing_keys.private_sharing_key)),VaultService.updateSharingKeys(_vault).then(function(){_loginToVault(vault,vault_key)})})})}}])}(),function(){angular.module("passmanApp").controller("RequestDeleteCtrl",["$scope","$location","$http","$routeParams","VaultService","NotificationService","$translate",function($scope,$location,$http,$routeParams,VaultService,NotificationService,$translate){$scope.reason="",VaultService.getVault({guid:$routeParams.vault_id}).then(function(vault){$scope.pending_deletion=vault.delete_request_pending}),$scope.requestDeletion=function(){var queryUrl=OC.generateUrl("apps/passman/admin/request-deletion/"+$routeParams.vault_id),params={reason:$scope.reason};$http.post(queryUrl,params).then(function(){NotificationService.showNotification($translate.instant("deletion.requested"),5e3),$location.path("#/")})},$scope.removeRequestDeletion=function(){var queryUrl=OC.generateUrl("apps/passman/admin/request-deletion/"+$routeParams.vault_id);$http.delete(queryUrl).then(function(){NotificationService.showNotification($translate.instant("deletion.removed"),5e3),$location.path("#/")})}}])}(),angular.module("templates-main",["views/credential_revisions.html","views/edit_credential.html","views/partials/credential_template.html","views/partials/forms/edit_credential/basics.html","views/partials/forms/edit_credential/custom_fields.html","views/partials/forms/edit_credential/files.html","views/partials/forms/edit_credential/otp.html","views/partials/forms/edit_credential/password.html","views/partials/forms/settings/export.html","views/partials/forms/settings/general_settings.html","views/partials/forms/settings/generic_csv_import.html","views/partials/forms/settings/import.html","views/partials/forms/settings/password_settings.html","views/partials/forms/settings/sharing.html","views/partials/forms/settings/tool.html","views/partials/forms/share_credential/basics.html","views/partials/forms/share_credential/link_sharing.html","views/partials/icon-picker.html","views/partials/password-meter.html","views/settings.html","views/share_credential.html","views/show_vault.html","views/vault_req_deletion.html","views/vaults.html"]),angular.module("views/credential_revisions.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/credential_revisions.html",'<div class="main_list" off-click-filter="\'.download-js-link, .sidebar-shown, #app-sidebar\'"><div id="passman-controls"><div class="actions creatable"><div class="breadcrumb"><div class="crumb svg ui-droppable"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg"><a ng-click="cancelRevision()">{{active_vault.name}}</a></div><div class="crumb svg last"><a ng-if="storedCredential.credential_id">{{ \'showing.revisions\' | translate}} "{{revision.credential_data.label}}"</a></div></div></div></div><table class="credential-table" ng-init="menuOpen = false;"><tr ng-repeat="revision in revisions | orderBy:\'-created\'" ng-click="selectRevision(revision)" ng-class="{\'selected\': selectedRevision.revision_id == revision.revision_id}"><td><span class="icon"><i class="fa fa-lock"></i></span> <span class="label">{{ \'revision.of\' | translate}} {{revision.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}} ({{revision.credential_data.label}}) <span ng-if="revision.edited_by">{{ \'revision.edited.by\' | translate}} {{revision.edited_by}}</span></span></td></tr><tr ng-show="revisions.length == 0"><td>{{ \'no.revisions\' | translate}}</td></tr></table></div><div id="app-sidebar" class="detailsView scroll-container app_sidebar" off-click="closeSelected()" ng-show="selectedRevision"><span class="close icon-close" ng-click="closeSelected()" alt="Close"></span> <b ng-show="selectedRevision">{{ \'revision.of\' | translate}} {{selectedRevision.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</b><div class="credential-data"><div class="row" ng-show="selectedRevision.credential_data.label"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'label\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.label"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.username"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'account\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.username"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.password"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'password\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.password" secret="\'true\'"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.otp.secret"><div class="col-xs-4 col-md-3 col-lg-3">{{\'otp\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span otp-generator secret="selectedRevision.credential_data.otp.secret"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.email"><div class="col-xs-4 col-md-3 col-lg-3">{{\'email\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.email"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.url"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'url\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.url"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.description"><div class="col-xs-4 col-md-3 col-lg-3">{{\'notes\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedRevision.credential_data.description_html"></span></div></div><div class="row" ng-show="selectedRevision.credential_data.files.length > 0"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'files\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><div ng-repeat="file in selectedRevision.credential_data.files" class="link" ng-click="downloadFile(selectedRevision.credential_data, file)">{{file.filename}} ({{file.size | bytes}})</div></div></div><div class="row" ng-repeat="field in selectedRevision.credential_data.custom_fields"><div class="col-xs-4 col-md-3 col-lg-3">{{field.label}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="field.value" secret="field.secret" ng-if="field.field_type !== \'file\' || !field.field_type"></span> <span ng-if="field.field_type === \'file\'" class="link" ng-click="downloadFile(selectedCredential, field.value)">{{field.value.filename}} ({{field.value.size | bytes}})</span></div></div><div class="row" ng-show="selectedRevision.credential_data.expire_time > 0"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'expire.time\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9">{{selectedRevision.credential_data.expire_time * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row" ng-show="selectedRevision.credential_data.changed"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'changed\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9">{{selectedRevision.credential_data.changed * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row" ng-show="selectedRevision.credential_data.created"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'created\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9">{{selectedRevision.credential_data.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row"><div class="col-xs-12"><div class="tags"><span class="tag" ng-repeat="tag in selectedRevision.credential_data.tags">{{tag.text}}</span></div></div></div></div><div ng-show="selectedRevision"><button class="button" ng-click="restoreRevision(selectedRevision)"><span class="fa fa-edit"></span> {{ \'restore.revision\' | translate}}</button> <button class="button" ng-click="deleteRevision(selectedRevision)"><span class="fa fa-trash"></span> {{ \'delete.revision\' | translate}}</button></div></div>')}]),angular.module("views/edit_credential.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/edit_credential.html",'<div id="passman-controls"><div class="breadcrumb"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg" data-dir="/Test"><a ng-click="cancel()">{{active_vault.name}}</a></div><div class="crumb svg last" data-dir="/Test"><a ng-if="storedCredential.credential_id">{{ \'edit.credential\' | translate}} "{{storedCredential.label}}"</a> <a ng-if="!storedCredential.credential_id">{{ \'create.credential\' | translate}}</a></div></div></div></div><div><ul class="tab_header"><li ng-repeat="tab in tabs track by $index" class="tab" ng-class="isActiveTab(tab)? \'active\' : \'inactive\'" ng-click="onClickTab(tab)" use-theme color="\'true\'">{{tab.title}}<div class="indicator" use-theme negative="\'true\'"></div></li></ul><div class="tab_container edit_credential" use-theme type="\'border-top-color\'"><div ng-include="currentTab.url"></div><button ng-click="saveCredential()" ng-disabled="saving"><i class="fa fa-spinner fa-spin" ng-show="saving"></i> {{ \'save\' | translate}}</button> <button ng-click="cancel()">{{ \'cancel\' | translate}}</button></div></div>')}]),angular.module("views/partials/credential_template.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/credential_template.html",'<div class="credential-data"><div class="row" ng-show="credential.label && showLabel"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'label\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.label"></span></div></div><div class="row" ng-show="credential.username"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'account\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.username"></span></div></div><div class="row" ng-show="credential.password"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'password\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.password" secret="\'true\'"></span></div></div><div class="row" ng-show="credential.otp.secret"><div class="col-xs-4 col-md-3 col-lg-3">{{\'otp\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span otp-generator secret="credential.otp.secret"></span></div></div><div class="row" ng-show="credential.email"><div class="col-xs-4 col-md-3 col-lg-3">{{\'email\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.email"></span></div></div><div class="row" ng-show="credential.url"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'url\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.url"></span></div></div><div class="row" ng-show="credential.description"><div class="col-xs-4 col-md-3 col-lg-3">{{\'notes\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="credential.description_html"></span></div></div><div class="row" ng-show="credential.files.length > 0"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'files\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9"><div ng-repeat="file in credential.files"><a class="link" ng-click="downloadFile(credential, file)">{{file.filename}} ({{file.size | bytes}})</a><br></div></div></div><div class="row" ng-repeat="field in credential.custom_fields"><div class="col-xs-4 col-md-3 col-lg-3">{{field.label}}</div><div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="field.value" secret="field.secret" ng-if="field.field_type !== \'file\' || !field.field_type"></span> <span ng-if="field.field_type === \'file\'" class="link" ng-click="downloadFile(credential, field.value)">{{field.value.filename}} ({{field.value.size | bytes}})</span></div></div><div class="row" ng-show="credential.expire_time > 0"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'expire.time\' | translate }}</div><div class="col-xs-8 col-md-9 col-lg-9">{{credential.expire_time * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row" ng-show="credential.changed"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'changed\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9">{{credential.changed * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row" ng-show="credential.created"><div class="col-xs-4 col-md-3 col-lg-3">{{ \'created\' | translate}}</div><div class="col-xs-8 col-md-9 col-lg-9">{{credential.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</div></div><div class="row"><div class="col-xs-12"><div class="tags"><span class="tag" ng-repeat="tag in credential.tags track by $index">{{tag.text}}</span></div></div></div></div>')}]),angular.module("views/partials/forms/edit_credential/basics.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/edit_credential/basics.html",'<div class="row"><div class="col-xs-12 col-md-6"><label>{{ \'label\' | translate}}</label><div class="icon-label"><div class="icon-picker" icon-picker="storedCredential"></div><input type="text" class="form-control" ng-model="storedCredential.label"></div><label>{{ \'username\' | translate}}</label><div><input type="text" ng-model="storedCredential.username"></div><label>{{ \'email\' | translate}}</label><div><input type="text" ng-model="storedCredential.email"></div><label>{{ \'password\' | translate}}</label><div><password-gen ng-model="storedCredential.password" settings="pwSettings" callback="pwGenerated"></password-gen><ng-password-meter password="storedCredential.password"></ng-password-meter></div><div><label>{{ \'password.r\' | translate}}</label><input type="password" ng-model="storedCredential.password_repeat"></div><label>{{ \'url\' | translate}}</label><div><input type="text" ng-model="storedCredential.url"></div></div><div class="col-xs-12 col-md-6"><label>{{ \'notes\' | translate}}</label><div><textarea class="credential_textarea" ng-model="storedCredential.description"></textarea></div><label>{{ \'add.tag\' | translate}}</label><div class="tags_input"><tags-input ng-model="storedCredential.tags" replace-spaces-with-dashes="false"><auto-complete source="getTags($query)" min-length="0"></auto-complete></tags-input></div></div></div>')}]),angular.module("views/partials/forms/edit_credential/custom_fields.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/edit_credential/custom_fields.html",'<div class="row"><div class="col-xs-12 col-md-4"><label>{{ \'field.label\' | translate}}</label><input type="text" ng-model="new_custom_field.label"></div><div class="col-xs-10 col-md-6 field-value"><div class="row"><div class="col-xs-12"><label>{{ \'field.value\' | translate}}</label></div></div><div class="row"><div class="col-xs-8 valueInput"><input type="text" ng-model="new_custom_field.value" ng-show="new_custom_field.field_type === \'text\'"><password-gen ng-model="new_custom_field.value" ng-show="new_custom_field.field_type ===\'password\'" settings="{generateOnCreate: false }"></password-gen><span ng-show="new_custom_field.field_type ===\'file\'"><input id="custom_field_file" class="inputfile" type="file" file-select success="addFileToCustomField" error="fileLoadError" progress="fileSelectProgress"><label for="custom_field_file"><i class="fa fa-upload" aria-hidden="true"></i> {{ new_custom_field.value.filename || \'select.file\' | translate}}</label></span></div><div class="col-xs-4 selectType"><select class="form-control" ng-model="new_custom_field.field_type"><option value="text">{{ \'text\' | translate}}</option><option value="password">{{ \'password\' | translate}}</option><option value="file">{{ \'file\' | translate}}</option></select></div></div><div class="row"><div class="col-xs-12"><ng-password-meter ng-if="new_custom_field.field_type ===\'password\'" password="new_custom_field.value"></ng-password-meter></div></div></div><div class="col-xs-2 col-md-2"><label class="invisible">{{\'add\' | translate}}</label><button ng-click="addCustomField()">+</button></div></div><div class="row custom_fields" ng-if="storedCredential.custom_fields.length > 0"><div class="col-xs-12 table"><table><thead><tr use-theme><td class="dragger"></td><th class="field_label">{{ \'label\' | translate}}</th><th class="field_value">{{ \'value\' | translate}}</th><th class="field_secret">{{ \'type\' | translate}}</th><th class="field_actions">{{ \'actions\' | translate}}</th></tr></thead><tbody ui-sortable ng-model="storedCredential.custom_fields"><tr ng-repeat="field in storedCredential.custom_fields"><td class="dragger"><i class="fa fa-arrows-v"></i></td><td><a href="#" editable-text="field.label">{{ field.label || "empty" }}</a></td><td><span ng-if="field.field_type === \'text\'"><a href="#" editable-text="field.value">{{ field.value || \'empty\' | translate }}</a></span> <span ng-if="field.field_type === \'password\'"><a href="#" editable-password="field.value"><span ng-repeat="n in [] | range:field.value.length">*</span></a></span> <span ng-if="field.field_type === \'file\'">{{field.value.filename}} ({{field.value.size | bytes}})</span></td><td>{{ field.field_type }}</td><td class="field_actions"><i class="fa fa-trash" ng-click="deleteCustomField(field)"></i></td></tr></tbody></table></div></div>')}]),angular.module("views/partials/forms/edit_credential/files.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/edit_credential/files.html",'<div class="row file_tab"><div class="col-xs-12 col-md-6"><input class="inputfile" id="file" type="file" file-select success="fileLoaded" error="fileLoadError" progress="fileSelectProgress"><label for="file"><i class="fa fa-upload" aria-hidden="true"></i> {{\'select.file\' | translate}}</label><span ng-if="fileprogress.file_percent > 0"><div progress-bar="fileprogress.file_percent"></div></span></div></div><div class="row files" ng-if="storedCredential.files.length > 0"><div class="col-xs-12 table"><table><thead use-theme><tr><th class="field_label">{{ \'file.name\' | translate }}</th><th class="field_value">{{ \'upload.date\' | translate}}</th><th class="field_secret">{{ \'size\' | translate}}</th><th class="field_actions">{{ \'actions\' | translate}}</th></tr></thead><tr ng-repeat="file in storedCredential.files"><td><a href="#" editable-text="file.filename">{{ file.filename || "empty" }}</a></td><td>{{file.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td><td>{{file.size | bytes}}</td><td class="field_actions"><i class="fa fa-trash" ng-click="deleteFile(file)"></i></td></tr></table></div></div>');
+}]),angular.module("views/partials/forms/edit_credential/otp.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/edit_credential/otp.html",'<div class="row"><div class="col-xs-12"><div class="col-xs-4 nopadding"><span class="otpText">{{ \'upload.qr\' | translate}}</span><select ng-model="otpType"><option value="qrcode">Upload QR code</option><option value="secret">Enter secret</option></select></div><div class="col-xs-6 nopadding"><input type="file" qrread on-read="parseQR(qrdata)" class="input_secret" on-read="parseQR(qrdata)" ng-show="otpType === \'qrcode\'"> <input type="text" ng-model="storedCredential.otp.secret" ng-show="otpType === \'secret\'"></div></div></div><div class="row"><div class="col-xs-12" ng-if="storedCredential.otp"><b>{{ \'current.qr\' | translate}}</b></div></div><div class="row"><div class="col-xs-5 col-sm-4 col-md-2" ng-if="storedCredential.otp.qr_uri"><img ng-src="{{storedCredential.otp.qr_uri.image}}"></div><div class="col-sm-4 col-sm-5 col-md-5"><table ng-show="storedCredential.otp"><tr ng-show="storedCredential.otp.type"><td>{{ \'type\' | translate}}:</td><td>{{storedCredential.otp.type}}</td></tr><tr ng-show="storedCredential.otp.label"><td>{{ \'label\' | translate}}:</td><td>{{storedCredential.otp.label}}</td></tr><tr ng-show="storedCredential.otp.issuer"><td>{{ \'issuer\' | translate}}:</td><td>{{storedCredential.otp.issuer}}</td></tr><tr ng-show="storedCredential.otp.secret"><td>{{ \'secret\' | translate}}:</td><td>{{storedCredential.otp.secret}}</td></tr><tr ng-show="storedCredential.otp.secret"><td>{{ \'otp\' | translate}}:</td><td><span otp-generator secret="storedCredential.otp.secret"></span></td></tr></table></div></div>')}]),angular.module("views/partials/forms/edit_credential/password.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/edit_credential/password.html",'<div class="row"><div class="col-xs-12 col-md-5 col-lg-5"><label>{{ \'password\' | translate}}</label><div><password-gen ng-model="storedCredential.password" settings="pwSettings" callback="pwGenerated"></password-gen><ng-password-meter password="storedCredential.password"></ng-password-meter></div><label>{{ \'password.r\' | translate}}</label><div><input type="password" ng-model="storedCredential.password_repeat"></div><label>{{ \'expire.date\' | translate}}</label><div><span datetime-picker ng-model="storedCredential.expire_time" class="link" future-only ng-show="storedCredential.expire_time == 0" close-on-select="false">{{\'no.expire.date\' | translate}}</span> <span datetime-picker ng-model="storedCredential.expire_time" class="link" future-only ng-show="storedCredential.expire_time != 0" close-on-select="false">{{ storedCredential.expire_time | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</span></div><label>{{ \'renew.interval\' | translate}}</label><div><input type="number" ng-model="renewIntervalValue" min="0" ng-change="updateInterval(renewIntervalValue, renewIntervalModifier)"><select ng-model="renewIntervalModifier" ng-change="updateInterval(renewIntervalValue, renewIntervalModifier)"><option value="0">{{ \'disabled\' | translate}}</option><option value="86400">{{ \'days\' | translate }}</option><option value="604800">{{ \'weeks\' | translate}}</option><option value="2592000">{{ \'months\' | translate}}</option><option value="31622400">{{ \'years\' | translate}}</option></select></div></div><div class="col-xs-12 col-md-7 col-lg-7"><b>{{ \'generation.settings\' | translate}}</b><div class="row"><div class="password_settings"><div class="col-xs-12 col-sm-5 col-lg-4"><label><span class="label">{{ \'password.generation.length\' | translate}}</span><br><input type="number" ng-model="pwSettings.length" min="1"></label><label><span class="label">{{\'password.generation.min_digits\' | translate}}</span><br><input type="number" ng-model="pwSettings.minimumDigitCount" min="0"></label></div><div class="col-xs-12 col-sm-6 col-lg-6"><label><input type="checkbox" ng-model="pwSettings.useUppercase"> <span class="label sm">{{ \'password.generation.uppercase\' | translate}}</span></label><label><input ng-model="pwSettings.useLowercase" type="checkbox" id="lower"> <span class="label sm">{{ \'password.generation.lowercase\' | translate}}</span></label><label><input ng-model="pwSettings.useDigits" type="checkbox" id="digits"> <span class="label sm">{{ \'password.generation.digits\' | translate}}</span></label><label><input type="checkbox" id="special" ng-model="pwSettings.useSpecialChars"> <span class="label sm">{{ \'password.generation.special\' | translate}}</span></label><label><input type="checkbox" id="ambig" ng-model="pwSettings.avoidAmbiguousCharacters"> <span class="label sm">{{ \'password.generation.ambiguous\' | translate}}</span></label><label><input type="checkbox" ng-model="pwSettings.requireEveryCharType" id="reqevery"> <span class="label sm">{{ \'password.generation.require_same\' | translate}}</span></label></div></div></div></div></div>')}]),angular.module("views/partials/forms/settings/export.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/settings/export.html",'<div ng-controller="ExportCtrl"><div class="row"><div class="col-xs-6"><label>{{ \'export.type\' | translate}}<select ng-init="raw" ng-model="raw" ng-change="setExporter(raw)"><option ng-repeat="exporter in available_exporters" value="{{exporter}}">{{exporter.name}}</option></select></label><div><b>{{selectedExporter.description}}</b></div><div ng-show="selectedExporter" class="nopadding"><label>{{ \'export.confirm.text\' | translate }}</label><input type="password" ng-model="confirm_key"><br><div class="alert alert-warning" ng-show="error">{{error}}</div></div><div class="clearfix"><button class="button" ng-click="startExport()" ng-if="selectedExporter">{{ \'export\' | translate}}</button></div></div><div class="col-xs-6"><div ng-if="log" class="import_log"><textarea id="import_log" auto-scroll="log">{{log.join(\'\\n\')}}</textarea></div></div></div></div>')}]),angular.module("views/partials/forms/settings/general_settings.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/settings/general_settings.html",'<div class="row"><div class="col-xs-12 col-md-6"><h3>{{ \'rename.vault\' | translate}}</h3><label>{{ \'rename.vault.name\' | translate}}</label><input type="text" ng-model="$parent.new_vault_name"> <button ng-click="saveVaultSettings()">{{ \'change\' | translate}}</button><h3>{{ \'change.vault.key\' | translate}}</h3><label>{{ \'old.vault.password\' | translate}}</label><input type="password" ng-model="oldVaultPass"><label>{{ \'new.vault.password\' | translate}}</label><input type="password" ng-model="newVaultPass"><ng-password-meter password="newVaultPass" score="vault_key_score"></ng-password-meter><label>{{ \'new.vault.pw.r\' | translate}}</label><input type="password" ng-model="newVaultPass2"><div ng-show="error || vault_key_score.score < minimal_value_key_strength" class="error"><ul><li>{{error}}</li><li ng-show="vault_key_score.score < minimal_value_key_strength">{{\'min.vault.key.strength\' | translate:required_score}}</li></ul></div><button ng-click="changeVaultPassword(oldVaultPass,newVaultPass,newVaultPass2)" ng-disabled="vault_key_score.score < minimal_value_key_strength">{{ \'change\' | translate}}</button><div ng-show="change_pw.total > 0">{{\'warning.leave\' | translate}}<br>{{ \'processing\' | translate}} {{cur_state.process}}<div progress-bar="cur_state.calculated" index="cur_state.current" total="cur_state.total"></div>{{ \'total.progress\' | translate}}<div progress-bar="change_pw.percent" index="change_pw.done" total="change_pw.total"></div></div><h3>{{\'delete.vault\' | translate}}</h3><b>{{ \'vault.remove.notice\' | translate }}</b><label>{{\'vault.password\' | translate}}</label><input type="password" ng-model="$parent.delete_vault_password"> <input type="checkbox" ng-model="$parent.confirm_vault_delete"> {{\'delete.vault.checkbox\' | translate}}<br><button class="btn btn-danger" ng-click="delete_vault()">{{\'delete.vault.confirm\' | translate}}</button><div ng-show="remove_pw">{{\'deleting.pw\' | translate:translationData}}<div progress-bar="remove_pw.percent" index="remove_pw.done" total="remove_pw.total"></div></div></div><div class="col-xs-12 col-md-6"><h3>{{ \'about.passman\' | translate}}</h3><p>{{ \'version\' | translate}}: <b>{{passman_version}}</b><br><br><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6YS8F97PETVU2" target="_blank" class="link">{{ \'donate.support\' | translate}}</a><br></p><h3>{{ \'bookmarklet\' | translate}}</h3><div><p>{{ \'bookmarklet.info1\' | translate}}<br>{{ \'bookmarklet.info2\' | translate}}<br></p></div><div><p ng-bind-html="bookmarklet" style="margin-top: 5px"></p></div></div></div>')}]),angular.module("views/partials/forms/settings/generic_csv_import.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/settings/generic_csv_import.html",'<div ng-controller="GenericCsvImportCtrl"><div class="row"><div class="col-xs-12 col-md-3"><div>{{ \'select.csv\' | translate}} <input type="file" file-select accept=".csv" success="csvLoaded"></div><div ng-show="parsed_csv"><span translate="parsed.csv.rows" translate-value-rows="{{ parsed_csv.length }}"></span></div><div ng-show="parsed_csv"><input type="checkbox" ng-model="skipFirstRow" ng-checked="matched"> {{ \'skip.first.row\' | translate}}</div><div ng-show="import_fields.indexOf(\'label\') === -1 && parsed_csv"><b>{{ \'import.csv.label.req\' | translate}}</b></div><div ng-show="import_fields.indexOf(\'label\') !== -1 && parsed_csv"><button class="btn btn-success" ng-disabled="importing" ng-click="startCSVImport()"><i class="fa fa-spinner fa-spin" ng-show="importing"></i> {{ (importing) ? (\'import.importing\' | translate) : (\'import.start\' | translate) }}</button></div><div><div ng-if="import_progress.progress > 0">{{ \'upload.progress\' | translate}}<div progress-bar="import_progress.progress" index="import_progress.loaded" total="import_progress.total"></div></div></div><div><div ng-if="log" class="import_log"><textarea id="import_log" auto-scroll="log">{{log.join(\'\\n\')}}</textarea></div></div></div><div class="col-xs-12 col-md-9" ng-show="parsed_csv"><b>{{ \'first.five.lines\' | translate }}</b><br>{{ \'assign.column\' | translate }}<div class="import-table-outter"><table class="import-table"><tr ng-repeat="line in parsed_csv | limitTo:5"><td class="inspect"><i class="fa fa-search" ng-click="inspectCredential(line)" ng-if="($index > 0 && matched && import_fields.length > 0) || ($index >= 0 && !matched && import_fields.length > 0)"></i></td><td ng-repeat="prop in line track by $index">{{line[$index]}}</td></tr><tr ng-repeat="line in parsed_csv | limitTo:1"><td></td><td ng-repeat="prop in line track by $index"><select ng-model="import_fields[$index]" ng-change="updateExample()" ng-options="property.prop as property.label for property in credentialProperties"></select></td></tr></table></div><div ng-show="inspected_credential && import_fields.length > 0"><b>{{ \'example.credential\' | translate}}</b><div credential-template="inspected_credential" show-label></div></div></div></div></div>')}]),angular.module("views/partials/forms/settings/import.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/settings/import.html",'<div><div ng-click="showGenericImport = !showGenericImport;" class="link"><span ng-show="!showGenericImport">{{\'missing.importer\' | translate}}</span> <span ng-show="showGenericImport">{{\'missing.importer.back\' | translate}}</span></div></div><div ng-controller="ImportCtrl" ng-show="!showGenericImport"><div class="row"><div class="col-xs-6"><div class="import-selection"><label>{{ \'import.type\' | translate}}<select ng-init="importerType" ng-model="importerType" ng-change="setImporter(importerType)"><option ng-repeat="importer in available_importers" value="{{importer}}">{{importer.name}}</option></select></label></div><div ng-show="selectedImporter"><b>{{ \'import.steps\' | translate }}</b><ul class="import-steps"><li ng-repeat="step in selectedImporter.exportSteps">{{step}}</li></ul></div><input ng-if="selectedImporter" type="file" file-select success="fileLoaded" error="fileLoadError" progress="fileSelectProgress"><br><button class="button" ng-click="startImport()" ng-if="selectedImporter">{{ \'import\' | translate}}</button><div ng-if="file_read_progress.percent > 0">{{ \'read.progress\' | translate}}<div progress-bar="file_read_progress.percent" index="file_read_progress.loaded" total="file_read_progress.total"></div></div><div ng-if="import_progress.progress > 0">{{ \'upload.progress\' | translate}}<div progress-bar="import_progress.progress" index="import_progress.loaded" total="import_progress.total"></div></div></div><div class="col-xs-6"><div ng-if="log" class="import_log"><textarea id="import_log" auto-scroll="log">{{log.join(\'\\n\')}}</textarea></div></div></div></div><div ng-include="\'views/partials/forms/settings/generic_csv_import.html\'" ng-show="showGenericImport"></div>')}]),angular.module("views/partials/forms/settings/password_settings.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/settings/password_settings.html",'<div class="password_settings"><div class="col-xs-12 col-sm-5 col-lg-4 password-settings-padding-left-fix"><label><span class="label">{{ \'password.generation.length\' | translate}}</span><br><input type="number" ng-model="vault_settings.pwSettings.length" min="1"></label><label><span class="label">{{ \'password.generation.min_digits\' | translate}}</span><br><input type="number" ng-model="vault_settings.pwSettings.minimumDigitCount" min="0"></label><label><span class="label">Generate password on creation</span><br><input type="checkbox" ng-model="vault_settings.pwSettings.generateOnCreate" min="0"></label></div><div class="col-xs-12 col-sm-6 col-lg-6"><label><input type="checkbox" ng-model="vault_settings.pwSettings.useUppercase"> <span class="label sm">{{ \'password.generation.uppercase\' | translate}}</span></label><label><input ng-model="vault_settings.pwSettings.useLowercase" type="checkbox" id="lower"> <span class="label sm">{{ \'password.generation.lowercase\' | translate}}</span></label><label><input ng-model="vault_settings.pwSettings.useDigits" type="checkbox" id="digits"> <span class="label sm">{{ \'password.generation.digits\' | translate}}</span></label><label><input type="checkbox" id="special" ng-model="vault_settings.pwSettings.useSpecialChars"> <span class="label sm">{{ \'password.generation.special\' | translate}}</span></label><label><input type="checkbox" id="ambig" ng-model="vault_settings.pwSettings.avoidAmbiguousCharacters"> <span class="label sm">{{ \'password.generation.ambiguous\' | translate}}</span></label><label><input type="checkbox" ng-model="vault_settings.pwSettings.requireEveryCharType" id="reqevery"> <span class="label sm">{{ \'password.generation.require_same\' | translate}}</span></label></div></div><div class="row"><div class="col-xs-12"><button class="button" ng-click="saveVaultSettings()">{{ \'save\' | translate}}</button></div></div>')}]),angular.module("views/partials/forms/settings/sharing.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/settings/sharing.html",'<div ng-controller="SharingSettingsCtrl"><div class="row"><div class="col-md-6"><label>{{ \'priv.key\' | translate}}</label><textarea class="col-md-12">{{sharing_keys.private_sharing_key}}</textarea></div><div class="col-md-6"><label>{{ \'pub.key\' | translate}}</label><textarea class="col-md-12">{{sharing_keys.public_sharing_key}}</textarea></div></div><div class="row"><div class="col-md-12"><label>{{ \'key.size\' | translate}}<select ng-model="key_size" ng-options="size.name for size in available_sizes"></select><button ng-click="updateSharingKeys()"><i class="fa fa-fa-floppy-o"></i> {{ \'save.keys\' | translate}}</button> <button ng-if="!generating" ng-click="generateKeys(key_size.size)">{{ \'gen.keys\' | translate}}</button> <button ng-if="generating"><i class="fa fa-spinner fa-spin"></i> {{ \'generating.keys\' | translate}} ({{progress}}/2)</button></label></div></div></div>')}]),angular.module("views/partials/forms/settings/tool.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/settings/tool.html",'<div class="row"><div class="col-xs-12"><p>{{ \'tool.intro\' | translate}}</p></div><div class="col-xs-12" ng-init="minStrength = 3;">{{ \'min.strength\' | translate}} <input type="number" min="1" max="4" value="3" ng-model="minStrength"> <button ng-click="startScan(minStrength)">{{ \'scan.start\' | translate}}</button></div></div><div class="row" ng-show="scan_result"><div class="col-xs-12"><p>{{ \'scan.result.msg\' | translate}}<br><span translate="scan.result" translate-values="{ scan_result: scan_result.length}"></span><br></p><table class="table scan-result-table"><thead><tr><td>{{ \'label\' | translate}}</td><td>{{ \'score\' | translate}}</td><td>{{ \'password\' | translate}}</td><td>{{ \'action\' | translate}}</td></tr></thead><tbody><tr ng-repeat="result in scan_result | orderBy:\'password_zxcvbn_result.score\'"><td>{{result.label}}</td><td class="score"><ng-password-meter password="result.password"></ng-password-meter></td><td><span credential-field value="result.password" secret="\'true\'"></span></td><td><div><a href="#/vault/{{ active_vault.guid }}/edit/{{result.guid}}" class="link"><i class="fa fa-edit"></i></a></div></td></tr></tbody></table></div></div>')}]),angular.module("views/partials/forms/share_credential/basics.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/share_credential/basics.html",'<div class="row"><div class="col-xs-12 col-md-6"><div><table class="table sharing_table"><thead><tr><td><tags-input ng-model="inputSharedWith" replace-spaces-with-dashes="false" add-from-autocomplete-only="true" placeholder="{{ \'search.u.g\' | translate}}"><auto-complete source="searchUsers($query)" min-length="0" template="autocomplete-template"></auto-complete></tags-input></td><td><button class="button" ng-click="shareWith(inputSharedWith)">+</button></td></tr><tr><td colspan="2"><small>{{ \'search.result.missing\' | translate}}</small></td></tr></thead></table><div ng-if="share_settings.cypher_progress.done > 0">{{\'cyphering\' | translate}}...<div progress-bar="share_settings.cypher_progress.percent" index="share_settings.cypher_progress.done" total="share_settings.cypher_progress.total"></div></div><div ng-if="share_settings.upload_progress.done > 0">{{ \'uploading\' | translate}}...<div progress-bar="share_settings.upload_progress.percent" index="share_settings.upload_progress.done" total="share_settings.upload_progress.total"></div></div></div></div><div class="col-xs-12 col-md-6" ng-show="share_settings.cypher_progress.times.length > 0"><table class="table"><thead><tr><td>{{ \'user\' | translate}}</td><td>{{ \'crypto.time\' | translate}}</td></tr></thead><tr ng-repeat="user in share_settings.cypher_progress.times"><td><i class="fa fa-cogs"></i> {{user.user}}</td><td>{{user.time}} s</td></tr></table>{{ \'crypto.total.time\' | translate}}: {{ calculate_total_time() }}</div></div><div class="row"><div class="col-xs-12 col-md-6"><table class="table shared_table" ng-show="share_settings.credentialSharedWithUserAndGroup.length > 0"><thead><tr><td>{{\'user\' | translate}}</td><td>{{ \'perm.read\' | translate}}</td><td>{{ \'perm.write\' | translate}}</td><td>{{ \'perm.files\' | translate}}</td><td>{{ \'perm.revisions\' | translate}}</td><td></td></tr></thead><tr ng-repeat="user in share_settings.credentialSharedWithUserAndGroup"><td><i class="fa fa-user" ng-if="user.pending === false"></i> <i class="fa fa-user-times" ng-if="user.pending === true"></i> {{user.userId}} <small ng-if="user.pending === true" class="pull-right pending">{{ \'pending\' | translate}}</small></td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.READ)" ng-checked="hasPermission(user.acl, default_permissions.permissions.READ)"></td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.WRITE)" ng-checked="hasPermission(user.acl, default_permissions.permissions.WRITE)"></td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.FILES)" ng-checked="hasPermission(user.acl, default_permissions.permissions.FILES)"></td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.HISTORY)" ng-checked="hasPermission(user.acl, default_permissions.permissions.HISTORY)"></td><td><i class="fa fa-trash" ng-click="unshareUser(user)"></i></td></tr></table></div></div><script type="text/ng-template" id="autocomplete-template"><i class="fa fa-user" ng-if="data.type === \'user\'"></i>\n\t<i class="fa fa-group" ng-if="data.type === \'group\'"></i>\n\t{{data.text}}</script>')}]),angular.module("views/partials/forms/share_credential/link_sharing.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/forms/share_credential/link_sharing.html",'<div class="row"><div class="col-xs-12 col-md-6"><label><input type="checkbox" ng-model="share_settings.linkSharing.enabled"> {{ \'enable.link.sharing\' | translate}}.</label><br><div class="pull-left col-xs-6 nopadding"><span credential-field value="share_link" secret="false" use-input="true" input-placeholder="\'click.share\' | translate"></span></div><div ng-show="share_settings.linkSharing.enabled" class="clearfix">{{ \'share.until.date\' | translate}} <span datetime-picker ng-model="share_settings.linkSharing.settings.expire_time" class="link" future-only close-on-select="false" timestamp="true">{{ share_settings.linkSharing.settings.expire_time | date:\'dd-MM-yyyy @ HH:mm:ss\' }}</span></div><div ng-show="share_settings.linkSharing.enabled">{{ \'expire.views\' | translate}}<br><input type="number" ng-model="share_settings.linkSharing.settings.expire_views"></div><div ng-if="share_settings.linkSharing.enabled"><table><tr><td><input type="checkbox" ng-click="setPermission(share_settings.linkSharing.settings.acl, default_permissions.permissions.FILES)" ng-checked="hasPermission(share_settings.linkSharing.settings.acl, default_permissions.permissions.FILES)"></td><td>{{ \'show.files\' | translate}}</td></tr></table></div></div></div>')}]),angular.module("views/partials/icon-picker.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/icon-picker.html",'<div class="cell icon-category-auth"></div><div style="display: none" id="iconPicker" title="{{ \'pick.icon\' | translate }}"><div class="iconList"><div ng-repeat="(groupName, icons) in iconGroups"><h2 style="clear: both" id="{{groupName}}">{{groupName}}</h2><div class="icon" ng-repeat="icon in icons" ng-click="selectIcon(icon)"><img ng-src="{{icon.url}}" height="32"></div></div></div><div class="iconModifier"><input id="iconPicker-Search" class="iconSearch" type="text" placeholder="{{ \'pick.icon.search\' | translate }}"><label for="iconPicker-CustomIcon">{{ \'pick.icon.custom.label\' | translate }}<label><input id="iconPicker-CustomIcon" class="iconSearch" type="file"><div ng-if="selectedIcon || customIcon">{{ \'selected.icon\' | translate}}:<br><img ng-src="{{selectedIcon.url}}" height="32" ng-if="!customIcon"> <img src="{{customIcon.data}}" height="32" ng-if="customIcon"><br><button ng-click="useIcon()">{{ \'use.icon\' | translate}}</button></div></label></label></div></div>')}]),angular.module("views/partials/password-meter.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/partials/password-meter.html",'<div class="pass-meter {{masterClass}}" off-click="matchBreakdown = false;"><div class="{{colClass}} pass-meter-col {{first}}"><div class="indicator"></div></div><div class="{{colClass}} pass-meter-col {{second}}"><div class="indicator"></div></div><div class="{{colClass}} pass-meter-col {{third}}"><div class="indicator"></div></div><div class="{{colClass}} pass-meter-col {{fourth}}"><div class="indicator"></div></div><div class="details" ng-click="toggleScore()"><span ng-show="!scoreShown">{{ \'details\' | translate }}</span> <span ng-show="scoreShown">{{ \'hide.details\' | translate}}</span></div><div class="pass-meter-message">{{message}}</div><div class="detail_box" ng-show="scoreShown"><div class="row"><div class="col-xs-6">{{ \'password.score\' | translate}}:</div><div class="col-xs-6">{{score.score}}</div></div><div><b>{{ \'cracking.times\' | translate}}</b></div><div class="row"><div class="col-xs-6">{{ \'cracking.time.100h\' | translate}}<br><small>{{ \'cracking.time.100h.desc\' | translate}}</small></div><div class="col-xs-6">{{score.crack_times_display.online_throttling_100_per_hour}}</div></div><div class="row"><div class="col-xs-6">{{ \'cracking.time.10s\' | translate}}<br><small>{{ \'cracking.time.10s.desc\' | translate}}</small></div><div class="col-xs-6">{{score.crack_times_display.online_no_throttling_10_per_second}}</div></div><div class="row"><div class="col-xs-6">{{ \'cracking.time.10ks\' | translate}}<br><small>{{ \'cracking.time.10ks.desc\' | translate}}</small></div><div class="col-xs-6">{{score.crack_times_display.offline_slow_hashing_1e4_per_second}}</div></div><div class="row"><div class="col-xs-6">{{ \'cracking.time.10Bs\' | translate}}<br><small>{{ \'cracking.time.10Bs.desc\' | translate}}</small></div><div class="col-xs-6">{{score.crack_times_display.offline_fast_hashing_1e10_per_second}}</div></div><div class="row"><div class="col-xs-6">{{ \'match.sequence\' | translate}}:</div><div class="col-xs-6"><span class="link" ng-click="toggleMatchBreakdown()">{{ \'match.sequence.link\' | translate}}</span></div></div></div></div><div class="match-sequence"><div class="sequence_container" ng-style="{\'width\': score.sequence.length * 210 }"><div class="sequence" ng-repeat="sequence in score.sequence"><table><tr><td colspan="2" class="token"><code>{{sequence.token}}</code></td></tr><tr ng-if="sequence.pattern"><td>{{ \'pattern\' | translate}}</td><td>{{sequence.pattern}}</td></tr><tr ng-if="sequence.matched_word"><td>{{ \'matched.word\' | translate}}</td><td>{{sequence.matched_word}}</td></tr><tr ng-if="sequence.dictionary_name"><td>{{ \'dictionary.name\' | translate}}</td><td>{{sequence.dictionary_name}}</td></tr><tr ng-if="sequence.rank"><td>{{ \'rank\' | translate}}</td><td>{{sequence.rank}}</td></tr><tr ng-if="sequence.reversed"><td>{{ \'reversed\' | translate}}</td><td>{{sequence.reversed}}</td></tr><tr ng-if="sequence.guesses"><td>{{ \'guesses\' | translate}}</td><td>{{sequence.guesses}}</td></tr><tr ng-if="sequence.base_guesses"><td>{{ \'base.guesses\' | translate}}</td><td>{{sequence.base_guesses}}</td></tr><tr ng-if="sequence.uppercase_variations"><td>{{ \'uppercase.variations\' | translate}}</td><td>{{sequence.uppercase_variations}}</td></tr><tr ng-if="sequence.l33t_variations"><td>{{ \'leet.variations\' | translate}}</td><td>{{sequence.l33t_variations}}</td></tr></table></div></div></div>')}]),angular.module("views/settings.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/settings.html",'<div id="passman-controls"><div class="breadcrumb"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg"><a ng-click="cancel()">{{active_vault.name}}</a></div><div class="crumb svg last"><a>{{ \'settings\' | translate}}</a></div></div></div></div><div><ul class="tab_header"><li ng-repeat="tab in tabs track by $index" class="tab" ng-class="isActiveTab(tab)? \'active\' : \'inactive\'" ng-click="onClickTab(tab)" use-theme color="\'true\'">{{tab.title | translate}}<div class="indicator" use-theme negative="\'true\'"></div></li></ul><div class="tab_container settings edit_credential" use-theme type="\'border-top-color\'"><div ng-include="currentTab.url"></div></div></div>')}]),angular.module("views/share_credential.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/share_credential.html",'<div class="main_list.share"><div id="passman-controls"><div class="actions creatable"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg" data-dir="/Test"><a ng-click="cancel()">{{active_vault.name}}</a></div><div class="crumb svg last" data-dir="/Test"><a ng-if="storedCredential.credential_id">{{ \'share.credential\' | translate}} {{storedCredential.label}}</a></div></div></div></div><ul class="tab_header"><li ng-repeat="tab in tabs track by $index" class="tab" ng-class="{active:isActiveTab(tab)}" ng-click="onClickTab(tab)" use-theme color="\'true\'">{{tab.title | translate}}<div class="indicator" use-theme negative="\'true\'"></div></li></ul><div class="tab_container share_credential" ng-show="currentTab"><div ng-include="currentTab.url"></div><button ng-click="applyShare()" ng-disabled="share_settings.linkSharing.enabled === false && share_settings.credentialSharedWithUserAndGroup.length === 0">{{ \'share\' | translate}}</button> <button ng-click="cancel()">{{ \'cancel\' | translate}}</button> <button class="btn btn-danger" ng-disabled="!storedCredential.shared_key" ng-click="unshareCredential(storedCredential)">{{ \'unshare\' | translate}}</button></div></div>')}]),angular.module("views/show_vault.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/show_vault.html",'<div class="main_list" off-click-filter="\'.download-js-link, .sidebar-shown, #app-sidebar\'"><div id="passman-controls" ng-class="{ \'sidebar-shown\': selectedCredential }"><div class="breadcrumb"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a ng-click="logout()"><i class="fa fa-home"></i></a></div><div class="crumb svg" ng-click="clearState()"><a>{{active_vault.name}}</a></div></div><div class="addCredential" ng-hide="delete_time>0"><button ng-click="addCredential()">+</button></div></div><div class="title" credential-counter="filtered_credentials" vault="active_vault" delete-time="delete_time" filters="filterOptions"></div><div class="searchboxContainer" ng-init="filterOptionShown = false;" off-click="filterOptionShown = false;"><input type="text" ng-model="filterOptions.filterText" class="searchbox" id="searchBox" placeholder="{{\'search.credential\' | translate}}" select-on-click clear-btn ng-click="filterOptionShown = true;"><div class="searchOptions" ng-show="filterOptionShown"><input type="checkbox" ng-model="filterOptions.useRegex"> {{ \'use.regex\' | translate }}</div></div><div class="viewModes"><div class="view-mode" ng-class="{\'active\': view_mode === \'list\' }" ng-click="switchViewMode(\'list\')"><i class="fa fa-list"></i></div><div class="view-mode" ng-class="{\'active\': view_mode === \'grid\' }" ng-click="switchViewMode(\'grid\')"><i class="fa fa-th-large"></i></div></div></div><div class="loaderContainer" ng-if="show_spinner"><div class="loader" use-theme type="\'border-bottom-color\'"></div></div><div ng-init="menuOpen = false;"><table class="credential-table" ng-if="view_mode === \'list\'"><tr ng-repeat="credential in filtered_credentials | orderBy:\'label\'" ng-if="showCredentialRow(credential)" ng-click="selectCredential(credential)" ng-dblclick="editCredential(credential)" ng-class="{\'selected\': selectedCredential.credential_id == credential.credential_id}"><td><span class="tags"><span class="tag" ng-repeat="tag in credential.tags_raw">{{ ::tag.text}}</span></span> <span class="icon" ng-if="credential.url"><credential-icon credential="credential"></credential-icon></span> <span class="icon" ng-if="!credential.url"><i class="fa fa-lock" ng-if="!credential.acl && !credential.shared_key"></i> <i class="fa fa-share-alt" ng-if="credential.acl"></i> <i class="fa fa-share-alt-square" ng-if="credential.shared_key"></i></span> <a class="label">{{ ::credential.label}}</a></td></tr></table><ul class="grid-view" ng-if="view_mode === \'grid\'"><li class="credential" ng-repeat="credential in filtered_credentials | orderBy:\'label\'" ng-if="credential.hidden == 0 && showCredentialRow(credential)" ng-click="selectCredential(credential)" use-theme type="\'border-color\'"><div class="credential_content"><div><span class="icon" ng-if="credential.url"><credential-icon credential="credential"></credential-icon></span> <span class="icon" ng-if="!credential.url"><i class="fa fa-lock" ng-if="!credential.acl && !credential.shared_key"></i> <i class="fa fa-share-alt" ng-if="credential.acl"></i> <i class="fa fa-share-alt-square" ng-if="credential.shared_key"></i></span><div class="label">{{ ::credential.label}}</div></div><div class="tags"><div class="tag" ng-repeat="tag in credential.tags_raw">{{ ::tag.text}}</div></div></div></li></ul><div ng-if="getListSizes().listsize_wout_deleted==0 && no_credentials_label.all && !show_spinner && selectedtags.length==0 && filterOptions.filterText==\'\'" class="nopasswords" ng-hide="delete_time>0"><b>{{\'vault.hint.hello\' | translate}}</b><br><div>{{\'vault.hint.hello.add\' | translate}}</div><div class=""><button ng-click="addCredential()">+</button></div></div><div ng-if="getListSizes().listsize_wout_deleted==0 && no_credentials_label.all && !show_spinner && selectedtags.length>0" class="nopasswords" ng-hide="delete_time>0"><div>{{ \'vault.hint.list.notags\' | translate}}</div></div><div ng-if="getListSizes().listsize_wout_deleted==0 && no_credentials_label.all && !show_spinner && selectedtags.length==0 && filterOptions.filterText!=\'\'" class="nopasswords" ng-hide="delete_time>0"><div>{{ \'vault.hint.list.nosearch\' | translate}} <b>\'{{filterOptions.filterText}}\'</b></div></div><div class="nopasswords" ng-if="no_credentials_label.s_good" ng-hide="getListSizes().listsize_wout_deleted>0"><div>{{ \'vault.hint.list.nogood\' | translate}}</div></div><div class="nopasswords" ng-if="no_credentials_label.s_medium" ng-hide="getListSizes().listsize_wout_deleted>0"><div>{{ \'vault.hint.list.nomedium\' | translate}}</div></div><div class="nopasswords" ng-if="no_credentials_label.s_low" ng-hide="getListSizes().listsize_wout_deleted>0"><div>{{ \'vault.hint.list.nobad\' | translate}}</div></div><div class="nopasswords" ng-if="no_credentials_label.expired" ng-hide="getListSizes().listsize_wout_deleted>0"><div>{{ \'vault.hint.list.noexpired\' | translate}}</div></div><div class="nopasswords" ng-if="getListSizes().listsize_deleted==0" ng-hide="delete_time==0"><div>{{ \'vault.hint.list.nodeleted\' | translate}}</div></div></div></div><div id="app-sidebar" class="app_sidebar" ng-show="selectedCredential" off-click="closeSelected()"><span class="close icon-close" ng-click="closeSelected()" alt="Close"></span><div class="sidebar"><span class="icon sidebar-icon" ng-if="selectedCredential.url"><credential-icon credential="selectedCredential"></credential-icon></span> <span class="icon sidebar-icon" ng-if="!selectedCredential.url"><credential-icon credential="selectedCredential"></credential-icon></span><h2 class="sidebar-label">{{selectedCredential.label}}</h2></div><div credential-template="selectedCredential"></div><div ng-show="selectedCredential"><div><button class="button" ng-click="editCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)"><span class="fa fa-edit"></span> {{ \'edit\' | translate}}</button> <button class="button" ng-click="deleteCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)"><span class="fa fa-trash"></span> {{ \'delete\' | translate}}</button> <button class="button" ng-click="shareCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && selectedCredential.acl === undefined &&\n\t\t\t\t\t\t(settings.user_sharing_enabled === 1 || settings.user_sharing_enabled === \'1\' || settings.link_sharing_enabled === 1 || settings.link_sharing_enabled === \'1\')"><span class="fa fa-share"></span> {{ \'share\' | translate}}</button> <button class="button" ng-click="getRevisions(selectedCredential)" ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.HISTORY)"><span class="fa fa-undo"></span> {{ \'revisions\' | translate}}</button> <button class="button" ng-if="selectedCredential.delete_time > 0" ng-click="recoverCredential(selectedCredential) && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)"><span class="fa fa-recycle"></span> {{\'recover\' | translate}}</button> <button class="button" ng-if="selectedCredential.delete_time > 0" ng-click="destroyCredential(selectedCredential)"><span class="fa fa-bomb"></span> {{\'destroy\' | translate}}</button></div></div></div><div class="share_popup" style="display: none">{{ \'sharereq.title\' | translate}}<br><p>{{ \'sharereq.line1\' | translate}}</p>{{active_vault.vault_id}}<table class="table"><thead><tr><td>{{ \'label\' | translate}}</td><td>{{ \'permissions\' | translate}}</td><td>{{ \'received.from\' | translate}}</td><td>{{ \'date\' | translate}}</td></tr></thead><tr ng-repeat="share_request in incoming_share_requests" ng-if="share_request.target_vault_id == active_vault.vault_id"><td>{{share_request.credential_label}}</td><td>{{share_request.permissions}}</td><td>{{share_request.from_user_id}}</td><td>{{share_request.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td><td><span class="link" ng-click="acceptShareRequest(share_request)">{{ \'accept\' | translate}}</span> | <span class="link" ng-click="declineShareRequest(share_request)">{{ \'decline\' | translate}}</span></td></tr></table></div>');
+}]),angular.module("views/vault_req_deletion.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/vault_req_deletion.html",'<div class="vault_wrapper"><div class="reset_form" ng-show="!pending_deletion">{{ \'req.intro1\' | translate }}<br>{{ \'req.intro2\' | translate }}<br>{{ \'req.intro3\' | translate }}<br><br><b>{{ \'request.deletion.warning\' | translate}}</b><label>{{ \'request.deletion.reason\' | translate }}</label><input type="text" ng-model="reason" class="form-control"> <button class="button button-red" ng-click="requestDeletion()">{{ \'request.deletion.accept\' | translate }}</button> <a class="pull-right button button-geen" ng-href="#/">{{ \'cancel\' | translate}}</a></div><div class="reset_form" ng-show="pending_deletion"><button class="button button-red" ng-click="removeRequestDeletion()">Cancel destruction request</button> <a class="pull-right button button-geen" ng-href="#/">Cancel</a></div></div>')}]),angular.module("views/vaults.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("views/vaults.html",'<div class="vault_wrapper"><div class="vaults" ng-if="!list_selected_vault && !creating_vault"><div class="ui-select-container ui-select-bootstrap vaultlist"><ul><li ng-click="newVault()">+ Create a new vault</li><li ng-repeat="vault in vaults" ng-class="{\'selected\': vault == list_selected_vault }" ng-click="selectVault(vault)"><div><span class="ui-select-choices-row-inner"><div class="ng-binding ng-scope">{{vault.name}} <span class="pull-right" style="color: #ce3702" ng-show="vault.delete_request_pending">{{ \'delete.request.pending\' | translate}}</span></div><small class="ng-binding ng-scope">{{ \'created\' | translate}}: {{vault.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}} | {{ \'last.access\' | translate}}: <span ng-if="vault.last_access > 0">{{vault.last_access * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</span> <span ng-if="vault.last_access === 0">{{\'never\' | translate}}</span></small></span></div></li><li ng-if="vaults.length === 0">{{ \'no.vaults\' | translate}}</li></ul></div></div><div ng-if="creating_vault"><div class="login_form" ng-init="vault_name = \'\'; vault_key=\'\'; ">{{\'new.vault.name\' | translate}}<div><input type="text" ng-model="vault_name" required></div><div>{{ \'new.vault.pass\' | translate}} <input type="password" ng-model="vault_key" required><ng-password-meter password="vault_key" score="vault_key_score"></ng-password-meter></div><div>{{ \'new.vault.passr\' | translate}} <input type="password" ng-model="vault_key2" required></div><div ng-show="error || vault_key_score.score < minimal_value_key_strength" class="error"><ul><li ng-show="error">{{error}}</li><li ng-show="vault_key_score.score < minimal_value_key_strength">{{\'min.vault.key.strength\' | translate:required_score}}</li></ul></div><div><small>{{\'new.vault.sharing_key_notice\' | translate}}</small></div><div class="button_wrapper"><button class="button button-geen" ng-if="!creating_keys" click-disable ng-click="createVault(vault_name, vault_key, vault_key2)" ng-disabled="vault_key_score.score < minimal_value_key_strength || vault_key !== vault_key2 || vault_key === \'\'">{{ \'new.vault.create\' | translate }}</button><div class="button" ng-if="creating_keys"><span><i class="fa fa-spinner fa-spin"></i> {{creating_keys}}</span></div><div class="button button-red" ng-click="clearState()">{{ \'cancel\' | translate}}</div><div class="template-hidden">{{sharing_keys}}</div></div></div></div><div ng-if="list_selected_vault != false"><div class="vaultlist"><ul><li ng-click="clearState()">{{ \'go.back.vaults\' | translate }}</li></ul></div><div class="login_form"><div ng-show="error" class="error"><ul><li>{{error}}</li></ul></div>{{ \'input.vault.password\' | translate}} {{list_selected_vault.name}}<div class="pw-input"><input type="password" ng-model="vault_key" ng-enter="loginToVault(list_selected_vault, vault_key)"> <small class="last_access">{{\'last.access\' | translate}}: <span ng-if="list_selected_vault.last_access > 0">{{list_selected_vault.last_access * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</span> <span ng-if="list_selected_vault.last_access === 0">Never</span></small></div><div class="login_opts"><div><label><input type="checkbox" ng-checked="default_vault" ng-click="toggleDefaultVault()"> {{ \'vault.default\' | translate}}</label></div><div><label><input type="checkbox" ng-checked="remember_vault_password" ng-click="toggleRememberPassword()"> {{ \'vault.auto.login\' | translate}}</label></div><div><label><input type="checkbox" ng-checked="auto_logout_timer" ng-click="toggleAutoLogout()"> {{ \'auto.logout\' | translate}}</label><select ng-model="logout_timer" ng-change="selectLogoutTimer(logout_timer)"><option value="0">Never</option><option value="30">30 minutes</option><option value="60">60 minutes</option><option value="90">90 minutes</option><option value="180">3 hour</option><option value="480">8 hour</option></select></div></div><div class="alert alert-danger" ng-show="vault_tries[list_selected_vault.guid].timeout !== 0" translate="vault.locked" translate-value-tries="{{ vault_tries[list_selected_vault.guid].tries }}" translate-value-time="{{ vault_tries[list_selected_vault.guid].timeout | toHHMMSS }}"></div><button class="button button-geen" ng-click="loginToVault(list_selected_vault, vault_key)" ng-disabled="vault_tries[list_selected_vault.guid].timeout !== 0">{{ \'vault.decrypt\' | translate}}</button> <span ng-click="forgottenPassword = true;" style="margin-top: 10px; padding: 6px 12px" class="link pull-right" ng-show="!forgottenPassword">Forgot password?</span> <button ng-show="forgottenPassword" class="pull-right button button-red" ng-click="requestDeletion(list_selected_vault)"><span ng-show="list_selected_vault.delete_request_pending">{{ \'cancel.request.deletion\' | translate }}</span> <span ng-show="!list_selected_vault.delete_request_pending">{{ \'request.deletion\' | translate }}</span></button></div></div></div>')}]),$(document).ready(function(){function format_date(date){date=new Date(date);var month=date.getMonth(),year=date.getFullYear(),day=date.getDate(),hour=date.getHours(),minutes=date.getMinutes(),seconds=date.getSeconds();return month+=1,month<10&&(month="0"+month),hour<10&&(hour="0"+hour),minutes<10&&(minutes="0"+minutes),seconds<10&&(seconds="0"+seconds),day+"-"+month+"-"+year+" "+hour+":"+minutes+":"+seconds}function acceptDeleteRequest(el,req){confirm(OC.L10N.translate("passman","Are you really sure?\nThis will delete the vault and all credentials in it!"))&&$.post(OC.generateUrl("apps/passman/admin/accept-delete-request"),req,function(){$(el).parent().parent().remove()})}function ignoreDeleteRequest(el,req){$.ajax({url:OC.generateUrl("apps/passman/admin/request-deletion/"+req.vault_guid),type:"DELETE",success:function(){$(el).parent().parent().remove()}})}var Settings=function(baseUrl){this._baseUrl=baseUrl,this._settings=[]};Settings.prototype={load:function(){var deferred=$.Deferred(),self=this;return $.ajax({url:this._baseUrl,method:"GET",async:!1}).done(function(settings){self._settings=settings}).fail(function(){deferred.reject()}),deferred.promise()},setUserKey:function(key,value){var request=$.ajax({url:this._baseUrl+"/"+key+"/"+value,method:"POST"});request.done(function(){$(".msg-passwords").removeClass("msg_error"),$(".msg-passwords").text("")}),request.fail(function(){$(".msg-passwords").addClass("msg_error"),$(".msg-passwords").text(t("passwords","Error while saving field")+" "+key+"!")})},setAdminKey:function(key,value){var request=$.ajax({url:this._baseUrl+"/"+key+"/"+value+"/admin1/admin2",method:"POST"});request.done(function(){$(".msg-passwords").removeClass("msg_error"),$(".msg-passwords").text("")}),request.fail(function(){$(".msg-passwords").addClass("msg_error"),$(".msg-passwords").text(t("passwords","Error while saving field")+" "+key+"!")})},getKey:function(key){return!!this._settings.hasOwnProperty(key)&&this._settings[key]},getAll:function(){return this._settings}};var settings=new Settings(OC.generateUrl("apps/passman/api/v2/settings"));settings.load(),$("#passman_link_sharing_enabled").prop("checked","1"===settings.getKey("link_sharing_enabled").toString().toLowerCase()),$("#passman_sharing_enabled").prop("checked","1"===settings.getKey("user_sharing_enabled").toString().toLowerCase()),$("#passman_check_version").prop("checked","1"===settings.getKey("check_version").toString().toLowerCase()),$("#passman_https_check").prop("checked","1"===settings.getKey("https_check").toString().toLowerCase()),$("#passman_disable_contextmenu").prop("checked","1"===settings.getKey("disable_contextmenu").toString().toLowerCase()),$("#passman_disable_debugger").prop("checked","1"===settings.getKey("disable_debugger").toString().toLowerCase()),$("#vault_key_strength").val(settings.getKey("vault_key_strength")),$("#passman_check_version").change(function(){settings.setAdminKey("check_version",$(this).is(":checked")?1:0)}),$("#passman_https_check").change(function(){settings.setAdminKey("https_check",$(this).is(":checked")?1:0)}),$("#passman_disable_contextmenu").change(function(){settings.setAdminKey("disable_contextmenu",$(this).is(":checked")?1:0)}),$("#passman_disable_debugger").change(function(){settings.setAdminKey("disable_debugger",$(this).is(":checked")?1:0)}),$("#passman_sharing_enabled").change(function(){settings.setAdminKey("user_sharing_enabled",$(this).is(":checked")?1:0)}),$("#passman_link_sharing_enabled").change(function(){settings.setAdminKey("link_sharing_enabled",$(this).is(":checked")?1:0)}),$("#vault_key_strength").change(function(){settings.setAdminKey("vault_key_strength",$(this).val())}),2===$('form[name="passman_settings"]').length&&$('form[name="passman_settings"]')[1].remove();var accountMover={source_account:"",destination_account:""};$(".username-autocomplete").autocomplete({source:OC.generateUrl("apps/passman/admin/search"),minLength:1,select:function(event,ui){accountMover[$(this).attr("id")]=ui.item.value}}),$("#move_credentials").click(function(){var self=this;$("#moveStatus").hide(),$(self).attr("disabled","disabled"),$(self).html('<i class="fa fa-spinner fa-spin"></i> '+OC.L10N.translate("passman","Moving")+"..."),accountMover.source_account&&accountMover.destination_account&&$.post(OC.generateUrl("apps/passman/admin/move"),accountMover,function(data){data.success&&($(self).removeAttr("disabled"),$(self).html("Move"),$("#moveStatus").fadeIn(),setTimeout(function(){$("#moveStatus").fadeOut()},3500))})}),$.get(OC.generateUrl("apps/passman/admin/delete-requests"),function(requests){var table=$("#requests-table tbody");$.each(requests,function(k,request){var accept=$('<span class="link">[Accept]&nbsp;</span>');accept.click(function(){var _self=this;acceptDeleteRequest(_self,request)});var ignore=$('<span class="link">[Ignore]</span>');ignore.click(function(){var _self=this;ignoreDeleteRequest(_self,request)});var cols=$("<td>"+request.id+"</td><td>"+request.displayName+"</td><td>"+request.reason+"</td><td>"+format_date(1e3*request.created)+"</td>"),actions=$("<td></td>").append(accept).append(ignore);table.append($("<tr></tr>").append(cols).append(actions))})}),$("#passman-tabs").tabs()}); \ No newline at end of file
diff --git a/l10n/ast.js b/l10n/ast.js
index ad17b614..8efa3068 100644
--- a/l10n/ast.js
+++ b/l10n/ast.js
@@ -2,18 +2,23 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Contraseñes",
+ "Generating sharing keys ( %s / 2)" : "Xenerando claves de compartición ( %s / 2)",
"Passwords do not match" : "Les contraseñes nun concasen",
"General" : "Xeneral",
"Error loading file" : "Fallu cargando'l ficheru",
+ "An error occurred during decryption" : "Asocedió un fallu nel descifráu",
"Credential created!" : "¡Creose la credencial!",
"Invalid QR code" : "Códigu QR non válidu",
"Decrypting credentials" : "Descifrando credenciales",
"Done" : "Fecho",
- "Credential has no label, skipping" : "La credencial nun tien etiquetes, saltando",
"Adding {{credential}}" : "Amestando {{credential}}",
"Added {{credential}}" : "Amestóse {{credential}}",
"Skip first row" : "Saltar primer filera",
+ "The first 5 lines of the CSV are shown." : "Amuésense les 5 primeres llinies del CVS.",
+ "General settings" : "Axustes xenerales",
"Saved!" : "¡Guardóse!",
+ "Poor" : "Probe",
+ "Weak" : "Feble",
"Toggle visibility" : "Alternar visibilidá",
"Copy to clipboard" : "Copiar al cartafueyu",
"Copied to clipboard!" : "¡Copióse al cartafueyu!",
@@ -23,19 +28,24 @@ OC.L10N.register(
"Text" : "Testu",
"File" : "Ficheru",
"Add" : "Amestar",
+ "Current OTP settings" : "Axustes OTP actuales",
+ "Expiration date" : "Data de caducidá",
+ "No expiration date set" : "Nun s'afitó data de caducidá",
+ "Renew interval" : "Intervalu de renovación",
"Day(s)" : "Día(es)",
+ "Week(s)" : "Selmana(es)",
"Month(s)" : "Mes(es)",
"Year(s)" : "Añu(os)",
"Password length" : "Llargor de contraseña",
"Minimum amount of digits" : "Cantidá mínima de díxitos",
"Use lowercase letters" : "Usar letres minúscules",
"Use special characters" : "Usar caráuteres especiales",
+ "Change" : "Camudar",
"Processing" : "Procesando",
"Total progress" : "Progresu total",
"About Passman" : "Tocante a Passman",
"Version" : "Versión",
"Donate to support development" : "Dona pa sofitar el desendolcu",
- "Save your passwords with 1 click!" : "¡Guarda les tos contraseñes con 1 clic!",
"This process is irreversible" : "Esti procesu ye irreversible",
"Private Key" : "Clave privada",
"Public key" : "Clave pública",
@@ -48,6 +58,7 @@ OC.L10N.register(
"Result" : "Resultáu",
"A total of {{scan_result}} weak credentials were found." : "Alcontráronse un total de {{scan_result}} credenciales febles",
"Action" : "Aición",
+ "Uploading" : "Xubiendo",
"User" : "Usuariu",
"Files" : "Ficheros",
"Revisions" : "Revisiones",
@@ -89,6 +100,7 @@ OC.L10N.register(
"Logout" : "Zarrar sesión",
"Donate" : "Donar",
"Someone has shared a credential with you." : "Daquién compartió una credencial contigo.",
+ "Loading…" : "Cargando...",
"Error while saving field" : "Fallu entrín se guardaba'l campu",
"A Passman item has expired" : "Caducó un elementu de Passman",
"A Passman item has been shared" : "Compartióse un elementu de Passman",
@@ -117,6 +129,7 @@ OC.L10N.register(
"Credentials moved!" : "¡Moviéronse les credenciales!",
"Reason" : "Razón",
"Connection to server lost" : "Perdióse la conexón col sirvidor",
+ "Problem loading page, reloading in 5 seconds" : "Problema cargando la páxina, recargando en 5 segundos",
"Saving..." : "Guardando...",
"Dismiss" : "Escartar",
"seconds ago" : "hai segundos"
diff --git a/l10n/ast.json b/l10n/ast.json
index b8f454ba..a9877207 100644
--- a/l10n/ast.json
+++ b/l10n/ast.json
@@ -1,17 +1,22 @@
{ "translations": {
"Passwords" : "Contraseñes",
+ "Generating sharing keys ( %s / 2)" : "Xenerando claves de compartición ( %s / 2)",
"Passwords do not match" : "Les contraseñes nun concasen",
"General" : "Xeneral",
"Error loading file" : "Fallu cargando'l ficheru",
+ "An error occurred during decryption" : "Asocedió un fallu nel descifráu",
"Credential created!" : "¡Creose la credencial!",
"Invalid QR code" : "Códigu QR non válidu",
"Decrypting credentials" : "Descifrando credenciales",
"Done" : "Fecho",
- "Credential has no label, skipping" : "La credencial nun tien etiquetes, saltando",
"Adding {{credential}}" : "Amestando {{credential}}",
"Added {{credential}}" : "Amestóse {{credential}}",
"Skip first row" : "Saltar primer filera",
+ "The first 5 lines of the CSV are shown." : "Amuésense les 5 primeres llinies del CVS.",
+ "General settings" : "Axustes xenerales",
"Saved!" : "¡Guardóse!",
+ "Poor" : "Probe",
+ "Weak" : "Feble",
"Toggle visibility" : "Alternar visibilidá",
"Copy to clipboard" : "Copiar al cartafueyu",
"Copied to clipboard!" : "¡Copióse al cartafueyu!",
@@ -21,19 +26,24 @@
"Text" : "Testu",
"File" : "Ficheru",
"Add" : "Amestar",
+ "Current OTP settings" : "Axustes OTP actuales",
+ "Expiration date" : "Data de caducidá",
+ "No expiration date set" : "Nun s'afitó data de caducidá",
+ "Renew interval" : "Intervalu de renovación",
"Day(s)" : "Día(es)",
+ "Week(s)" : "Selmana(es)",
"Month(s)" : "Mes(es)",
"Year(s)" : "Añu(os)",
"Password length" : "Llargor de contraseña",
"Minimum amount of digits" : "Cantidá mínima de díxitos",
"Use lowercase letters" : "Usar letres minúscules",
"Use special characters" : "Usar caráuteres especiales",
+ "Change" : "Camudar",
"Processing" : "Procesando",
"Total progress" : "Progresu total",
"About Passman" : "Tocante a Passman",
"Version" : "Versión",
"Donate to support development" : "Dona pa sofitar el desendolcu",
- "Save your passwords with 1 click!" : "¡Guarda les tos contraseñes con 1 clic!",
"This process is irreversible" : "Esti procesu ye irreversible",
"Private Key" : "Clave privada",
"Public key" : "Clave pública",
@@ -46,6 +56,7 @@
"Result" : "Resultáu",
"A total of {{scan_result}} weak credentials were found." : "Alcontráronse un total de {{scan_result}} credenciales febles",
"Action" : "Aición",
+ "Uploading" : "Xubiendo",
"User" : "Usuariu",
"Files" : "Ficheros",
"Revisions" : "Revisiones",
@@ -87,6 +98,7 @@
"Logout" : "Zarrar sesión",
"Donate" : "Donar",
"Someone has shared a credential with you." : "Daquién compartió una credencial contigo.",
+ "Loading…" : "Cargando...",
"Error while saving field" : "Fallu entrín se guardaba'l campu",
"A Passman item has expired" : "Caducó un elementu de Passman",
"A Passman item has been shared" : "Compartióse un elementu de Passman",
@@ -115,6 +127,7 @@
"Credentials moved!" : "¡Moviéronse les credenciales!",
"Reason" : "Razón",
"Connection to server lost" : "Perdióse la conexón col sirvidor",
+ "Problem loading page, reloading in 5 seconds" : "Problema cargando la páxina, recargando en 5 segundos",
"Saving..." : "Guardando...",
"Dismiss" : "Escartar",
"seconds ago" : "hai segundos"
diff --git a/l10n/ca.js b/l10n/ca.js
index 10ac3466..dfa90630 100644
--- a/l10n/ca.js
+++ b/l10n/ca.js
@@ -2,12 +2,14 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Contrasenyes",
- "Generating sharing keys ( %step / 2)" : "Generant les claus compartides ( %spas / 2)",
"Incorrect vault password!" : "Contrasenya de la cripta incorrecta!",
"Passwords do not match" : "Password did not match",
"General" : "General",
"Custom Fields" : "Camps personalitzats",
+ "Please fill in a label." : "Si us plau, omple l'etiqueta!",
+ "Please fill in a value." : "Si us plau, omple el valor!",
"Error loading file" : "Error al carregar l'arxiu",
+ "An error occurred during decryption" : "S'ha produït un error durant la desencriptació",
"Credential created!" : "Credencials creades!",
"Credential deleted" : "Credencial eliminada",
"Credential updated" : "Credencial actualitzada",
@@ -17,7 +19,7 @@ OC.L10N.register(
"Starting export" : "Començant la exportació",
"Decrypting credentials" : "Desencriptant les credencials",
"Done" : "Fet",
- "Credential has no label, skipping" : "La credencial no té etiqueta, ometent",
+ "Proceed with the following steps to import your file" : "Seguiu els passos següents per importar el fitxer",
"Adding {{credential}}" : "Afegint {{credential}}",
"Added {{credential}}" : "Afegida {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Ometent credencial, mana etiqueta a la línia {{line}}",
@@ -28,20 +30,27 @@ OC.L10N.register(
"Parsed {{rows}} lines from CSV file" : "Processades {{rows}} línies del fitxer CSV",
"Skip first row" : "Salta la primera fila",
"You need to assign the label field before you can start the import." : "Has d'assignar una etiqueta abans de començar la importació.",
+ "The first 5 lines of the CSV are shown." : "Es mostren les 5 primeres línies del CSV.",
"Assign the proper fields to each column." : "Assigna els camps que pertoquin a cada columna.",
+ "Example of imported credential" : "Exemple de credencial importada",
"Missing an importer? Try it with the generic CSV importer." : "Trobes a faltar un importador? Prova-ho amb l'importador genèric de CSV.",
"Go back to importers." : "Torna als importadors.",
"Revision deleted" : "Revisió detectada",
"Revision restored" : "Revisió restaurada",
+ "Save in Passman" : "Guarda al Passman",
"Settings saved" : "Paràmetres desats",
"General settings" : "Paràmetres generals",
+ "Password audit" : "Auditoria de contrasenya",
"Password settings" : "Paràmetres de la contrasenya",
"Import credentials" : "Importar credencials",
"Export credentials" : "Exportar credencials",
"Sharing" : "Compartint",
- "Your old password is incorrect!" : "La teva contrasenya antiga és incorrecta",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Esteu segur que voleu sortir? Això destruirà totes les vostres credencials",
+ "New password does not match!" : "La nova contrasenya no coincideix.",
+ "Please log in with your new vault password" : "Inicieu sessió amb la vostra contrasenya nova",
"Share with users and groups" : "Comparteix amb usuaris i grups",
"Share link" : "Comparteix link",
+ "Are you sure you want to leave? This will corrupt this credential" : "Esteu segur que voleu sortir? Això corrompre aquesta credencial",
"Credential unshared" : "Credencial descompartida",
"Credential shared" : "Credencial compartida",
"Saved!" : "Desat!",
@@ -58,6 +67,7 @@ OC.L10N.register(
"Complete" : "Complet",
"Username" : "Nom d'usuari",
"Repeat password" : "Repeteix la contrasenya",
+ "Add tag" : "Afegeix etiqueta",
"Field label" : "Etiqueta del camp",
"Field value" : "Valor del camp",
"Choose a file" : "Escollir un arxiu",
@@ -75,6 +85,8 @@ OC.L10N.register(
"Current OTP settings" : "Paràmetres OTP actuals",
"Issuer" : "Emissor",
"Secret" : "Secret",
+ "Expiration date" : "Data de venciment",
+ "No expiration date set" : "No s'ha establert cap data de caducitat",
"Renew interval" : "Renovar interval",
"Disabled" : "Inhabilitat",
"Day(s)" : "Dia(es)",
@@ -83,11 +95,13 @@ OC.L10N.register(
"Year(s)" : "Any(s)",
"Password generation settings" : "Paràmetres de generació de contrasenya",
"Password length" : "Longitud de la contrasenya",
+ "Minimum amount of digits" : "Quantitat mínima de dígits",
"Use uppercase letters" : "Utilitzeu majúscules",
"Use lowercase letters" : "Utilitzeu minúscules",
"Use numbers" : "Utilitza números",
"Use special characters" : "Utilitzeu caràcters especials",
"Avoid ambiguous characters" : "Evita caràcters ambigus",
+ "Require every character type" : "Requereix tipus de caràcter",
"Export type" : "Tipus d'exportaci",
"Export" : "Exporta",
"Enter vault password to confirm export." : "Entra la contrasenya de la cripta per confirmar l'exportació",
@@ -97,13 +111,21 @@ OC.L10N.register(
"Change vault key" : "Canvia la clau de la cripta",
"Old vault password" : "Contrasenya vella de la cripta",
"New vault password" : "Contrasenya nova de la cripta",
+ "Repeat new vault password" : "Repetiu la contrasenya",
"Please wait your vault is being updated, do not leave this page." : "Espera mentre s'actualitza la teva cripta, no deixis aquesta pàgina.",
"Processing" : "Processant",
"Total progress" : "Progrés total",
"About Passman" : "Sobre Passman",
"Version" : "Versió",
+ "Donate to support development" : "Donar suport al desenvolupament",
+ "Bookmarklet" : "Llibreria",
+ "Drag below button to your bookmark toolbar." : "Arrossegueu el botó a sota a la barra d'eines d'interès.",
"Delete vault" : "Esborra la cripta",
"Vault password" : "Contrasenya de la cripta",
+ "This process is irreversible" : "Aquesta acció és irreversible",
+ "Delete my precious passwords" : "Suprimeix les meves contrasenyes",
+ "Deleting {{password}}…" : "Esborrant {{password}}",
+ "Yes, delete my precious passwords" : "si suprimeix les meves contrasenyes",
"Import type" : "Tipus d'importació",
"Import" : "Importa",
"Read progress" : "Progrés de lectura",
@@ -114,28 +136,57 @@ OC.L10N.register(
"Save keys" : "Guarda claus",
"Generate sharing keys" : "Genera claus compartides",
"Generating sharing keys" : "Generant claus compartides",
+ "Minimum password stength" : "Longitud mínima de la contrasenya",
+ "Start scan" : "Comença l'escaneig",
+ "Result" : "Resultat",
+ "A total of {{scan_result}} weak credentials were found." : "S'han trobat un total de {{scan_result}} credencials febles.",
"Score" : "Puntuació",
"Action" : "Acció",
+ "Search users…" : "Cerca usuaris...",
"Missing users? Only users that have vaults are shown." : "Trobes a faltar usuaris? Només es mostren els usuaris que tenen criptes.",
+ "Cyphering" : "xifratge",
"Uploading" : "Pujant",
"User" : "Usuari",
+ "Crypto time" : "Cripto el temps",
"Read" : "Llegir",
"Write" : "Escriure",
"Files" : "Arxius",
"Revisions" : "Revisions",
"Pending" : "Pendent",
+ "Enable link sharing" : "Activa l'intercanvi d'enllaços",
"Share until date" : "Comparteix fins al dia",
+ "Expire after views" : "Caduca després de les vistes",
"Show files" : "Mostrar arxius",
"Details" : "Detalls",
"Hide details" : "Amaga detalls",
+ "Password score" : "Puntuació contrasenya",
+ "Cracking times" : "Temps de esquerdes",
"100 / hour" : "100 / hora",
+ "Throttled online attack" : "Atac en línia",
"10 / second" : "10 / segon",
+ "Unthrottled online attack" : "Atac en línia desmesurat",
"10k / second" : "10k / segon",
+ "Offline attack, slow hash, many cores" : "Atac fora de línia, hash lent, molts nuclis",
"10B / second" : "10B / segon",
+ "Offline attack, fast hash, many cores" : "Atac fora de línia, hash ràpid, molts nuclis",
+ "Match sequence" : "Seqüència de coincidències",
+ "See match sequence" : "Vegeu la seqüència de partit",
+ "Pattern" : "Patró",
+ "Matched word" : "Paraula combinada",
"Dictionary name" : "Nom del directori",
+ "Rank" : "Rang",
+ "Reversed" : "Invertit",
+ "Guesses" : "Guies",
+ "Base guesses" : "Guies base",
+ "Uppercase variations" : "Variacions en majúscules",
+ "l33t-variations" : "l33t- variacions",
+ "Showing revisions of" : "Es mostren les revisions de",
+ "Revision of" : "Revisió de",
"by" : "per",
"No revisions found." : "No s'han trobat revisions",
"Label" : "Etiqueta",
+ "Restore revision" : "Restaura aquesta revisió",
+ "Delete revision" : "Suprimeix la revisió",
"Edit credential" : "Editar credencial",
"Create new credential" : "Crear nova credencial",
"Save" : "Guarda",
@@ -143,53 +194,123 @@ OC.L10N.register(
"Settings" : "Paràmetres",
"Share credential {{credential}}" : "Comparteix credencial {{credential}}",
"Unshare" : "No compartit",
+ "Showing deleted since" : "S'està mostrant des de llavors",
+ "Beginning" : "Inici",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrant {{number_filtered}} de {{credential_number}} credencials",
+ "Search for credential…" : "Cerqueu credencials ...",
"Account" : "Compte",
"Password" : "Contrasenya",
"OTP" : "OTP",
"E-mail" : "E-mail",
"URL" : "URL",
"Notes" : "Notes",
+ "Expiry time" : "Temps de venciment",
"Changed" : "Canviat",
"Created" : "Creat",
"Edit" : "Edita",
"Delete" : "Esborra",
"Share" : "Comparteix",
+ "Recover" : "Recuperar",
"Destroy" : "Destrueix",
+ "Use regex" : "Utilitza regex",
+ "You have incoming share requests." : "Tens sol·licituds d'accions entrants.",
+ "If you want to put the credential in another vault," : "Si voleu posar la credencial en una altra volta,",
"Permissions" : "Permisos",
"Received from" : "Rebut de",
"Date" : "Data",
"Accept" : "Accepta",
"Decline" : "Rebutja",
+ "You have {{session_time}} left before logout." : "Heu sortit {{session_time}} abans de tancar la sessió.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "La teva cripta estarà tancada {{time}} perquè hi ha hagut {{tries}} intents fallits d'accés!",
"Last accessed" : "Últim accés",
"Never" : "Mai",
"No vaults found, why not create one?" : "No s'han trobat criptes, perquè no crear-ne una?",
+ "Password strength must be at least: {{strength}}" : "La força de la contrasenya ha de ser com a mínim: {{strength}}",
"Please give your new vault a name." : "Si us plau, dona un nom a la teva cripta nova.",
"Repeat vault password" : "Repeteix la contrasenya de la cripta",
"Create vault" : "Crea una cripta",
"Go back to vaults" : "Torna les criptes",
+ "Please input the password for" : "Introduïu la contrasenya",
+ "Set this vault as the default." : "Estableix aquesta volta com a predeterminada.",
"Log into this vault automatically." : "Entra a aquesta cripta automàticament.",
+ "Log out of this vault automatically after: " : "Surt d'aquesta cripta automàticament després de:",
"Decrypt vault" : "Desxifra la cripta",
+ "Seems you lost the vault password and you're unable to log in." : "Sembla que has perdut la contrasenya de la cripta i no pots entrar-hi.",
"If you want this vault to be removed you can request that here." : "Si vols esborrar aquesta cripta pots sol·licitar-ho aquí.",
+ "An admin then accepts or declines the request" : "Un administrador accepta o rebutja la sol·licitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Quan un administrador destrueixi aquesta volta, es perdran totes les credencials",
+ "Reason for requesting deletion (optional):" : "Motiu de sol·licitar l'eliminació (opcional):",
"Request vault destruction" : "Demana la destrucció de la cripta",
"Yes, request an admin to destroy this vault" : "Si, demana a un administrador que destrueixi aquesta cripta",
+ "Cancel destruction request" : "Cancel·la la sol·licitud de destrucció",
"Vault destruction requested" : "S'ha fet la petició per destruir la cripta",
- "Logged in to {{vault_name}}" : "Oberta la {{vault_name}}",
+ "Request removed" : "S'ha eliminat la sol·licitud",
+ "Destruction request pending" : "Sol·licitud de destrucció pendent",
+ "Warning! Adding credentials over HTTP is insecure!" : "Avís! L'addició de credencials a través d'HTTP és insegura.",
"Change vault" : "Canvia la cripta",
"Deleted credentials" : "Credencials esborrades",
"Logout" : "Sortir",
"Donate" : "Donar",
+ "Someone has shared a credential with you." : "Algú ha compartit una credencial amb tu.",
+ "Click here to request it" : "Feu clic aquí per sol·licitar-lo",
+ "Loading…" : "Carregant...",
+ "Awwhh… credential not found. Maybe it expired" : "No s'ha trobat cap credencial ... Potser ha caducat",
+ "Error while saving field" : "S'ha produït un error en desar el camp",
+ "A Passman item has been created, modified or deleted" : "S'ha creat, modificat o esborrat un element Passman",
+ "A Passman item has expired" : "Un article Passman ha caducat",
+ "A Passman item has been shared" : "S'ha compartit un element Passman",
+ "A Passman item has been renamed" : "S'ha canviat el nom d'un element Passman",
+ "%1$s has been created by %2$s" : "%1$sha estat creat per%2$s",
"You created %1$s" : "Heu creat %1$s",
+ "%1$s has been updated by %2$s" : "%1$sha estat actualitzat per%2$s",
+ "You updated %1$s" : "Has actualitzat%1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$sS'ha revisat%1$s a la revisió de%3$s",
+ "You reverted %1$s back to the revision of %3$s" : "torna a la %1$sevisió de%3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$sha tornat a nomenar%1$s%2$s",
+ "You renamed %1$s to %2$s" : "Has canviat de nom%1$s%2$s",
+ "%1$s has been deleted by %2$s" : "%1$sha estat eliminat per%2$s",
"You deleted %1$s" : "Has esborrat %1$s",
+ "%1$s has been recovered by %2$s" : "%1$sha estat recuperat per%2$s",
+ "You recovered %1$s" : "Has recuperat%1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$ss'ha eliminat de manera permanent%2$s",
"You permanently deleted %1$s" : "Heu eliminat permanentment %1$s",
+ "The password of %1$s has expired, renew it now." : "La contrasenya de %1$s ha caducat, renovada ara.",
+ "%1$s has been shared with %2$s" : "%1$ss'ha compartit amb%2$s",
+ "You received a share request for %1$s from %2$s" : "Heu rebut una sol·licitud d'acció %1$s des de%2$s",
+ "%s has been shared with a link" : "%ss'ha compartit amb un enllaç",
+ "Your credential \"%s\" expired, click here to update the credential." : "La seva credencial %scaducà, feu clic aquí per actualitzar la credencial.",
"Remind me later" : "Recorda'm-ho més tard",
"Ignore" : "Ignora",
+ "%s shared \"%s\" with you. Click here to accept" : "%s\"%s\" compartit amb vostè. Feu clic aquí per acceptar",
+ "%s has declined your share request for \"%s\"." : "%sha rebutjat la vostra sol·licitud de participació per \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%sha acceptat la vostra sol·licitud d'acció per \"%s\".",
+ "Passman" : "Passman",
"Unable to get version info" : "no s'ha pogut obtenir informació de la versió",
+ "Passman Settings" : "Passman Settings",
+ "GitHub version:" : "versió de GitHub: ",
+ "A newer version of Passman is available" : "Hi ha disponible una versió més recent de Passman",
+ "Password sharing" : "Compartició de contrasenyes",
+ "Credential mover" : "Moviment de credencials",
"Vault destruction requests" : "Peticions de destrucció de la cripta",
+ "Check for new versions" : "Comproveu si hi ha noves versions",
+ "Enable HTTPS check" : "Activa la comprovació HTTPS",
+ "Disable context menu" : "Desactiva el menú contextual",
+ "Disable JavaScript debugger" : "Desactiva el depurador de JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permet als usuaris d'aquest servidor compartir contrasenyes amb un enllaç",
+ "Allow users on this server to share passwords with other users" : "Permet als usuaris d'aquest servidor compartir contrasenyes amb altres usuaris",
+ "Move credentials from one account to another" : "Mou les credencials d'un compte a un altre",
+ "Source account" : "Compte d'origen",
+ "Destination account" : "Compte de destinació",
+ "Credentials moved!" : "S'han mogut les credencials",
"Requests to destroy vault" : "Peticions per destruir la cripta",
+ "Request ID" : "Sol·licitud ID: ",
+ "Requested by" : "Sol · licitada per",
+ "Reason" : "Raó",
+ "Click here to request\n\t\t\t\t\tit" : "Feu clic aquí per sol·licitar-ho\n\t\t\t\t\t",
+ "Connection to server lost" : "S'ha perdut la connexió amb el servidor",
+ "Problem loading page, reloading in 5 seconds" : "Problemes carregant la pagina, recarregant en 5 segons",
"Saving..." : "Desant...",
"Dismiss" : "Rebutja",
- "seconds ago" : "Segons enrere"
+ "seconds ago" : "fa uns segons"
},
"nplurals=2; plural=(n != 1);");
diff --git a/l10n/ca.json b/l10n/ca.json
index 20ceac82..f9f0b344 100644
--- a/l10n/ca.json
+++ b/l10n/ca.json
@@ -1,11 +1,13 @@
{ "translations": {
"Passwords" : "Contrasenyes",
- "Generating sharing keys ( %step / 2)" : "Generant les claus compartides ( %spas / 2)",
"Incorrect vault password!" : "Contrasenya de la cripta incorrecta!",
"Passwords do not match" : "Password did not match",
"General" : "General",
"Custom Fields" : "Camps personalitzats",
+ "Please fill in a label." : "Si us plau, omple l'etiqueta!",
+ "Please fill in a value." : "Si us plau, omple el valor!",
"Error loading file" : "Error al carregar l'arxiu",
+ "An error occurred during decryption" : "S'ha produït un error durant la desencriptació",
"Credential created!" : "Credencials creades!",
"Credential deleted" : "Credencial eliminada",
"Credential updated" : "Credencial actualitzada",
@@ -15,7 +17,7 @@
"Starting export" : "Començant la exportació",
"Decrypting credentials" : "Desencriptant les credencials",
"Done" : "Fet",
- "Credential has no label, skipping" : "La credencial no té etiqueta, ometent",
+ "Proceed with the following steps to import your file" : "Seguiu els passos següents per importar el fitxer",
"Adding {{credential}}" : "Afegint {{credential}}",
"Added {{credential}}" : "Afegida {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Ometent credencial, mana etiqueta a la línia {{line}}",
@@ -26,20 +28,27 @@
"Parsed {{rows}} lines from CSV file" : "Processades {{rows}} línies del fitxer CSV",
"Skip first row" : "Salta la primera fila",
"You need to assign the label field before you can start the import." : "Has d'assignar una etiqueta abans de començar la importació.",
+ "The first 5 lines of the CSV are shown." : "Es mostren les 5 primeres línies del CSV.",
"Assign the proper fields to each column." : "Assigna els camps que pertoquin a cada columna.",
+ "Example of imported credential" : "Exemple de credencial importada",
"Missing an importer? Try it with the generic CSV importer." : "Trobes a faltar un importador? Prova-ho amb l'importador genèric de CSV.",
"Go back to importers." : "Torna als importadors.",
"Revision deleted" : "Revisió detectada",
"Revision restored" : "Revisió restaurada",
+ "Save in Passman" : "Guarda al Passman",
"Settings saved" : "Paràmetres desats",
"General settings" : "Paràmetres generals",
+ "Password audit" : "Auditoria de contrasenya",
"Password settings" : "Paràmetres de la contrasenya",
"Import credentials" : "Importar credencials",
"Export credentials" : "Exportar credencials",
"Sharing" : "Compartint",
- "Your old password is incorrect!" : "La teva contrasenya antiga és incorrecta",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Esteu segur que voleu sortir? Això destruirà totes les vostres credencials",
+ "New password does not match!" : "La nova contrasenya no coincideix.",
+ "Please log in with your new vault password" : "Inicieu sessió amb la vostra contrasenya nova",
"Share with users and groups" : "Comparteix amb usuaris i grups",
"Share link" : "Comparteix link",
+ "Are you sure you want to leave? This will corrupt this credential" : "Esteu segur que voleu sortir? Això corrompre aquesta credencial",
"Credential unshared" : "Credencial descompartida",
"Credential shared" : "Credencial compartida",
"Saved!" : "Desat!",
@@ -56,6 +65,7 @@
"Complete" : "Complet",
"Username" : "Nom d'usuari",
"Repeat password" : "Repeteix la contrasenya",
+ "Add tag" : "Afegeix etiqueta",
"Field label" : "Etiqueta del camp",
"Field value" : "Valor del camp",
"Choose a file" : "Escollir un arxiu",
@@ -73,6 +83,8 @@
"Current OTP settings" : "Paràmetres OTP actuals",
"Issuer" : "Emissor",
"Secret" : "Secret",
+ "Expiration date" : "Data de venciment",
+ "No expiration date set" : "No s'ha establert cap data de caducitat",
"Renew interval" : "Renovar interval",
"Disabled" : "Inhabilitat",
"Day(s)" : "Dia(es)",
@@ -81,11 +93,13 @@
"Year(s)" : "Any(s)",
"Password generation settings" : "Paràmetres de generació de contrasenya",
"Password length" : "Longitud de la contrasenya",
+ "Minimum amount of digits" : "Quantitat mínima de dígits",
"Use uppercase letters" : "Utilitzeu majúscules",
"Use lowercase letters" : "Utilitzeu minúscules",
"Use numbers" : "Utilitza números",
"Use special characters" : "Utilitzeu caràcters especials",
"Avoid ambiguous characters" : "Evita caràcters ambigus",
+ "Require every character type" : "Requereix tipus de caràcter",
"Export type" : "Tipus d'exportaci",
"Export" : "Exporta",
"Enter vault password to confirm export." : "Entra la contrasenya de la cripta per confirmar l'exportació",
@@ -95,13 +109,21 @@
"Change vault key" : "Canvia la clau de la cripta",
"Old vault password" : "Contrasenya vella de la cripta",
"New vault password" : "Contrasenya nova de la cripta",
+ "Repeat new vault password" : "Repetiu la contrasenya",
"Please wait your vault is being updated, do not leave this page." : "Espera mentre s'actualitza la teva cripta, no deixis aquesta pàgina.",
"Processing" : "Processant",
"Total progress" : "Progrés total",
"About Passman" : "Sobre Passman",
"Version" : "Versió",
+ "Donate to support development" : "Donar suport al desenvolupament",
+ "Bookmarklet" : "Llibreria",
+ "Drag below button to your bookmark toolbar." : "Arrossegueu el botó a sota a la barra d'eines d'interès.",
"Delete vault" : "Esborra la cripta",
"Vault password" : "Contrasenya de la cripta",
+ "This process is irreversible" : "Aquesta acció és irreversible",
+ "Delete my precious passwords" : "Suprimeix les meves contrasenyes",
+ "Deleting {{password}}…" : "Esborrant {{password}}",
+ "Yes, delete my precious passwords" : "si suprimeix les meves contrasenyes",
"Import type" : "Tipus d'importació",
"Import" : "Importa",
"Read progress" : "Progrés de lectura",
@@ -112,28 +134,57 @@
"Save keys" : "Guarda claus",
"Generate sharing keys" : "Genera claus compartides",
"Generating sharing keys" : "Generant claus compartides",
+ "Minimum password stength" : "Longitud mínima de la contrasenya",
+ "Start scan" : "Comença l'escaneig",
+ "Result" : "Resultat",
+ "A total of {{scan_result}} weak credentials were found." : "S'han trobat un total de {{scan_result}} credencials febles.",
"Score" : "Puntuació",
"Action" : "Acció",
+ "Search users…" : "Cerca usuaris...",
"Missing users? Only users that have vaults are shown." : "Trobes a faltar usuaris? Només es mostren els usuaris que tenen criptes.",
+ "Cyphering" : "xifratge",
"Uploading" : "Pujant",
"User" : "Usuari",
+ "Crypto time" : "Cripto el temps",
"Read" : "Llegir",
"Write" : "Escriure",
"Files" : "Arxius",
"Revisions" : "Revisions",
"Pending" : "Pendent",
+ "Enable link sharing" : "Activa l'intercanvi d'enllaços",
"Share until date" : "Comparteix fins al dia",
+ "Expire after views" : "Caduca després de les vistes",
"Show files" : "Mostrar arxius",
"Details" : "Detalls",
"Hide details" : "Amaga detalls",
+ "Password score" : "Puntuació contrasenya",
+ "Cracking times" : "Temps de esquerdes",
"100 / hour" : "100 / hora",
+ "Throttled online attack" : "Atac en línia",
"10 / second" : "10 / segon",
+ "Unthrottled online attack" : "Atac en línia desmesurat",
"10k / second" : "10k / segon",
+ "Offline attack, slow hash, many cores" : "Atac fora de línia, hash lent, molts nuclis",
"10B / second" : "10B / segon",
+ "Offline attack, fast hash, many cores" : "Atac fora de línia, hash ràpid, molts nuclis",
+ "Match sequence" : "Seqüència de coincidències",
+ "See match sequence" : "Vegeu la seqüència de partit",
+ "Pattern" : "Patró",
+ "Matched word" : "Paraula combinada",
"Dictionary name" : "Nom del directori",
+ "Rank" : "Rang",
+ "Reversed" : "Invertit",
+ "Guesses" : "Guies",
+ "Base guesses" : "Guies base",
+ "Uppercase variations" : "Variacions en majúscules",
+ "l33t-variations" : "l33t- variacions",
+ "Showing revisions of" : "Es mostren les revisions de",
+ "Revision of" : "Revisió de",
"by" : "per",
"No revisions found." : "No s'han trobat revisions",
"Label" : "Etiqueta",
+ "Restore revision" : "Restaura aquesta revisió",
+ "Delete revision" : "Suprimeix la revisió",
"Edit credential" : "Editar credencial",
"Create new credential" : "Crear nova credencial",
"Save" : "Guarda",
@@ -141,53 +192,123 @@
"Settings" : "Paràmetres",
"Share credential {{credential}}" : "Comparteix credencial {{credential}}",
"Unshare" : "No compartit",
+ "Showing deleted since" : "S'està mostrant des de llavors",
+ "Beginning" : "Inici",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrant {{number_filtered}} de {{credential_number}} credencials",
+ "Search for credential…" : "Cerqueu credencials ...",
"Account" : "Compte",
"Password" : "Contrasenya",
"OTP" : "OTP",
"E-mail" : "E-mail",
"URL" : "URL",
"Notes" : "Notes",
+ "Expiry time" : "Temps de venciment",
"Changed" : "Canviat",
"Created" : "Creat",
"Edit" : "Edita",
"Delete" : "Esborra",
"Share" : "Comparteix",
+ "Recover" : "Recuperar",
"Destroy" : "Destrueix",
+ "Use regex" : "Utilitza regex",
+ "You have incoming share requests." : "Tens sol·licituds d'accions entrants.",
+ "If you want to put the credential in another vault," : "Si voleu posar la credencial en una altra volta,",
"Permissions" : "Permisos",
"Received from" : "Rebut de",
"Date" : "Data",
"Accept" : "Accepta",
"Decline" : "Rebutja",
+ "You have {{session_time}} left before logout." : "Heu sortit {{session_time}} abans de tancar la sessió.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "La teva cripta estarà tancada {{time}} perquè hi ha hagut {{tries}} intents fallits d'accés!",
"Last accessed" : "Últim accés",
"Never" : "Mai",
"No vaults found, why not create one?" : "No s'han trobat criptes, perquè no crear-ne una?",
+ "Password strength must be at least: {{strength}}" : "La força de la contrasenya ha de ser com a mínim: {{strength}}",
"Please give your new vault a name." : "Si us plau, dona un nom a la teva cripta nova.",
"Repeat vault password" : "Repeteix la contrasenya de la cripta",
"Create vault" : "Crea una cripta",
"Go back to vaults" : "Torna les criptes",
+ "Please input the password for" : "Introduïu la contrasenya",
+ "Set this vault as the default." : "Estableix aquesta volta com a predeterminada.",
"Log into this vault automatically." : "Entra a aquesta cripta automàticament.",
+ "Log out of this vault automatically after: " : "Surt d'aquesta cripta automàticament després de:",
"Decrypt vault" : "Desxifra la cripta",
+ "Seems you lost the vault password and you're unable to log in." : "Sembla que has perdut la contrasenya de la cripta i no pots entrar-hi.",
"If you want this vault to be removed you can request that here." : "Si vols esborrar aquesta cripta pots sol·licitar-ho aquí.",
+ "An admin then accepts or declines the request" : "Un administrador accepta o rebutja la sol·licitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Quan un administrador destrueixi aquesta volta, es perdran totes les credencials",
+ "Reason for requesting deletion (optional):" : "Motiu de sol·licitar l'eliminació (opcional):",
"Request vault destruction" : "Demana la destrucció de la cripta",
"Yes, request an admin to destroy this vault" : "Si, demana a un administrador que destrueixi aquesta cripta",
+ "Cancel destruction request" : "Cancel·la la sol·licitud de destrucció",
"Vault destruction requested" : "S'ha fet la petició per destruir la cripta",
- "Logged in to {{vault_name}}" : "Oberta la {{vault_name}}",
+ "Request removed" : "S'ha eliminat la sol·licitud",
+ "Destruction request pending" : "Sol·licitud de destrucció pendent",
+ "Warning! Adding credentials over HTTP is insecure!" : "Avís! L'addició de credencials a través d'HTTP és insegura.",
"Change vault" : "Canvia la cripta",
"Deleted credentials" : "Credencials esborrades",
"Logout" : "Sortir",
"Donate" : "Donar",
+ "Someone has shared a credential with you." : "Algú ha compartit una credencial amb tu.",
+ "Click here to request it" : "Feu clic aquí per sol·licitar-lo",
+ "Loading…" : "Carregant...",
+ "Awwhh… credential not found. Maybe it expired" : "No s'ha trobat cap credencial ... Potser ha caducat",
+ "Error while saving field" : "S'ha produït un error en desar el camp",
+ "A Passman item has been created, modified or deleted" : "S'ha creat, modificat o esborrat un element Passman",
+ "A Passman item has expired" : "Un article Passman ha caducat",
+ "A Passman item has been shared" : "S'ha compartit un element Passman",
+ "A Passman item has been renamed" : "S'ha canviat el nom d'un element Passman",
+ "%1$s has been created by %2$s" : "%1$sha estat creat per%2$s",
"You created %1$s" : "Heu creat %1$s",
+ "%1$s has been updated by %2$s" : "%1$sha estat actualitzat per%2$s",
+ "You updated %1$s" : "Has actualitzat%1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$sS'ha revisat%1$s a la revisió de%3$s",
+ "You reverted %1$s back to the revision of %3$s" : "torna a la %1$sevisió de%3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$sha tornat a nomenar%1$s%2$s",
+ "You renamed %1$s to %2$s" : "Has canviat de nom%1$s%2$s",
+ "%1$s has been deleted by %2$s" : "%1$sha estat eliminat per%2$s",
"You deleted %1$s" : "Has esborrat %1$s",
+ "%1$s has been recovered by %2$s" : "%1$sha estat recuperat per%2$s",
+ "You recovered %1$s" : "Has recuperat%1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$ss'ha eliminat de manera permanent%2$s",
"You permanently deleted %1$s" : "Heu eliminat permanentment %1$s",
+ "The password of %1$s has expired, renew it now." : "La contrasenya de %1$s ha caducat, renovada ara.",
+ "%1$s has been shared with %2$s" : "%1$ss'ha compartit amb%2$s",
+ "You received a share request for %1$s from %2$s" : "Heu rebut una sol·licitud d'acció %1$s des de%2$s",
+ "%s has been shared with a link" : "%ss'ha compartit amb un enllaç",
+ "Your credential \"%s\" expired, click here to update the credential." : "La seva credencial %scaducà, feu clic aquí per actualitzar la credencial.",
"Remind me later" : "Recorda'm-ho més tard",
"Ignore" : "Ignora",
+ "%s shared \"%s\" with you. Click here to accept" : "%s\"%s\" compartit amb vostè. Feu clic aquí per acceptar",
+ "%s has declined your share request for \"%s\"." : "%sha rebutjat la vostra sol·licitud de participació per \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%sha acceptat la vostra sol·licitud d'acció per \"%s\".",
+ "Passman" : "Passman",
"Unable to get version info" : "no s'ha pogut obtenir informació de la versió",
+ "Passman Settings" : "Passman Settings",
+ "GitHub version:" : "versió de GitHub: ",
+ "A newer version of Passman is available" : "Hi ha disponible una versió més recent de Passman",
+ "Password sharing" : "Compartició de contrasenyes",
+ "Credential mover" : "Moviment de credencials",
"Vault destruction requests" : "Peticions de destrucció de la cripta",
+ "Check for new versions" : "Comproveu si hi ha noves versions",
+ "Enable HTTPS check" : "Activa la comprovació HTTPS",
+ "Disable context menu" : "Desactiva el menú contextual",
+ "Disable JavaScript debugger" : "Desactiva el depurador de JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permet als usuaris d'aquest servidor compartir contrasenyes amb un enllaç",
+ "Allow users on this server to share passwords with other users" : "Permet als usuaris d'aquest servidor compartir contrasenyes amb altres usuaris",
+ "Move credentials from one account to another" : "Mou les credencials d'un compte a un altre",
+ "Source account" : "Compte d'origen",
+ "Destination account" : "Compte de destinació",
+ "Credentials moved!" : "S'han mogut les credencials",
"Requests to destroy vault" : "Peticions per destruir la cripta",
+ "Request ID" : "Sol·licitud ID: ",
+ "Requested by" : "Sol · licitada per",
+ "Reason" : "Raó",
+ "Click here to request\n\t\t\t\t\tit" : "Feu clic aquí per sol·licitar-ho\n\t\t\t\t\t",
+ "Connection to server lost" : "S'ha perdut la connexió amb el servidor",
+ "Problem loading page, reloading in 5 seconds" : "Problemes carregant la pagina, recarregant en 5 segons",
"Saving..." : "Desant...",
"Dismiss" : "Rebutja",
- "seconds ago" : "Segons enrere"
+ "seconds ago" : "fa uns segons"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/l10n/cs.js b/l10n/cs.js
index 0af034dd..1d367b85 100644
--- a/l10n/cs.js
+++ b/l10n/cs.js
@@ -2,28 +2,28 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Hesla",
- "Generating sharing keys ( %step / 2)" : "Generování sdílecích klíčů ( %step / 2)",
- "Incorrect vault password!" : "Neplatné heslo trezoru!",
- "Passwords do not match" : "Hesla se neshodují",
+ "Generating sharing keys ( %s / 2)" : "Vytváření klíčů pro sdílení ( %s / 2)",
+ "Incorrect vault password!" : "Neplatné heslo k trezoru!",
+ "Passwords do not match" : "Zadání hesla se neshodují",
"General" : "Obecné",
- "Custom Fields" : "Vlastní pole",
- "Please fill in a label." : "Prosím, vyplňte popisek.",
- "Please fill in a value." : "Prosím, vyplňte hodnotu.",
+ "Custom Fields" : "Uživatelsky určené kolonky",
+ "Please fill in a label." : "Vyplňte popisek.",
+ "Please fill in a value." : "Vyplňte hodnotu.",
"Error loading file" : "Chyba načítání souboru",
- "An error occurred during decryption" : "Při dešifrování došlo k chybě",
+ "An error occurred during decryption" : "Při rozšifrovávání došlo k chybě",
"Credential created!" : "Pověření vytvořeno!",
"Credential deleted" : "Pověření smazáno",
"Credential updated" : "Pověření aktualizováno",
"Credential recovered" : "Pověření obnoveno",
"Credential destroyed" : "Pověření zničeno",
- "Error downloading file, you probably don't have sufficient permissions" : "Chyba stahování souboru, pravděpodobně nemáte dostatečná oprávnění",
+ "Error downloading file, you probably have insufficient permissions" : "Chyba při stahování souboru, nejspíš nemáte potřebná oprávnění",
"Invalid QR code" : "Neplatný QR kód",
"Starting export" : "Začíná export",
"Decrypting credentials" : "Dešifrování pověření",
"Done" : "Hotovo",
- "File read successfully." : "Soubor úspěšně přečten.",
+ "File read." : "Čtení souboru.",
"Proceed with the following steps to import your file" : "Pro import vašeho souboru se řiďte následujícími kroky",
- "Credential has no label, skipping" : "Pověření nemá popisek, přeskakuji",
+ "Skipping unlabeled credential" : "Přeskakuje se přihlašovací údaje bez štítku",
"Adding {{credential}}" : "Přidávání {{credential}}",
"Added {{credential}}" : "Přidáno {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Přeskočeno pověření na řádku {{line}}, chybí popisek",
@@ -33,7 +33,7 @@ OC.L10N.register(
"Select CSV file" : "Vybrat soubor CSV",
"Parsed {{rows}} lines from CSV file" : "Z CSV souboru bylo parsováno {{rows}} řádků",
"Skip first row" : "Přeskočit první řádek",
- "You need to assign the label field before you can start the import." : "Před začátkem importu musíte přiřadit pole popisku.",
+ "You need to assign the label field before you can start the import." : "Před začátkem importu je třeba přiřadit kolonku popisku.",
"The first 5 lines of the CSV are shown." : "Je zobrazeno prvních 5 řádků CSV souboru",
"Assign the proper fields to each column." : "Přiřaďte každému sloupci správné hodnoty.",
"Example of imported credential" : "Příklad importovaného pověření",
@@ -49,10 +49,10 @@ OC.L10N.register(
"Import credentials" : "Importovat pověření",
"Export credentials" : "Exportovat pověření",
"Sharing" : "Sdílení",
- "Are you sure you want to leave? This will destroy all your credentials" : "Opravdu chcete odeít? Všechna vaše pověření budou ztracena",
- "Your old password is incorrect!" : "Vaše staré heslo není platné!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Opravdu chcete odejít? Všechna vaše pověření budou ztracena",
+ "Old password field incorrect!" : "Kolonka původní heslo není vyplněná správně!",
"New password does not match!" : "Nová hesla se neshodují!",
- "Please log in with your new vault password" : "Prosím, přihlašte se vaším novým heslem trezoru",
+ "Please log in with your new vault password" : "Přihlaste se svým novým heslem trezoru",
"Share with users and groups" : "Sdílet s uživateli a skupinami",
"Share link" : "Sdílet odkaz",
"Are you sure you want to leave? This will corrupt this credential" : "Opravdu si přejete odejít? Poškodí to toto pověření",
@@ -66,15 +66,18 @@ OC.L10N.register(
"Toggle visibility" : "Přepnout viditelnost",
"Copy to clipboard" : "Zkopírovat do schránky",
"Copied to clipboard!" : "Zkopírováno do schránky",
- "Generate password" : "Generovat heslo",
+ "Generate password" : "Vytvořit heslo",
"Copy password to clipboard" : "Zkopírovat heslo do schránky",
"Password copied to clipboard!" : "Heslo zkopírováno do schránky!",
"Complete" : "Kompletní",
"Username" : "Uživatelské jméno",
"Repeat password" : "Zopakujte heslo",
"Add tag" : "Přidat štítek",
+ "Pick an icon" : "Vyberte si ikonu",
+ "Use this icon" : "Použít tuto ikonu",
+ "Selected icon" : "Vybraná ikona",
"Field label" : "Popisek pole",
- "Field value" : "Hodnota pole",
+ "Field value" : "Hodnota kolonky",
"Choose a file" : "Vyberte soubor",
"Text" : "Text",
"File" : "Soubor",
@@ -83,24 +86,24 @@ OC.L10N.register(
"Type" : "Typ",
"Actions" : "Akce",
"Empty" : "Prázdný",
- "Filename" : "Jméno souboru",
+ "Filename" : "Název souboru",
"Upload date" : "Datum nahrání",
"Size" : "Velikost",
- "Upload or enter your OTP secret" : "Nahrajte nebo zadejte váše OTP tajemství",
- "Current OTP settings" : "Aktuální nastavení OTP",
+ "Upload or enter your OTP secret" : "Nahrajte nebo zadejte své OTP tajemství",
+ "Current OTP settings" : "Stávající nastavení OTP",
"Issuer" : "Vydavatel",
"Secret" : "Tajemství",
- "Expiration date" : "Datum vypršení platnosti",
- "No expiration date set" : "Není nastaveno datum vypršení platnosti",
+ "Expiration date" : "Datum skončení platnosti",
+ "No expiration date set" : "Není nastaveno datum skončení platnosti",
"Renew interval" : "Interval obnovy",
"Disabled" : "Zakázáno",
"Day(s)" : "Dnů",
"Week(s)" : "Týdny",
"Month(s)" : "Měsíc(e)",
"Year(s)" : "rok(y)",
- "Password generation settings" : "Nastavení generování hesel",
+ "Password generation settings" : "Nastavení vytváření hesel",
"Password length" : "Délka hesla",
- "Minimum amount of digits" : "Nejmenší počet číslovek",
+ "Minimum amount of digits" : "Nejmenší počet číslic",
"Use uppercase letters" : "Použít velká písmena",
"Use lowercase letters" : "Použít malá písmena",
"Use numbers" : "Použít čísla",
@@ -111,26 +114,26 @@ OC.L10N.register(
"Export" : "Export",
"Enter vault password to confirm export." : "Pro potvrzení exportu zadejte heslo trezoru.",
"Rename vault" : "Přejmenovat trezor",
- "New vault name" : "Nové jméno trezoru",
+ "New vault name" : "Název pro nový trezor",
"Change" : "Změnit",
"Change vault key" : "Změnit klíč trezoru",
- "Old vault password" : "Staré heslo trezoru",
+ "Old vault password" : "Původní heslo trezoru",
"New vault password" : "Nové heslo trezoru",
"Repeat new vault password" : "Zopakujte nové heslo trezoru",
- "Please wait your vault is being updated, do not leave this page." : "Prosím čekejte, váš trezor se aktualizuje, neopouštějte tuto stránku.",
+ "Please wait your vault is being updated, do not leave this page." : "Čekejte, váš trezor se aktualizuje, neopouštějte tuto stránku.",
"Processing" : "Zpracování",
"Total progress" : "Celkový průběh",
- "About Passman" : "O Passmanu",
+ "About Passman" : "O Passman",
"Version" : "Verze",
"Donate to support development" : "Přispějte na podporu vývoje",
- "Bookmarklet" : "Parsed {{num}} credentials, starting to import",
- "Save your passwords with 1 click!" : "Ukládejte vaše hesla jedním kliknutím!",
- "Drag below button to your bookmark toolbar." : "Přetáhněte tlačítko níže do vaší lišty záložek.",
+ "Bookmarklet" : "Záložky",
+ "Save your passwords with one click." : "Uložte si své heslo jedním kliknutím.",
+ "Drag below button to your bookmark toolbar." : "Přetáhněte tlačítko níže do své lišty záložek.",
"Delete vault" : "Smazat trezor",
"Vault password" : "Heslo trezoru",
"This process is irreversible" : "Tato operace je nevratná",
"Delete my precious passwords" : "Vymazat moje předešlá hesla",
- "Deleting {{password}}…" : "Mazání {{password}}...",
+ "Deleting {{password}}…" : "Mazání {{password}}…",
"Yes, delete my precious passwords" : "Ano, vymazat moje předešlá hesla",
"Import type" : "Typ importu",
"Import" : "Import",
@@ -140,22 +143,22 @@ OC.L10N.register(
"Public key" : "Veřejný klíč",
"Key size" : "Velikost klíče",
"Save keys" : "Uložit klíče",
- "Generate sharing keys" : "Generovat sdílecí klíče",
- "Generating sharing keys" : "Generování sdílecích klíčů",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Nástro hesel projde vaše heslo, spočítá průměrný čas prolomení a pokud je pod hranicí, tak ho zobrazí",
- "Minimum password stength" : "Nemenší síla hesla",
+ "Generate sharing keys" : "Vytvořit klíče pro sdílení",
+ "Generating sharing keys" : "Vytváření klíčů pro sdílení",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Nástroj pro hesla proskenuje vaše heslo, vypočítá průměrnou dobu potřebnou pro jeho prolomení a vypíše ty, které jsou pod hranicí bezpečnosti",
+ "Minimum password stength" : "Nejnižší odolnost hesla",
"Start scan" : "Zahájit sken",
"Result" : "Výsledek",
"A total of {{scan_result}} weak credentials were found." : "Bylo nalezeno celkem {{scan_result}} slabých pověření.",
"Score" : "Skóre",
"Action" : "Akce",
- "Search users or groups…" : "Hledat uživatele a skupiny...",
+ "Search users…" : "Vyhledat uživatele…",
"Missing users? Only users that have vaults are shown." : "Chybí uživatelé? Jsou zobrazeni pouze uživatelé, kteří mají trezor.",
"Cyphering" : "Šifrování",
"Uploading" : "Nahrávání",
"User" : "Uživatel",
"Crypto time" : "Kryptografický čas",
- "Total time spent cyphering" : "Celkový čas strávený šifrováním",
+ "Total time spent encrypting" : "Celkový čas strávený šifrováním",
"Read" : "Číst",
"Write" : "Zapsat",
"Files" : "Soubory",
@@ -163,8 +166,8 @@ OC.L10N.register(
"Pending" : "Čeká",
"Enable link sharing" : "Povolit sdílení odkazů",
"Share until date" : "Sdílet do data",
- "Expire after views" : "Vyprší po zobrazeních",
- "Click Share first" : "Nejprve klikněte na sdílet",
+ "Expire after views" : "Platnost skončí po zobrazeních",
+ "Click \\\"Share\\\" first" : "Nejprve klikněte na „Sdílet“",
"Show files" : "Zobrazit soubory",
"Details" : "Podrobnosti",
"Hide details" : "Skrýt podrobnosti",
@@ -182,7 +185,7 @@ OC.L10N.register(
"See match sequence" : "Zobrazit sekvenci shody",
"Pattern" : "Vzor",
"Matched word" : "Odpovídající slovo",
- "Dictionary name" : "Jméno slovníku",
+ "Dictionary name" : "Název slovníku",
"Rank" : "Pořadí",
"Reversed" : "Obráceno",
"Guesses" : "Odhady",
@@ -192,28 +195,28 @@ OC.L10N.register(
"Showing revisions of" : "Zobrazují se revize pro",
"Revision of" : "Reviduje",
"by" : "od",
- "No revisions found." : "Nebyly nalezeny žádné revize.",
+ "No revisions found." : "Nenalezeny žádné revize.",
"Label" : "Popisek",
"Restore revision" : "Obnovit revizi",
"Delete revision" : "Smazat revizi",
"Edit credential" : "Upravit pověření",
"Create new credential" : "Vytvořit nové pověření",
"Save" : "Uložit",
- "Cancel" : "Zrušit",
+ "Cancel" : "Storno",
"Settings" : "Nastavení",
"Share credential {{credential}}" : "Sdílet pověření {{credential}}",
"Unshare" : "Přestat sdílet",
- "Showing deleted since" : "Zobrazuí se smazané od",
+ "Showing deleted since" : "Zobrazují se smazané od",
"Beginning" : "Začátek",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Zobrazuje se {{number_filtered}} z {{credential_number}} pověření",
- "Search for credential…" : "Hledat pověření...",
+ "Search for credential…" : "Hledat pověření…",
"Account" : "Účet",
"Password" : "Heslo",
"OTP" : "OTP",
"E-mail" : "E-mail",
- "URL" : "URL",
+ "URL" : "URL adresa",
"Notes" : "Poznámky",
- "Expiry time" : "Čas vypršení",
+ "Expiry time" : "Okamžik skončení platnosti",
"Changed" : "Změněno",
"Created" : "Vytvořena",
"Edit" : "Upravit",
@@ -224,7 +227,7 @@ OC.L10N.register(
"Use regex" : "Použít regulární výraz",
"You have incoming share requests." : "Máte příchozí požadavky na sdílení.",
"If you want to put the credential in another vault," : "Pokud chcete pověření umístit do jiného trezoru,",
- "log out of this vault and log in to the vault you want the shared credential in." : "Odhlaste se z tohoto trezoru a přihlaste se do trezoru, kde chcete sdílené pověření.",
+ "log out of this vault and log into the vault you want the shared credential in." : "odhlaste se od tohoto trezoru a přihlaste se do trezoru, ve kterém chcete sdílené přihlašovací údaje.",
"Permissions" : "Oprávnění",
"Received from" : "Obdrženo od",
"Date" : "Datum",
@@ -234,94 +237,99 @@ OC.L10N.register(
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Váš trezor byl na {{time}} kvůli {{tries}} chybným pokusům uzamčen!",
"Last accessed" : "Poslední přístup",
"Never" : "Nikdy",
- "No vaults found, why not create one?" : "Žádné trezory nebyly nalezeny, proč jeden nevytvořit?",
- "Password strength must be at least: {{strength}}" : "Síla hesla musí být aspoň: {{strength}}",
- "Please give your new vault a name." : "Prosím pojmenujte váš nový trezor.",
+ "No vaults found, why not create one?" : "Nebyly nalezeny žádné trezory – co nějaký vytvořit?",
+ "Password strength must be at least: {{strength}}" : "Je třeba, aby odolnost hesla byla přinejmenším: {{strength}}",
+ "Please give your new vault a name." : "Nazvěte nějak svůj nový trezor.",
"Repeat vault password" : "Zopakujte heslo trezoru",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Vaše sdílecí klíče budou mít sílu 1024 bitů, což pak můžete změnit v nastavení.",
"Create vault" : "Vytvořit trezor",
"Go back to vaults" : "Jít zpět k trezorům",
- "Please input the password for" : "Prosím, zadejte heslo pro",
+ "Please input the password for" : "Zadejte heslo pro",
"Set this vault as the default." : "Nastavit tento trezor jako výchozí.",
"Log into this vault automatically." : "Automaticky se přihlašovat k tomuto trezoru.",
"Log out of this vault automatically after: " : "Automaticky se z tohoto trezoru odhlásit po: ",
- "Decrypt vault" : "Dešifrovat trezor",
+ "Decrypt vault" : "Rozšifrovat trezor",
"Seems you lost the vault password and you're unable to log in." : "Vypadá to, že jste ztratili heslo k trezoru a nemůžete se přihlásit.",
"If you want this vault to be removed you can request that here." : "Pokud chcete, aby byl tento trezor odstraněn, můžete o jeho odstranění požádat zde.",
- "An admin then accepts or declines the request" : "Administrátor pak přijme nebo odmítne požadavek",
+ "An admin then accepts or declines the request" : "Správce pak požadavek buď přijme nebo odmítne",
"After an admin destroys this vault, all credentials in it will be lost" : "Poté,co administrátor potvrdí destrukci tohoto trezoru, všechna pověření budou ztracena",
"Reason for requesting deletion (optional):" : "Důvod žádosti o smazání (volitelné):",
- "Request vault destruction" : "Požádat o destrukci trezoru",
+ "Request vault destruction" : "Požádat o zničení trezoru",
"Yes, request an admin to destroy this vault" : "Ano, požádat administrátora o zničení tohoto trezoru",
"Cancel destruction request" : "Zrušit požadavek na destrukci",
"Vault destruction requested" : "Vyžádání zničení trezoru",
"Request removed" : "Požadavek odebrán",
"Destruction request pending" : "Požadavek na destrukci čeká",
"Warning! Adding credentials over HTTP is insecure!" : "Varování! Přidávání pověření přes HTTP může být nebezpečné!",
- "Logged in to {{vault_name}}" : "Přihlášeno do {{vault_name}}",
+ "Logged into {{vault_name}}" : "Přihlášeni do {{vault_name}}",
"Change vault" : "Změnit trezor",
"Deleted credentials" : "Smazaná pověření",
"Logout" : "Odhlásit se",
"Donate" : "Přispět",
"Someone has shared a credential with you." : "Někdo s vvám nasdílel pověření",
- "Click here to request it" : "Klikněte zde pro vyžádání",
+ "Click here to request it" : "Pro vyžádání klikněte sem",
"Loading…" : "Načítání…",
- "Awwhh… credential not found. Maybe it expired" : "Hmmmm.... pověření nenalezeno. Možná vypršelo",
+ "Awwhh… credential not found. Maybe it expired" : "Hmmmm… pověření nenalezeno. Možná jeho platnost skončila",
"Error while saving field" : "Chyba při ukládání pole",
- "A Passman item has been created, modified or deleted" : "Položka v Passmanu byla vytvořena, změněna, nebo odstraněna",
- "A Passman item has expired" : "Položka v Passmanu vypršela",
+ "A Passman item has been created, modified or deleted" : "Položka v Passman byla vytvořena, změněna, nebo odstraněna",
+ "A Passman item has expired" : "Platnost položky v Passman skončila",
"A Passman item has been shared" : "Položka v Passmanu byla sdílena",
- "A Passman item has been renamed" : "Položka v Passmanu byla přejmenována",
+ "A Passman item has been renamed" : "Položka v Passman byla přejmenována",
"%1$s has been created by %2$s" : "%1$s byl vytvořen uživatelem %2$s",
- "You created %1$s" : "Vytvořil jste %1$s",
+ "You created %1$s" : "Vytvořili jste %1$s",
"%1$s has been updated by %2$s" : "%1$s byl aktualizován uživatelem %2$s",
- "You updated %1$s" : "Aktualizoval jste %1$s",
- "%2$s has revised %1$s to the revision of %3$s" : "%2$s revidoval %1$s na revizi %3$s",
- "You reverted %1$s back to the revision of %3$s" : "Obnovil jste %1$s zpět na revizi %3$s",
+ "You updated %1$s" : "Aktualizovali jste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s revidoval(a) %1$s na revizi %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Obnovili jste %1$s zpět na revizi %3$s",
"%3$s has renamed %1$s to %2$s" : "%3$s přejmenoval %1$s na %2$s",
"You renamed %1$s to %2$s" : "Přemenoval jste %1$s na %2$s",
"%1$s has been deleted by %2$s" : "%1$s byl odstraněn uživatelem %2$s",
- "You deleted %1$s" : "Smazal jste %1$s",
- "%1$s has been recovered by %2$s" : "%1$s byl obnoven %2$s",
- "You recovered %1$s" : "Obnovil jste %1$s",
+ "You deleted %1$s" : "Smazali jste %1$s",
+ "%1$s has been recovered by %2$s" : "%2$s obnovil(a) %1$s",
+ "You recovered %1$s" : "Obnovili jste %1$s",
"%1$s has been permanently deleted by %2$s" : "%1$s byl trvale odstraněn uživatelem %2$s",
- "You permanently deleted %1$s" : "Trvale jste odstranil %1$s",
- "The password of %1$s has expired, renew it now." : "Heslo pro %1$s vypršelo, obnovte ho.",
+ "You permanently deleted %1$s" : "Trvale jste odstranili %1$s",
+ "The password of %1$s has expired, renew it now." : "Platnost hesla pro %1$s skončila, obnovte ho.",
"%1$s has been shared with %2$s" : "%1$s byl nasdílen uživatelem %2$s",
"You received a share request for %1$s from %2$s" : "Obdrželi jste nový požadavek na sdílení %1$s od uživatele %2$s",
"%s has been shared with a link" : "%s byl nasdílen pomocí odkazu",
- "Your credential \"%s\" expired, click here to update the credential." : "Vaše pověření \"%s\" vypršelo, klikněte zde pro obnovení",
+ "Your credential \"%s\" expired, click here to update the credential." : "Platnost vašeho pověření „%s“ skončila, pro obnovení klikněte sem",
"Remind me later" : "Připomenout později",
"Ignore" : "Ignorovat",
- "%s shared \"%s\" with you. Click here to accept" : "%s s tebou sdílí \"%s\". Kliknout pro přijetí",
- "%s has declined your share request for \"%s\"." : "%s zamítl(a) tvůj požadavek na sdílení \"%s\".",
- "%s has accepted your share request for \"%s\"." : "%s přijal(a) tvůj požadavek na sdílení \"%s\".",
+ "%s shared \"%s\" with you. Click here to accept" : "%s s vámi sdílí „%s“. Přijmete kliknutím",
+ "%s has declined your share request for \"%s\"." : "%s zamítl(a) váš požadavek na sdílení „%s“.",
+ "%s has accepted your share request for \"%s\"." : "%s přijal(a) váš požadavek na sdílení „%s“.",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman je správce hesel s mnoha funkcemi.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman je plně vybavený správce hesel.\nFunkce:\n- Trezory\n- Klíč k serveru není nikdy odesílán na server\n- Rozšíření pro prohlížeč pro snadný přístup k heslům\n- Aplikace pro Android pro přístup na cestách\n- Přihlašovací údaje jsou na straně klienta šifrovány 256 bit AES\n- Přihlašovací údaje jsou na straně serveru šifrovány 256 bit AES\n- Možnost přidat vlastní kolonky do přihlašovacích údajů\n- Vestavěné vytváření OTP (jednorázového hesla)\n- Analyzátor hesel\n- Sdílení hesel interně a zabezpečeně prostřednictvím odkazu.\n- Import z různých správců hesel (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nPro ukázku této aplikace navštivte [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Nepodařilo se získat informace o verzi",
- "Passman Settings" : "Nastavení passmanu",
- "GitHub version:" : "GitHub verze:",
- "A newer version of Passman is available" : "Je dostupná nová verze Passmanu",
+ "Passman Settings" : "Nastavení pro passman",
+ "GitHub version:" : "verze na GitHub:",
+ "A newer version of Passman is available" : "Je dostupná nová verze Passman",
"Password sharing" : "Sdílení hesla",
"Credential mover" : "Přesunovač pověření",
"Vault destruction requests" : "Požadavky na zničení trezoru",
"Check for new versions" : "Zkontrolovat nové verze",
"Enable HTTPS check" : "Povolit kontrolu HTTPS",
- "Disable context menu" : "Zakázat kontextové menu",
+ "Disable context menu" : "Zakázat kontextovou nabídku",
"Disable JavaScript debugger" : "Zakázat ladění JavaScriptu",
"Allow users on this server to share passwords with a link" : "Povolit na tomto serveru uživatelům sdílení hesel pomocí odkazu",
"Allow users on this server to share passwords with other users" : "Povolit na tomto serveru uživatelům sdílení hesel s ostatními uživateli",
"Move credentials from one account to another" : "Přesuňte pověření z jednoho účtu do druhého",
"Source account" : "Zdrojový účet",
"Destination account" : "Cílový účet",
- "Credentials moved!" : "Přihlašovací informace přesunuty!",
+ "Credentials moved!" : "Přihlašovací údaje přesunuty!",
"Requests to destroy vault" : "Požadavky na zničení trezoru",
- "Request ID" : "ID Požadavku",
+ "Request ID" : "Identifikátor požadavku",
"Requested by" : "Požadavek od",
"Reason" : "Důvod",
+ "Click here to request\n\t\t\t\t\tit" : "Klikněte sem pro žádost",
+ "Loading&hellip;" : "Načítání&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Hmmmm… pověření nenalezeno. Možná jeho platnost skončila?",
+ "Expires:" : "Platnost končí:",
"Connection to server lost" : "Připojení k serveru ztraceno",
"Problem loading page, reloading in 5 seconds" : "Problém s načítáním stránky, obnovení za 5 sekund",
- "Saving..." : "Ukládám...",
+ "Saving..." : "Ukládání…",
"Dismiss" : "Zavřít",
"seconds ago" : "před pár sekundami"
},
-"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
+"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/l10n/cs.json b/l10n/cs.json
index 13686ce3..3388dc44 100644
--- a/l10n/cs.json
+++ b/l10n/cs.json
@@ -1,27 +1,27 @@
{ "translations": {
"Passwords" : "Hesla",
- "Generating sharing keys ( %step / 2)" : "Generování sdílecích klíčů ( %step / 2)",
- "Incorrect vault password!" : "Neplatné heslo trezoru!",
- "Passwords do not match" : "Hesla se neshodují",
+ "Generating sharing keys ( %s / 2)" : "Vytváření klíčů pro sdílení ( %s / 2)",
+ "Incorrect vault password!" : "Neplatné heslo k trezoru!",
+ "Passwords do not match" : "Zadání hesla se neshodují",
"General" : "Obecné",
- "Custom Fields" : "Vlastní pole",
- "Please fill in a label." : "Prosím, vyplňte popisek.",
- "Please fill in a value." : "Prosím, vyplňte hodnotu.",
+ "Custom Fields" : "Uživatelsky určené kolonky",
+ "Please fill in a label." : "Vyplňte popisek.",
+ "Please fill in a value." : "Vyplňte hodnotu.",
"Error loading file" : "Chyba načítání souboru",
- "An error occurred during decryption" : "Při dešifrování došlo k chybě",
+ "An error occurred during decryption" : "Při rozšifrovávání došlo k chybě",
"Credential created!" : "Pověření vytvořeno!",
"Credential deleted" : "Pověření smazáno",
"Credential updated" : "Pověření aktualizováno",
"Credential recovered" : "Pověření obnoveno",
"Credential destroyed" : "Pověření zničeno",
- "Error downloading file, you probably don't have sufficient permissions" : "Chyba stahování souboru, pravděpodobně nemáte dostatečná oprávnění",
+ "Error downloading file, you probably have insufficient permissions" : "Chyba při stahování souboru, nejspíš nemáte potřebná oprávnění",
"Invalid QR code" : "Neplatný QR kód",
"Starting export" : "Začíná export",
"Decrypting credentials" : "Dešifrování pověření",
"Done" : "Hotovo",
- "File read successfully." : "Soubor úspěšně přečten.",
+ "File read." : "Čtení souboru.",
"Proceed with the following steps to import your file" : "Pro import vašeho souboru se řiďte následujícími kroky",
- "Credential has no label, skipping" : "Pověření nemá popisek, přeskakuji",
+ "Skipping unlabeled credential" : "Přeskakuje se přihlašovací údaje bez štítku",
"Adding {{credential}}" : "Přidávání {{credential}}",
"Added {{credential}}" : "Přidáno {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Přeskočeno pověření na řádku {{line}}, chybí popisek",
@@ -31,7 +31,7 @@
"Select CSV file" : "Vybrat soubor CSV",
"Parsed {{rows}} lines from CSV file" : "Z CSV souboru bylo parsováno {{rows}} řádků",
"Skip first row" : "Přeskočit první řádek",
- "You need to assign the label field before you can start the import." : "Před začátkem importu musíte přiřadit pole popisku.",
+ "You need to assign the label field before you can start the import." : "Před začátkem importu je třeba přiřadit kolonku popisku.",
"The first 5 lines of the CSV are shown." : "Je zobrazeno prvních 5 řádků CSV souboru",
"Assign the proper fields to each column." : "Přiřaďte každému sloupci správné hodnoty.",
"Example of imported credential" : "Příklad importovaného pověření",
@@ -47,10 +47,10 @@
"Import credentials" : "Importovat pověření",
"Export credentials" : "Exportovat pověření",
"Sharing" : "Sdílení",
- "Are you sure you want to leave? This will destroy all your credentials" : "Opravdu chcete odeít? Všechna vaše pověření budou ztracena",
- "Your old password is incorrect!" : "Vaše staré heslo není platné!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Opravdu chcete odejít? Všechna vaše pověření budou ztracena",
+ "Old password field incorrect!" : "Kolonka původní heslo není vyplněná správně!",
"New password does not match!" : "Nová hesla se neshodují!",
- "Please log in with your new vault password" : "Prosím, přihlašte se vaším novým heslem trezoru",
+ "Please log in with your new vault password" : "Přihlaste se svým novým heslem trezoru",
"Share with users and groups" : "Sdílet s uživateli a skupinami",
"Share link" : "Sdílet odkaz",
"Are you sure you want to leave? This will corrupt this credential" : "Opravdu si přejete odejít? Poškodí to toto pověření",
@@ -64,15 +64,18 @@
"Toggle visibility" : "Přepnout viditelnost",
"Copy to clipboard" : "Zkopírovat do schránky",
"Copied to clipboard!" : "Zkopírováno do schránky",
- "Generate password" : "Generovat heslo",
+ "Generate password" : "Vytvořit heslo",
"Copy password to clipboard" : "Zkopírovat heslo do schránky",
"Password copied to clipboard!" : "Heslo zkopírováno do schránky!",
"Complete" : "Kompletní",
"Username" : "Uživatelské jméno",
"Repeat password" : "Zopakujte heslo",
"Add tag" : "Přidat štítek",
+ "Pick an icon" : "Vyberte si ikonu",
+ "Use this icon" : "Použít tuto ikonu",
+ "Selected icon" : "Vybraná ikona",
"Field label" : "Popisek pole",
- "Field value" : "Hodnota pole",
+ "Field value" : "Hodnota kolonky",
"Choose a file" : "Vyberte soubor",
"Text" : "Text",
"File" : "Soubor",
@@ -81,24 +84,24 @@
"Type" : "Typ",
"Actions" : "Akce",
"Empty" : "Prázdný",
- "Filename" : "Jméno souboru",
+ "Filename" : "Název souboru",
"Upload date" : "Datum nahrání",
"Size" : "Velikost",
- "Upload or enter your OTP secret" : "Nahrajte nebo zadejte váše OTP tajemství",
- "Current OTP settings" : "Aktuální nastavení OTP",
+ "Upload or enter your OTP secret" : "Nahrajte nebo zadejte své OTP tajemství",
+ "Current OTP settings" : "Stávající nastavení OTP",
"Issuer" : "Vydavatel",
"Secret" : "Tajemství",
- "Expiration date" : "Datum vypršení platnosti",
- "No expiration date set" : "Není nastaveno datum vypršení platnosti",
+ "Expiration date" : "Datum skončení platnosti",
+ "No expiration date set" : "Není nastaveno datum skončení platnosti",
"Renew interval" : "Interval obnovy",
"Disabled" : "Zakázáno",
"Day(s)" : "Dnů",
"Week(s)" : "Týdny",
"Month(s)" : "Měsíc(e)",
"Year(s)" : "rok(y)",
- "Password generation settings" : "Nastavení generování hesel",
+ "Password generation settings" : "Nastavení vytváření hesel",
"Password length" : "Délka hesla",
- "Minimum amount of digits" : "Nejmenší počet číslovek",
+ "Minimum amount of digits" : "Nejmenší počet číslic",
"Use uppercase letters" : "Použít velká písmena",
"Use lowercase letters" : "Použít malá písmena",
"Use numbers" : "Použít čísla",
@@ -109,26 +112,26 @@
"Export" : "Export",
"Enter vault password to confirm export." : "Pro potvrzení exportu zadejte heslo trezoru.",
"Rename vault" : "Přejmenovat trezor",
- "New vault name" : "Nové jméno trezoru",
+ "New vault name" : "Název pro nový trezor",
"Change" : "Změnit",
"Change vault key" : "Změnit klíč trezoru",
- "Old vault password" : "Staré heslo trezoru",
+ "Old vault password" : "Původní heslo trezoru",
"New vault password" : "Nové heslo trezoru",
"Repeat new vault password" : "Zopakujte nové heslo trezoru",
- "Please wait your vault is being updated, do not leave this page." : "Prosím čekejte, váš trezor se aktualizuje, neopouštějte tuto stránku.",
+ "Please wait your vault is being updated, do not leave this page." : "Čekejte, váš trezor se aktualizuje, neopouštějte tuto stránku.",
"Processing" : "Zpracování",
"Total progress" : "Celkový průběh",
- "About Passman" : "O Passmanu",
+ "About Passman" : "O Passman",
"Version" : "Verze",
"Donate to support development" : "Přispějte na podporu vývoje",
- "Bookmarklet" : "Parsed {{num}} credentials, starting to import",
- "Save your passwords with 1 click!" : "Ukládejte vaše hesla jedním kliknutím!",
- "Drag below button to your bookmark toolbar." : "Přetáhněte tlačítko níže do vaší lišty záložek.",
+ "Bookmarklet" : "Záložky",
+ "Save your passwords with one click." : "Uložte si své heslo jedním kliknutím.",
+ "Drag below button to your bookmark toolbar." : "Přetáhněte tlačítko níže do své lišty záložek.",
"Delete vault" : "Smazat trezor",
"Vault password" : "Heslo trezoru",
"This process is irreversible" : "Tato operace je nevratná",
"Delete my precious passwords" : "Vymazat moje předešlá hesla",
- "Deleting {{password}}…" : "Mazání {{password}}...",
+ "Deleting {{password}}…" : "Mazání {{password}}…",
"Yes, delete my precious passwords" : "Ano, vymazat moje předešlá hesla",
"Import type" : "Typ importu",
"Import" : "Import",
@@ -138,22 +141,22 @@
"Public key" : "Veřejný klíč",
"Key size" : "Velikost klíče",
"Save keys" : "Uložit klíče",
- "Generate sharing keys" : "Generovat sdílecí klíče",
- "Generating sharing keys" : "Generování sdílecích klíčů",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Nástro hesel projde vaše heslo, spočítá průměrný čas prolomení a pokud je pod hranicí, tak ho zobrazí",
- "Minimum password stength" : "Nemenší síla hesla",
+ "Generate sharing keys" : "Vytvořit klíče pro sdílení",
+ "Generating sharing keys" : "Vytváření klíčů pro sdílení",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Nástroj pro hesla proskenuje vaše heslo, vypočítá průměrnou dobu potřebnou pro jeho prolomení a vypíše ty, které jsou pod hranicí bezpečnosti",
+ "Minimum password stength" : "Nejnižší odolnost hesla",
"Start scan" : "Zahájit sken",
"Result" : "Výsledek",
"A total of {{scan_result}} weak credentials were found." : "Bylo nalezeno celkem {{scan_result}} slabých pověření.",
"Score" : "Skóre",
"Action" : "Akce",
- "Search users or groups…" : "Hledat uživatele a skupiny...",
+ "Search users…" : "Vyhledat uživatele…",
"Missing users? Only users that have vaults are shown." : "Chybí uživatelé? Jsou zobrazeni pouze uživatelé, kteří mají trezor.",
"Cyphering" : "Šifrování",
"Uploading" : "Nahrávání",
"User" : "Uživatel",
"Crypto time" : "Kryptografický čas",
- "Total time spent cyphering" : "Celkový čas strávený šifrováním",
+ "Total time spent encrypting" : "Celkový čas strávený šifrováním",
"Read" : "Číst",
"Write" : "Zapsat",
"Files" : "Soubory",
@@ -161,8 +164,8 @@
"Pending" : "Čeká",
"Enable link sharing" : "Povolit sdílení odkazů",
"Share until date" : "Sdílet do data",
- "Expire after views" : "Vyprší po zobrazeních",
- "Click Share first" : "Nejprve klikněte na sdílet",
+ "Expire after views" : "Platnost skončí po zobrazeních",
+ "Click \\\"Share\\\" first" : "Nejprve klikněte na „Sdílet“",
"Show files" : "Zobrazit soubory",
"Details" : "Podrobnosti",
"Hide details" : "Skrýt podrobnosti",
@@ -180,7 +183,7 @@
"See match sequence" : "Zobrazit sekvenci shody",
"Pattern" : "Vzor",
"Matched word" : "Odpovídající slovo",
- "Dictionary name" : "Jméno slovníku",
+ "Dictionary name" : "Název slovníku",
"Rank" : "Pořadí",
"Reversed" : "Obráceno",
"Guesses" : "Odhady",
@@ -190,28 +193,28 @@
"Showing revisions of" : "Zobrazují se revize pro",
"Revision of" : "Reviduje",
"by" : "od",
- "No revisions found." : "Nebyly nalezeny žádné revize.",
+ "No revisions found." : "Nenalezeny žádné revize.",
"Label" : "Popisek",
"Restore revision" : "Obnovit revizi",
"Delete revision" : "Smazat revizi",
"Edit credential" : "Upravit pověření",
"Create new credential" : "Vytvořit nové pověření",
"Save" : "Uložit",
- "Cancel" : "Zrušit",
+ "Cancel" : "Storno",
"Settings" : "Nastavení",
"Share credential {{credential}}" : "Sdílet pověření {{credential}}",
"Unshare" : "Přestat sdílet",
- "Showing deleted since" : "Zobrazuí se smazané od",
+ "Showing deleted since" : "Zobrazují se smazané od",
"Beginning" : "Začátek",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Zobrazuje se {{number_filtered}} z {{credential_number}} pověření",
- "Search for credential…" : "Hledat pověření...",
+ "Search for credential…" : "Hledat pověření…",
"Account" : "Účet",
"Password" : "Heslo",
"OTP" : "OTP",
"E-mail" : "E-mail",
- "URL" : "URL",
+ "URL" : "URL adresa",
"Notes" : "Poznámky",
- "Expiry time" : "Čas vypršení",
+ "Expiry time" : "Okamžik skončení platnosti",
"Changed" : "Změněno",
"Created" : "Vytvořena",
"Edit" : "Upravit",
@@ -222,7 +225,7 @@
"Use regex" : "Použít regulární výraz",
"You have incoming share requests." : "Máte příchozí požadavky na sdílení.",
"If you want to put the credential in another vault," : "Pokud chcete pověření umístit do jiného trezoru,",
- "log out of this vault and log in to the vault you want the shared credential in." : "Odhlaste se z tohoto trezoru a přihlaste se do trezoru, kde chcete sdílené pověření.",
+ "log out of this vault and log into the vault you want the shared credential in." : "odhlaste se od tohoto trezoru a přihlaste se do trezoru, ve kterém chcete sdílené přihlašovací údaje.",
"Permissions" : "Oprávnění",
"Received from" : "Obdrženo od",
"Date" : "Datum",
@@ -232,94 +235,99 @@
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Váš trezor byl na {{time}} kvůli {{tries}} chybným pokusům uzamčen!",
"Last accessed" : "Poslední přístup",
"Never" : "Nikdy",
- "No vaults found, why not create one?" : "Žádné trezory nebyly nalezeny, proč jeden nevytvořit?",
- "Password strength must be at least: {{strength}}" : "Síla hesla musí být aspoň: {{strength}}",
- "Please give your new vault a name." : "Prosím pojmenujte váš nový trezor.",
+ "No vaults found, why not create one?" : "Nebyly nalezeny žádné trezory – co nějaký vytvořit?",
+ "Password strength must be at least: {{strength}}" : "Je třeba, aby odolnost hesla byla přinejmenším: {{strength}}",
+ "Please give your new vault a name." : "Nazvěte nějak svůj nový trezor.",
"Repeat vault password" : "Zopakujte heslo trezoru",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Vaše sdílecí klíče budou mít sílu 1024 bitů, což pak můžete změnit v nastavení.",
"Create vault" : "Vytvořit trezor",
"Go back to vaults" : "Jít zpět k trezorům",
- "Please input the password for" : "Prosím, zadejte heslo pro",
+ "Please input the password for" : "Zadejte heslo pro",
"Set this vault as the default." : "Nastavit tento trezor jako výchozí.",
"Log into this vault automatically." : "Automaticky se přihlašovat k tomuto trezoru.",
"Log out of this vault automatically after: " : "Automaticky se z tohoto trezoru odhlásit po: ",
- "Decrypt vault" : "Dešifrovat trezor",
+ "Decrypt vault" : "Rozšifrovat trezor",
"Seems you lost the vault password and you're unable to log in." : "Vypadá to, že jste ztratili heslo k trezoru a nemůžete se přihlásit.",
"If you want this vault to be removed you can request that here." : "Pokud chcete, aby byl tento trezor odstraněn, můžete o jeho odstranění požádat zde.",
- "An admin then accepts or declines the request" : "Administrátor pak přijme nebo odmítne požadavek",
+ "An admin then accepts or declines the request" : "Správce pak požadavek buď přijme nebo odmítne",
"After an admin destroys this vault, all credentials in it will be lost" : "Poté,co administrátor potvrdí destrukci tohoto trezoru, všechna pověření budou ztracena",
"Reason for requesting deletion (optional):" : "Důvod žádosti o smazání (volitelné):",
- "Request vault destruction" : "Požádat o destrukci trezoru",
+ "Request vault destruction" : "Požádat o zničení trezoru",
"Yes, request an admin to destroy this vault" : "Ano, požádat administrátora o zničení tohoto trezoru",
"Cancel destruction request" : "Zrušit požadavek na destrukci",
"Vault destruction requested" : "Vyžádání zničení trezoru",
"Request removed" : "Požadavek odebrán",
"Destruction request pending" : "Požadavek na destrukci čeká",
"Warning! Adding credentials over HTTP is insecure!" : "Varování! Přidávání pověření přes HTTP může být nebezpečné!",
- "Logged in to {{vault_name}}" : "Přihlášeno do {{vault_name}}",
+ "Logged into {{vault_name}}" : "Přihlášeni do {{vault_name}}",
"Change vault" : "Změnit trezor",
"Deleted credentials" : "Smazaná pověření",
"Logout" : "Odhlásit se",
"Donate" : "Přispět",
"Someone has shared a credential with you." : "Někdo s vvám nasdílel pověření",
- "Click here to request it" : "Klikněte zde pro vyžádání",
+ "Click here to request it" : "Pro vyžádání klikněte sem",
"Loading…" : "Načítání…",
- "Awwhh… credential not found. Maybe it expired" : "Hmmmm.... pověření nenalezeno. Možná vypršelo",
+ "Awwhh… credential not found. Maybe it expired" : "Hmmmm… pověření nenalezeno. Možná jeho platnost skončila",
"Error while saving field" : "Chyba při ukládání pole",
- "A Passman item has been created, modified or deleted" : "Položka v Passmanu byla vytvořena, změněna, nebo odstraněna",
- "A Passman item has expired" : "Položka v Passmanu vypršela",
+ "A Passman item has been created, modified or deleted" : "Položka v Passman byla vytvořena, změněna, nebo odstraněna",
+ "A Passman item has expired" : "Platnost položky v Passman skončila",
"A Passman item has been shared" : "Položka v Passmanu byla sdílena",
- "A Passman item has been renamed" : "Položka v Passmanu byla přejmenována",
+ "A Passman item has been renamed" : "Položka v Passman byla přejmenována",
"%1$s has been created by %2$s" : "%1$s byl vytvořen uživatelem %2$s",
- "You created %1$s" : "Vytvořil jste %1$s",
+ "You created %1$s" : "Vytvořili jste %1$s",
"%1$s has been updated by %2$s" : "%1$s byl aktualizován uživatelem %2$s",
- "You updated %1$s" : "Aktualizoval jste %1$s",
- "%2$s has revised %1$s to the revision of %3$s" : "%2$s revidoval %1$s na revizi %3$s",
- "You reverted %1$s back to the revision of %3$s" : "Obnovil jste %1$s zpět na revizi %3$s",
+ "You updated %1$s" : "Aktualizovali jste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s revidoval(a) %1$s na revizi %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Obnovili jste %1$s zpět na revizi %3$s",
"%3$s has renamed %1$s to %2$s" : "%3$s přejmenoval %1$s na %2$s",
"You renamed %1$s to %2$s" : "Přemenoval jste %1$s na %2$s",
"%1$s has been deleted by %2$s" : "%1$s byl odstraněn uživatelem %2$s",
- "You deleted %1$s" : "Smazal jste %1$s",
- "%1$s has been recovered by %2$s" : "%1$s byl obnoven %2$s",
- "You recovered %1$s" : "Obnovil jste %1$s",
+ "You deleted %1$s" : "Smazali jste %1$s",
+ "%1$s has been recovered by %2$s" : "%2$s obnovil(a) %1$s",
+ "You recovered %1$s" : "Obnovili jste %1$s",
"%1$s has been permanently deleted by %2$s" : "%1$s byl trvale odstraněn uživatelem %2$s",
- "You permanently deleted %1$s" : "Trvale jste odstranil %1$s",
- "The password of %1$s has expired, renew it now." : "Heslo pro %1$s vypršelo, obnovte ho.",
+ "You permanently deleted %1$s" : "Trvale jste odstranili %1$s",
+ "The password of %1$s has expired, renew it now." : "Platnost hesla pro %1$s skončila, obnovte ho.",
"%1$s has been shared with %2$s" : "%1$s byl nasdílen uživatelem %2$s",
"You received a share request for %1$s from %2$s" : "Obdrželi jste nový požadavek na sdílení %1$s od uživatele %2$s",
"%s has been shared with a link" : "%s byl nasdílen pomocí odkazu",
- "Your credential \"%s\" expired, click here to update the credential." : "Vaše pověření \"%s\" vypršelo, klikněte zde pro obnovení",
+ "Your credential \"%s\" expired, click here to update the credential." : "Platnost vašeho pověření „%s“ skončila, pro obnovení klikněte sem",
"Remind me later" : "Připomenout později",
"Ignore" : "Ignorovat",
- "%s shared \"%s\" with you. Click here to accept" : "%s s tebou sdílí \"%s\". Kliknout pro přijetí",
- "%s has declined your share request for \"%s\"." : "%s zamítl(a) tvůj požadavek na sdílení \"%s\".",
- "%s has accepted your share request for \"%s\"." : "%s přijal(a) tvůj požadavek na sdílení \"%s\".",
+ "%s shared \"%s\" with you. Click here to accept" : "%s s vámi sdílí „%s“. Přijmete kliknutím",
+ "%s has declined your share request for \"%s\"." : "%s zamítl(a) váš požadavek na sdílení „%s“.",
+ "%s has accepted your share request for \"%s\"." : "%s přijal(a) váš požadavek na sdílení „%s“.",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman je správce hesel s mnoha funkcemi.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman je plně vybavený správce hesel.\nFunkce:\n- Trezory\n- Klíč k serveru není nikdy odesílán na server\n- Rozšíření pro prohlížeč pro snadný přístup k heslům\n- Aplikace pro Android pro přístup na cestách\n- Přihlašovací údaje jsou na straně klienta šifrovány 256 bit AES\n- Přihlašovací údaje jsou na straně serveru šifrovány 256 bit AES\n- Možnost přidat vlastní kolonky do přihlašovacích údajů\n- Vestavěné vytváření OTP (jednorázového hesla)\n- Analyzátor hesel\n- Sdílení hesel interně a zabezpečeně prostřednictvím odkazu.\n- Import z různých správců hesel (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nPro ukázku této aplikace navštivte [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Nepodařilo se získat informace o verzi",
- "Passman Settings" : "Nastavení passmanu",
- "GitHub version:" : "GitHub verze:",
- "A newer version of Passman is available" : "Je dostupná nová verze Passmanu",
+ "Passman Settings" : "Nastavení pro passman",
+ "GitHub version:" : "verze na GitHub:",
+ "A newer version of Passman is available" : "Je dostupná nová verze Passman",
"Password sharing" : "Sdílení hesla",
"Credential mover" : "Přesunovač pověření",
"Vault destruction requests" : "Požadavky na zničení trezoru",
"Check for new versions" : "Zkontrolovat nové verze",
"Enable HTTPS check" : "Povolit kontrolu HTTPS",
- "Disable context menu" : "Zakázat kontextové menu",
+ "Disable context menu" : "Zakázat kontextovou nabídku",
"Disable JavaScript debugger" : "Zakázat ladění JavaScriptu",
"Allow users on this server to share passwords with a link" : "Povolit na tomto serveru uživatelům sdílení hesel pomocí odkazu",
"Allow users on this server to share passwords with other users" : "Povolit na tomto serveru uživatelům sdílení hesel s ostatními uživateli",
"Move credentials from one account to another" : "Přesuňte pověření z jednoho účtu do druhého",
"Source account" : "Zdrojový účet",
"Destination account" : "Cílový účet",
- "Credentials moved!" : "Přihlašovací informace přesunuty!",
+ "Credentials moved!" : "Přihlašovací údaje přesunuty!",
"Requests to destroy vault" : "Požadavky na zničení trezoru",
- "Request ID" : "ID Požadavku",
+ "Request ID" : "Identifikátor požadavku",
"Requested by" : "Požadavek od",
"Reason" : "Důvod",
+ "Click here to request\n\t\t\t\t\tit" : "Klikněte sem pro žádost",
+ "Loading&hellip;" : "Načítání&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Hmmmm… pověření nenalezeno. Možná jeho platnost skončila?",
+ "Expires:" : "Platnost končí:",
"Connection to server lost" : "Připojení k serveru ztraceno",
"Problem loading page, reloading in 5 seconds" : "Problém s načítáním stránky, obnovení za 5 sekund",
- "Saving..." : "Ukládám...",
+ "Saving..." : "Ukládání…",
"Dismiss" : "Zavřít",
"seconds ago" : "před pár sekundami"
-},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
+},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/l10n/da.js b/l10n/da.js
index 630d6824..3ce9b35b 100644
--- a/l10n/da.js
+++ b/l10n/da.js
@@ -2,12 +2,15 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Adgangskoder",
- "Generating sharing keys ( %step / 2)" : "Genererer dele nøgler (%step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Genererer delte nøgler (%s / 2)",
"Incorrect vault password!" : "Ukorrekt boks adgangskode",
"Passwords do not match" : "Kodeord matchede ikke",
"General" : "Generel",
"Custom Fields" : "Valgfrit felt",
+ "Please fill in a label." : "Udfyld venligst mærket!",
+ "Please fill in a value." : "Udfyld venligst værdi!",
"Error loading file" : "Fejl ved indlæsning af fil",
+ "An error occurred during decryption" : "Der skete en fejl under dekryptering",
"Credential created!" : "Brugeroplysninger oprettet!",
"Credential deleted" : "Brugeroplysninger slettet",
"Credential updated" : "Brugeroplysninger opdateret",
@@ -17,25 +20,34 @@ OC.L10N.register(
"Starting export" : "Starter eksportering ",
"Decrypting credentials" : "Dekrypterer brugeroplysninger",
"Done" : "Færdig",
- "Credential has no label, skipping" : "Brugeropllysninger har intet mærkat, forsætter",
+ "Proceed with the following steps to import your file" : "Gennemgå følgene trin for at importere din fil",
"Adding {{credential}}" : "Tilføjer {{credential}}",
"Added {{credential}}" : "Tilføjer {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Springer over brugeroplysninger, manglende mærkat på linje {{line}}",
"Importing" : "Importerer",
"Start import" : "Start importering",
+ "Select CSV file" : "Vælg csv-fil",
+ "Parsed {{rows}} lines from CSV file" : "Parsede {{rows}} linjer fra csv fil",
"Skip first row" : "Spring første række over",
"You need to assign the label field before you can start the import." : "Du er nød til at uddele mærkat felt før du kan begynde at importere",
+ "The first 5 lines of the CSV are shown." : "De første 5 linjer fra csv-filen er vist.",
"Assign the proper fields to each column." : "Tildel de korrekte felter til hver kolonne.",
+ "Example of imported credential" : "Eksempel på importerede brugeroplysninger",
+ "Missing an importer? Try it with the generic CSV importer." : "Mangler du en importerings metode? Prøv med den generiske csv importering.",
"Go back to importers." : "Gå tilbage til importerer",
"Revision deleted" : "Revision slettet",
"Revision restored" : "Noten genskabt",
+ "Save in Passman" : "Gem i Passman",
"Settings saved" : "Indstillinger gemt",
"General settings" : "Generelle indstillinger",
+ "Password audit" : "Password audit",
"Password settings" : "Password indstillinger",
"Import credentials" : "Importer brugeroplysninger",
"Export credentials" : "Eksporter brugeroplysninger",
"Sharing" : "Deling",
- "Your old password is incorrect!" : "Dit gamle password er ikke korrekt!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Er du sikke på at du vil forlade siden? Dette vil ødelægge dine brugeroplysninger",
+ "New password does not match!" : "Nyt kodeord matchede ikke!",
+ "Please log in with your new vault password" : "Log venligst ind med dit nye boks password",
"Share with users and groups" : "Del med brugere og grupper",
"Share link" : "Del link",
"Are you sure you want to leave? This will corrupt this credential" : "Er du sikke på at du vil forlade siden? Dette vil ødelægge dine brugeroplysninger",
@@ -55,6 +67,10 @@ OC.L10N.register(
"Complete" : "Færdig",
"Username" : "Brugernavn",
"Repeat password" : "Gentag adgangskode",
+ "Add tag" : "Tilføj Tag",
+ "Pick an icon" : "Vælg et ikon",
+ "Use this icon" : "Brug dette Ikon",
+ "Selected icon" : "Valgte Ikon",
"Field label" : "Felt mærkat",
"Field value" : "Felt værdi",
"Choose a file" : "Vælg en fil",
@@ -72,6 +88,8 @@ OC.L10N.register(
"Current OTP settings" : "Nuværende OTP indstillinger",
"Issuer" : "Udsteder",
"Secret" : "Hemmelighed",
+ "Expiration date" : "Udløbsdato",
+ "No expiration date set" : "Ingen udløbsdato sat",
"Renew interval" : "Forny interval",
"Disabled" : "Deaktiveret",
"Day(s)" : "Dag(e)",
@@ -96,17 +114,18 @@ OC.L10N.register(
"Change vault key" : "Ændre boks nøgle",
"Old vault password" : "Gammelt boks password",
"New vault password" : "Nyt boks password",
+ "Repeat new vault password" : "Gentag nyt boks password",
"Please wait your vault is being updated, do not leave this page." : "Ven venligst din boks er ved at blive opdateret, forlad ikke denne side.",
"Processing" : "Processere",
"Total progress" : "Total forløb",
"About Passman" : "Om Passman",
"Version" : "Version",
"Donate to support development" : "Doner for at støtte udvikling",
- "Save your passwords with 1 click!" : "Gem dit password med 1 klik!",
"Delete vault" : "Slet boks",
"Vault password" : "Boks password",
"This process is irreversible" : "Denne process er irreversibel",
"Delete my precious passwords" : "Slet mine tidligere passwords",
+ "Deleting {{password}}…" : "Sletter {{password}}...",
"Yes, delete my precious passwords" : "Ja, slet mine tidligere adgangskoder",
"Import type" : "Importer type",
"Import" : "Importér",
@@ -117,10 +136,13 @@ OC.L10N.register(
"Generate sharing keys" : "Opret dele nøgler",
"Generating sharing keys" : "Opretter dele nøgler",
"Minimum password stength" : "Minimum password styrke",
+ "Start scan" : "Start scan",
+ "Result" : "Resultat",
"Score" : "Score",
"Action" : "Handling",
"Uploading" : "Uploader",
"User" : "Bruger",
+ "Crypto time" : "Kryptotid ",
"Read" : "Læs",
"Write" : "Skriv",
"Files" : "Filer",
@@ -149,16 +171,22 @@ OC.L10N.register(
"Restore revision" : "Genskab revision",
"Delete revision" : "Slet revision",
"Edit credential" : "Rediger brugeroplysninger",
+ "Create new credential" : "Opret nye brugeroplysninger",
"Save" : "Gem",
"Cancel" : "Annullér",
"Settings" : "Indstillinger",
+ "Share credential {{credential}}" : "Del brugeroplysning {{credential}}",
"Unshare" : "Ophæv deling",
+ "Beginning" : "Begynder",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Viser {{number_filtered}} af {{credential_number}} brugeroplysninger",
+ "Search for credential…" : "Søg brugeroplysninger",
"Account" : "Konto",
"Password" : "Adgangskode",
"OTP" : "OTP",
"E-mail" : "E-mail",
"URL" : "URL",
"Notes" : "Noter",
+ "Expiry time" : "Udløbstid",
"Changed" : "Ændret",
"Created" : "Oprettet",
"Edit" : "Redigér",
@@ -182,7 +210,7 @@ OC.L10N.register(
"Go back to vaults" : "Gå tilbage til boks",
"Please input the password for" : "Indtast venligst password for",
"Decrypt vault" : "Dekrypter boks",
- "Logged in to {{vault_name}}" : "Logget ind i {{vault_name}}",
+ "Seems you lost the vault password and you're unable to log in." : "Det lader til at du har mistet dit boks password og ikke er i stand til at logge ind",
"Change vault" : "Ændre boks",
"Deleted credentials" : "Slettede brugeroplysninger",
"Logout" : "Log ud",
@@ -210,7 +238,9 @@ OC.L10N.register(
"Password sharing" : "Password deling",
"Reason" : "Grund",
"Connection to server lost" : "Mistede forbindelsen til serveren",
+ "Problem loading page, reloading in 5 seconds" : "Problem med indlæsning af side, genindlæser om 5 sekunder",
"Saving..." : "Gemmer...",
+ "Dismiss" : "Afvis",
"seconds ago" : "sekunder siden"
},
"nplurals=2; plural=(n != 1);");
diff --git a/l10n/da.json b/l10n/da.json
index 3ccbd9f0..e4b30b8d 100644
--- a/l10n/da.json
+++ b/l10n/da.json
@@ -1,11 +1,14 @@
{ "translations": {
"Passwords" : "Adgangskoder",
- "Generating sharing keys ( %step / 2)" : "Genererer dele nøgler (%step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Genererer delte nøgler (%s / 2)",
"Incorrect vault password!" : "Ukorrekt boks adgangskode",
"Passwords do not match" : "Kodeord matchede ikke",
"General" : "Generel",
"Custom Fields" : "Valgfrit felt",
+ "Please fill in a label." : "Udfyld venligst mærket!",
+ "Please fill in a value." : "Udfyld venligst værdi!",
"Error loading file" : "Fejl ved indlæsning af fil",
+ "An error occurred during decryption" : "Der skete en fejl under dekryptering",
"Credential created!" : "Brugeroplysninger oprettet!",
"Credential deleted" : "Brugeroplysninger slettet",
"Credential updated" : "Brugeroplysninger opdateret",
@@ -15,25 +18,34 @@
"Starting export" : "Starter eksportering ",
"Decrypting credentials" : "Dekrypterer brugeroplysninger",
"Done" : "Færdig",
- "Credential has no label, skipping" : "Brugeropllysninger har intet mærkat, forsætter",
+ "Proceed with the following steps to import your file" : "Gennemgå følgene trin for at importere din fil",
"Adding {{credential}}" : "Tilføjer {{credential}}",
"Added {{credential}}" : "Tilføjer {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Springer over brugeroplysninger, manglende mærkat på linje {{line}}",
"Importing" : "Importerer",
"Start import" : "Start importering",
+ "Select CSV file" : "Vælg csv-fil",
+ "Parsed {{rows}} lines from CSV file" : "Parsede {{rows}} linjer fra csv fil",
"Skip first row" : "Spring første række over",
"You need to assign the label field before you can start the import." : "Du er nød til at uddele mærkat felt før du kan begynde at importere",
+ "The first 5 lines of the CSV are shown." : "De første 5 linjer fra csv-filen er vist.",
"Assign the proper fields to each column." : "Tildel de korrekte felter til hver kolonne.",
+ "Example of imported credential" : "Eksempel på importerede brugeroplysninger",
+ "Missing an importer? Try it with the generic CSV importer." : "Mangler du en importerings metode? Prøv med den generiske csv importering.",
"Go back to importers." : "Gå tilbage til importerer",
"Revision deleted" : "Revision slettet",
"Revision restored" : "Noten genskabt",
+ "Save in Passman" : "Gem i Passman",
"Settings saved" : "Indstillinger gemt",
"General settings" : "Generelle indstillinger",
+ "Password audit" : "Password audit",
"Password settings" : "Password indstillinger",
"Import credentials" : "Importer brugeroplysninger",
"Export credentials" : "Eksporter brugeroplysninger",
"Sharing" : "Deling",
- "Your old password is incorrect!" : "Dit gamle password er ikke korrekt!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Er du sikke på at du vil forlade siden? Dette vil ødelægge dine brugeroplysninger",
+ "New password does not match!" : "Nyt kodeord matchede ikke!",
+ "Please log in with your new vault password" : "Log venligst ind med dit nye boks password",
"Share with users and groups" : "Del med brugere og grupper",
"Share link" : "Del link",
"Are you sure you want to leave? This will corrupt this credential" : "Er du sikke på at du vil forlade siden? Dette vil ødelægge dine brugeroplysninger",
@@ -53,6 +65,10 @@
"Complete" : "Færdig",
"Username" : "Brugernavn",
"Repeat password" : "Gentag adgangskode",
+ "Add tag" : "Tilføj Tag",
+ "Pick an icon" : "Vælg et ikon",
+ "Use this icon" : "Brug dette Ikon",
+ "Selected icon" : "Valgte Ikon",
"Field label" : "Felt mærkat",
"Field value" : "Felt værdi",
"Choose a file" : "Vælg en fil",
@@ -70,6 +86,8 @@
"Current OTP settings" : "Nuværende OTP indstillinger",
"Issuer" : "Udsteder",
"Secret" : "Hemmelighed",
+ "Expiration date" : "Udløbsdato",
+ "No expiration date set" : "Ingen udløbsdato sat",
"Renew interval" : "Forny interval",
"Disabled" : "Deaktiveret",
"Day(s)" : "Dag(e)",
@@ -94,17 +112,18 @@
"Change vault key" : "Ændre boks nøgle",
"Old vault password" : "Gammelt boks password",
"New vault password" : "Nyt boks password",
+ "Repeat new vault password" : "Gentag nyt boks password",
"Please wait your vault is being updated, do not leave this page." : "Ven venligst din boks er ved at blive opdateret, forlad ikke denne side.",
"Processing" : "Processere",
"Total progress" : "Total forløb",
"About Passman" : "Om Passman",
"Version" : "Version",
"Donate to support development" : "Doner for at støtte udvikling",
- "Save your passwords with 1 click!" : "Gem dit password med 1 klik!",
"Delete vault" : "Slet boks",
"Vault password" : "Boks password",
"This process is irreversible" : "Denne process er irreversibel",
"Delete my precious passwords" : "Slet mine tidligere passwords",
+ "Deleting {{password}}…" : "Sletter {{password}}...",
"Yes, delete my precious passwords" : "Ja, slet mine tidligere adgangskoder",
"Import type" : "Importer type",
"Import" : "Importér",
@@ -115,10 +134,13 @@
"Generate sharing keys" : "Opret dele nøgler",
"Generating sharing keys" : "Opretter dele nøgler",
"Minimum password stength" : "Minimum password styrke",
+ "Start scan" : "Start scan",
+ "Result" : "Resultat",
"Score" : "Score",
"Action" : "Handling",
"Uploading" : "Uploader",
"User" : "Bruger",
+ "Crypto time" : "Kryptotid ",
"Read" : "Læs",
"Write" : "Skriv",
"Files" : "Filer",
@@ -147,16 +169,22 @@
"Restore revision" : "Genskab revision",
"Delete revision" : "Slet revision",
"Edit credential" : "Rediger brugeroplysninger",
+ "Create new credential" : "Opret nye brugeroplysninger",
"Save" : "Gem",
"Cancel" : "Annullér",
"Settings" : "Indstillinger",
+ "Share credential {{credential}}" : "Del brugeroplysning {{credential}}",
"Unshare" : "Ophæv deling",
+ "Beginning" : "Begynder",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Viser {{number_filtered}} af {{credential_number}} brugeroplysninger",
+ "Search for credential…" : "Søg brugeroplysninger",
"Account" : "Konto",
"Password" : "Adgangskode",
"OTP" : "OTP",
"E-mail" : "E-mail",
"URL" : "URL",
"Notes" : "Noter",
+ "Expiry time" : "Udløbstid",
"Changed" : "Ændret",
"Created" : "Oprettet",
"Edit" : "Redigér",
@@ -180,7 +208,7 @@
"Go back to vaults" : "Gå tilbage til boks",
"Please input the password for" : "Indtast venligst password for",
"Decrypt vault" : "Dekrypter boks",
- "Logged in to {{vault_name}}" : "Logget ind i {{vault_name}}",
+ "Seems you lost the vault password and you're unable to log in." : "Det lader til at du har mistet dit boks password og ikke er i stand til at logge ind",
"Change vault" : "Ændre boks",
"Deleted credentials" : "Slettede brugeroplysninger",
"Logout" : "Log ud",
@@ -208,7 +236,9 @@
"Password sharing" : "Password deling",
"Reason" : "Grund",
"Connection to server lost" : "Mistede forbindelsen til serveren",
+ "Problem loading page, reloading in 5 seconds" : "Problem med indlæsning af side, genindlæser om 5 sekunder",
"Saving..." : "Gemmer...",
+ "Dismiss" : "Afvis",
"seconds ago" : "sekunder siden"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/l10n/de.js b/l10n/de.js
index f855cfe5..fb37ab4b 100644
--- a/l10n/de.js
+++ b/l10n/de.js
@@ -2,8 +2,8 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Passwörter",
- "Generating sharing keys ( %step / 2)" : "Generiere Freigabe-Schlüssel ( %step / 2)",
- "Incorrect vault password!" : "falsches Tresor-Passwort",
+ "Generating sharing keys ( %s / 2)" : "Generiere Freigabe-Schlüssel (%s / 2)",
+ "Incorrect vault password!" : "Falsches Tresor-Passwort",
"Passwords do not match" : "Passwörter stimmen nicht überein",
"General" : "Allgemein",
"Custom Fields" : "Benutzerdefinierte Felder",
@@ -16,14 +16,14 @@ OC.L10N.register(
"Credential updated" : "Anmeldeinformation aktualisiert",
"Credential recovered" : "Anmeldeinformation wiederhergestellt",
"Credential destroyed" : "Anmeldeinformation zerstört",
- "Error downloading file, you probably don't have sufficient permissions" : "Fehler beim Herunterladen der Datei, Du hast möglicherweise nicht die erforderliche Berechtigung",
+ "Error downloading file, you probably have insufficient permissions" : "Fehler beim Herunterladen der Datei, Du hast möglicherweise falsche Berechtigungen",
"Invalid QR code" : "Fehlerhafter QR-Code",
"Starting export" : "Export gestartet",
"Decrypting credentials" : "Anmeldeinformationen werden entschlüsselt",
"Done" : "Fertig",
- "File read successfully." : "Datei erfolgreich gelesen",
+ "File read." : "Datei gelesen.",
"Proceed with the following steps to import your file" : "Führe folgende Schritte aus um Deine Datei zu importieren",
- "Credential has no label, skipping" : "Übersprungen, Anmeldeinformation hat keine Beschriftung",
+ "Skipping unlabeled credential" : "Unbekannte Zugangsdaten überspringen",
"Adding {{credential}}" : "{{credential}} wird hinzugefügt",
"Added {{credential}}" : "{{credential}} wurde hinzugefügt",
"Skipping credential, missing label on line {{line}}" : "Überspringe Anmeldeinformation, fehlende Bezeichnung in Zeile {{line}}",
@@ -50,7 +50,7 @@ OC.L10N.register(
"Export credentials" : "Anmeldeinformationen exportieren",
"Sharing" : "Teilen",
"Are you sure you want to leave? This will destroy all your credentials" : "Möchtest du dies wirklich verlassen? Dies wird alle Deine Anmeldeinformationen zerstören",
- "Your old password is incorrect!" : "Dein altes Passwort ist falsch!",
+ "Old password field incorrect!" : "Altes Passwort-Feld falsch!",
"New password does not match!" : "Deine neuen Passwörter stimmen nicht überein!",
"Please log in with your new vault password" : "Bitte melde Dich mit Deinem neuen Tresor-Passwort an",
"Share with users and groups" : "Mit Benutzern oder Gruppen teilen",
@@ -70,9 +70,14 @@ OC.L10N.register(
"Copy password to clipboard" : "Passwort in die Zwischenablage kopieren",
"Password copied to clipboard!" : "Passwort in die Zwischenablage kopiert!",
"Complete" : "Fertigstellen",
- "Username" : "Benutzer",
+ "Username" : "Benutzername",
"Repeat password" : "Passwort wiederholen",
"Add tag" : "Schlagwort hinzufügen",
+ "Pick an icon" : "Icon auswählen",
+ "Search icons" : "Suche Icons",
+ "Upload a custom icon:" : "Benutzerdefiniertes Icon hochladen:",
+ "Use this icon" : "Dieses Icon verwenden",
+ "Selected icon" : "Icon auswählen",
"Field label" : "Beschriftung des Feldes",
"Field value" : "Wert des Feldes",
"Choose a file" : "Datei auswählen",
@@ -124,7 +129,7 @@ OC.L10N.register(
"Version" : "Version",
"Donate to support development" : "Zur Unterstützung der Entwicklung bitte spenden",
"Bookmarklet" : "Lesezeichen setzen",
- "Save your passwords with 1 click!" : "Speichere deine Passwörter mit einem Klick!",
+ "Save your passwords with one click." : "Speichere Deine Passwörter mit einem Klick.",
"Drag below button to your bookmark toolbar." : "Ziehe die untenstehende Schaltfläche in deine Lesezeichen-Leiste",
"Delete vault" : "Tresor löschen",
"Vault password" : "Tresor-Passwort",
@@ -142,20 +147,20 @@ OC.L10N.register(
"Save keys" : "Schlüssel speichern",
"Generate sharing keys" : "Schlüssel zum Teilen erzeugen",
"Generating sharing keys" : "Erzeuge Schlüssel zum Teilen",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Das Passwort-Tool analysiert dein Passwort, berechnet die Zeit zum knacken des Passwortes und listet die Passwörter auf die unter dem Grenzwert liegen. ",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Das Passwort-Tool analysiert Dein Passwort, berechnet die Zeit zum knacken des Passwortes und listet die Passwörter, die unter dem Grenzwert liegen auf. ",
"Minimum password stength" : "Minimale Passwortstärke",
"Start scan" : "Einen Scan starten",
"Result" : "Ergebnis",
"A total of {{scan_result}} weak credentials were found." : "Es wurden insgesamt {{scan_result}} schwache Anmeldeinformationen wurden gefunden.",
"Score" : "Bewertung",
"Action" : "Aktion",
- "Search users or groups…" : "Benutzer oder Gruppen suchen…",
+ "Search users…" : "Suche Nutzer...",
"Missing users? Only users that have vaults are shown." : "Nutzer gesucht? Es werden nur Nutzer mit einem Tresor angezeigt.",
"Cyphering" : "Verschlüsselung",
"Uploading" : "Lade hoch",
"User" : "Nutzer",
"Crypto time" : "Verschlüsselungszeit",
- "Total time spent cyphering" : "Gesamte aufgewendete Zeit zur Verschlüsselung",
+ "Total time spent encrypting" : "Insgesamt zur Verschlüsselung benötigte Zeit",
"Read" : "Lesen",
"Write" : "Schreiben",
"Files" : "Dateien",
@@ -164,7 +169,7 @@ OC.L10N.register(
"Enable link sharing" : "Freigaben über Links aktivieren",
"Share until date" : "Freigabe gültig bis Datum",
"Expire after views" : "Läuft nach dem Anschauen ab",
- "Click Share first" : "Erst auf Teilen klicken",
+ "Click \\\"Share\\\" first" : "Erst auf \\\"Teilen\\\" klicken",
"Show files" : "Dateien anzeigen",
"Details" : "Details",
"Hide details" : "Details ausblenden",
@@ -224,7 +229,7 @@ OC.L10N.register(
"Use regex" : "Regex verwenden",
"You have incoming share requests." : "Du hast eingehende Freigabeanforderungen.",
"If you want to put the credential in another vault," : "Wenn Du die Anmeldeinformation in einem anderen Tresor verschieben möchtest,",
- "log out of this vault and log in to the vault you want the shared credential in." : "melde dich bei diesem Tresor ab und melde dich bei dem Tresor, welches die geteilte Anmeldeinformation beinhaltet, wieder an.",
+ "log out of this vault and log into the vault you want the shared credential in." : "melden Dich bei diesem Tresor ab und melde Dich bei dem Tresor, der die geteilte Zugangsdaten beinhaltet, wieder an.",
"Permissions" : "Rechte",
"Received from" : "Erhalten von",
"Date" : "Datum",
@@ -232,13 +237,22 @@ OC.L10N.register(
"Decline" : "Ablehnen",
"You have {{session_time}} left before logout." : "Du wirst in {{session_time}} abgemeldet.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Dein Tresor wurde für {{time}} gesperrt, da du dich {{tries}} falsch angemeldet habst!",
+ "Hello there!" : "Hallo!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "Anscheinend hast Du noch keine Passwörter. Soll eins hinzugefügt werden?",
+ "You don't have good credentials" : "Du hast keine guten Anmeldedaten",
+ "You don't have medium credentials" : "Sie haben keine mittlere Anmeldedaten",
+ "You don't have bad credentials" : "Du hast keine ungültigen Anmeldedaten",
+ "You don't have expired credentials" : "Du hast keine abgelaufenen Anmeldedaten",
+ "You don't have deleted credentials" : "Du hast keine gelöschten Anmeldedaten",
+ "There are no credentials with your selected tags" : "Keine Anmeldedaten mit den ausgewählten Schlagworten vorhanden",
+ "There are no credentials matching" : "Keine passenden Anmeldedaten",
"Last accessed" : "Letzter Zugriff",
"Never" : "Nie",
"No vaults found, why not create one?" : "Kein Tresor gefunden, warum kein neues erstellen?",
"Password strength must be at least: {{strength}}" : "Mindest erforderliche Passwortstärke: {{strength}}",
"Please give your new vault a name." : "Bitte einen Namen für den neuen Tresor eingeben.",
"Repeat vault password" : "Tresor-Passwort wiederholen",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Deine Freigabeschlüssel werden 1024 bit stark sein. Du kannst dies auch später noch in den Einstellungen ändern.",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Deine Freigabeschlüssel werden 1024 bit stark sein. Du kannst dies auch später noch in den \\\"Einstellungen\\\" ändern.",
"Create vault" : "Erstelle Tresor",
"Go back to vaults" : "Zurück zu den Tresoren",
"Please input the password for" : "Passwort eingeben für",
@@ -258,11 +272,20 @@ OC.L10N.register(
"Request removed" : "Anfrage entfernt",
"Destruction request pending" : "Lösch-Anforderung wartet",
"Warning! Adding credentials over HTTP is insecure!" : "Achtung! Das Hinzufügen von Zugangsdaten über http ist unsicher!",
- "Logged in to {{vault_name}}" : "Angemeldet in {{vault_name}}",
+ "Logged into {{vault_name}}" : "Angemeldet an {{vault_name}}",
"Change vault" : "Wechsle Tresor",
"Deleted credentials" : "Zugangsdaten gelöscht",
"Logout" : "Abmelden",
"Donate" : "Spende",
+ "Show All" : "Alle anzeigen",
+ "Tags" : "Schlagworte",
+ "Search Tags" : "Schlagworte suchen",
+ "Good Strength" : "Gute Stärke",
+ "Medium Strength" : "Mittlere Stärke",
+ "Bad Strength" : "Zu schwach",
+ "Expired" : "Abgelaufen",
+ "Filter Tags" : "Schlagworte filtern",
+ "Simple Navigation" : "Einfache Navigation",
"Someone has shared a credential with you." : "Jemand hat Zugangsdaten mit Dir geteilt.",
"Click here to request it" : "Hier klicken um es anzufordern",
"Loading…" : "Lade…",
@@ -297,6 +320,8 @@ OC.L10N.register(
"%s has declined your share request for \"%s\"." : "%s hat das Teilen von \"%s\" mit Dir abgelehnt.",
"%s has accepted your share request for \"%s\"." : "%s hat das Teilen von \"%s\" mit Dir akzeptiert.",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman ist ein vollständiger Passwortmanager",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman ist ein umfassender Passwort-Manager.\nFunktionen:\n- Passwort-Tresor\n- Passwort des Tresors wird nie an den Server geschickt\n- Browser-Erweiterung für einen einfachen Zugriff auf die Passwörter\n- Android-App für den Zugriff unterwegs\n- Zugangscodes werden Client-seitig mit 256-bit AES verschlüsselt\n- Zugangscodes werden Server-seitig mit 256-bit AES verschlüsselt\n- Optional: weitere Felder zu den Anmeldedaten\n- Integrierter Generator für Einmal-Passwörter (OTP)\n- Passwort-Prüfer\n- Sicheres Teilen von Passwörtern über einen Link\n- Import von diversen Passwort-Managern (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nFür eine Demo dieser App, schaue auf [https://demo.passman.cc](https://demo.passman.cc) vorbei",
"Unable to get version info" : "Versionsinfo konnte nicht ermittelt werden",
"Passman Settings" : "Passman-Einstellungen",
"GitHub version:" : "Github-Version: ",
@@ -318,6 +343,10 @@ OC.L10N.register(
"Request ID" : "Anfrage-ID",
"Requested by" : "Angefordert von",
"Reason" : "Grund",
+ "Click here to request\n\t\t\t\t\tit" : "Hier klicken um es\n\t\t\t\t\tanzufordern",
+ "Loading&hellip;" : "Lade&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Oh… Zugangsdaten nicht gefunden. Vielleicht sind sie abgelaufen?",
+ "Expires:" : "Ablaufdatum:",
"Connection to server lost" : "Verbindung zum Server verloren",
"Problem loading page, reloading in 5 seconds" : "Problem beim Laden der Seite, Seite wird in 5 Sekunden nochmals geladen",
"Saving..." : "Speichere…",
diff --git a/l10n/de.json b/l10n/de.json
index 37663671..e0e3acf5 100644
--- a/l10n/de.json
+++ b/l10n/de.json
@@ -1,7 +1,7 @@
{ "translations": {
"Passwords" : "Passwörter",
- "Generating sharing keys ( %step / 2)" : "Generiere Freigabe-Schlüssel ( %step / 2)",
- "Incorrect vault password!" : "falsches Tresor-Passwort",
+ "Generating sharing keys ( %s / 2)" : "Generiere Freigabe-Schlüssel (%s / 2)",
+ "Incorrect vault password!" : "Falsches Tresor-Passwort",
"Passwords do not match" : "Passwörter stimmen nicht überein",
"General" : "Allgemein",
"Custom Fields" : "Benutzerdefinierte Felder",
@@ -14,14 +14,14 @@
"Credential updated" : "Anmeldeinformation aktualisiert",
"Credential recovered" : "Anmeldeinformation wiederhergestellt",
"Credential destroyed" : "Anmeldeinformation zerstört",
- "Error downloading file, you probably don't have sufficient permissions" : "Fehler beim Herunterladen der Datei, Du hast möglicherweise nicht die erforderliche Berechtigung",
+ "Error downloading file, you probably have insufficient permissions" : "Fehler beim Herunterladen der Datei, Du hast möglicherweise falsche Berechtigungen",
"Invalid QR code" : "Fehlerhafter QR-Code",
"Starting export" : "Export gestartet",
"Decrypting credentials" : "Anmeldeinformationen werden entschlüsselt",
"Done" : "Fertig",
- "File read successfully." : "Datei erfolgreich gelesen",
+ "File read." : "Datei gelesen.",
"Proceed with the following steps to import your file" : "Führe folgende Schritte aus um Deine Datei zu importieren",
- "Credential has no label, skipping" : "Übersprungen, Anmeldeinformation hat keine Beschriftung",
+ "Skipping unlabeled credential" : "Unbekannte Zugangsdaten überspringen",
"Adding {{credential}}" : "{{credential}} wird hinzugefügt",
"Added {{credential}}" : "{{credential}} wurde hinzugefügt",
"Skipping credential, missing label on line {{line}}" : "Überspringe Anmeldeinformation, fehlende Bezeichnung in Zeile {{line}}",
@@ -48,7 +48,7 @@
"Export credentials" : "Anmeldeinformationen exportieren",
"Sharing" : "Teilen",
"Are you sure you want to leave? This will destroy all your credentials" : "Möchtest du dies wirklich verlassen? Dies wird alle Deine Anmeldeinformationen zerstören",
- "Your old password is incorrect!" : "Dein altes Passwort ist falsch!",
+ "Old password field incorrect!" : "Altes Passwort-Feld falsch!",
"New password does not match!" : "Deine neuen Passwörter stimmen nicht überein!",
"Please log in with your new vault password" : "Bitte melde Dich mit Deinem neuen Tresor-Passwort an",
"Share with users and groups" : "Mit Benutzern oder Gruppen teilen",
@@ -68,9 +68,14 @@
"Copy password to clipboard" : "Passwort in die Zwischenablage kopieren",
"Password copied to clipboard!" : "Passwort in die Zwischenablage kopiert!",
"Complete" : "Fertigstellen",
- "Username" : "Benutzer",
+ "Username" : "Benutzername",
"Repeat password" : "Passwort wiederholen",
"Add tag" : "Schlagwort hinzufügen",
+ "Pick an icon" : "Icon auswählen",
+ "Search icons" : "Suche Icons",
+ "Upload a custom icon:" : "Benutzerdefiniertes Icon hochladen:",
+ "Use this icon" : "Dieses Icon verwenden",
+ "Selected icon" : "Icon auswählen",
"Field label" : "Beschriftung des Feldes",
"Field value" : "Wert des Feldes",
"Choose a file" : "Datei auswählen",
@@ -122,7 +127,7 @@
"Version" : "Version",
"Donate to support development" : "Zur Unterstützung der Entwicklung bitte spenden",
"Bookmarklet" : "Lesezeichen setzen",
- "Save your passwords with 1 click!" : "Speichere deine Passwörter mit einem Klick!",
+ "Save your passwords with one click." : "Speichere Deine Passwörter mit einem Klick.",
"Drag below button to your bookmark toolbar." : "Ziehe die untenstehende Schaltfläche in deine Lesezeichen-Leiste",
"Delete vault" : "Tresor löschen",
"Vault password" : "Tresor-Passwort",
@@ -140,20 +145,20 @@
"Save keys" : "Schlüssel speichern",
"Generate sharing keys" : "Schlüssel zum Teilen erzeugen",
"Generating sharing keys" : "Erzeuge Schlüssel zum Teilen",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Das Passwort-Tool analysiert dein Passwort, berechnet die Zeit zum knacken des Passwortes und listet die Passwörter auf die unter dem Grenzwert liegen. ",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Das Passwort-Tool analysiert Dein Passwort, berechnet die Zeit zum knacken des Passwortes und listet die Passwörter, die unter dem Grenzwert liegen auf. ",
"Minimum password stength" : "Minimale Passwortstärke",
"Start scan" : "Einen Scan starten",
"Result" : "Ergebnis",
"A total of {{scan_result}} weak credentials were found." : "Es wurden insgesamt {{scan_result}} schwache Anmeldeinformationen wurden gefunden.",
"Score" : "Bewertung",
"Action" : "Aktion",
- "Search users or groups…" : "Benutzer oder Gruppen suchen…",
+ "Search users…" : "Suche Nutzer...",
"Missing users? Only users that have vaults are shown." : "Nutzer gesucht? Es werden nur Nutzer mit einem Tresor angezeigt.",
"Cyphering" : "Verschlüsselung",
"Uploading" : "Lade hoch",
"User" : "Nutzer",
"Crypto time" : "Verschlüsselungszeit",
- "Total time spent cyphering" : "Gesamte aufgewendete Zeit zur Verschlüsselung",
+ "Total time spent encrypting" : "Insgesamt zur Verschlüsselung benötigte Zeit",
"Read" : "Lesen",
"Write" : "Schreiben",
"Files" : "Dateien",
@@ -162,7 +167,7 @@
"Enable link sharing" : "Freigaben über Links aktivieren",
"Share until date" : "Freigabe gültig bis Datum",
"Expire after views" : "Läuft nach dem Anschauen ab",
- "Click Share first" : "Erst auf Teilen klicken",
+ "Click \\\"Share\\\" first" : "Erst auf \\\"Teilen\\\" klicken",
"Show files" : "Dateien anzeigen",
"Details" : "Details",
"Hide details" : "Details ausblenden",
@@ -222,7 +227,7 @@
"Use regex" : "Regex verwenden",
"You have incoming share requests." : "Du hast eingehende Freigabeanforderungen.",
"If you want to put the credential in another vault," : "Wenn Du die Anmeldeinformation in einem anderen Tresor verschieben möchtest,",
- "log out of this vault and log in to the vault you want the shared credential in." : "melde dich bei diesem Tresor ab und melde dich bei dem Tresor, welches die geteilte Anmeldeinformation beinhaltet, wieder an.",
+ "log out of this vault and log into the vault you want the shared credential in." : "melden Dich bei diesem Tresor ab und melde Dich bei dem Tresor, der die geteilte Zugangsdaten beinhaltet, wieder an.",
"Permissions" : "Rechte",
"Received from" : "Erhalten von",
"Date" : "Datum",
@@ -230,13 +235,22 @@
"Decline" : "Ablehnen",
"You have {{session_time}} left before logout." : "Du wirst in {{session_time}} abgemeldet.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Dein Tresor wurde für {{time}} gesperrt, da du dich {{tries}} falsch angemeldet habst!",
+ "Hello there!" : "Hallo!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "Anscheinend hast Du noch keine Passwörter. Soll eins hinzugefügt werden?",
+ "You don't have good credentials" : "Du hast keine guten Anmeldedaten",
+ "You don't have medium credentials" : "Sie haben keine mittlere Anmeldedaten",
+ "You don't have bad credentials" : "Du hast keine ungültigen Anmeldedaten",
+ "You don't have expired credentials" : "Du hast keine abgelaufenen Anmeldedaten",
+ "You don't have deleted credentials" : "Du hast keine gelöschten Anmeldedaten",
+ "There are no credentials with your selected tags" : "Keine Anmeldedaten mit den ausgewählten Schlagworten vorhanden",
+ "There are no credentials matching" : "Keine passenden Anmeldedaten",
"Last accessed" : "Letzter Zugriff",
"Never" : "Nie",
"No vaults found, why not create one?" : "Kein Tresor gefunden, warum kein neues erstellen?",
"Password strength must be at least: {{strength}}" : "Mindest erforderliche Passwortstärke: {{strength}}",
"Please give your new vault a name." : "Bitte einen Namen für den neuen Tresor eingeben.",
"Repeat vault password" : "Tresor-Passwort wiederholen",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Deine Freigabeschlüssel werden 1024 bit stark sein. Du kannst dies auch später noch in den Einstellungen ändern.",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Deine Freigabeschlüssel werden 1024 bit stark sein. Du kannst dies auch später noch in den \\\"Einstellungen\\\" ändern.",
"Create vault" : "Erstelle Tresor",
"Go back to vaults" : "Zurück zu den Tresoren",
"Please input the password for" : "Passwort eingeben für",
@@ -256,11 +270,20 @@
"Request removed" : "Anfrage entfernt",
"Destruction request pending" : "Lösch-Anforderung wartet",
"Warning! Adding credentials over HTTP is insecure!" : "Achtung! Das Hinzufügen von Zugangsdaten über http ist unsicher!",
- "Logged in to {{vault_name}}" : "Angemeldet in {{vault_name}}",
+ "Logged into {{vault_name}}" : "Angemeldet an {{vault_name}}",
"Change vault" : "Wechsle Tresor",
"Deleted credentials" : "Zugangsdaten gelöscht",
"Logout" : "Abmelden",
"Donate" : "Spende",
+ "Show All" : "Alle anzeigen",
+ "Tags" : "Schlagworte",
+ "Search Tags" : "Schlagworte suchen",
+ "Good Strength" : "Gute Stärke",
+ "Medium Strength" : "Mittlere Stärke",
+ "Bad Strength" : "Zu schwach",
+ "Expired" : "Abgelaufen",
+ "Filter Tags" : "Schlagworte filtern",
+ "Simple Navigation" : "Einfache Navigation",
"Someone has shared a credential with you." : "Jemand hat Zugangsdaten mit Dir geteilt.",
"Click here to request it" : "Hier klicken um es anzufordern",
"Loading…" : "Lade…",
@@ -295,6 +318,8 @@
"%s has declined your share request for \"%s\"." : "%s hat das Teilen von \"%s\" mit Dir abgelehnt.",
"%s has accepted your share request for \"%s\"." : "%s hat das Teilen von \"%s\" mit Dir akzeptiert.",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman ist ein vollständiger Passwortmanager",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman ist ein umfassender Passwort-Manager.\nFunktionen:\n- Passwort-Tresor\n- Passwort des Tresors wird nie an den Server geschickt\n- Browser-Erweiterung für einen einfachen Zugriff auf die Passwörter\n- Android-App für den Zugriff unterwegs\n- Zugangscodes werden Client-seitig mit 256-bit AES verschlüsselt\n- Zugangscodes werden Server-seitig mit 256-bit AES verschlüsselt\n- Optional: weitere Felder zu den Anmeldedaten\n- Integrierter Generator für Einmal-Passwörter (OTP)\n- Passwort-Prüfer\n- Sicheres Teilen von Passwörtern über einen Link\n- Import von diversen Passwort-Managern (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nFür eine Demo dieser App, schaue auf [https://demo.passman.cc](https://demo.passman.cc) vorbei",
"Unable to get version info" : "Versionsinfo konnte nicht ermittelt werden",
"Passman Settings" : "Passman-Einstellungen",
"GitHub version:" : "Github-Version: ",
@@ -316,6 +341,10 @@
"Request ID" : "Anfrage-ID",
"Requested by" : "Angefordert von",
"Reason" : "Grund",
+ "Click here to request\n\t\t\t\t\tit" : "Hier klicken um es\n\t\t\t\t\tanzufordern",
+ "Loading&hellip;" : "Lade&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Oh… Zugangsdaten nicht gefunden. Vielleicht sind sie abgelaufen?",
+ "Expires:" : "Ablaufdatum:",
"Connection to server lost" : "Verbindung zum Server verloren",
"Problem loading page, reloading in 5 seconds" : "Problem beim Laden der Seite, Seite wird in 5 Sekunden nochmals geladen",
"Saving..." : "Speichere…",
diff --git a/l10n/de_DE.js b/l10n/de_DE.js
index 28705676..82f9333f 100644
--- a/l10n/de_DE.js
+++ b/l10n/de_DE.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Passwörter",
- "Generating sharing keys ( %step / 2)" : "Generiere Freigabe-Schlüssel ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Generiere Freigabe-Schlüssel ( %s / 2)",
"Incorrect vault password!" : "Tresor-Passwort nicht korrekt",
"Passwords do not match" : "Passwörter stimmen nicht überein",
"General" : "Allgemein",
@@ -16,14 +16,14 @@ OC.L10N.register(
"Credential updated" : "Anmeldeinformation aktualisiert",
"Credential recovered" : "Anmeldeinformation wiederhergestellt",
"Credential destroyed" : "Anmeldeinformation zerstört",
- "Error downloading file, you probably don't have sufficient permissions" : "Fehler beim Herunterladen der Datei, Sie haben möglicherweise nicht die erforderliche Berechtigung",
+ "Error downloading file, you probably have insufficient permissions" : "Fehler beim Herunterladen der Datei, Sie haben möglicherweise falsche Berechtigungen",
"Invalid QR code" : "Fehlerhafter QR-Code",
"Starting export" : "Export gestartet",
"Decrypting credentials" : "Anmeldeinformationen werden entschlüsselt",
"Done" : "Fertig",
- "File read successfully." : "Datei erfolgreich gelesen",
+ "File read." : "Datei gelesen.",
"Proceed with the following steps to import your file" : "Führen Sie folgende Schritte aus um Ihre Datei zu importieren",
- "Credential has no label, skipping" : "Übersprungen, Anmeldeinformation hat keine Beschriftung",
+ "Skipping unlabeled credential" : "Unbekannte Zugangsdaten überspringen",
"Adding {{credential}}" : "{{credential}} werden hinzugefügt",
"Added {{credential}}" : "{{credential}} hinzugefügt",
"Skipping credential, missing label on line {{line}}" : "Überspringe Zugangsdaten, fehlende Beschriftung in Zeile {{line}}",
@@ -50,7 +50,7 @@ OC.L10N.register(
"Export credentials" : "Anmeldeinformationen exportieren",
"Sharing" : "Teilen",
"Are you sure you want to leave? This will destroy all your credentials" : "Möchten Sie dies wirklich verlassen? Dies wird alle Ihre Anmeldeinformationen zerstören",
- "Your old password is incorrect!" : "Ihr altes Passwort ist falsch!",
+ "Old password field incorrect!" : "Altes Passwort-Feld falsch!",
"New password does not match!" : "Die neuen Passwörter stimmen nicht überein!",
"Please log in with your new vault password" : "Bitte mit Ihrem neuen Tresor-Passwort anmelden",
"Share with users and groups" : "Mit Benutzern und Gruppen teilen",
@@ -73,6 +73,11 @@ OC.L10N.register(
"Username" : "Benutzername",
"Repeat password" : "Passwort wiederholen",
"Add tag" : "Schlagwort hinzufügen",
+ "Pick an icon" : "Icon auswählen",
+ "Search icons" : "Suche Icons",
+ "Upload a custom icon:" : "Benutzerdefiniertes Icon hochladen:",
+ "Use this icon" : "Dieses Icon verwenden",
+ "Selected icon" : "Icon auswählen",
"Field label" : "Beschriftung des Feldes",
"Field value" : "Wert des Feldes",
"Choose a file" : "Datei auswählen",
@@ -124,7 +129,7 @@ OC.L10N.register(
"Version" : "Version",
"Donate to support development" : "Zur Unterstützung der Entwicklung bitte spenden",
"Bookmarklet" : "Lesezeichen setzen",
- "Save your passwords with 1 click!" : "Speichern Sie Ihre Passwörter mit einem Klick!",
+ "Save your passwords with one click." : "Speichern Sie Ihre Passwörter mit einem Klick.",
"Drag below button to your bookmark toolbar." : "Ziehen Sie die untere Schaltfläche in Ihre Lesezeichen-Leiste",
"Delete vault" : "Tresor löschen",
"Vault password" : "Tresor-Passwort",
@@ -142,20 +147,20 @@ OC.L10N.register(
"Save keys" : "Schlüssel speichern",
"Generate sharing keys" : "Schlüssel zum Teilen erzeugen",
"Generating sharing keys" : "Erzeuge Schlüssel zum Teilen",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Das Passwort-Tool analysiert Ihr Passwort, berechnet die Zeit zum knacken des Passwortes und listet die Passwörter auf die unter dem Grenzwert liegen. ",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Das Passwort-Tool analysiert Ihr Passwort, berechnet die Zeit zum knacken des Passwortes und listet die Passwörter , die unter dem Grenzwert liegen auf. ",
"Minimum password stength" : "Minimale Passwortstärke",
"Start scan" : "Einen Scan starten",
"Result" : "Ergebnis",
"A total of {{scan_result}} weak credentials were found." : "Es wurden insgesamt {{scan_result}} schwache Anmeldeinformationen wurden gefunden.",
"Score" : "Bewertung",
"Action" : "Aktion",
- "Search users or groups…" : "Suche Benutzer oder Gruppen…",
+ "Search users…" : "Suche Benutzer…",
"Missing users? Only users that have vaults are shown." : "Nutzer gesucht? Es werden nur Nutzer mit einem Tresor angezeigt.",
"Cyphering" : "Verschlüsselung",
"Uploading" : "Lade hoch",
- "User" : "Nutzer",
+ "User" : "Benutzer",
"Crypto time" : "Verschlüsselungszeit",
- "Total time spent cyphering" : "Gesamte aufgewendete Zeit zur Verschlüsselung",
+ "Total time spent encrypting" : "Insgesamt zur Verschlüsselung benötigte Zeit",
"Read" : "Lesen",
"Write" : "Schreiben",
"Files" : "Dateien",
@@ -164,7 +169,7 @@ OC.L10N.register(
"Enable link sharing" : "Freigaben über Links aktivieren",
"Share until date" : "Freigabe gültig bis Datum",
"Expire after views" : "Läuft nach dem Anschauen ab",
- "Click Share first" : "Erst auf Teilen klicken",
+ "Click \\\"Share\\\" first" : "Erst auf \\\"Teilen\\\" klicken",
"Show files" : "Dateien anzeigen",
"Details" : "Details",
"Hide details" : "Details ausblenden",
@@ -224,7 +229,7 @@ OC.L10N.register(
"Use regex" : "Regex verwenden",
"You have incoming share requests." : "Sie haben eingehende Freigabeanforderungen.",
"If you want to put the credential in another vault," : "Falls Sie die Anmeldeinformation in einen andern Tresor übertragen möchten,",
- "log out of this vault and log in to the vault you want the shared credential in." : "melden Sie sich bei diesem Tresor ab und melde Sie sich bei dem Tresor, welches die geteilte Anmeldeinformation beinhaltet, wieder an.",
+ "log out of this vault and log into the vault you want the shared credential in." : "melden Sie sich bei diesem Tresor ab und melden Sie sich bei dem Tresor, der die geteilte Zugangsdaten beinhaltet, wieder an.",
"Permissions" : "Rechte",
"Received from" : "Erhalten von",
"Date" : "Datum",
@@ -232,13 +237,22 @@ OC.L10N.register(
"Decline" : "Ablehnen",
"You have {{session_time}} left before logout." : "Sie werden in {{session_time}} abgemeldet.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Ihr Tresor wurde für {{time}} gesperrt, da Sie sich {{tries}} falsch angemeldet haben!",
+ "Hello there!" : "Hallo!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "Anscheinend haben Sie noch keine Passwörter. Soll eins hinzugefügt werden?",
+ "You don't have good credentials" : "Sie haben keine guten Anmeldedaten",
+ "You don't have medium credentials" : "Du hast keine mittlere Anmeldedaten",
+ "You don't have bad credentials" : "Sie haben keine ungültigen Anmeldedaten",
+ "You don't have expired credentials" : "Sie haben keine abgelaufenen Anmeldedaten",
+ "You don't have deleted credentials" : "Sie haben keine gelöschten Anmeldedaten",
+ "There are no credentials with your selected tags" : "Keine Anmeldedaten mit den ausgewählten Schlagworten vorhanden",
+ "There are no credentials matching" : "Keine passenden Anmeldedaten",
"Last accessed" : "Letzter Zugriff",
"Never" : "Nie",
"No vaults found, why not create one?" : "Kein Tresor gefunden, warum kein neues erstellen?",
"Password strength must be at least: {{strength}}" : "Mindest erforderliche Passwortstärke: {{strength}}",
"Please give your new vault a name." : "Bitte einen Namen für den neuen Tresor eingeben.",
"Repeat vault password" : "Tresor-Passwort wiederholen",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Ihre Freigabeschlüssel werden 1024 bit stark sein. Sie können dies auch später noch in den Einstellungen ändern.",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Ihre Freigabeschlüssel werden 1024 bit stark sein. Sie können dies auch später noch in den \\\"Einstellungen\\\" ändern.",
"Create vault" : "Erstelle Tresor",
"Go back to vaults" : "Zurück zu den Tresoren",
"Please input the password for" : "Passwort eingeben für",
@@ -258,11 +272,20 @@ OC.L10N.register(
"Request removed" : "Anfrage entfernt",
"Destruction request pending" : "Auftrag zur Zerstörung in der Warteschleife",
"Warning! Adding credentials over HTTP is insecure!" : "Achtung! Das Hinzufügen von Zugangsdaten über http ist unsicher!",
- "Logged in to {{vault_name}}" : "Angemeldet in {{vault_name}}",
+ "Logged into {{vault_name}}" : "Angemeldet an {{vault_name}}",
"Change vault" : "Wechsle Tresor",
"Deleted credentials" : "Zugangsdaten gelöscht",
"Logout" : "Abmelden",
"Donate" : "Spende",
+ "Show All" : "Alle anzeigen",
+ "Tags" : "Schlagworte",
+ "Search Tags" : "Schlagworte suchen",
+ "Good Strength" : "Gute Stärke",
+ "Medium Strength" : "Mittlere Stärke",
+ "Bad Strength" : "Zu schwach",
+ "Expired" : "Abgelaufen",
+ "Filter Tags" : "Schlagworte filtern",
+ "Simple Navigation" : "Einfache Navigation",
"Someone has shared a credential with you." : "Jemand hat Zugangsdaten mit Ihnen geteilt.",
"Click here to request it" : "Hier klicken um es anzufordern",
"Loading…" : "Lade…",
@@ -297,6 +320,8 @@ OC.L10N.register(
"%s has declined your share request for \"%s\"." : "%s hat das Teilen von \"%s\" mit Ihnen abgelehnt.",
"%s has accepted your share request for \"%s\"." : "%s hat das Teilen von \"%s\" mit Ihnen akzeptiert.",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman ist ein vollständiger Passwortmanager",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman ist ein umfassender Passwort-Manager.\nFunktionen:\n- Passwort-Tresor\n- Passwort des Tresors wird nie an den Server geschickt\n- Browser-Erweiterung für einen einfachen Zugriff auf die Passwörter\n- Android-App für den Zugriff unterwegs\n- Zugangscodes werden Client-seitig mit 256-bit AES verschlüsselt\n- Zugangscodes werden Server-seitig mit 256-bit AES verschlüsselt\n- Optional: weitere Felder zu den Anmeldedaten\n- Integrierter Generator für Einmal-Passwörter (OTP)\n- Passwort-Prüfer\n- Sicheres Teilen von Passwörtern über einen Link\n- Import von diversen Passwort-Managern (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nFür eine Demo dieser App, schaue auf [https://demo.passman.cc](https://demo.passman.cc) vorbei",
"Unable to get version info" : "Versionsinfo konnte nicht ermittelt werden",
"Passman Settings" : "Passman-Einstellungen",
"GitHub version:" : "Github-Version: ",
@@ -318,10 +343,14 @@ OC.L10N.register(
"Request ID" : "ID anfragen",
"Requested by" : "Angefragt von",
"Reason" : "Grund",
+ "Click here to request\n\t\t\t\t\tit" : "Hier klicken um es\n\t\t\t\t\tanzufordern",
+ "Loading&hellip;" : "Lade&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Oh… Zugangsdaten nicht gefunden. Vielleicht sind sie abgelaufen?",
+ "Expires:" : "Ablaufdatum:",
"Connection to server lost" : "Verbindung zum Server verloren",
"Problem loading page, reloading in 5 seconds" : "Problem beim Laden der Seite, Seite wird in 5 Sekunden erneut geladen",
"Saving..." : "Speichere …",
"Dismiss" : "Ausblenden",
- "seconds ago" : "Gerade ebene"
+ "seconds ago" : "Gerade eben"
},
"nplurals=2; plural=(n != 1);");
diff --git a/l10n/de_DE.json b/l10n/de_DE.json
index f660a264..5e0c11e0 100644
--- a/l10n/de_DE.json
+++ b/l10n/de_DE.json
@@ -1,6 +1,6 @@
{ "translations": {
"Passwords" : "Passwörter",
- "Generating sharing keys ( %step / 2)" : "Generiere Freigabe-Schlüssel ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Generiere Freigabe-Schlüssel ( %s / 2)",
"Incorrect vault password!" : "Tresor-Passwort nicht korrekt",
"Passwords do not match" : "Passwörter stimmen nicht überein",
"General" : "Allgemein",
@@ -14,14 +14,14 @@
"Credential updated" : "Anmeldeinformation aktualisiert",
"Credential recovered" : "Anmeldeinformation wiederhergestellt",
"Credential destroyed" : "Anmeldeinformation zerstört",
- "Error downloading file, you probably don't have sufficient permissions" : "Fehler beim Herunterladen der Datei, Sie haben möglicherweise nicht die erforderliche Berechtigung",
+ "Error downloading file, you probably have insufficient permissions" : "Fehler beim Herunterladen der Datei, Sie haben möglicherweise falsche Berechtigungen",
"Invalid QR code" : "Fehlerhafter QR-Code",
"Starting export" : "Export gestartet",
"Decrypting credentials" : "Anmeldeinformationen werden entschlüsselt",
"Done" : "Fertig",
- "File read successfully." : "Datei erfolgreich gelesen",
+ "File read." : "Datei gelesen.",
"Proceed with the following steps to import your file" : "Führen Sie folgende Schritte aus um Ihre Datei zu importieren",
- "Credential has no label, skipping" : "Übersprungen, Anmeldeinformation hat keine Beschriftung",
+ "Skipping unlabeled credential" : "Unbekannte Zugangsdaten überspringen",
"Adding {{credential}}" : "{{credential}} werden hinzugefügt",
"Added {{credential}}" : "{{credential}} hinzugefügt",
"Skipping credential, missing label on line {{line}}" : "Überspringe Zugangsdaten, fehlende Beschriftung in Zeile {{line}}",
@@ -48,7 +48,7 @@
"Export credentials" : "Anmeldeinformationen exportieren",
"Sharing" : "Teilen",
"Are you sure you want to leave? This will destroy all your credentials" : "Möchten Sie dies wirklich verlassen? Dies wird alle Ihre Anmeldeinformationen zerstören",
- "Your old password is incorrect!" : "Ihr altes Passwort ist falsch!",
+ "Old password field incorrect!" : "Altes Passwort-Feld falsch!",
"New password does not match!" : "Die neuen Passwörter stimmen nicht überein!",
"Please log in with your new vault password" : "Bitte mit Ihrem neuen Tresor-Passwort anmelden",
"Share with users and groups" : "Mit Benutzern und Gruppen teilen",
@@ -71,6 +71,11 @@
"Username" : "Benutzername",
"Repeat password" : "Passwort wiederholen",
"Add tag" : "Schlagwort hinzufügen",
+ "Pick an icon" : "Icon auswählen",
+ "Search icons" : "Suche Icons",
+ "Upload a custom icon:" : "Benutzerdefiniertes Icon hochladen:",
+ "Use this icon" : "Dieses Icon verwenden",
+ "Selected icon" : "Icon auswählen",
"Field label" : "Beschriftung des Feldes",
"Field value" : "Wert des Feldes",
"Choose a file" : "Datei auswählen",
@@ -122,7 +127,7 @@
"Version" : "Version",
"Donate to support development" : "Zur Unterstützung der Entwicklung bitte spenden",
"Bookmarklet" : "Lesezeichen setzen",
- "Save your passwords with 1 click!" : "Speichern Sie Ihre Passwörter mit einem Klick!",
+ "Save your passwords with one click." : "Speichern Sie Ihre Passwörter mit einem Klick.",
"Drag below button to your bookmark toolbar." : "Ziehen Sie die untere Schaltfläche in Ihre Lesezeichen-Leiste",
"Delete vault" : "Tresor löschen",
"Vault password" : "Tresor-Passwort",
@@ -140,20 +145,20 @@
"Save keys" : "Schlüssel speichern",
"Generate sharing keys" : "Schlüssel zum Teilen erzeugen",
"Generating sharing keys" : "Erzeuge Schlüssel zum Teilen",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Das Passwort-Tool analysiert Ihr Passwort, berechnet die Zeit zum knacken des Passwortes und listet die Passwörter auf die unter dem Grenzwert liegen. ",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Das Passwort-Tool analysiert Ihr Passwort, berechnet die Zeit zum knacken des Passwortes und listet die Passwörter , die unter dem Grenzwert liegen auf. ",
"Minimum password stength" : "Minimale Passwortstärke",
"Start scan" : "Einen Scan starten",
"Result" : "Ergebnis",
"A total of {{scan_result}} weak credentials were found." : "Es wurden insgesamt {{scan_result}} schwache Anmeldeinformationen wurden gefunden.",
"Score" : "Bewertung",
"Action" : "Aktion",
- "Search users or groups…" : "Suche Benutzer oder Gruppen…",
+ "Search users…" : "Suche Benutzer…",
"Missing users? Only users that have vaults are shown." : "Nutzer gesucht? Es werden nur Nutzer mit einem Tresor angezeigt.",
"Cyphering" : "Verschlüsselung",
"Uploading" : "Lade hoch",
- "User" : "Nutzer",
+ "User" : "Benutzer",
"Crypto time" : "Verschlüsselungszeit",
- "Total time spent cyphering" : "Gesamte aufgewendete Zeit zur Verschlüsselung",
+ "Total time spent encrypting" : "Insgesamt zur Verschlüsselung benötigte Zeit",
"Read" : "Lesen",
"Write" : "Schreiben",
"Files" : "Dateien",
@@ -162,7 +167,7 @@
"Enable link sharing" : "Freigaben über Links aktivieren",
"Share until date" : "Freigabe gültig bis Datum",
"Expire after views" : "Läuft nach dem Anschauen ab",
- "Click Share first" : "Erst auf Teilen klicken",
+ "Click \\\"Share\\\" first" : "Erst auf \\\"Teilen\\\" klicken",
"Show files" : "Dateien anzeigen",
"Details" : "Details",
"Hide details" : "Details ausblenden",
@@ -222,7 +227,7 @@
"Use regex" : "Regex verwenden",
"You have incoming share requests." : "Sie haben eingehende Freigabeanforderungen.",
"If you want to put the credential in another vault," : "Falls Sie die Anmeldeinformation in einen andern Tresor übertragen möchten,",
- "log out of this vault and log in to the vault you want the shared credential in." : "melden Sie sich bei diesem Tresor ab und melde Sie sich bei dem Tresor, welches die geteilte Anmeldeinformation beinhaltet, wieder an.",
+ "log out of this vault and log into the vault you want the shared credential in." : "melden Sie sich bei diesem Tresor ab und melden Sie sich bei dem Tresor, der die geteilte Zugangsdaten beinhaltet, wieder an.",
"Permissions" : "Rechte",
"Received from" : "Erhalten von",
"Date" : "Datum",
@@ -230,13 +235,22 @@
"Decline" : "Ablehnen",
"You have {{session_time}} left before logout." : "Sie werden in {{session_time}} abgemeldet.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Ihr Tresor wurde für {{time}} gesperrt, da Sie sich {{tries}} falsch angemeldet haben!",
+ "Hello there!" : "Hallo!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "Anscheinend haben Sie noch keine Passwörter. Soll eins hinzugefügt werden?",
+ "You don't have good credentials" : "Sie haben keine guten Anmeldedaten",
+ "You don't have medium credentials" : "Du hast keine mittlere Anmeldedaten",
+ "You don't have bad credentials" : "Sie haben keine ungültigen Anmeldedaten",
+ "You don't have expired credentials" : "Sie haben keine abgelaufenen Anmeldedaten",
+ "You don't have deleted credentials" : "Sie haben keine gelöschten Anmeldedaten",
+ "There are no credentials with your selected tags" : "Keine Anmeldedaten mit den ausgewählten Schlagworten vorhanden",
+ "There are no credentials matching" : "Keine passenden Anmeldedaten",
"Last accessed" : "Letzter Zugriff",
"Never" : "Nie",
"No vaults found, why not create one?" : "Kein Tresor gefunden, warum kein neues erstellen?",
"Password strength must be at least: {{strength}}" : "Mindest erforderliche Passwortstärke: {{strength}}",
"Please give your new vault a name." : "Bitte einen Namen für den neuen Tresor eingeben.",
"Repeat vault password" : "Tresor-Passwort wiederholen",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Ihre Freigabeschlüssel werden 1024 bit stark sein. Sie können dies auch später noch in den Einstellungen ändern.",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Ihre Freigabeschlüssel werden 1024 bit stark sein. Sie können dies auch später noch in den \\\"Einstellungen\\\" ändern.",
"Create vault" : "Erstelle Tresor",
"Go back to vaults" : "Zurück zu den Tresoren",
"Please input the password for" : "Passwort eingeben für",
@@ -256,11 +270,20 @@
"Request removed" : "Anfrage entfernt",
"Destruction request pending" : "Auftrag zur Zerstörung in der Warteschleife",
"Warning! Adding credentials over HTTP is insecure!" : "Achtung! Das Hinzufügen von Zugangsdaten über http ist unsicher!",
- "Logged in to {{vault_name}}" : "Angemeldet in {{vault_name}}",
+ "Logged into {{vault_name}}" : "Angemeldet an {{vault_name}}",
"Change vault" : "Wechsle Tresor",
"Deleted credentials" : "Zugangsdaten gelöscht",
"Logout" : "Abmelden",
"Donate" : "Spende",
+ "Show All" : "Alle anzeigen",
+ "Tags" : "Schlagworte",
+ "Search Tags" : "Schlagworte suchen",
+ "Good Strength" : "Gute Stärke",
+ "Medium Strength" : "Mittlere Stärke",
+ "Bad Strength" : "Zu schwach",
+ "Expired" : "Abgelaufen",
+ "Filter Tags" : "Schlagworte filtern",
+ "Simple Navigation" : "Einfache Navigation",
"Someone has shared a credential with you." : "Jemand hat Zugangsdaten mit Ihnen geteilt.",
"Click here to request it" : "Hier klicken um es anzufordern",
"Loading…" : "Lade…",
@@ -295,6 +318,8 @@
"%s has declined your share request for \"%s\"." : "%s hat das Teilen von \"%s\" mit Ihnen abgelehnt.",
"%s has accepted your share request for \"%s\"." : "%s hat das Teilen von \"%s\" mit Ihnen akzeptiert.",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman ist ein vollständiger Passwortmanager",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman ist ein umfassender Passwort-Manager.\nFunktionen:\n- Passwort-Tresor\n- Passwort des Tresors wird nie an den Server geschickt\n- Browser-Erweiterung für einen einfachen Zugriff auf die Passwörter\n- Android-App für den Zugriff unterwegs\n- Zugangscodes werden Client-seitig mit 256-bit AES verschlüsselt\n- Zugangscodes werden Server-seitig mit 256-bit AES verschlüsselt\n- Optional: weitere Felder zu den Anmeldedaten\n- Integrierter Generator für Einmal-Passwörter (OTP)\n- Passwort-Prüfer\n- Sicheres Teilen von Passwörtern über einen Link\n- Import von diversen Passwort-Managern (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nFür eine Demo dieser App, schaue auf [https://demo.passman.cc](https://demo.passman.cc) vorbei",
"Unable to get version info" : "Versionsinfo konnte nicht ermittelt werden",
"Passman Settings" : "Passman-Einstellungen",
"GitHub version:" : "Github-Version: ",
@@ -316,10 +341,14 @@
"Request ID" : "ID anfragen",
"Requested by" : "Angefragt von",
"Reason" : "Grund",
+ "Click here to request\n\t\t\t\t\tit" : "Hier klicken um es\n\t\t\t\t\tanzufordern",
+ "Loading&hellip;" : "Lade&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Oh… Zugangsdaten nicht gefunden. Vielleicht sind sie abgelaufen?",
+ "Expires:" : "Ablaufdatum:",
"Connection to server lost" : "Verbindung zum Server verloren",
"Problem loading page, reloading in 5 seconds" : "Problem beim Laden der Seite, Seite wird in 5 Sekunden erneut geladen",
"Saving..." : "Speichere …",
"Dismiss" : "Ausblenden",
- "seconds ago" : "Gerade ebene"
+ "seconds ago" : "Gerade eben"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/l10n/el.js b/l10n/el.js
index cd981a6c..81f02321 100644
--- a/l10n/el.js
+++ b/l10n/el.js
@@ -2,12 +2,15 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Συνθηματικά",
- "Generating sharing keys ( %step / 2)" : "Δημιουργία κλειδιών διαμοιρασμού ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Δημιουργία κλειδιών διαμοιρασμού (Βήμα %s / 2)",
"Incorrect vault password!" : "Εσφαλμένος κωδικός θαλάμου!",
"Passwords do not match" : "Δεν ταιριάζουν τα συθηματικά",
"General" : "Γενικά",
"Custom Fields" : "Προσαρμοσμένα πεδία",
+ "Please fill in a label." : "Παρακαλούμε συμπληρώστε την ετικέτα.",
+ "Please fill in a value." : "Παρακαλούμε συμπληρώστε την τιμή.",
"Error loading file" : "Σφάλμα φόρτωσης αρχείου",
+ "An error occurred during decryption" : "Παρουσιάστηκε σφάλμα κατά την αποκρυπτογράφηση",
"Credential created!" : "Τα διαπιστευτήρια δημιουργήθηκαν!",
"Credential deleted" : "Τα διαπιστευτήρια διαγράφηκαν",
"Credential updated" : "Τα διαπιστευτήρια ενημερώθηκαν",
@@ -17,18 +20,21 @@ OC.L10N.register(
"Starting export" : "Έναρξη εξαγωγής",
"Decrypting credentials" : "Αποκρυπτογράφηση διαπιστευτηρίων",
"Done" : "Ολοκληρώθηκε",
+ "Adding {{credential}}" : "Προσθήκη του {{credential}}",
"Added {{credential}}" : "Προστέθηκε {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Παράλειψη διαπιστευτηρίων, έλλειψη ετικέτας στη γραμμή {{line}}",
"Parsed {{num}} credentials, starting to import" : "Αναλυτικά αναγνωριστικά {{num}}, άρχισαν να εισάγουν",
"Importing" : "Γίνεται εισαγωγή",
"Start import" : "Έναρξη εισαγωγής",
+ "Select CSV file" : "Επιλέξτε αρχείο CSV",
+ "Skip first row" : "Παράλειψη πρώτης σειράς",
+ "The first 5 lines of the CSV are shown." : "Προβάλλονται οι πρώτες 5 γραμμές του CSV.",
"Revision deleted" : "Διαγράφηκε η αναθεώρηση",
"Settings saved" : "Οι ρυθμίσεις αποθηκεύτηκαν",
"General settings" : "Γενικές ρυθμίσεις",
"Password settings" : "Ρυθμίσεις συνθηματικού",
"Import credentials" : "Εισαγωγή διαπιστευτηρίων",
"Export credentials" : "Εξαγωγή διαπιστευτηρίων",
- "Your old password is incorrect!" : "Εσφαλμένο παλαιό συνθηματικό!",
"Share link" : "Διαμοιρασμός συνδέσμου",
"Saved!" : "Αποθηκεύτηκαν!",
"Weak" : "Ασθενές",
@@ -40,6 +46,9 @@ OC.L10N.register(
"Username" : "Όνομα χρήστη",
"Repeat password" : "Επανάληψη συνθηματικού",
"Add tag" : "Πρόσθεσε ετικέτα",
+ "Pick an icon" : "Επιλογή εικονιδίου",
+ "Use this icon" : "Χρήση αυτού του εικονιδίου",
+ "Selected icon" : "Επιλεγμένο εικονίδιο",
"Field label" : "Ετικέτα πεδίου",
"Field value" : "Τιμή πεδίου",
"Choose a file" : "Επιλογή αρχείου",
@@ -54,6 +63,7 @@ OC.L10N.register(
"Upload date" : "Ημερομηνία μεταφόρτωσης",
"Size" : "Μέγεθος",
"Secret" : "Μυστικό",
+ "Expiration date" : "Ημερομηνία λήξης",
"Disabled" : "Απενεργοποιημένο",
"Day(s)" : "Ημέρα(-ες)",
"Week(s)" : "Εβδομάδα(-ες)",
@@ -71,8 +81,8 @@ OC.L10N.register(
"About Passman" : "Περί εφαρμογής Passman",
"Version" : "Έκδοση",
"Donate to support development" : "Κάντε μια δωρεά για να υποστηρίξετε την ανάπτυξη",
- "Save your passwords with 1 click!" : "Αποθηκεύστε το συνθηματικό σας με 1 κλικ!",
"Delete my precious passwords" : "Διαγραφή των πολύτιμων συνθηματικών μου",
+ "Deleting {{password}}…" : "Γίνεται διαγραφή {{password}}…",
"Import type" : "Τύπος εισαγωγής",
"Import" : "Εισαγωγή",
"Read progress" : "Πρόοδος ανάγνωσης",
@@ -84,11 +94,13 @@ OC.L10N.register(
"Start scan" : "Εκκίνηση σάρωσης",
"Result" : "Αποτέλεσμα",
"Action" : "Ενέργεια",
+ "Search users…" : "Αναζήτηση χρηστών…",
"Uploading" : "Γίνεται μεταφόρτωση",
"User" : "Χρήστης",
"Read" : "Ανάγνωση",
"Write" : "Εγγραφή",
"Files" : "Αρχεία",
+ "Revisions" : "Αναθεωρήσεις",
"Pending" : "Εκκρεμεί",
"Enable link sharing" : "Ενεργοποίηση διαμοιρασμού συνδέσμου",
"Share until date" : "Διαμοιρασμός έως την ημερομηνία",
@@ -113,12 +125,15 @@ OC.L10N.register(
"Cancel" : "Άκυρο",
"Settings" : "Ρυθμίσεις",
"Unshare" : "Διακοπή διαμοιρασμού",
+ "Beginning" : "Έναρξη",
+ "Search for credential…" : "Αναζήτηση για διαπιστευτήρια...",
"Account" : "Λογαριασμός",
"Password" : "Συνθηματικό",
"OTP" : "OTP",
"E-mail" : "Ηλεκτρονική αλληλογραφία",
"URL" : "URL",
"Notes" : "Σημειώσεις",
+ "Expiry time" : "Ώρα λήξης",
"Created" : "Δημιουργήθηκε",
"Edit" : "Επεξεργασία",
"Delete" : "Διαγραφή",
@@ -135,12 +150,12 @@ OC.L10N.register(
"Never" : "Ποτέ",
"Cancel destruction request" : "Αίτημα ακύρωσης καταστροφής",
"Destruction request pending" : "Εκκρεμεί το αίτημα καταστροφής",
- "Logged in to {{vault_name}}" : "Είσοδος στο {{vault_name}}",
"Deleted credentials" : "Διεγραμμένα διαπιστευτήρια",
"Logout" : "Έξοδος",
"Donate" : "Δωρεά",
"Someone has shared a credential with you." : "Κάποιος διαμοιράστηκε τα διαπιστευτήρια μαζί σας.",
"Click here to request it" : "Κάντε κλικ εδώ για να το αιτηθείτε",
+ "Loading…" : "Γίνεται φόρτωση...",
"Error while saving field" : "Σφάλμα κατά την αποθήκευση πεδίου",
"A Passman item has been created, modified or deleted" : "Ένα αντικείμενο Passman δημιουργήθηκε, τροποποιήθηκε ή διαγράφηκε",
"A Passman item has expired" : "Έληξε ένα αντικείμενο Passman",
@@ -161,17 +176,21 @@ OC.L10N.register(
"Passman" : "Passman",
"Unable to get version info" : "Αδυναμία λήψης πληροφορίες έκδοσης",
"Passman Settings" : "Ρυθμίσεις Passman",
+ "GitHub version:" : "Έκδοση GitHub:",
"A newer version of Passman is available" : "Μια νέα έκδοση του Passman είναι διαθέσιμη",
"Password sharing" : "Διαμοιρασμός συνθηματικών",
"Check for new versions" : "Έλεγχος για νέες εκδόσεις",
"Enable HTTPS check" : "Ενεργοποίηση ελέγχου HTTPS",
"Source account" : "Πηγαίος λογαριασμός",
+ "Destination account" : "Λογαριασμός προορισμού",
+ "Credentials moved!" : "Αφαιρέθηκαν τα διαπιστευτήρια!",
"Request ID" : "Αίτημα ID",
"Requested by" : "Αιτήθηκε από",
"Reason" : "Λόγος",
"Connection to server lost" : "Η σύνδεση στον διακομιστή διακόπηκε",
"Problem loading page, reloading in 5 seconds" : "Πρόβλημα φόρτωσης σελίδας, φόρτωση ξανά σε 5 δευτερόλεπτα",
"Saving..." : "Γίνεται αποθήκευση...",
+ "Dismiss" : "Αποδέσμευση",
"seconds ago" : "δευτερόλεπτα πριν"
},
"nplurals=2; plural=(n != 1);");
diff --git a/l10n/el.json b/l10n/el.json
index 561897e0..1a2dc228 100644
--- a/l10n/el.json
+++ b/l10n/el.json
@@ -1,11 +1,14 @@
{ "translations": {
"Passwords" : "Συνθηματικά",
- "Generating sharing keys ( %step / 2)" : "Δημιουργία κλειδιών διαμοιρασμού ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Δημιουργία κλειδιών διαμοιρασμού (Βήμα %s / 2)",
"Incorrect vault password!" : "Εσφαλμένος κωδικός θαλάμου!",
"Passwords do not match" : "Δεν ταιριάζουν τα συθηματικά",
"General" : "Γενικά",
"Custom Fields" : "Προσαρμοσμένα πεδία",
+ "Please fill in a label." : "Παρακαλούμε συμπληρώστε την ετικέτα.",
+ "Please fill in a value." : "Παρακαλούμε συμπληρώστε την τιμή.",
"Error loading file" : "Σφάλμα φόρτωσης αρχείου",
+ "An error occurred during decryption" : "Παρουσιάστηκε σφάλμα κατά την αποκρυπτογράφηση",
"Credential created!" : "Τα διαπιστευτήρια δημιουργήθηκαν!",
"Credential deleted" : "Τα διαπιστευτήρια διαγράφηκαν",
"Credential updated" : "Τα διαπιστευτήρια ενημερώθηκαν",
@@ -15,18 +18,21 @@
"Starting export" : "Έναρξη εξαγωγής",
"Decrypting credentials" : "Αποκρυπτογράφηση διαπιστευτηρίων",
"Done" : "Ολοκληρώθηκε",
+ "Adding {{credential}}" : "Προσθήκη του {{credential}}",
"Added {{credential}}" : "Προστέθηκε {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Παράλειψη διαπιστευτηρίων, έλλειψη ετικέτας στη γραμμή {{line}}",
"Parsed {{num}} credentials, starting to import" : "Αναλυτικά αναγνωριστικά {{num}}, άρχισαν να εισάγουν",
"Importing" : "Γίνεται εισαγωγή",
"Start import" : "Έναρξη εισαγωγής",
+ "Select CSV file" : "Επιλέξτε αρχείο CSV",
+ "Skip first row" : "Παράλειψη πρώτης σειράς",
+ "The first 5 lines of the CSV are shown." : "Προβάλλονται οι πρώτες 5 γραμμές του CSV.",
"Revision deleted" : "Διαγράφηκε η αναθεώρηση",
"Settings saved" : "Οι ρυθμίσεις αποθηκεύτηκαν",
"General settings" : "Γενικές ρυθμίσεις",
"Password settings" : "Ρυθμίσεις συνθηματικού",
"Import credentials" : "Εισαγωγή διαπιστευτηρίων",
"Export credentials" : "Εξαγωγή διαπιστευτηρίων",
- "Your old password is incorrect!" : "Εσφαλμένο παλαιό συνθηματικό!",
"Share link" : "Διαμοιρασμός συνδέσμου",
"Saved!" : "Αποθηκεύτηκαν!",
"Weak" : "Ασθενές",
@@ -38,6 +44,9 @@
"Username" : "Όνομα χρήστη",
"Repeat password" : "Επανάληψη συνθηματικού",
"Add tag" : "Πρόσθεσε ετικέτα",
+ "Pick an icon" : "Επιλογή εικονιδίου",
+ "Use this icon" : "Χρήση αυτού του εικονιδίου",
+ "Selected icon" : "Επιλεγμένο εικονίδιο",
"Field label" : "Ετικέτα πεδίου",
"Field value" : "Τιμή πεδίου",
"Choose a file" : "Επιλογή αρχείου",
@@ -52,6 +61,7 @@
"Upload date" : "Ημερομηνία μεταφόρτωσης",
"Size" : "Μέγεθος",
"Secret" : "Μυστικό",
+ "Expiration date" : "Ημερομηνία λήξης",
"Disabled" : "Απενεργοποιημένο",
"Day(s)" : "Ημέρα(-ες)",
"Week(s)" : "Εβδομάδα(-ες)",
@@ -69,8 +79,8 @@
"About Passman" : "Περί εφαρμογής Passman",
"Version" : "Έκδοση",
"Donate to support development" : "Κάντε μια δωρεά για να υποστηρίξετε την ανάπτυξη",
- "Save your passwords with 1 click!" : "Αποθηκεύστε το συνθηματικό σας με 1 κλικ!",
"Delete my precious passwords" : "Διαγραφή των πολύτιμων συνθηματικών μου",
+ "Deleting {{password}}…" : "Γίνεται διαγραφή {{password}}…",
"Import type" : "Τύπος εισαγωγής",
"Import" : "Εισαγωγή",
"Read progress" : "Πρόοδος ανάγνωσης",
@@ -82,11 +92,13 @@
"Start scan" : "Εκκίνηση σάρωσης",
"Result" : "Αποτέλεσμα",
"Action" : "Ενέργεια",
+ "Search users…" : "Αναζήτηση χρηστών…",
"Uploading" : "Γίνεται μεταφόρτωση",
"User" : "Χρήστης",
"Read" : "Ανάγνωση",
"Write" : "Εγγραφή",
"Files" : "Αρχεία",
+ "Revisions" : "Αναθεωρήσεις",
"Pending" : "Εκκρεμεί",
"Enable link sharing" : "Ενεργοποίηση διαμοιρασμού συνδέσμου",
"Share until date" : "Διαμοιρασμός έως την ημερομηνία",
@@ -111,12 +123,15 @@
"Cancel" : "Άκυρο",
"Settings" : "Ρυθμίσεις",
"Unshare" : "Διακοπή διαμοιρασμού",
+ "Beginning" : "Έναρξη",
+ "Search for credential…" : "Αναζήτηση για διαπιστευτήρια...",
"Account" : "Λογαριασμός",
"Password" : "Συνθηματικό",
"OTP" : "OTP",
"E-mail" : "Ηλεκτρονική αλληλογραφία",
"URL" : "URL",
"Notes" : "Σημειώσεις",
+ "Expiry time" : "Ώρα λήξης",
"Created" : "Δημιουργήθηκε",
"Edit" : "Επεξεργασία",
"Delete" : "Διαγραφή",
@@ -133,12 +148,12 @@
"Never" : "Ποτέ",
"Cancel destruction request" : "Αίτημα ακύρωσης καταστροφής",
"Destruction request pending" : "Εκκρεμεί το αίτημα καταστροφής",
- "Logged in to {{vault_name}}" : "Είσοδος στο {{vault_name}}",
"Deleted credentials" : "Διεγραμμένα διαπιστευτήρια",
"Logout" : "Έξοδος",
"Donate" : "Δωρεά",
"Someone has shared a credential with you." : "Κάποιος διαμοιράστηκε τα διαπιστευτήρια μαζί σας.",
"Click here to request it" : "Κάντε κλικ εδώ για να το αιτηθείτε",
+ "Loading…" : "Γίνεται φόρτωση...",
"Error while saving field" : "Σφάλμα κατά την αποθήκευση πεδίου",
"A Passman item has been created, modified or deleted" : "Ένα αντικείμενο Passman δημιουργήθηκε, τροποποιήθηκε ή διαγράφηκε",
"A Passman item has expired" : "Έληξε ένα αντικείμενο Passman",
@@ -159,17 +174,21 @@
"Passman" : "Passman",
"Unable to get version info" : "Αδυναμία λήψης πληροφορίες έκδοσης",
"Passman Settings" : "Ρυθμίσεις Passman",
+ "GitHub version:" : "Έκδοση GitHub:",
"A newer version of Passman is available" : "Μια νέα έκδοση του Passman είναι διαθέσιμη",
"Password sharing" : "Διαμοιρασμός συνθηματικών",
"Check for new versions" : "Έλεγχος για νέες εκδόσεις",
"Enable HTTPS check" : "Ενεργοποίηση ελέγχου HTTPS",
"Source account" : "Πηγαίος λογαριασμός",
+ "Destination account" : "Λογαριασμός προορισμού",
+ "Credentials moved!" : "Αφαιρέθηκαν τα διαπιστευτήρια!",
"Request ID" : "Αίτημα ID",
"Requested by" : "Αιτήθηκε από",
"Reason" : "Λόγος",
"Connection to server lost" : "Η σύνδεση στον διακομιστή διακόπηκε",
"Problem loading page, reloading in 5 seconds" : "Πρόβλημα φόρτωσης σελίδας, φόρτωση ξανά σε 5 δευτερόλεπτα",
"Saving..." : "Γίνεται αποθήκευση...",
+ "Dismiss" : "Αποδέσμευση",
"seconds ago" : "δευτερόλεπτα πριν"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/l10n/en_GB.js b/l10n/en_GB.js
index 1f7378bd..752d240e 100644
--- a/l10n/en_GB.js
+++ b/l10n/en_GB.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Passwords",
- "Generating sharing keys ( %step / 2)" : "Generating sharing keys ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Generating sharing keys ( %s / 2)",
"Incorrect vault password!" : "Incorrect vault password!",
"Passwords do not match" : "Passwords do not match",
"General" : "General",
@@ -16,14 +16,11 @@ OC.L10N.register(
"Credential updated" : "Credential updated",
"Credential recovered" : "Credential recovered",
"Credential destroyed" : "Credential destroyed",
- "Error downloading file, you probably don't have sufficient permissions" : "Error downloading file. You probably don't have sufficient permissions",
"Invalid QR code" : "Invalid QR code",
"Starting export" : "Starting export",
"Decrypting credentials" : "Decrypting credentials",
"Done" : "Done",
- "File read successfully." : "File read successfully.",
"Proceed with the following steps to import your file" : "Proceed with the following steps to import your file",
- "Credential has no label, skipping" : "Credential has no label, skipping",
"Adding {{credential}}" : "Adding {{credential}}",
"Added {{credential}}" : "Added {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Skipping credential, missing label on line {{line}}",
@@ -50,7 +47,6 @@ OC.L10N.register(
"Export credentials" : "Export credentials",
"Sharing" : "Sharing",
"Are you sure you want to leave? This will destroy all your credentials" : "Are you sure you want to leave? This will destroy all your credentials",
- "Your old password is incorrect!" : "Your old password is incorrect!",
"New password does not match!" : "New password does not match!",
"Please log in with your new vault password" : "Please log in with your new vault password",
"Share with users and groups" : "Share with users and groups",
@@ -73,6 +69,9 @@ OC.L10N.register(
"Username" : "Username",
"Repeat password" : "Repeat password",
"Add tag" : "Add tag",
+ "Pick an icon" : "Pick an icon",
+ "Use this icon" : "Use this icon",
+ "Selected icon" : "Selected icon",
"Field label" : "Field label",
"Field value" : "Field value",
"Choose a file" : "Choose a file",
@@ -124,7 +123,6 @@ OC.L10N.register(
"Version" : "Version",
"Donate to support development" : "Donate to support development",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Save your passwords with 1 click!",
"Drag below button to your bookmark toolbar." : "Drag below button to your bookmark toolbar.",
"Delete vault" : "Delete vault",
"Vault password" : "Vault password",
@@ -142,20 +140,18 @@ OC.L10N.register(
"Save keys" : "Save keys",
"Generate sharing keys" : "Generate sharing keys",
"Generating sharing keys" : "Generating sharing keys",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "The password tool will scan your password, calculate the average crack time and list those which are below the threshold",
"Minimum password stength" : "Minimum password stength",
"Start scan" : "Start scan",
"Result" : "Result",
"A total of {{scan_result}} weak credentials were found." : "A total of {{scan_result}} weak credentials were found.",
"Score" : "Score",
"Action" : "Action",
- "Search users or groups…" : "Search users or groups…",
+ "Search users…" : "Search users…",
"Missing users? Only users that have vaults are shown." : "Missing users? Only users that have vaults are shown.",
"Cyphering" : "Cyphering",
"Uploading" : "Uploading",
"User" : "User",
"Crypto time" : "Crypto time",
- "Total time spent cyphering" : "Total time spent cyphering",
"Read" : "Read",
"Write" : "Write",
"Files" : "Files",
@@ -164,7 +160,6 @@ OC.L10N.register(
"Enable link sharing" : "Enable link sharing",
"Share until date" : "Share until date",
"Expire after views" : "Expire after views",
- "Click Share first" : "Click Share first",
"Show files" : "Show files",
"Details" : "Details",
"Hide details" : "Hide details",
@@ -224,7 +219,6 @@ OC.L10N.register(
"Use regex" : "Use regex",
"You have incoming share requests." : "You have incoming share requests.",
"If you want to put the credential in another vault," : "If you want to put the credential in another vault,",
- "log out of this vault and log in to the vault you want the shared credential in." : "log out of this vault and log in to the vault you want the shared credential in.",
"Permissions" : "Permissions",
"Received from" : "Received from",
"Date" : "Date",
@@ -238,7 +232,6 @@ OC.L10N.register(
"Password strength must be at least: {{strength}}" : "Password strength must be at least: {{strength}}",
"Please give your new vault a name." : "Please give your new vault a name.",
"Repeat vault password" : "Repeat vault password",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Your sharing keys will have a strength of 1024 bit, which you can change in Settings later.",
"Create vault" : "Create vault",
"Go back to vaults" : "Go back to vaults",
"Please input the password for" : "Please input the password for",
@@ -258,7 +251,6 @@ OC.L10N.register(
"Request removed" : "Request removed",
"Destruction request pending" : "Destruction request pending",
"Warning! Adding credentials over HTTP is insecure!" : "Warning! Adding credentials over HTTP is insecure!",
- "Logged in to {{vault_name}}" : "Logged in to {{vault_name}}",
"Change vault" : "Change vault",
"Deleted credentials" : "Deleted credentials",
"Logout" : "Logout",
@@ -297,6 +289,8 @@ OC.L10N.register(
"%s has declined your share request for \"%s\"." : "%s has declined your share request for \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s has accepted your share request for \"%s\".",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman is a full featured password manager.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyser\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Unable to get version info",
"Passman Settings" : "Passman Settings",
"GitHub version:" : "GitHub version:",
@@ -318,6 +312,8 @@ OC.L10N.register(
"Request ID" : "Request ID",
"Requested by" : "Requested by",
"Reason" : "Reason",
+ "Click here to request\n\t\t\t\t\tit" : "Click here to request\n\t\t\t\t\tit",
+ "Loading&hellip;" : "Loading&hellip;",
"Connection to server lost" : "Connection to server lost",
"Problem loading page, reloading in 5 seconds" : "Problem loading page, reloading in 5 seconds",
"Saving..." : "Saving...",
diff --git a/l10n/en_GB.json b/l10n/en_GB.json
index 923f2a37..a325f463 100644
--- a/l10n/en_GB.json
+++ b/l10n/en_GB.json
@@ -1,6 +1,6 @@
{ "translations": {
"Passwords" : "Passwords",
- "Generating sharing keys ( %step / 2)" : "Generating sharing keys ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Generating sharing keys ( %s / 2)",
"Incorrect vault password!" : "Incorrect vault password!",
"Passwords do not match" : "Passwords do not match",
"General" : "General",
@@ -14,14 +14,11 @@
"Credential updated" : "Credential updated",
"Credential recovered" : "Credential recovered",
"Credential destroyed" : "Credential destroyed",
- "Error downloading file, you probably don't have sufficient permissions" : "Error downloading file. You probably don't have sufficient permissions",
"Invalid QR code" : "Invalid QR code",
"Starting export" : "Starting export",
"Decrypting credentials" : "Decrypting credentials",
"Done" : "Done",
- "File read successfully." : "File read successfully.",
"Proceed with the following steps to import your file" : "Proceed with the following steps to import your file",
- "Credential has no label, skipping" : "Credential has no label, skipping",
"Adding {{credential}}" : "Adding {{credential}}",
"Added {{credential}}" : "Added {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Skipping credential, missing label on line {{line}}",
@@ -48,7 +45,6 @@
"Export credentials" : "Export credentials",
"Sharing" : "Sharing",
"Are you sure you want to leave? This will destroy all your credentials" : "Are you sure you want to leave? This will destroy all your credentials",
- "Your old password is incorrect!" : "Your old password is incorrect!",
"New password does not match!" : "New password does not match!",
"Please log in with your new vault password" : "Please log in with your new vault password",
"Share with users and groups" : "Share with users and groups",
@@ -71,6 +67,9 @@
"Username" : "Username",
"Repeat password" : "Repeat password",
"Add tag" : "Add tag",
+ "Pick an icon" : "Pick an icon",
+ "Use this icon" : "Use this icon",
+ "Selected icon" : "Selected icon",
"Field label" : "Field label",
"Field value" : "Field value",
"Choose a file" : "Choose a file",
@@ -122,7 +121,6 @@
"Version" : "Version",
"Donate to support development" : "Donate to support development",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Save your passwords with 1 click!",
"Drag below button to your bookmark toolbar." : "Drag below button to your bookmark toolbar.",
"Delete vault" : "Delete vault",
"Vault password" : "Vault password",
@@ -140,20 +138,18 @@
"Save keys" : "Save keys",
"Generate sharing keys" : "Generate sharing keys",
"Generating sharing keys" : "Generating sharing keys",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "The password tool will scan your password, calculate the average crack time and list those which are below the threshold",
"Minimum password stength" : "Minimum password stength",
"Start scan" : "Start scan",
"Result" : "Result",
"A total of {{scan_result}} weak credentials were found." : "A total of {{scan_result}} weak credentials were found.",
"Score" : "Score",
"Action" : "Action",
- "Search users or groups…" : "Search users or groups…",
+ "Search users…" : "Search users…",
"Missing users? Only users that have vaults are shown." : "Missing users? Only users that have vaults are shown.",
"Cyphering" : "Cyphering",
"Uploading" : "Uploading",
"User" : "User",
"Crypto time" : "Crypto time",
- "Total time spent cyphering" : "Total time spent cyphering",
"Read" : "Read",
"Write" : "Write",
"Files" : "Files",
@@ -162,7 +158,6 @@
"Enable link sharing" : "Enable link sharing",
"Share until date" : "Share until date",
"Expire after views" : "Expire after views",
- "Click Share first" : "Click Share first",
"Show files" : "Show files",
"Details" : "Details",
"Hide details" : "Hide details",
@@ -222,7 +217,6 @@
"Use regex" : "Use regex",
"You have incoming share requests." : "You have incoming share requests.",
"If you want to put the credential in another vault," : "If you want to put the credential in another vault,",
- "log out of this vault and log in to the vault you want the shared credential in." : "log out of this vault and log in to the vault you want the shared credential in.",
"Permissions" : "Permissions",
"Received from" : "Received from",
"Date" : "Date",
@@ -236,7 +230,6 @@
"Password strength must be at least: {{strength}}" : "Password strength must be at least: {{strength}}",
"Please give your new vault a name." : "Please give your new vault a name.",
"Repeat vault password" : "Repeat vault password",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Your sharing keys will have a strength of 1024 bit, which you can change in Settings later.",
"Create vault" : "Create vault",
"Go back to vaults" : "Go back to vaults",
"Please input the password for" : "Please input the password for",
@@ -256,7 +249,6 @@
"Request removed" : "Request removed",
"Destruction request pending" : "Destruction request pending",
"Warning! Adding credentials over HTTP is insecure!" : "Warning! Adding credentials over HTTP is insecure!",
- "Logged in to {{vault_name}}" : "Logged in to {{vault_name}}",
"Change vault" : "Change vault",
"Deleted credentials" : "Deleted credentials",
"Logout" : "Logout",
@@ -295,6 +287,8 @@
"%s has declined your share request for \"%s\"." : "%s has declined your share request for \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s has accepted your share request for \"%s\".",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman is a full featured password manager.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyser\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Unable to get version info",
"Passman Settings" : "Passman Settings",
"GitHub version:" : "GitHub version:",
@@ -316,6 +310,8 @@
"Request ID" : "Request ID",
"Requested by" : "Requested by",
"Reason" : "Reason",
+ "Click here to request\n\t\t\t\t\tit" : "Click here to request\n\t\t\t\t\tit",
+ "Loading&hellip;" : "Loading&hellip;",
"Connection to server lost" : "Connection to server lost",
"Problem loading page, reloading in 5 seconds" : "Problem loading page, reloading in 5 seconds",
"Saving..." : "Saving...",
diff --git a/l10n/es.js b/l10n/es.js
index 76b9f2db..852f4b57 100644
--- a/l10n/es.js
+++ b/l10n/es.js
@@ -2,8 +2,8 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Contraseñas",
- "Generating sharing keys ( %step / 2)" : "Generando llaves de compartición ( %step / 2)",
- "Incorrect vault password!" : "¡Contraseña de bóveda incorrecta!",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves de compartición (%s / 2)",
+ "Incorrect vault password!" : "¡Contraseña incorrecta de la caja fuerte!",
"Passwords do not match" : "Contraseñas no coinciden",
"General" : "General",
"Custom Fields" : "Campos personalizados",
@@ -13,17 +13,17 @@ OC.L10N.register(
"An error occurred during decryption" : "Ha ocurrido un error durante el descifrado.",
"Credential created!" : "¡Credencial creada!",
"Credential deleted" : "Credencial eliminada",
- "Credential updated" : "Credencial actualziada",
+ "Credential updated" : "Credencial actualizada",
"Credential recovered" : "Credencial recuperada",
"Credential destroyed" : "Credencial eliminada",
- "Error downloading file, you probably don't have sufficient permissions" : "Error al descargar el archivo, probablemente no tienes suficientes permisos.",
+ "Error downloading file, you probably have insufficient permissions" : "Error al descargar el archivo, probablemente no tienes suficientes permisos.",
"Invalid QR code" : "Código QR inválido",
"Starting export" : "Iniciar exportación",
"Decrypting credentials" : "Descifrando credenciales",
"Done" : "Hecho",
- "File read successfully." : "Archivo leído con éxito.",
+ "File read." : "Archivo leído.",
"Proceed with the following steps to import your file" : "Continúa con los siguientes pasos para importar tu archivo",
- "Credential has no label, skipping" : "Credencial sin etiquete, saltando",
+ "Skipping unlabeled credential" : "Saltando credencial sin etiquetar",
"Adding {{credential}}" : "Agregando {{credential}}",
"Added {{credential}}" : "Se ha agregado la {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Saltar credenciales, etiqueta faltante en línea {{line}}",
@@ -50,11 +50,11 @@ OC.L10N.register(
"Export credentials" : "Exportar credenciales",
"Sharing" : "Compartir",
"Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro de que quieres salir? Esto destruirá todas tus credenciales",
- "Your old password is incorrect!" : "¡Su contraseña anterior es incorrecta!",
+ "Old password field incorrect!" : "¡El campo de contraseña anterior es incorrecto!",
"New password does not match!" : "¡La nueva contraseña no coincide!",
- "Please log in with your new vault password" : "Por favor, identifícate con tu nueva contraseña de bóveda",
+ "Please log in with your new vault password" : "Por favor, identifícate con tu nueva contraseña de la caja fuerte",
"Share with users and groups" : "Comparte con usuarios y grupos",
- "Share link" : "Comparte el enlace",
+ "Share link" : "Compartir enlace",
"Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro de que deseas salir? Esto corromperá esta credencial",
"Credential unshared" : "Dejo de compartir esta credencial",
"Credential shared" : "Ha compartido esta credencial",
@@ -73,6 +73,9 @@ OC.L10N.register(
"Username" : "Nombre de usuario",
"Repeat password" : "Repite la constraseña",
"Add tag" : "Añadir etiqueta",
+ "Pick an icon" : "Escoger un icono",
+ "Use this icon" : "Usar este icono",
+ "Selected icon" : "Icono seleccionado",
"Field label" : "Llene etiqueta",
"Field value" : "Llene valor",
"Choose a file" : "Elija un archivo",
@@ -109,25 +112,25 @@ OC.L10N.register(
"Require every character type" : "Requerir todos los tipos de caracteres",
"Export type" : "Exportar tipo",
"Export" : "Exportar",
- "Enter vault password to confirm export." : "Introduce la contraseña de la bóveda para confirmar la exportación.",
- "Rename vault" : "Renombrar bóveda",
- "New vault name" : "Nuevo nombre de bóveda",
+ "Enter vault password to confirm export." : "Introduce la contraseña de la caja fuerte para confirmar la exportación.",
+ "Rename vault" : "Renombrar la caja fuerte",
+ "New vault name" : "Nuevo nombre de la caja fuerte",
"Change" : "Cambiar",
- "Change vault key" : "Cambiar la llave de la bóveda",
- "Old vault password" : "Contraseña anterior de la bóveda",
- "New vault password" : "Contraseña nueva de la bóveda",
- "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
- "Please wait your vault is being updated, do not leave this page." : "Por favor, espera. Tu bóveda se está actualizando, no salgas de esta página",
+ "Change vault key" : "Cambiar la llave de la caja fuerte",
+ "Old vault password" : "Contraseña anterior de la caja fuerte",
+ "New vault password" : "Contraseña nueva de la caja fuerte",
+ "Repeat new vault password" : "Repite la nueva contraseña de la caja fuerte",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor, espera. Tu caja fuerte se está actualizando, no salgas de esta página",
"Processing" : "Procesando",
"Total progress" : "Progreso total",
"About Passman" : "Acerca de Passman",
"Version" : "Versión",
"Donate to support development" : "Done para dar soporte al desarrollo",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "¡Guarda tus contraseñas en 1 click!",
+ "Save your passwords with one click." : "Guarda tus contraseñas en un clic.",
"Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo a tu barra de herramientas ",
- "Delete vault" : "Eliminar bóveda",
- "Vault password" : "Contraseña de bóveda",
+ "Delete vault" : "Eliminar caja fuerte",
+ "Vault password" : "Contraseña de caja fuerte",
"This process is irreversible" : "Este proceso es irreversible",
"Delete my precious passwords" : "Eliminar mis valiosas contraseñas",
"Deleting {{password}}…" : "Borrando {{password}}…",
@@ -142,20 +145,20 @@ OC.L10N.register(
"Save keys" : "Guardar llaves",
"Generate sharing keys" : "Generar llaves para compartir",
"Generating sharing keys" : "Generando llaves para compartir",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "La herramienta de contraseñas escaneará tus contraseñas, calculará el tiempo medio para reventarlas y señalará aquellas que estén por debajo del umbral",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "La herramienta de contraseñas escanea tus contraseñas, calcula el tiempo medio para reventarlas y señala aquellas que estén por debajo del umbral ",
"Minimum password stength" : "Fuerza mínima de la contraseña",
"Start scan" : "Comenzar escaneado",
"Result" : "Resultado",
"A total of {{scan_result}} weak credentials were found." : "Se han encontrado un tota del {{scan_result}} credenciales débiles",
"Score" : "Puntaje",
"Action" : "Acción",
- "Search users or groups…" : "Buscar usuarios o grupos...",
- "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Solo se muestran usuarios que tengan bóvedas.",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran usuarios que tengan cajas fuertes.",
"Cyphering" : "Cifrando",
"Uploading" : "Subiendo",
"User" : "Usuario",
"Crypto time" : "Tiempo de cifrado",
- "Total time spent cyphering" : "Tiempo total usado al cifrar",
+ "Total time spent encrypting" : "Tiempo total usado cifrando",
"Read" : "Leer",
"Write" : "Escribir",
"Files" : "Archivos",
@@ -164,7 +167,7 @@ OC.L10N.register(
"Enable link sharing" : "Activar compartir enlace",
"Share until date" : "Compartir hasta la fecha",
"Expire after views" : "Expirar después de vistas",
- "Click Share first" : "Haz clic primero en Compartir",
+ "Click \\\"Share\\\" first" : "Pulsa \\\"Compartir\\\" primero",
"Show files" : "Mostrar archivos",
"Details" : "Detalles",
"Hide details" : "Esconder detalles",
@@ -206,14 +209,14 @@ OC.L10N.register(
"Showing deleted since" : "Mostrar fecha de eliminación",
"Beginning" : "Comenzando",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
- "Search for credential…" : "Buscando credencial...",
+ "Search for credential…" : "Buscar credencial...",
"Account" : "Cuenta",
"Password" : "Contraseña",
"OTP" : "OTP",
"E-mail" : "Correo electrónico",
"URL" : "URL",
"Notes" : "Notas",
- "Expiry time" : "Hora de expiración",
+ "Expiry time" : "Fecha de expiración",
"Changed" : "Cambiado",
"Created" : "Creado",
"Edit" : "Editar",
@@ -223,8 +226,8 @@ OC.L10N.register(
"Destroy" : "Destruir",
"Use regex" : "Use regex",
"You have incoming share requests." : "Tiene solicitudes de compartición entrantes",
- "If you want to put the credential in another vault," : "Si quieres poner la credencial en otra bóveda,",
- "log out of this vault and log in to the vault you want the shared credential in." : "Sal de esta bóveda y entra en la bóveda en la que quieres guardar la credencial compartida.",
+ "If you want to put the credential in another vault," : "Si quieres poner la credencial en otra caja fuerte,",
+ "log out of this vault and log into the vault you want the shared credential in." : "salir de esta caja fuerte y entra en la caja fuerte en la que quieres guardar la credencia compartida.",
"Permissions" : "Permisos",
"Received from" : "Recibido de",
"Date" : "Fecha",
@@ -234,32 +237,31 @@ OC.L10N.register(
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu cripta ha sido bloqueada durante {{time}} debido a {{tries}} intentos fallidos!",
"Last accessed" : "Último acceso",
"Never" : "Nunca",
- "No vaults found, why not create one?" : "No se encontraron bóvedas, ¿por qué no creas una?",
+ "No vaults found, why not create one?" : "No se han encontrado cajas fuertes, ¿por qué no creas una?",
"Password strength must be at least: {{strength}}" : "La fuerza de la contraseña debe ser al menos de: {{strength}}",
- "Please give your new vault a name." : "Por favor, dé nombre a su nueva bóveda.",
- "Repeat vault password" : "Repite la contraseña de la bóveda",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Tu clave de compartición tendrá una fortaleza de 1024 bits, lo que puedes cambiar más tarde en la configuración.",
- "Create vault" : "Crear bóveda",
- "Go back to vaults" : "Regresar a las bóvedas",
- "Please input the password for" : "Por favor ingrese la contraseña para",
- "Set this vault as the default." : "Marcar esta como la bóveda por defecto.",
- "Log into this vault automatically." : "Entrar en esta bóveda automáticamente",
- "Log out of this vault automatically after: " : "Salir automáticamente de esta bóveda después de:",
- "Decrypt vault" : "Descifre bóveda",
- "Seems you lost the vault password and you're unable to log in." : "Parece que has perdido la contraseña de la bóveda y no puedes entrar.",
- "If you want this vault to be removed you can request that here." : "Si quieres que esta bóveda sea eliminada, lo puedes solicitar aquí.",
+ "Please give your new vault a name." : "Por favor, póngale un nombre a su nueva caja fuerte.",
+ "Repeat vault password" : "Repite la contraseña de la caja fuerte",
+ "Create vault" : "Crear caja fuerte",
+ "Go back to vaults" : "Volver a las cajas fuertes",
+ "Please input the password for" : "Por favor, introduzca la contraseña de",
+ "Set this vault as the default." : "Marcar esta caja fuerte como la predeterminada.",
+ "Log into this vault automatically." : "Entrar en esta caja fuerte automáticamente",
+ "Log out of this vault automatically after: " : "Salir automáticamente de esta caja fuerte después de:",
+ "Decrypt vault" : "Descifrar caja fuerte",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que has perdido la contraseña de la caja fuerte y no puedes entrar.",
+ "If you want this vault to be removed you can request that here." : "Si quieres que esta caja fuerte sea eliminada, lo puedes solicitar aquí.",
"An admin then accepts or declines the request" : "Un administrador, entonces, acepta o rechaza la petición",
- "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales en ella se perderán",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la caja fuerte, todas las credenciales que tuviese se perderán",
"Reason for requesting deletion (optional):" : "Razón para pedir el borrado (opcional):",
- "Request vault destruction" : "Solicitar la eliminación de bóveda",
- "Yes, request an admin to destroy this vault" : "Si, solicitar que un administrador elimine esta bóveda",
+ "Request vault destruction" : "Solicitar la eliminación de la caja fuerte",
+ "Yes, request an admin to destroy this vault" : "Si, solicitar que un administrador elimine esta caja fuerte",
"Cancel destruction request" : "Cancelar la solicitud de eliminación",
- "Vault destruction requested" : "Eliminación de la bóveda solicitada",
+ "Vault destruction requested" : "Eliminación de la caja fuerte solicitada",
"Request removed" : "Solicitud eliminada",
"Destruction request pending" : "Solicitud de eliminación pendiente",
"Warning! Adding credentials over HTTP is insecure!" : "¡Atención! ¡Añadir credenciales sobre HTTP es inseguro!",
- "Logged in to {{vault_name}}" : "Sesión iniciada en {{vault_name}}",
- "Change vault" : "Cambiar bóveda",
+ "Logged into {{vault_name}}" : "Sesión iniciada en {{vault_name}}",
+ "Change vault" : "Cambiar de caja fuerte",
"Deleted credentials" : "Borrar credenciales",
"Logout" : "Salir",
"Donate" : "Donar",
@@ -291,19 +293,21 @@ OC.L10N.register(
"You received a share request for %1$s from %2$s" : "Has recibido una solicitud para compartir %1$s de %2$s",
"%s has been shared with a link" : "%s ha sido compartido con un link",
"Your credential \"%s\" expired, click here to update the credential." : "Tu credencial \"%s\" ha expirado, pincha aquí para actualizar la credencial.",
- "Remind me later" : "Recuérdamelo mas tarde",
+ "Remind me later" : "Recuérdamelo más tarde",
"Ignore" : "Ignorar",
"%s shared \"%s\" with you. Click here to accept" : "%s comparte \"%s\" contigo. Hacer click aquí para aceptar",
"%s has declined your share request for \"%s\"." : "%s ha rechazado su petición para compartir \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s ha aceptado tu petición para compartir \"%s\".",
"Passman" : "Passman",
- "Unable to get version info" : "No se puede de obtener la información de la versión",
+ "Passman is a full featured password manager." : "Passman es un gestor de contraseñas lleno de características.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman es un gestor de contraseñas lleno de características.\nCaracterísticas:\n- La llave de la caja fuerte nunca se envía al servidor\n- Extensión del navegador para el acceder fácilmente a las contraseñas\n- Aplicación android como vía de acceso\n- Las credenciales son cifradas en el lado del cliente con AES de 256 bits \n- Las credenciales son cifradas en el lado del servidor con AES de 256 bits\n- Posibilidad de añadir campos personalizados a las credenciales\n- Generador OTP (contraseña de un solo uso) incorporado\n- Analizador de contraseñas\n- Compartir contraseñas internamente y a través enlace de una forma segura\n- Importar desde varios gestores de contraseñas (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\n- Para ver una demostración de esta aplicación visite [https://demo.passman.cc](https://demo.passman.cc)",
+ "Unable to get version info" : "No se puede obtener la información de la versión",
"Passman Settings" : "Ajustes de Passman",
"GitHub version:" : "Versión de GitHub:",
"A newer version of Passman is available" : "Hay disponible una nueva versión de Passman",
"Password sharing" : "Compartir contraseña",
"Credential mover" : "Trasladar credenciales",
- "Vault destruction requests" : "Solicitudes de eliminación de bóvedas",
+ "Vault destruction requests" : "Solicitudes de eliminación de cajas fuertes",
"Check for new versions" : "Revisar por nuevas versiones",
"Enable HTTPS check" : "Activar revisión HTTPS",
"Disable context menu" : "Deshabilitar menú contextual",
@@ -314,11 +318,15 @@ OC.L10N.register(
"Source account" : "Cuenta de origen",
"Destination account" : "Cuenta destino",
"Credentials moved!" : "¡Credenciales trasladadas!",
- "Requests to destroy vault" : "Solicitudes para eliminar bóvedas",
+ "Requests to destroy vault" : "Solicitudes para eliminar cajas fuertes",
"Request ID" : "ID de solicitud",
"Requested by" : "Solicitado por",
"Reason" : "Razón",
- "Connection to server lost" : "Perdida la conexión al server",
+ "Click here to request\n\t\t\t\t\tit" : "Pulsa aquí para \n\t\t\t\tpedirlo",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Ooooh... No se ha encontrado la credencial. ¿Puede que haya expirado?",
+ "Expires:" : "Caduca:",
+ "Connection to server lost" : "Se ha perdido la conexión al servidor",
"Problem loading page, reloading in 5 seconds" : "Problema al cargar la página, recargando en 5 segundos",
"Saving..." : "Guardando...",
"Dismiss" : "Descartar",
diff --git a/l10n/es.json b/l10n/es.json
index 4102a3db..e6ea153d 100644
--- a/l10n/es.json
+++ b/l10n/es.json
@@ -1,7 +1,7 @@
{ "translations": {
"Passwords" : "Contraseñas",
- "Generating sharing keys ( %step / 2)" : "Generando llaves de compartición ( %step / 2)",
- "Incorrect vault password!" : "¡Contraseña de bóveda incorrecta!",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves de compartición (%s / 2)",
+ "Incorrect vault password!" : "¡Contraseña incorrecta de la caja fuerte!",
"Passwords do not match" : "Contraseñas no coinciden",
"General" : "General",
"Custom Fields" : "Campos personalizados",
@@ -11,17 +11,17 @@
"An error occurred during decryption" : "Ha ocurrido un error durante el descifrado.",
"Credential created!" : "¡Credencial creada!",
"Credential deleted" : "Credencial eliminada",
- "Credential updated" : "Credencial actualziada",
+ "Credential updated" : "Credencial actualizada",
"Credential recovered" : "Credencial recuperada",
"Credential destroyed" : "Credencial eliminada",
- "Error downloading file, you probably don't have sufficient permissions" : "Error al descargar el archivo, probablemente no tienes suficientes permisos.",
+ "Error downloading file, you probably have insufficient permissions" : "Error al descargar el archivo, probablemente no tienes suficientes permisos.",
"Invalid QR code" : "Código QR inválido",
"Starting export" : "Iniciar exportación",
"Decrypting credentials" : "Descifrando credenciales",
"Done" : "Hecho",
- "File read successfully." : "Archivo leído con éxito.",
+ "File read." : "Archivo leído.",
"Proceed with the following steps to import your file" : "Continúa con los siguientes pasos para importar tu archivo",
- "Credential has no label, skipping" : "Credencial sin etiquete, saltando",
+ "Skipping unlabeled credential" : "Saltando credencial sin etiquetar",
"Adding {{credential}}" : "Agregando {{credential}}",
"Added {{credential}}" : "Se ha agregado la {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Saltar credenciales, etiqueta faltante en línea {{line}}",
@@ -48,11 +48,11 @@
"Export credentials" : "Exportar credenciales",
"Sharing" : "Compartir",
"Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro de que quieres salir? Esto destruirá todas tus credenciales",
- "Your old password is incorrect!" : "¡Su contraseña anterior es incorrecta!",
+ "Old password field incorrect!" : "¡El campo de contraseña anterior es incorrecto!",
"New password does not match!" : "¡La nueva contraseña no coincide!",
- "Please log in with your new vault password" : "Por favor, identifícate con tu nueva contraseña de bóveda",
+ "Please log in with your new vault password" : "Por favor, identifícate con tu nueva contraseña de la caja fuerte",
"Share with users and groups" : "Comparte con usuarios y grupos",
- "Share link" : "Comparte el enlace",
+ "Share link" : "Compartir enlace",
"Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro de que deseas salir? Esto corromperá esta credencial",
"Credential unshared" : "Dejo de compartir esta credencial",
"Credential shared" : "Ha compartido esta credencial",
@@ -71,6 +71,9 @@
"Username" : "Nombre de usuario",
"Repeat password" : "Repite la constraseña",
"Add tag" : "Añadir etiqueta",
+ "Pick an icon" : "Escoger un icono",
+ "Use this icon" : "Usar este icono",
+ "Selected icon" : "Icono seleccionado",
"Field label" : "Llene etiqueta",
"Field value" : "Llene valor",
"Choose a file" : "Elija un archivo",
@@ -107,25 +110,25 @@
"Require every character type" : "Requerir todos los tipos de caracteres",
"Export type" : "Exportar tipo",
"Export" : "Exportar",
- "Enter vault password to confirm export." : "Introduce la contraseña de la bóveda para confirmar la exportación.",
- "Rename vault" : "Renombrar bóveda",
- "New vault name" : "Nuevo nombre de bóveda",
+ "Enter vault password to confirm export." : "Introduce la contraseña de la caja fuerte para confirmar la exportación.",
+ "Rename vault" : "Renombrar la caja fuerte",
+ "New vault name" : "Nuevo nombre de la caja fuerte",
"Change" : "Cambiar",
- "Change vault key" : "Cambiar la llave de la bóveda",
- "Old vault password" : "Contraseña anterior de la bóveda",
- "New vault password" : "Contraseña nueva de la bóveda",
- "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
- "Please wait your vault is being updated, do not leave this page." : "Por favor, espera. Tu bóveda se está actualizando, no salgas de esta página",
+ "Change vault key" : "Cambiar la llave de la caja fuerte",
+ "Old vault password" : "Contraseña anterior de la caja fuerte",
+ "New vault password" : "Contraseña nueva de la caja fuerte",
+ "Repeat new vault password" : "Repite la nueva contraseña de la caja fuerte",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor, espera. Tu caja fuerte se está actualizando, no salgas de esta página",
"Processing" : "Procesando",
"Total progress" : "Progreso total",
"About Passman" : "Acerca de Passman",
"Version" : "Versión",
"Donate to support development" : "Done para dar soporte al desarrollo",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "¡Guarda tus contraseñas en 1 click!",
+ "Save your passwords with one click." : "Guarda tus contraseñas en un clic.",
"Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo a tu barra de herramientas ",
- "Delete vault" : "Eliminar bóveda",
- "Vault password" : "Contraseña de bóveda",
+ "Delete vault" : "Eliminar caja fuerte",
+ "Vault password" : "Contraseña de caja fuerte",
"This process is irreversible" : "Este proceso es irreversible",
"Delete my precious passwords" : "Eliminar mis valiosas contraseñas",
"Deleting {{password}}…" : "Borrando {{password}}…",
@@ -140,20 +143,20 @@
"Save keys" : "Guardar llaves",
"Generate sharing keys" : "Generar llaves para compartir",
"Generating sharing keys" : "Generando llaves para compartir",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "La herramienta de contraseñas escaneará tus contraseñas, calculará el tiempo medio para reventarlas y señalará aquellas que estén por debajo del umbral",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "La herramienta de contraseñas escanea tus contraseñas, calcula el tiempo medio para reventarlas y señala aquellas que estén por debajo del umbral ",
"Minimum password stength" : "Fuerza mínima de la contraseña",
"Start scan" : "Comenzar escaneado",
"Result" : "Resultado",
"A total of {{scan_result}} weak credentials were found." : "Se han encontrado un tota del {{scan_result}} credenciales débiles",
"Score" : "Puntaje",
"Action" : "Acción",
- "Search users or groups…" : "Buscar usuarios o grupos...",
- "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Solo se muestran usuarios que tengan bóvedas.",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran usuarios que tengan cajas fuertes.",
"Cyphering" : "Cifrando",
"Uploading" : "Subiendo",
"User" : "Usuario",
"Crypto time" : "Tiempo de cifrado",
- "Total time spent cyphering" : "Tiempo total usado al cifrar",
+ "Total time spent encrypting" : "Tiempo total usado cifrando",
"Read" : "Leer",
"Write" : "Escribir",
"Files" : "Archivos",
@@ -162,7 +165,7 @@
"Enable link sharing" : "Activar compartir enlace",
"Share until date" : "Compartir hasta la fecha",
"Expire after views" : "Expirar después de vistas",
- "Click Share first" : "Haz clic primero en Compartir",
+ "Click \\\"Share\\\" first" : "Pulsa \\\"Compartir\\\" primero",
"Show files" : "Mostrar archivos",
"Details" : "Detalles",
"Hide details" : "Esconder detalles",
@@ -204,14 +207,14 @@
"Showing deleted since" : "Mostrar fecha de eliminación",
"Beginning" : "Comenzando",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
- "Search for credential…" : "Buscando credencial...",
+ "Search for credential…" : "Buscar credencial...",
"Account" : "Cuenta",
"Password" : "Contraseña",
"OTP" : "OTP",
"E-mail" : "Correo electrónico",
"URL" : "URL",
"Notes" : "Notas",
- "Expiry time" : "Hora de expiración",
+ "Expiry time" : "Fecha de expiración",
"Changed" : "Cambiado",
"Created" : "Creado",
"Edit" : "Editar",
@@ -221,8 +224,8 @@
"Destroy" : "Destruir",
"Use regex" : "Use regex",
"You have incoming share requests." : "Tiene solicitudes de compartición entrantes",
- "If you want to put the credential in another vault," : "Si quieres poner la credencial en otra bóveda,",
- "log out of this vault and log in to the vault you want the shared credential in." : "Sal de esta bóveda y entra en la bóveda en la que quieres guardar la credencial compartida.",
+ "If you want to put the credential in another vault," : "Si quieres poner la credencial en otra caja fuerte,",
+ "log out of this vault and log into the vault you want the shared credential in." : "salir de esta caja fuerte y entra en la caja fuerte en la que quieres guardar la credencia compartida.",
"Permissions" : "Permisos",
"Received from" : "Recibido de",
"Date" : "Fecha",
@@ -232,32 +235,31 @@
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu cripta ha sido bloqueada durante {{time}} debido a {{tries}} intentos fallidos!",
"Last accessed" : "Último acceso",
"Never" : "Nunca",
- "No vaults found, why not create one?" : "No se encontraron bóvedas, ¿por qué no creas una?",
+ "No vaults found, why not create one?" : "No se han encontrado cajas fuertes, ¿por qué no creas una?",
"Password strength must be at least: {{strength}}" : "La fuerza de la contraseña debe ser al menos de: {{strength}}",
- "Please give your new vault a name." : "Por favor, dé nombre a su nueva bóveda.",
- "Repeat vault password" : "Repite la contraseña de la bóveda",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Tu clave de compartición tendrá una fortaleza de 1024 bits, lo que puedes cambiar más tarde en la configuración.",
- "Create vault" : "Crear bóveda",
- "Go back to vaults" : "Regresar a las bóvedas",
- "Please input the password for" : "Por favor ingrese la contraseña para",
- "Set this vault as the default." : "Marcar esta como la bóveda por defecto.",
- "Log into this vault automatically." : "Entrar en esta bóveda automáticamente",
- "Log out of this vault automatically after: " : "Salir automáticamente de esta bóveda después de:",
- "Decrypt vault" : "Descifre bóveda",
- "Seems you lost the vault password and you're unable to log in." : "Parece que has perdido la contraseña de la bóveda y no puedes entrar.",
- "If you want this vault to be removed you can request that here." : "Si quieres que esta bóveda sea eliminada, lo puedes solicitar aquí.",
+ "Please give your new vault a name." : "Por favor, póngale un nombre a su nueva caja fuerte.",
+ "Repeat vault password" : "Repite la contraseña de la caja fuerte",
+ "Create vault" : "Crear caja fuerte",
+ "Go back to vaults" : "Volver a las cajas fuertes",
+ "Please input the password for" : "Por favor, introduzca la contraseña de",
+ "Set this vault as the default." : "Marcar esta caja fuerte como la predeterminada.",
+ "Log into this vault automatically." : "Entrar en esta caja fuerte automáticamente",
+ "Log out of this vault automatically after: " : "Salir automáticamente de esta caja fuerte después de:",
+ "Decrypt vault" : "Descifrar caja fuerte",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que has perdido la contraseña de la caja fuerte y no puedes entrar.",
+ "If you want this vault to be removed you can request that here." : "Si quieres que esta caja fuerte sea eliminada, lo puedes solicitar aquí.",
"An admin then accepts or declines the request" : "Un administrador, entonces, acepta o rechaza la petición",
- "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales en ella se perderán",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la caja fuerte, todas las credenciales que tuviese se perderán",
"Reason for requesting deletion (optional):" : "Razón para pedir el borrado (opcional):",
- "Request vault destruction" : "Solicitar la eliminación de bóveda",
- "Yes, request an admin to destroy this vault" : "Si, solicitar que un administrador elimine esta bóveda",
+ "Request vault destruction" : "Solicitar la eliminación de la caja fuerte",
+ "Yes, request an admin to destroy this vault" : "Si, solicitar que un administrador elimine esta caja fuerte",
"Cancel destruction request" : "Cancelar la solicitud de eliminación",
- "Vault destruction requested" : "Eliminación de la bóveda solicitada",
+ "Vault destruction requested" : "Eliminación de la caja fuerte solicitada",
"Request removed" : "Solicitud eliminada",
"Destruction request pending" : "Solicitud de eliminación pendiente",
"Warning! Adding credentials over HTTP is insecure!" : "¡Atención! ¡Añadir credenciales sobre HTTP es inseguro!",
- "Logged in to {{vault_name}}" : "Sesión iniciada en {{vault_name}}",
- "Change vault" : "Cambiar bóveda",
+ "Logged into {{vault_name}}" : "Sesión iniciada en {{vault_name}}",
+ "Change vault" : "Cambiar de caja fuerte",
"Deleted credentials" : "Borrar credenciales",
"Logout" : "Salir",
"Donate" : "Donar",
@@ -289,19 +291,21 @@
"You received a share request for %1$s from %2$s" : "Has recibido una solicitud para compartir %1$s de %2$s",
"%s has been shared with a link" : "%s ha sido compartido con un link",
"Your credential \"%s\" expired, click here to update the credential." : "Tu credencial \"%s\" ha expirado, pincha aquí para actualizar la credencial.",
- "Remind me later" : "Recuérdamelo mas tarde",
+ "Remind me later" : "Recuérdamelo más tarde",
"Ignore" : "Ignorar",
"%s shared \"%s\" with you. Click here to accept" : "%s comparte \"%s\" contigo. Hacer click aquí para aceptar",
"%s has declined your share request for \"%s\"." : "%s ha rechazado su petición para compartir \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s ha aceptado tu petición para compartir \"%s\".",
"Passman" : "Passman",
- "Unable to get version info" : "No se puede de obtener la información de la versión",
+ "Passman is a full featured password manager." : "Passman es un gestor de contraseñas lleno de características.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman es un gestor de contraseñas lleno de características.\nCaracterísticas:\n- La llave de la caja fuerte nunca se envía al servidor\n- Extensión del navegador para el acceder fácilmente a las contraseñas\n- Aplicación android como vía de acceso\n- Las credenciales son cifradas en el lado del cliente con AES de 256 bits \n- Las credenciales son cifradas en el lado del servidor con AES de 256 bits\n- Posibilidad de añadir campos personalizados a las credenciales\n- Generador OTP (contraseña de un solo uso) incorporado\n- Analizador de contraseñas\n- Compartir contraseñas internamente y a través enlace de una forma segura\n- Importar desde varios gestores de contraseñas (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\n- Para ver una demostración de esta aplicación visite [https://demo.passman.cc](https://demo.passman.cc)",
+ "Unable to get version info" : "No se puede obtener la información de la versión",
"Passman Settings" : "Ajustes de Passman",
"GitHub version:" : "Versión de GitHub:",
"A newer version of Passman is available" : "Hay disponible una nueva versión de Passman",
"Password sharing" : "Compartir contraseña",
"Credential mover" : "Trasladar credenciales",
- "Vault destruction requests" : "Solicitudes de eliminación de bóvedas",
+ "Vault destruction requests" : "Solicitudes de eliminación de cajas fuertes",
"Check for new versions" : "Revisar por nuevas versiones",
"Enable HTTPS check" : "Activar revisión HTTPS",
"Disable context menu" : "Deshabilitar menú contextual",
@@ -312,11 +316,15 @@
"Source account" : "Cuenta de origen",
"Destination account" : "Cuenta destino",
"Credentials moved!" : "¡Credenciales trasladadas!",
- "Requests to destroy vault" : "Solicitudes para eliminar bóvedas",
+ "Requests to destroy vault" : "Solicitudes para eliminar cajas fuertes",
"Request ID" : "ID de solicitud",
"Requested by" : "Solicitado por",
"Reason" : "Razón",
- "Connection to server lost" : "Perdida la conexión al server",
+ "Click here to request\n\t\t\t\t\tit" : "Pulsa aquí para \n\t\t\t\tpedirlo",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Ooooh... No se ha encontrado la credencial. ¿Puede que haya expirado?",
+ "Expires:" : "Caduca:",
+ "Connection to server lost" : "Se ha perdido la conexión al servidor",
"Problem loading page, reloading in 5 seconds" : "Problema al cargar la página, recargando en 5 segundos",
"Saving..." : "Guardando...",
"Dismiss" : "Descartar",
diff --git a/l10n/es_419.js b/l10n/es_419.js
new file mode 100644
index 00000000..4b84bb5a
--- /dev/null
+++ b/l10n/es_419.js
@@ -0,0 +1,320 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_419.json b/l10n/es_419.json
new file mode 100644
index 00000000..fbb55de7
--- /dev/null
+++ b/l10n/es_419.json
@@ -0,0 +1,318 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/es_AR.js b/l10n/es_AR.js
index 4ff9eece..5980d154 100644
--- a/l10n/es_AR.js
+++ b/l10n/es_AR.js
@@ -2,7 +2,6 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Contraseñas",
- "Generating sharing keys ( %step / 2)" : "Generando llaves para compartir (paso %s /2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
"General" : "General",
@@ -17,7 +16,6 @@ OC.L10N.register(
"Starting export" : "Comenzando exportación",
"Decrypting credentials" : "Decriptando credenciales",
"Done" : "Terminado",
- "Credential has no label, skipping" : "Las credenciales no tienen etiqueta, omitiendo",
"Adding {{credential}}" : "Agregando {{credential}}",
"Added {{credential}}" : "{{credential}} agregado",
"Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
@@ -39,7 +37,6 @@ OC.L10N.register(
"Import credentials" : "Importar credenciales",
"Export credentials" : "Exportar credenciales",
"Sharing" : "Compartiendo",
- "Your old password is incorrect!" : "¡Su contraseña anterior es incorrecta!",
"Share with users and groups" : "Compartir con otros usuarios y grupos",
"Share link" : "Compartir link",
"Are you sure you want to leave? This will corrupt this credential" : "¿Está seguro que desea salir? Esto va a corrpomer estas credenciales",
@@ -107,7 +104,6 @@ OC.L10N.register(
"Version" : "Versión",
"Donate to support development" : "Donar en apoyo al desarrollo",
"Bookmarklet" : "Marcador a código",
- "Save your passwords with 1 click!" : "¡Guarde sus contraseñas con 1 sólo click!",
"Drag below button to your bookmark toolbar." : "Arrastre el botón de abajo hasta su barra de herramientas de marcadores. ",
"Delete vault" : "Borrar bóveda",
"Vault password" : "Bóveda de contraseñas",
@@ -124,7 +120,6 @@ OC.L10N.register(
"Save keys" : "Guardar llaves",
"Generate sharing keys" : "Generar llaves de comparitr",
"Generating sharing keys" : "Generando llaves de comparitr",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "La herramienta de contraseñas escaneará su contraseña, calculará el tiempo promedio para romperla y enlistará aquellas que estén por debajo del umbral",
"Minimum password stength" : "Fortaleza mínima de contraseña",
"Start scan" : "Iniciar escaneo",
"Result" : "Resultado",
@@ -136,7 +131,6 @@ OC.L10N.register(
"Uploading" : "Cargando",
"User" : "Usuario",
"Crypto time" : "Tiempo criptográfico",
- "Total time spent cyphering" : "Tiempo total destinado a encriptar",
"Read" : "Leer",
"Write" : "Escribir",
"Files" : "Archivo",
@@ -225,7 +219,6 @@ OC.L10N.register(
"Vault destruction requested" : "Destrucción de la bóveda solicitada",
"Request removed" : "Solicitud eliminada",
"Destruction request pending" : "Solicitud de destrucción pendiente",
- "Logged in to {{vault_name}}" : "Inició sesión en {{vault_name}}",
"Change vault" : "Cambiar bóveda",
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
diff --git a/l10n/es_AR.json b/l10n/es_AR.json
index 1fb46537..5d5814bb 100644
--- a/l10n/es_AR.json
+++ b/l10n/es_AR.json
@@ -1,6 +1,5 @@
{ "translations": {
"Passwords" : "Contraseñas",
- "Generating sharing keys ( %step / 2)" : "Generando llaves para compartir (paso %s /2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
"General" : "General",
@@ -15,7 +14,6 @@
"Starting export" : "Comenzando exportación",
"Decrypting credentials" : "Decriptando credenciales",
"Done" : "Terminado",
- "Credential has no label, skipping" : "Las credenciales no tienen etiqueta, omitiendo",
"Adding {{credential}}" : "Agregando {{credential}}",
"Added {{credential}}" : "{{credential}} agregado",
"Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
@@ -37,7 +35,6 @@
"Import credentials" : "Importar credenciales",
"Export credentials" : "Exportar credenciales",
"Sharing" : "Compartiendo",
- "Your old password is incorrect!" : "¡Su contraseña anterior es incorrecta!",
"Share with users and groups" : "Compartir con otros usuarios y grupos",
"Share link" : "Compartir link",
"Are you sure you want to leave? This will corrupt this credential" : "¿Está seguro que desea salir? Esto va a corrpomer estas credenciales",
@@ -105,7 +102,6 @@
"Version" : "Versión",
"Donate to support development" : "Donar en apoyo al desarrollo",
"Bookmarklet" : "Marcador a código",
- "Save your passwords with 1 click!" : "¡Guarde sus contraseñas con 1 sólo click!",
"Drag below button to your bookmark toolbar." : "Arrastre el botón de abajo hasta su barra de herramientas de marcadores. ",
"Delete vault" : "Borrar bóveda",
"Vault password" : "Bóveda de contraseñas",
@@ -122,7 +118,6 @@
"Save keys" : "Guardar llaves",
"Generate sharing keys" : "Generar llaves de comparitr",
"Generating sharing keys" : "Generando llaves de comparitr",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "La herramienta de contraseñas escaneará su contraseña, calculará el tiempo promedio para romperla y enlistará aquellas que estén por debajo del umbral",
"Minimum password stength" : "Fortaleza mínima de contraseña",
"Start scan" : "Iniciar escaneo",
"Result" : "Resultado",
@@ -134,7 +129,6 @@
"Uploading" : "Cargando",
"User" : "Usuario",
"Crypto time" : "Tiempo criptográfico",
- "Total time spent cyphering" : "Tiempo total destinado a encriptar",
"Read" : "Leer",
"Write" : "Escribir",
"Files" : "Archivo",
@@ -223,7 +217,6 @@
"Vault destruction requested" : "Destrucción de la bóveda solicitada",
"Request removed" : "Solicitud eliminada",
"Destruction request pending" : "Solicitud de destrucción pendiente",
- "Logged in to {{vault_name}}" : "Inició sesión en {{vault_name}}",
"Change vault" : "Cambiar bóveda",
"Deleted credentials" : "Credenciales borradas",
"Logout" : "Salir",
diff --git a/l10n/es_CL.js b/l10n/es_CL.js
new file mode 100644
index 00000000..6a6032ba
--- /dev/null
+++ b/l10n/es_CL.js
@@ -0,0 +1,321 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Cerrar sesión",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_CL.json b/l10n/es_CL.json
new file mode 100644
index 00000000..5c2387db
--- /dev/null
+++ b/l10n/es_CL.json
@@ -0,0 +1,319 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Cerrar sesión",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/es_CO.js b/l10n/es_CO.js
new file mode 100644
index 00000000..6a6032ba
--- /dev/null
+++ b/l10n/es_CO.js
@@ -0,0 +1,321 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Cerrar sesión",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_CO.json b/l10n/es_CO.json
new file mode 100644
index 00000000..5c2387db
--- /dev/null
+++ b/l10n/es_CO.json
@@ -0,0 +1,319 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Cerrar sesión",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/es_CR.js b/l10n/es_CR.js
new file mode 100644
index 00000000..6a6032ba
--- /dev/null
+++ b/l10n/es_CR.js
@@ -0,0 +1,321 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Cerrar sesión",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_CR.json b/l10n/es_CR.json
new file mode 100644
index 00000000..5c2387db
--- /dev/null
+++ b/l10n/es_CR.json
@@ -0,0 +1,319 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Cerrar sesión",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/es_DO.js b/l10n/es_DO.js
new file mode 100644
index 00000000..6a6032ba
--- /dev/null
+++ b/l10n/es_DO.js
@@ -0,0 +1,321 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Cerrar sesión",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_DO.json b/l10n/es_DO.json
new file mode 100644
index 00000000..5c2387db
--- /dev/null
+++ b/l10n/es_DO.json
@@ -0,0 +1,319 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Cerrar sesión",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/es_EC.js b/l10n/es_EC.js
new file mode 100644
index 00000000..6a6032ba
--- /dev/null
+++ b/l10n/es_EC.js
@@ -0,0 +1,321 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Cerrar sesión",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_EC.json b/l10n/es_EC.json
new file mode 100644
index 00000000..5c2387db
--- /dev/null
+++ b/l10n/es_EC.json
@@ -0,0 +1,319 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Cerrar sesión",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/es_GT.js b/l10n/es_GT.js
new file mode 100644
index 00000000..6a6032ba
--- /dev/null
+++ b/l10n/es_GT.js
@@ -0,0 +1,321 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Cerrar sesión",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_GT.json b/l10n/es_GT.json
new file mode 100644
index 00000000..5c2387db
--- /dev/null
+++ b/l10n/es_GT.json
@@ -0,0 +1,319 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Cerrar sesión",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/es_HN.js b/l10n/es_HN.js
new file mode 100644
index 00000000..4b84bb5a
--- /dev/null
+++ b/l10n/es_HN.js
@@ -0,0 +1,320 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_HN.json b/l10n/es_HN.json
new file mode 100644
index 00000000..fbb55de7
--- /dev/null
+++ b/l10n/es_HN.json
@@ -0,0 +1,318 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/es_MX.js b/l10n/es_MX.js
index 007a5b28..c7459c46 100644
--- a/l10n/es_MX.js
+++ b/l10n/es_MX.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Contraseñas",
- "Generating sharing keys ( %step / 2)" : "Generando llaves para compartir (paso %s /2)",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
"General" : "General",
@@ -16,14 +16,11 @@ OC.L10N.register(
"Credential updated" : "Credenciales actualizadas",
"Credential recovered" : "Credenciales recuperadas",
"Credential destroyed" : "Credenciales destruidas",
- "Error downloading file, you probably don't have sufficient permissions" : "Se presentó un error al descargar el archivo, probablemente no tengas suficientes permisos",
"Invalid QR code" : "Código QR inválido",
"Starting export" : "Comenzando exportación",
"Decrypting credentials" : "Decriptando credenciales",
"Done" : "Terminado",
- "File read successfully." : "El archivo se leyó exitosamente.",
"Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
- "Credential has no label, skipping" : "Las credenciales no tienen etiqueta, omitiendo",
"Adding {{credential}}" : "Agregando {{credential}}",
"Added {{credential}}" : "{{credential}} agregado",
"Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
@@ -50,7 +47,6 @@ OC.L10N.register(
"Export credentials" : "Exportar credenciales",
"Sharing" : "Compartiendo",
"Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
- "Your old password is incorrect!" : "¡Tu contraseña anterior es incorrecta!",
"New password does not match!" : "¡La nueva contraseña no coincide!",
"Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
"Share with users and groups" : "Compartir con otros usuarios y grupos",
@@ -73,6 +69,9 @@ OC.L10N.register(
"Username" : "Usuario",
"Repeat password" : "Repetir contraseña",
"Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
"Field label" : "Etiqueta del campo",
"Field value" : "Valor del campo",
"Choose a file" : "Selecciona un archivo",
@@ -124,7 +123,6 @@ OC.L10N.register(
"Version" : "Versión",
"Donate to support development" : "Donar en apoyo al desarrollo",
"Bookmarklet" : "Marcador a código",
- "Save your passwords with 1 click!" : "¡Guarda tus contraseñas con 1 sólo click!",
"Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
"Delete vault" : "Borrar bóveda",
"Vault password" : "Bóveda de contraseñas",
@@ -142,20 +140,18 @@ OC.L10N.register(
"Save keys" : "Guardar llaves",
"Generate sharing keys" : "Generar llaves de comparitr",
"Generating sharing keys" : "Generando llaves para comparitr",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "La herramienta de contraseñas escaneará tu contraseña, calculará el tiempo promedio para romperla y enlistará aquellas que estén por debajo del umbral",
"Minimum password stength" : "Fortaleza mínima de contraseña",
"Start scan" : "Iniciar escaneo",
"Result" : "Resultado",
"A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
"Score" : "Calificación",
"Action" : "Acción",
- "Search users or groups…" : "Buscar usuarios o grupos...",
+ "Search users…" : "Buscar usuarios...",
"Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
"Cyphering" : "Encriptando",
"Uploading" : "Cargando",
"User" : "Usuario",
"Crypto time" : "Tiempo criptográfico",
- "Total time spent cyphering" : "Tiempo total encriptando",
"Read" : "Leer",
"Write" : "Escribir",
"Files" : "Archivo",
@@ -164,7 +160,6 @@ OC.L10N.register(
"Enable link sharing" : "Habilitar compartir liga",
"Share until date" : "Compartir hasta fecha",
"Expire after views" : "Expirar después de visualizaciones",
- "Click Share first" : "Has click en share antes",
"Show files" : "Mostrar archivos",
"Details" : "Detalles",
"Hide details" : "Ocultar detalles",
@@ -224,7 +219,6 @@ OC.L10N.register(
"Use regex" : "Usar regex",
"You have incoming share requests." : "Recibiste solicitudes para compartir. ",
"If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
- "log out of this vault and log in to the vault you want the shared credential in." : "Sal de esta bóveda y entra a la bóveda en la que quieras compartir las credenciales. ",
"Permissions" : "Permisos",
"Received from" : "Recibido de",
"Date" : "Fecha",
@@ -238,13 +232,12 @@ OC.L10N.register(
"Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
"Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
"Repeat vault password" : "Repita la contraseña de la bóveda",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Tus llaves para compartir tendrán una fuerza de 1024 bits, que podrás cambiar después en las Configuraciones. ",
"Create vault" : "Crear bóveda",
"Go back to vaults" : "Regresar a bóvedas",
"Please input the password for" : "Por favor ingresa la contraseña para",
"Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
"Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
- "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
"Decrypt vault" : "Decriptar bóveda",
"Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
"If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
@@ -258,13 +251,12 @@ OC.L10N.register(
"Request removed" : "Solicitud eliminada",
"Destruction request pending" : "Solicitud de destrucción pendiente",
"Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
- "Logged in to {{vault_name}}" : "Inició sesión en {{vault_name}}",
"Change vault" : "Cambiar bóveda",
"Deleted credentials" : "Credenciales borradas",
- "Logout" : "Salir",
+ "Logout" : "Cerrar sesión",
"Donate" : "Dona",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
- "Click here to request it" : "Has click para solicitarlo",
+ "Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
"Error while saving field" : "Se presentó un error al guardar el campo",
@@ -290,13 +282,15 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
- "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, has click aquí para actualizarlas.",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
- "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Has click aquí para aceptar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
"%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman es un administrador de contraseñas completo.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman es un adminsitrador de contraseñas completo.\nCaracterísticas:\n- Bóvedas\n- La llave de la bóveda nunca se manda al servidor\n- Extensión para el navegador para un acceso sencillo a las contraseñas\n- Aplicacion Android para acceso en el camino\n- Las credenciales se encriptan en el cliente con AES de 256bits\n- Las credenciales se encriptan en el servidor con AES de 256bits\n- Posibilidad de agregar campos personalizados a las credenciales\n- Generador de OTP (Contraseñas de una vez) integrado\n- Analizador de contraseñas\n- Comparte credenciales internamente mediante una liga de manera segura.\n- Importa desde diferentes administradores de contraseñas (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nPara una demostración de esta aplicación visita [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "No fue posible obtener la información de la versión",
"Passman Settings" : "Configuraciones de Passman",
"GitHub version:" : "Versión de GitHub:",
@@ -318,6 +312,8 @@ OC.L10N.register(
"Request ID" : "ID de solicitud",
"Requested by" : "Solciitado por",
"Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
"Connection to server lost" : "Se perdió la conexión al servidor",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Saving..." : "Guardando ...",
diff --git a/l10n/es_MX.json b/l10n/es_MX.json
index 45ec6e13..675e2eec 100644
--- a/l10n/es_MX.json
+++ b/l10n/es_MX.json
@@ -1,6 +1,6 @@
{ "translations": {
"Passwords" : "Contraseñas",
- "Generating sharing keys ( %step / 2)" : "Generando llaves para compartir (paso %s /2)",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
"Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
"Passwords do not match" : "Las contraseñas no coinciden",
"General" : "General",
@@ -14,14 +14,11 @@
"Credential updated" : "Credenciales actualizadas",
"Credential recovered" : "Credenciales recuperadas",
"Credential destroyed" : "Credenciales destruidas",
- "Error downloading file, you probably don't have sufficient permissions" : "Se presentó un error al descargar el archivo, probablemente no tengas suficientes permisos",
"Invalid QR code" : "Código QR inválido",
"Starting export" : "Comenzando exportación",
"Decrypting credentials" : "Decriptando credenciales",
"Done" : "Terminado",
- "File read successfully." : "El archivo se leyó exitosamente.",
"Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
- "Credential has no label, skipping" : "Las credenciales no tienen etiqueta, omitiendo",
"Adding {{credential}}" : "Agregando {{credential}}",
"Added {{credential}}" : "{{credential}} agregado",
"Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
@@ -48,7 +45,6 @@
"Export credentials" : "Exportar credenciales",
"Sharing" : "Compartiendo",
"Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
- "Your old password is incorrect!" : "¡Tu contraseña anterior es incorrecta!",
"New password does not match!" : "¡La nueva contraseña no coincide!",
"Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
"Share with users and groups" : "Compartir con otros usuarios y grupos",
@@ -71,6 +67,9 @@
"Username" : "Usuario",
"Repeat password" : "Repetir contraseña",
"Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
"Field label" : "Etiqueta del campo",
"Field value" : "Valor del campo",
"Choose a file" : "Selecciona un archivo",
@@ -122,7 +121,6 @@
"Version" : "Versión",
"Donate to support development" : "Donar en apoyo al desarrollo",
"Bookmarklet" : "Marcador a código",
- "Save your passwords with 1 click!" : "¡Guarda tus contraseñas con 1 sólo click!",
"Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
"Delete vault" : "Borrar bóveda",
"Vault password" : "Bóveda de contraseñas",
@@ -140,20 +138,18 @@
"Save keys" : "Guardar llaves",
"Generate sharing keys" : "Generar llaves de comparitr",
"Generating sharing keys" : "Generando llaves para comparitr",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "La herramienta de contraseñas escaneará tu contraseña, calculará el tiempo promedio para romperla y enlistará aquellas que estén por debajo del umbral",
"Minimum password stength" : "Fortaleza mínima de contraseña",
"Start scan" : "Iniciar escaneo",
"Result" : "Resultado",
"A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
"Score" : "Calificación",
"Action" : "Acción",
- "Search users or groups…" : "Buscar usuarios o grupos...",
+ "Search users…" : "Buscar usuarios...",
"Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
"Cyphering" : "Encriptando",
"Uploading" : "Cargando",
"User" : "Usuario",
"Crypto time" : "Tiempo criptográfico",
- "Total time spent cyphering" : "Tiempo total encriptando",
"Read" : "Leer",
"Write" : "Escribir",
"Files" : "Archivo",
@@ -162,7 +158,6 @@
"Enable link sharing" : "Habilitar compartir liga",
"Share until date" : "Compartir hasta fecha",
"Expire after views" : "Expirar después de visualizaciones",
- "Click Share first" : "Has click en share antes",
"Show files" : "Mostrar archivos",
"Details" : "Detalles",
"Hide details" : "Ocultar detalles",
@@ -222,7 +217,6 @@
"Use regex" : "Usar regex",
"You have incoming share requests." : "Recibiste solicitudes para compartir. ",
"If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
- "log out of this vault and log in to the vault you want the shared credential in." : "Sal de esta bóveda y entra a la bóveda en la que quieras compartir las credenciales. ",
"Permissions" : "Permisos",
"Received from" : "Recibido de",
"Date" : "Fecha",
@@ -236,13 +230,12 @@
"Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
"Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
"Repeat vault password" : "Repita la contraseña de la bóveda",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Tus llaves para compartir tendrán una fuerza de 1024 bits, que podrás cambiar después en las Configuraciones. ",
"Create vault" : "Crear bóveda",
"Go back to vaults" : "Regresar a bóvedas",
"Please input the password for" : "Por favor ingresa la contraseña para",
"Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
"Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
- "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
"Decrypt vault" : "Decriptar bóveda",
"Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
"If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
@@ -256,13 +249,12 @@
"Request removed" : "Solicitud eliminada",
"Destruction request pending" : "Solicitud de destrucción pendiente",
"Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
- "Logged in to {{vault_name}}" : "Inició sesión en {{vault_name}}",
"Change vault" : "Cambiar bóveda",
"Deleted credentials" : "Credenciales borradas",
- "Logout" : "Salir",
+ "Logout" : "Cerrar sesión",
"Donate" : "Dona",
"Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
- "Click here to request it" : "Has click para solicitarlo",
+ "Click here to request it" : "Haz click para solicitarlo",
"Loading…" : "Cargando...",
"Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
"Error while saving field" : "Se presentó un error al guardar el campo",
@@ -288,13 +280,15 @@
"%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
"You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
"%s has been shared with a link" : "%s ha sido compartido con una liga",
- "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, has click aquí para actualizarlas.",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
"Remind me later" : "Recuérdame más tarde",
"Ignore" : "Ignorar",
- "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Has click aquí para aceptar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
"%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman es un administrador de contraseñas completo.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman es un adminsitrador de contraseñas completo.\nCaracterísticas:\n- Bóvedas\n- La llave de la bóveda nunca se manda al servidor\n- Extensión para el navegador para un acceso sencillo a las contraseñas\n- Aplicacion Android para acceso en el camino\n- Las credenciales se encriptan en el cliente con AES de 256bits\n- Las credenciales se encriptan en el servidor con AES de 256bits\n- Posibilidad de agregar campos personalizados a las credenciales\n- Generador de OTP (Contraseñas de una vez) integrado\n- Analizador de contraseñas\n- Comparte credenciales internamente mediante una liga de manera segura.\n- Importa desde diferentes administradores de contraseñas (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nPara una demostración de esta aplicación visita [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "No fue posible obtener la información de la versión",
"Passman Settings" : "Configuraciones de Passman",
"GitHub version:" : "Versión de GitHub:",
@@ -316,6 +310,8 @@
"Request ID" : "ID de solicitud",
"Requested by" : "Solciitado por",
"Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
"Connection to server lost" : "Se perdió la conexión al servidor",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Saving..." : "Guardando ...",
diff --git a/l10n/es_NI.js b/l10n/es_NI.js
new file mode 100644
index 00000000..4b84bb5a
--- /dev/null
+++ b/l10n/es_NI.js
@@ -0,0 +1,320 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_NI.json b/l10n/es_NI.json
new file mode 100644
index 00000000..fbb55de7
--- /dev/null
+++ b/l10n/es_NI.json
@@ -0,0 +1,318 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/es_PA.js b/l10n/es_PA.js
new file mode 100644
index 00000000..4b84bb5a
--- /dev/null
+++ b/l10n/es_PA.js
@@ -0,0 +1,320 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_PA.json b/l10n/es_PA.json
new file mode 100644
index 00000000..fbb55de7
--- /dev/null
+++ b/l10n/es_PA.json
@@ -0,0 +1,318 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/es_PE.js b/l10n/es_PE.js
new file mode 100644
index 00000000..4b84bb5a
--- /dev/null
+++ b/l10n/es_PE.js
@@ -0,0 +1,320 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_PE.json b/l10n/es_PE.json
new file mode 100644
index 00000000..fbb55de7
--- /dev/null
+++ b/l10n/es_PE.json
@@ -0,0 +1,318 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/es_PR.js b/l10n/es_PR.js
new file mode 100644
index 00000000..4b84bb5a
--- /dev/null
+++ b/l10n/es_PR.js
@@ -0,0 +1,320 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_PR.json b/l10n/es_PR.json
new file mode 100644
index 00000000..fbb55de7
--- /dev/null
+++ b/l10n/es_PR.json
@@ -0,0 +1,318 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/es_PY.js b/l10n/es_PY.js
new file mode 100644
index 00000000..4b84bb5a
--- /dev/null
+++ b/l10n/es_PY.js
@@ -0,0 +1,320 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_PY.json b/l10n/es_PY.json
new file mode 100644
index 00000000..fbb55de7
--- /dev/null
+++ b/l10n/es_PY.json
@@ -0,0 +1,318 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/es_SV.js b/l10n/es_SV.js
new file mode 100644
index 00000000..6a6032ba
--- /dev/null
+++ b/l10n/es_SV.js
@@ -0,0 +1,321 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Cerrar sesión",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_SV.json b/l10n/es_SV.json
new file mode 100644
index 00000000..5c2387db
--- /dev/null
+++ b/l10n/es_SV.json
@@ -0,0 +1,319 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Cerrar sesión de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Cerrar sesión",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Loading&hellip;" : "Cargando&hellip;",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/es_UY.js b/l10n/es_UY.js
new file mode 100644
index 00000000..4b84bb5a
--- /dev/null
+++ b/l10n/es_UY.js
@@ -0,0 +1,320 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/es_UY.json b/l10n/es_UY.json
new file mode 100644
index 00000000..fbb55de7
--- /dev/null
+++ b/l10n/es_UY.json
@@ -0,0 +1,318 @@
+{ "translations": {
+ "Passwords" : "Contraseñas",
+ "Generating sharing keys ( %s / 2)" : "Generando llaves para compartir (%s / 2)",
+ "Incorrect vault password!" : "¡Bóveda de contraseñas incorrecta!",
+ "Passwords do not match" : "Las contraseñas no coinciden",
+ "General" : "General",
+ "Custom Fields" : "Campos personalizados",
+ "Please fill in a label." : "Por favor llena la etiqueta.",
+ "Please fill in a value." : "Por favor llena el valor.",
+ "Error loading file" : "Se presentó un error al cargar el archivo",
+ "An error occurred during decryption" : "Se presentó un error durante la decripción",
+ "Credential created!" : "¡Credenciales creadas!",
+ "Credential deleted" : "Credenciales borradas",
+ "Credential updated" : "Credenciales actualizadas",
+ "Credential recovered" : "Credenciales recuperadas",
+ "Credential destroyed" : "Credenciales destruidas",
+ "Invalid QR code" : "Código QR inválido",
+ "Starting export" : "Comenzando exportación",
+ "Decrypting credentials" : "Decriptando credenciales",
+ "Done" : "Terminado",
+ "Proceed with the following steps to import your file" : "Sigue los siguientes pasos para importar tu archivo",
+ "Adding {{credential}}" : "Agregando {{credential}}",
+ "Added {{credential}}" : "{{credential}} agregado",
+ "Skipping credential, missing label on line {{line}}" : "Omitiendo credenciales, etiqueta faltante en la línea {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "{{num}} credenciales interpretadas, comenzando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comenzar importación",
+ "Select CSV file" : "Selecciona el archivo CSV",
+ "Parsed {{rows}} lines from CSV file" : "{{num}} líneas interpretadas del archivo CSV",
+ "Skip first row" : "Omitir primer renglón",
+ "You need to assign the label field before you can start the import." : "Necesitas asignar el campo etiqueta antes de que puedas comenzar la importación.",
+ "The first 5 lines of the CSV are shown." : "Se muestran las primeras 5 líneas del CSV.",
+ "Assign the proper fields to each column." : "Asigna el campo correspondiente a cada columna. ",
+ "Example of imported credential" : "Ejemplo de unas credenciales importadas",
+ "Missing an importer? Try it with the generic CSV importer." : "¿Requieres de una herramienta para importar? Prueba con la herramienta genérica para importar CSV.",
+ "Go back to importers." : "Regresar a importadores.",
+ "Revision deleted" : "Revisión borrada",
+ "Revision restored" : "Revisión restaurada",
+ "Save in Passman" : "Guardar en Passman",
+ "Settings saved" : "Configuraciones guardadas",
+ "General settings" : "Configuraciones generales",
+ "Password audit" : "Auditoria de contraseñas",
+ "Password settings" : "Configuraciones de contraseña",
+ "Import credentials" : "Importar credenciales",
+ "Export credentials" : "Exportar credenciales",
+ "Sharing" : "Compartiendo",
+ "Are you sure you want to leave? This will destroy all your credentials" : "¿Estás seguro que deseas salir? Esto destruirá todas tus credenciales",
+ "New password does not match!" : "¡La nueva contraseña no coincide!",
+ "Please log in with your new vault password" : "Por favor inicia sesión con tu nueva contraseña de bóveda",
+ "Share with users and groups" : "Compartir con otros usuarios y grupos",
+ "Share link" : "Compartir liga",
+ "Are you sure you want to leave? This will corrupt this credential" : "¿Estás seguro que deseas salir? Esto va a corromper estas credenciales",
+ "Credential unshared" : "Credenciales no compartidas",
+ "Credential shared" : "Credenciales compartidas",
+ "Saved!" : "¡Guardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Débil",
+ "Good" : "Buena",
+ "Strong" : "Fuerte",
+ "Toggle visibility" : "Alternar visibilidad",
+ "Copy to clipboard" : "Copiar al portapapeles",
+ "Copied to clipboard!" : "¡Copiado al portapapeles!",
+ "Generate password" : "Generar contraseña",
+ "Copy password to clipboard" : "Copiar contraseña al portapapeles",
+ "Password copied to clipboard!" : "¡Contraseña copiada al portapapeles!",
+ "Complete" : "Terminar",
+ "Username" : "Usuario",
+ "Repeat password" : "Repetir contraseña",
+ "Add tag" : "Agregar etiqueta",
+ "Pick an icon" : "Elije un ícono",
+ "Use this icon" : "Usar este ícono",
+ "Selected icon" : "Ícono seleccionado",
+ "Field label" : "Etiqueta del campo",
+ "Field value" : "Valor del campo",
+ "Choose a file" : "Selecciona un archivo",
+ "Text" : "Texto",
+ "File" : "Archivo",
+ "Add" : "Agregar",
+ "Value" : "Valor",
+ "Type" : "Tipo",
+ "Actions" : "Acciones",
+ "Empty" : "Vacío",
+ "Filename" : "Nombre del archivo",
+ "Upload date" : "Fecha de carga",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Carga o ingresa tu secreto de OTP",
+ "Current OTP settings" : "Configuraciones actuales de OTP",
+ "Issuer" : "Quien levanta",
+ "Secret" : "Secreto",
+ "Expiration date" : "Fecha de expiración",
+ "No expiration date set" : "No se ha establecido la fecha de expiración",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Deshabilitado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Año(s)",
+ "Password generation settings" : "Configuraciones de generación de contraseñas",
+ "Password length" : "Longitud de contraseña",
+ "Minimum amount of digits" : "Número mínimo de dígitos",
+ "Use uppercase letters" : "Usar mayúsculas",
+ "Use lowercase letters" : "Usar minúsculas",
+ "Use numbers" : "Usar números",
+ "Use special characters" : "Usar caracteres especiales",
+ "Avoid ambiguous characters" : "Evitar caracteres ambíguos",
+ "Require every character type" : "Requerir todos los tipos de caracteres",
+ "Export type" : "Tipo de exportación",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Ingresa la contraseña de la bóveda para confirmar la exportación. ",
+ "Rename vault" : "Renombrar bóveda",
+ "New vault name" : "Nuevo nombre de la bóveda",
+ "Change" : "Cambiar",
+ "Change vault key" : "Cambiar la llave de la bóveda",
+ "Old vault password" : "Anterior contraseña de la bóveda",
+ "New vault password" : "Nueva contraseña de la bóveda",
+ "Repeat new vault password" : "Repite la nueva contraseña de la bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Por favor aguarda mientras se actualiza tu bóveda, no salgas de esta página. ",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Acerca de Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Donar en apoyo al desarrollo",
+ "Bookmarklet" : "Marcador a código",
+ "Drag below button to your bookmark toolbar." : "Arrastra el botón de abajo hasta tu barra de herramientas de marcadores. ",
+ "Delete vault" : "Borrar bóveda",
+ "Vault password" : "Bóveda de contraseñas",
+ "This process is irreversible" : "Este proceso es irreversible",
+ "Delete my precious passwords" : "Borrar mis preciadas contraseñas",
+ "Deleting {{password}}…" : "Borrando {{password}}…",
+ "Yes, delete my precious passwords" : "Sí, borrar mis preciadas contraseñas",
+ "Import type" : "Tipo de importación",
+ "Import" : "Importar",
+ "Read progress" : "Progreso de la lectura",
+ "Upload progress" : "Progreso de la carga",
+ "Private Key" : "Llave privada",
+ "Public key" : "Llave pública",
+ "Key size" : "Tamaño de la llave",
+ "Save keys" : "Guardar llaves",
+ "Generate sharing keys" : "Generar llaves de comparitr",
+ "Generating sharing keys" : "Generando llaves para comparitr",
+ "Minimum password stength" : "Fortaleza mínima de contraseña",
+ "Start scan" : "Iniciar escaneo",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Se encontraron un total de {{scan_result}} credenciales débiles.",
+ "Score" : "Calificación",
+ "Action" : "Acción",
+ "Search users…" : "Buscar usuarios...",
+ "Missing users? Only users that have vaults are shown." : "¿Faltan usuarios? Sólo se muestran los usuarios que tienen bóvedas.",
+ "Cyphering" : "Encriptando",
+ "Uploading" : "Cargando",
+ "User" : "Usuario",
+ "Crypto time" : "Tiempo criptográfico",
+ "Read" : "Leer",
+ "Write" : "Escribir",
+ "Files" : "Archivo",
+ "Revisions" : "Revisiones",
+ "Pending" : "Pendiente",
+ "Enable link sharing" : "Habilitar compartir liga",
+ "Share until date" : "Compartir hasta fecha",
+ "Expire after views" : "Expirar después de visualizaciones",
+ "Show files" : "Mostrar archivos",
+ "Details" : "Detalles",
+ "Hide details" : "Ocultar detalles",
+ "Password score" : "Calificación de contraseña",
+ "Cracking times" : "Tiempos para romper la contraseña",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en línea regulado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en línea sin regular",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque sin conexión, funciones de resumen lentas, muchos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque sin conexión, funciones de resumen rápidas, muchos núcleos",
+ "Match sequence" : "Coincidencia en la secuencia ",
+ "See match sequence" : "Ver secuencia con coincidencia",
+ "Pattern" : "Patrón",
+ "Matched word" : "Palabra con coincidencia",
+ "Dictionary name" : "Nombre del diccionario",
+ "Rank" : "Rango",
+ "Reversed" : "Revertido",
+ "Guesses" : "Intentos",
+ "Base guesses" : "Intentos base",
+ "Uppercase variations" : "Variaciones en mayúsculas",
+ "l33t-variations" : "Variaciones en l33t",
+ "Showing revisions of" : "Mostrando revisiones de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "No se encontraron revisiones. ",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar revisión",
+ "Delete revision" : "Borrar revisión",
+ "Edit credential" : "Editar credenciales",
+ "Create new credential" : "Crear credenciales nuevas",
+ "Save" : "Guardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Configuraciones ",
+ "Share credential {{credential}}" : "Compartir credenciales {{credential}}",
+ "Unshare" : "Dejar de compartir",
+ "Showing deleted since" : "Mostrando borrados desde",
+ "Beginning" : "Comenzando",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Mostrando {{number_filtered}} de {{credential_number}} credenciales",
+ "Search for credential…" : "Buscando las credenciales...",
+ "Account" : "Cuenta",
+ "Password" : "Contraseña",
+ "OTP" : "OTP",
+ "E-mail" : "Correo electrónico",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Expiry time" : "Tiemp de expiración",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Borrar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruir",
+ "Use regex" : "Usar regex",
+ "You have incoming share requests." : "Recibiste solicitudes para compartir. ",
+ "If you want to put the credential in another vault," : "Si quieres colocar las credenciales en otra bóveda, ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Fecha",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Cuentas con {{session_time}} antes de que tu sesión se cierre.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "¡Tu bóveda se encuentra bloqueada por {{time}} debido a los {{tries}} intentos fallidos!",
+ "Last accessed" : "Último acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "No se encontraron bóvedas. ¿Por qué no crear una?",
+ "Password strength must be at least: {{strength}}" : "La fortaleza de la contraseña debe ser por lo menos: {{strength}}",
+ "Please give your new vault a name." : "Por favor ingresa el nombre de tu bóveda nueva. ",
+ "Repeat vault password" : "Repita la contraseña de la bóveda",
+ "Create vault" : "Crear bóveda",
+ "Go back to vaults" : "Regresar a bóvedas",
+ "Please input the password for" : "Por favor ingresa la contraseña para",
+ "Set this vault as the default." : "Establecer esta bóveda como la predeterminada.",
+ "Log into this vault automatically." : "Inicia sesión en esta bóveda automáticamente.",
+ "Log out of this vault automatically after: " : "Salir de esta bóveda automáticamente después de:",
+ "Decrypt vault" : "Decriptar bóveda",
+ "Seems you lost the vault password and you're unable to log in." : "Parece que perdiste la contraseña de la bóveda y no puedes iniciar sesión. ",
+ "If you want this vault to be removed you can request that here." : "Si deseas que esta bóveda sea eliminada puedes solicitarlo aquí.",
+ "An admin then accepts or declines the request" : "Un administrador entonces acepta o declina la solicitud",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Después de que un administrador destruya la bóveda, todas las credenciales se perderán",
+ "Reason for requesting deletion (optional):" : "Razón por la que se solicita el borrado (opcional):",
+ "Request vault destruction" : "Solicitar la destrucción de la bóveda",
+ "Yes, request an admin to destroy this vault" : "Sí, solicitar a un administrador la destrucción de esta bóveda",
+ "Cancel destruction request" : "Cancelar la solicitud de destrucción",
+ "Vault destruction requested" : "Destrucción de la bóveda solicitada",
+ "Request removed" : "Solicitud eliminada",
+ "Destruction request pending" : "Solicitud de destrucción pendiente",
+ "Warning! Adding credentials over HTTP is insecure!" : "¡Advertencia! ¡Agregar credenciales sobre HTTP es inseguro!",
+ "Change vault" : "Cambiar bóveda",
+ "Deleted credentials" : "Credenciales borradas",
+ "Logout" : "Salir",
+ "Donate" : "Dona",
+ "Someone has shared a credential with you." : "Alguien ha compartido credenciales contigo. ",
+ "Click here to request it" : "Haz click para solicitarlo",
+ "Loading…" : "Cargando...",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh... no se encontraron las credenciales. Tal vez expiraron",
+ "Error while saving field" : "Se presentó un error al guardar el campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman ha sido creado, modificado o borrado",
+ "A Passman item has expired" : "El elemento de Passman ha expirado",
+ "A Passman item has been shared" : "Un elemento de Passman ha sido compartido",
+ "A Passman item has been renamed" : "Un elemento de Passman ha sido renombrado",
+ "%1$s has been created by %2$s" : "%1$s ha sido creado por %2$s",
+ "You created %1$s" : "Creaste %1$s",
+ "%1$s has been updated by %2$s" : "%1$s ha sido actualizado por %2$s",
+ "You updated %1$s" : "Actualisaste %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s ha revisado %1$s a la revisón de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Revirtiste %1$s de vuelta a la revisión de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s ha renombrado %1$s como %2$s",
+ "You renamed %1$s to %2$s" : "Renombraste %1$s como %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s ha sido borrado por %2$s",
+ "You deleted %1$s" : "Borraste %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s ha sido recuperado por %2$s",
+ "You recovered %1$s" : "Recuperaste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s ha sido borrado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Has borrado %1$s permanentemente",
+ "The password of %1$s has expired, renew it now." : "La contraseña de %1$s ha expirado, renuévala ahora.",
+ "%1$s has been shared with %2$s" : "%1$s ha sido compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Recibiste una solicitud para compartir de %1$s desde %2$s",
+ "%s has been shared with a link" : "%s ha sido compartido con una liga",
+ "Your credential \"%s\" expired, click here to update the credential." : "Tus credenciales \"%s\" han expirado, haz click aquí para actualizarlas.",
+ "Remind me later" : "Recuérdame más tarde",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s ha compartido \"%s\" contigo. Haz click aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s ha declinado tu solicitud para compartir \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s ha aceptado tu solicitud para compartir \"%s\".",
+ "Passman" : "Passman",
+ "Unable to get version info" : "No fue posible obtener la información de la versión",
+ "Passman Settings" : "Configuraciones de Passman",
+ "GitHub version:" : "Versión de GitHub:",
+ "A newer version of Passman is available" : "Hay una nueva versión de Passman disponible",
+ "Password sharing" : "Compartir contraseña",
+ "Credential mover" : "Mover credenciales",
+ "Vault destruction requests" : "Solicitudes para destruir bóvedas",
+ "Check for new versions" : "Verificar si hay nuevas versiones",
+ "Enable HTTPS check" : "Habilitar verificación HTTPS",
+ "Disable context menu" : "Deshabilitar menú contextual",
+ "Disable JavaScript debugger" : "Deshabilitar el depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir a los usuarios en este servidor compartir contraseñas con una liga",
+ "Allow users on this server to share passwords with other users" : "Permitir a los usuarios en este servidor compartir contraseñas con otros usuarios",
+ "Move credentials from one account to another" : "Mover credenciales de una cuenta a otra",
+ "Source account" : "Cuenta fuente",
+ "Destination account" : "Cuenta destino",
+ "Credentials moved!" : "¡Se movieron las credenciales!",
+ "Requests to destroy vault" : "Solicitudes para destruir bóvedas",
+ "Request ID" : "ID de solicitud",
+ "Requested by" : "Solciitado por",
+ "Reason" : "Razón",
+ "Click here to request\n\t\t\t\t\tit" : "Haz click aquí para solicitarlo ",
+ "Connection to server lost" : "Se perdió la conexión al servidor",
+ "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
+ "Saving..." : "Guardando ...",
+ "Dismiss" : "Descartar",
+ "seconds ago" : "hace segundos"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/fi.js b/l10n/fi.js
index c09c8943..b5ca9182 100644
--- a/l10n/fi.js
+++ b/l10n/fi.js
@@ -2,17 +2,21 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Salasanat",
+ "Generating sharing keys ( %s / 2)" : "Luodaan jakamisavaimia ( %s / 2)",
"Incorrect vault password!" : "Virheellinen holvin salasana!",
"Passwords do not match" : "Salasanat eivät täsmää",
"General" : "Yleiset",
"Custom Fields" : "Omavalintaiset kentät",
+ "Please fill in a value." : "Anna arvo.",
"Error loading file" : "Virhe tiedostoa ladatessa",
+ "An error occurred during decryption" : "Salausta purkaessa tapahtui virhe",
"Credential created!" : "Tilitieto luotu!",
"Credential deleted" : "Tilitieto poistettu",
"Credential updated" : "Tilitieto päivitetty",
"Credential recovered" : "Tilitieto palautettu",
"Credential destroyed" : "Tilitieto tuhottu",
"Invalid QR code" : "Virheellinen QR-koodi",
+ "Starting export" : "Aloitetaan vienti",
"Done" : "Valmis",
"Adding {{credential}}" : "Lisätään {{credential}}",
"Added {{credential}}" : "Lisätty {{credential}}",
@@ -21,12 +25,16 @@ OC.L10N.register(
"Select CSV file" : "Valitse CSV-tiedosto",
"Skip first row" : "Ohita ensimmäinen rivi",
"You need to assign the label field before you can start the import." : "Sinun tulee määritellä nimikekenttä ennen tuonnin aloittamista.",
+ "The first 5 lines of the CSV are shown." : "CSV:n ensimmäiset viisi riviä näytetään.",
"Assign the proper fields to each column." : "Määrittele sopivat kentät kullekin sarakkeelle.",
+ "Save in Passman" : "Tallenna Passmaniin",
"Settings saved" : "Asetukset tallennettu",
"General settings" : "Yleiset asetukset",
"Password settings" : "Salasana-asetukset",
+ "Import credentials" : "Tuo tilitetioja",
+ "Export credentials" : "Vie tilitietoja",
"Sharing" : "Jakaminen",
- "Your old password is incorrect!" : "Vanha salasana on väärä!",
+ "New password does not match!" : "Uusi salasana ei täsmää!",
"Share with users and groups" : "Jaa käyttäjien ja ryhmien kanssa",
"Share link" : "Jaa linkki",
"Credential shared" : "Tilitieto jaettu",
@@ -43,6 +51,10 @@ OC.L10N.register(
"Password copied to clipboard!" : "Salasana kopioitu leikepöydälle!",
"Username" : "Käyttäjätunnus",
"Repeat password" : "Toista salasana",
+ "Add tag" : "Lisää tunniste",
+ "Pick an icon" : "Valitse kuvake",
+ "Use this icon" : "Käytä tätä kuvaketta",
+ "Selected icon" : "Valittu kuvake",
"Field label" : "Kentän nimike",
"Field value" : "Kentän arvo",
"Choose a file" : "Valitse tiedosto",
@@ -54,11 +66,15 @@ OC.L10N.register(
"Actions" : "Toiminnot",
"Empty" : "Tyhjä",
"Filename" : "Tiedostonimi",
+ "Upload date" : "Lähetyspäivä",
"Size" : "Koko",
"Current OTP settings" : "Nykyiset OTP-asetukset",
"Issuer" : "Myöntäjä",
+ "Expiration date" : "Vanhenemispäivä",
+ "No expiration date set" : "Vanhenemispäivää ei ole asetettu",
"Renew interval" : "Uusimisväli",
"Disabled" : "Poistettu käytöstä",
+ "Day(s)" : "Päiv(i)ä",
"Week(s)" : "Viikko(a)",
"Month(s)" : "Kuukausi(a)",
"Year(s)" : "Vuosi(a)",
@@ -76,15 +92,17 @@ OC.L10N.register(
"Change vault key" : "Muuta holvin avain",
"Old vault password" : "Holvin vanha salasana",
"New vault password" : "Holvin uusi salasana",
+ "Repeat new vault password" : "Toista holvin uusi salasana",
+ "Please wait your vault is being updated, do not leave this page." : "Odota, holviasi päivitetään. Älä poistu tältä sivulta.",
"Processing" : "Käsitellään",
"About Passman" : "Tietoja Passmanista",
"Version" : "Versio",
"Donate to support development" : "Lahjoita tukeaksesi kehitystä",
- "Save your passwords with 1 click!" : "Tallenna salasanasi yhdellä kilkkauksella!",
"Drag below button to your bookmark toolbar." : "Raahaa alla oleva painike kirjanmerkkipalkkiisi.",
"Delete vault" : "Poista holvi",
"Vault password" : "Holvin salasana",
"Delete my precious passwords" : "Poista arvokkaat salasanani",
+ "Deleting {{password}}…" : "Poistetaan {{password}}…",
"Yes, delete my precious passwords" : "Kyllä, poista arvokkaat salasanani",
"Import" : "Tuo",
"Private Key" : "Yksityinen avain",
@@ -97,6 +115,7 @@ OC.L10N.register(
"Start scan" : "Aloita skannaus",
"Result" : "Tulos",
"Action" : "Toiminto",
+ "Search users…" : "Haetaan käyttäjiä...",
"Missing users? Only users that have vaults are shown." : "Etkö löydä käyttäjää? Vain holvin omaavat käyttäjät näytetään.",
"Uploading" : "Lähetetään",
"User" : "Käyttäjä",
@@ -107,6 +126,7 @@ OC.L10N.register(
"Show files" : "Näytä tiedostot",
"Details" : "Yksityiskohdat",
"Hide details" : "Piilota yksityiskohdat",
+ "Password score" : "Salasanan pisteytys",
"100 / hour" : "100 / tunti",
"10 / second" : "10 / sekunti",
"Edit credential" : "Muokkaa tilitietoa",
@@ -116,6 +136,8 @@ OC.L10N.register(
"Settings" : "Asetukset",
"Share credential {{credential}}" : "Jaa tilitieto {{credential}}",
"Unshare" : "Lopeta jakaminen",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Näytetään {{number_filtered}}/{{credential_number}} tilitietoa",
+ "Search for credential…" : "Etsitään tilitietoa…",
"Account" : "Tili",
"Password" : "Salasana",
"OTP" : "OTP",
@@ -141,18 +163,22 @@ OC.L10N.register(
"Repeat vault password" : "Toista holvin salasana",
"Create vault" : "Luo holvi",
"Go back to vaults" : "Palaa takaisin holveihin",
+ "Set this vault as the default." : "Aseta tämä holvi oletukseksi.",
+ "Log into this vault automatically." : "Kirjaudu tähän holviin automaattisesti.",
"Request vault destruction" : "Pyydä holvin tuhoamista",
"Yes, request an admin to destroy this vault" : "Kyllä, pyydä ylläpitäjää tuhoamaan tämä holvi",
"Cancel destruction request" : "Peru tuhoamispyyntö",
"Vault destruction requested" : "Holvin tuhoamista pyydetty",
"Request removed" : "Pyyntö poistettu",
"Destruction request pending" : "Tuhoamispyyntö odottaa",
- "Logged in to {{vault_name}}" : "Kirjauduttu holviin {{vault_name}}",
+ "Warning! Adding credentials over HTTP is insecure!" : "Varoitus! Tilitietojen lisääminen HTTP-yhteyden välityksellä ei ole turvallista!",
"Change vault" : "Vaihda holvia",
"Deleted credentials" : "Poistettu tilitiedot",
"Logout" : "Kirjaudu ulos",
"Donate" : "Lahjoita",
"Someone has shared a credential with you." : "Joku on jakanut tilitiedot kanssasi.",
+ "Loading…" : "Ladataan…",
+ "Awwhh… credential not found. Maybe it expired" : "Voi ei… tilitietoa ei löytynyt. Kenties se vanheni",
"Error while saving field" : "Virhe kenttää tallentaessa",
"A Passman item has been created, modified or deleted" : "Passman-tietu on luotu, sitä on muokattu tai se on poistettu",
"A Passman item has expired" : "Passman-tietue on vanhentunut",
@@ -163,10 +189,17 @@ OC.L10N.register(
"You deleted %1$s" : "Poistit %1$s",
"Remind me later" : "Muistuta myöhemmin",
"Ignore" : "Ohita",
+ "Passman" : "Passman",
"Unable to get version info" : "Versiotiedon haku epäonnistui",
"Passman Settings" : "Passman-asetukset",
+ "GitHub version:" : "GitHub-versio:",
+ "A newer version of Passman is available" : "Uudempi versio Passmanista on saatavilla",
+ "Password sharing" : "Salasanan jakaminen",
"Check for new versions" : "Tarkista uudet versiot",
"Enable HTTPS check" : "Käytä HTTPS-tarkistusta",
+ "Source account" : "Lähdetili",
+ "Destination account" : "Kohdetili",
+ "Credentials moved!" : "Tilitiedot siirretty!",
"Reason" : "Syy",
"Connection to server lost" : "Yhteys palvelimelle menetetty",
"Problem loading page, reloading in 5 seconds" : "Ongelma sivun lataamisessa, päivitetään 5 sekunnin kuluttua",
diff --git a/l10n/fi.json b/l10n/fi.json
index b02ce4e8..341fa564 100644
--- a/l10n/fi.json
+++ b/l10n/fi.json
@@ -1,16 +1,20 @@
{ "translations": {
"Passwords" : "Salasanat",
+ "Generating sharing keys ( %s / 2)" : "Luodaan jakamisavaimia ( %s / 2)",
"Incorrect vault password!" : "Virheellinen holvin salasana!",
"Passwords do not match" : "Salasanat eivät täsmää",
"General" : "Yleiset",
"Custom Fields" : "Omavalintaiset kentät",
+ "Please fill in a value." : "Anna arvo.",
"Error loading file" : "Virhe tiedostoa ladatessa",
+ "An error occurred during decryption" : "Salausta purkaessa tapahtui virhe",
"Credential created!" : "Tilitieto luotu!",
"Credential deleted" : "Tilitieto poistettu",
"Credential updated" : "Tilitieto päivitetty",
"Credential recovered" : "Tilitieto palautettu",
"Credential destroyed" : "Tilitieto tuhottu",
"Invalid QR code" : "Virheellinen QR-koodi",
+ "Starting export" : "Aloitetaan vienti",
"Done" : "Valmis",
"Adding {{credential}}" : "Lisätään {{credential}}",
"Added {{credential}}" : "Lisätty {{credential}}",
@@ -19,12 +23,16 @@
"Select CSV file" : "Valitse CSV-tiedosto",
"Skip first row" : "Ohita ensimmäinen rivi",
"You need to assign the label field before you can start the import." : "Sinun tulee määritellä nimikekenttä ennen tuonnin aloittamista.",
+ "The first 5 lines of the CSV are shown." : "CSV:n ensimmäiset viisi riviä näytetään.",
"Assign the proper fields to each column." : "Määrittele sopivat kentät kullekin sarakkeelle.",
+ "Save in Passman" : "Tallenna Passmaniin",
"Settings saved" : "Asetukset tallennettu",
"General settings" : "Yleiset asetukset",
"Password settings" : "Salasana-asetukset",
+ "Import credentials" : "Tuo tilitetioja",
+ "Export credentials" : "Vie tilitietoja",
"Sharing" : "Jakaminen",
- "Your old password is incorrect!" : "Vanha salasana on väärä!",
+ "New password does not match!" : "Uusi salasana ei täsmää!",
"Share with users and groups" : "Jaa käyttäjien ja ryhmien kanssa",
"Share link" : "Jaa linkki",
"Credential shared" : "Tilitieto jaettu",
@@ -41,6 +49,10 @@
"Password copied to clipboard!" : "Salasana kopioitu leikepöydälle!",
"Username" : "Käyttäjätunnus",
"Repeat password" : "Toista salasana",
+ "Add tag" : "Lisää tunniste",
+ "Pick an icon" : "Valitse kuvake",
+ "Use this icon" : "Käytä tätä kuvaketta",
+ "Selected icon" : "Valittu kuvake",
"Field label" : "Kentän nimike",
"Field value" : "Kentän arvo",
"Choose a file" : "Valitse tiedosto",
@@ -52,11 +64,15 @@
"Actions" : "Toiminnot",
"Empty" : "Tyhjä",
"Filename" : "Tiedostonimi",
+ "Upload date" : "Lähetyspäivä",
"Size" : "Koko",
"Current OTP settings" : "Nykyiset OTP-asetukset",
"Issuer" : "Myöntäjä",
+ "Expiration date" : "Vanhenemispäivä",
+ "No expiration date set" : "Vanhenemispäivää ei ole asetettu",
"Renew interval" : "Uusimisväli",
"Disabled" : "Poistettu käytöstä",
+ "Day(s)" : "Päiv(i)ä",
"Week(s)" : "Viikko(a)",
"Month(s)" : "Kuukausi(a)",
"Year(s)" : "Vuosi(a)",
@@ -74,15 +90,17 @@
"Change vault key" : "Muuta holvin avain",
"Old vault password" : "Holvin vanha salasana",
"New vault password" : "Holvin uusi salasana",
+ "Repeat new vault password" : "Toista holvin uusi salasana",
+ "Please wait your vault is being updated, do not leave this page." : "Odota, holviasi päivitetään. Älä poistu tältä sivulta.",
"Processing" : "Käsitellään",
"About Passman" : "Tietoja Passmanista",
"Version" : "Versio",
"Donate to support development" : "Lahjoita tukeaksesi kehitystä",
- "Save your passwords with 1 click!" : "Tallenna salasanasi yhdellä kilkkauksella!",
"Drag below button to your bookmark toolbar." : "Raahaa alla oleva painike kirjanmerkkipalkkiisi.",
"Delete vault" : "Poista holvi",
"Vault password" : "Holvin salasana",
"Delete my precious passwords" : "Poista arvokkaat salasanani",
+ "Deleting {{password}}…" : "Poistetaan {{password}}…",
"Yes, delete my precious passwords" : "Kyllä, poista arvokkaat salasanani",
"Import" : "Tuo",
"Private Key" : "Yksityinen avain",
@@ -95,6 +113,7 @@
"Start scan" : "Aloita skannaus",
"Result" : "Tulos",
"Action" : "Toiminto",
+ "Search users…" : "Haetaan käyttäjiä...",
"Missing users? Only users that have vaults are shown." : "Etkö löydä käyttäjää? Vain holvin omaavat käyttäjät näytetään.",
"Uploading" : "Lähetetään",
"User" : "Käyttäjä",
@@ -105,6 +124,7 @@
"Show files" : "Näytä tiedostot",
"Details" : "Yksityiskohdat",
"Hide details" : "Piilota yksityiskohdat",
+ "Password score" : "Salasanan pisteytys",
"100 / hour" : "100 / tunti",
"10 / second" : "10 / sekunti",
"Edit credential" : "Muokkaa tilitietoa",
@@ -114,6 +134,8 @@
"Settings" : "Asetukset",
"Share credential {{credential}}" : "Jaa tilitieto {{credential}}",
"Unshare" : "Lopeta jakaminen",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Näytetään {{number_filtered}}/{{credential_number}} tilitietoa",
+ "Search for credential…" : "Etsitään tilitietoa…",
"Account" : "Tili",
"Password" : "Salasana",
"OTP" : "OTP",
@@ -139,18 +161,22 @@
"Repeat vault password" : "Toista holvin salasana",
"Create vault" : "Luo holvi",
"Go back to vaults" : "Palaa takaisin holveihin",
+ "Set this vault as the default." : "Aseta tämä holvi oletukseksi.",
+ "Log into this vault automatically." : "Kirjaudu tähän holviin automaattisesti.",
"Request vault destruction" : "Pyydä holvin tuhoamista",
"Yes, request an admin to destroy this vault" : "Kyllä, pyydä ylläpitäjää tuhoamaan tämä holvi",
"Cancel destruction request" : "Peru tuhoamispyyntö",
"Vault destruction requested" : "Holvin tuhoamista pyydetty",
"Request removed" : "Pyyntö poistettu",
"Destruction request pending" : "Tuhoamispyyntö odottaa",
- "Logged in to {{vault_name}}" : "Kirjauduttu holviin {{vault_name}}",
+ "Warning! Adding credentials over HTTP is insecure!" : "Varoitus! Tilitietojen lisääminen HTTP-yhteyden välityksellä ei ole turvallista!",
"Change vault" : "Vaihda holvia",
"Deleted credentials" : "Poistettu tilitiedot",
"Logout" : "Kirjaudu ulos",
"Donate" : "Lahjoita",
"Someone has shared a credential with you." : "Joku on jakanut tilitiedot kanssasi.",
+ "Loading…" : "Ladataan…",
+ "Awwhh… credential not found. Maybe it expired" : "Voi ei… tilitietoa ei löytynyt. Kenties se vanheni",
"Error while saving field" : "Virhe kenttää tallentaessa",
"A Passman item has been created, modified or deleted" : "Passman-tietu on luotu, sitä on muokattu tai se on poistettu",
"A Passman item has expired" : "Passman-tietue on vanhentunut",
@@ -161,10 +187,17 @@
"You deleted %1$s" : "Poistit %1$s",
"Remind me later" : "Muistuta myöhemmin",
"Ignore" : "Ohita",
+ "Passman" : "Passman",
"Unable to get version info" : "Versiotiedon haku epäonnistui",
"Passman Settings" : "Passman-asetukset",
+ "GitHub version:" : "GitHub-versio:",
+ "A newer version of Passman is available" : "Uudempi versio Passmanista on saatavilla",
+ "Password sharing" : "Salasanan jakaminen",
"Check for new versions" : "Tarkista uudet versiot",
"Enable HTTPS check" : "Käytä HTTPS-tarkistusta",
+ "Source account" : "Lähdetili",
+ "Destination account" : "Kohdetili",
+ "Credentials moved!" : "Tilitiedot siirretty!",
"Reason" : "Syy",
"Connection to server lost" : "Yhteys palvelimelle menetetty",
"Problem loading page, reloading in 5 seconds" : "Ongelma sivun lataamisessa, päivitetään 5 sekunnin kuluttua",
diff --git a/l10n/fr.js b/l10n/fr.js
index c5d540de..b48e8a69 100644
--- a/l10n/fr.js
+++ b/l10n/fr.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Mots de passe",
- "Generating sharing keys ( %step / 2)" : "Génération des clés de partage ( %step / 2 )",
+ "Generating sharing keys ( %s / 2)" : "Génération des clés de partage ( %s/ 2 )",
"Incorrect vault password!" : "Mot de passe du coffre-fort incorrect",
"Passwords do not match" : "Les mots de passe ne correspondent pas",
"General" : "Général",
@@ -10,20 +10,20 @@ OC.L10N.register(
"Please fill in a label." : "Veuillez remplir l'étiquette.",
"Please fill in a value." : "Veuillez renseigner une valeur.",
"Error loading file" : "Erreur lors du chargement du fichier",
- "An error occurred during decryption" : "Une erreur est survenue lors du décryptage",
+ "An error occurred during decryption" : "Une erreur est survenue lors du déchiffrement",
"Credential created!" : "Information d'identification créée !",
"Credential deleted" : "Information d'identification supprimée",
"Credential updated" : "Information d'identification mise à jour",
"Credential recovered" : "Information d'identification récupérée",
"Credential destroyed" : "Information d'identification détruite",
- "Error downloading file, you probably don't have sufficient permissions" : "Erreur lors du téléchargement du fichier, vous ne devez sans doute pas avoir les autorisations suffisantes",
+ "Error downloading file, you probably have insufficient permissions" : "Erreur lors du téléchargement du fichier, vos autorisations sont probablement insuffisantes",
"Invalid QR code" : "Code QR invalide",
"Starting export" : "Démarrage de l'export",
"Decrypting credentials" : "Déchiffrement des informations d'identification",
"Done" : "Fait",
- "File read successfully." : "Fichier lu avec succès.",
+ "File read." : "Lecture du fichier",
"Proceed with the following steps to import your file" : "Poursuivez les étapes suivantes pour importer votre fichier",
- "Credential has no label, skipping" : "L'information d'identification n'a pas d'étiquette, ignorée",
+ "Skipping unlabeled credential" : "Ignorer les identifiants sans étiquette",
"Adding {{credential}}" : "{{credential}} en cours d'ajout",
"Added {{credential}}" : "{{credential}} ajouté",
"Skipping credential, missing label on line {{line}}" : "Information d'identification ignorée, étiquette manquante à la ligne {{line}}",
@@ -50,7 +50,7 @@ OC.L10N.register(
"Export credentials" : "Exporter les informations d'identification",
"Sharing" : "Partage",
"Are you sure you want to leave? This will destroy all your credentials" : "Êtes-vous sûr de vouloir quitter ? Cela va détruire toutes vos informations d'identification",
- "Your old password is incorrect!" : "Votre ancien mot de passe est incorrect !",
+ "Old password field incorrect!" : "Champ ancien mot de passe incorrect !",
"New password does not match!" : "Le nouveau mot de passe ne correspond pas !",
"Please log in with your new vault password" : "Veuillez vous connecter avec votre nouveau mot de passe du coffre-fort",
"Share with users and groups" : "Partager avec des utilisateurs et des groupes",
@@ -73,6 +73,9 @@ OC.L10N.register(
"Username" : "Nom d'utilisateur",
"Repeat password" : "Répéter le mot de passe",
"Add tag" : "Ajouter une étiquette",
+ "Pick an icon" : "Choisir une icône",
+ "Use this icon" : "Utiliser cette icône",
+ "Selected icon" : "Icône sélectionnée",
"Field label" : "Étiquette du champ",
"Field value" : "Valeur du champ",
"Choose a file" : "Choisir un fichier",
@@ -124,7 +127,7 @@ OC.L10N.register(
"Version" : "Version",
"Donate to support development" : "Donner pour aider le développement",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Sauvegardez vos mots de passe en 1 clic !",
+ "Save your passwords with one click." : "Sauvegardez vos mots de passe en un clic.",
"Drag below button to your bookmark toolbar." : "Glissez le bouton ci-dessous dans la barre d'outils de vos favoris.",
"Delete vault" : "Supprimer le coffre-fort",
"Vault password" : "Mot de passe du coffre-fort",
@@ -142,20 +145,20 @@ OC.L10N.register(
"Save keys" : "Sauvegarder les clés",
"Generate sharing keys" : "Générer des clés de partage",
"Generating sharing keys" : "Génération des clés de partage",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "L'outil de mot de passe va scanner vos mots de passe, calculer le temps moyen pour le déchiffrer et afficher ceux qui sont inférieur au seuil",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "L'outil de mot de passe analyse votre mot de passe, calcule le temps de craquage moyen et répertorie ceux qui se trouvent sous le seuil.",
"Minimum password stength" : "Force minimale du mot de passe",
"Start scan" : "Commencer le scan",
"Result" : "Résultat",
"A total of {{scan_result}} weak credentials were found." : "Un total de {{scan_result}} informations d'identification faibles ont été trouvées",
"Score" : "Résultat",
"Action" : "Action",
- "Search users or groups…" : "Recherche des utilisateurs ou des groupes...",
+ "Search users…" : "Recherche des utilisateurs...",
"Missing users? Only users that have vaults are shown." : "Il manque des utilisateurs ? Uniquement les utilisateurs qui ont un coffre-fort sont montrés.",
"Cyphering" : "Chiffrement",
- "Uploading" : "Téléversement en cours",
+ "Uploading" : "Envoi en cours",
"User" : "Utilisateur",
"Crypto time" : "Temps d'encodage",
- "Total time spent cyphering" : "Temps total passé à chiffrer",
+ "Total time spent encrypting" : "Temps passé au chiffrement",
"Read" : "Lecture",
"Write" : "Écriture",
"Files" : "Fichiers",
@@ -164,7 +167,7 @@ OC.L10N.register(
"Enable link sharing" : "Activer le partage par lien",
"Share until date" : "Partage jusqu'à la date",
"Expire after views" : "Expire après plusieurs visualisations",
- "Click Share first" : "Cliquer d'abord sur Partager",
+ "Click \\\"Share\\\" first" : "Cliquez d'abord sur \\\"Partager\\\"",
"Show files" : "Afficher les fichiers",
"Details" : "Détails",
"Hide details" : "Masquer les détails",
@@ -224,7 +227,7 @@ OC.L10N.register(
"Use regex" : "Utiliser une expression régulière",
"You have incoming share requests." : "Vous avez des nouvelles demandes de partage.",
"If you want to put the credential in another vault," : "Si vous souhaitez déplacer les informations d'identification dans un autre coffre-fort,",
- "log out of this vault and log in to the vault you want the shared credential in." : "déconnectez-vous de ce coffre-fort et connectez-vous au coffre-fort dans lequel vous voulez les informations d'identification partagées.",
+ "log out of this vault and log into the vault you want the shared credential in." : "déconnectez-vous de ce coffre-fort et connectez-vous au coffre-fort dans lequel vous souhaitez que les informations d'identification partagées soient insérées.",
"Permissions" : "Permissions",
"Received from" : "Reçu de",
"Date" : "Date",
@@ -232,13 +235,15 @@ OC.L10N.register(
"Decline" : "Refuser",
"You have {{session_time}} left before logout." : "Il vous reste {{session_time}} avant d'être déconnecté.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Votre coffre-fort a été verrouillé pendant {{time}} à cause de {{tries}} tentatives échouées !",
+ "Hello there!" : "Bonjour et bienvenue,",
+ "It does not seem that you have any passwords. Do you want to add one?" : "Il semblerait que vous n'ayez aucun mot de passe. Souhaitez-vous en définir un ?",
"Last accessed" : "Dernier accès",
"Never" : "Jamais",
"No vaults found, why not create one?" : "Pas de coffre-fort trouvé, pourquoi ne pas en créer un ?",
"Password strength must be at least: {{strength}}" : "La force du mot de passe doit être au moins : {{strength}}",
"Please give your new vault a name." : "Veuillez donner un nom à votre nouveau coffre-fort.",
"Repeat vault password" : "Confirmer le mot de passe du coffre-fort",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Votre clé de partage aura un poids de 1024 octet, ce qui pourra être modifié plus tard dans les paramètres.",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Votre clé de partage aura une robustesse de 1 024 bits. Vous pouvez modifier cette propriété dans \\\"Paramètres\\\".",
"Create vault" : "Créer un coffre-fort",
"Go back to vaults" : "Retourner aux coffres-forts",
"Please input the password for" : "Veuillez entrer le mot de passe pour",
@@ -247,7 +252,7 @@ OC.L10N.register(
"Log out of this vault automatically after: " : "Se déconnecter de ce coffre-fort automatiquement après :",
"Decrypt vault" : "Déchiffrer le coffre-fort",
"Seems you lost the vault password and you're unable to log in." : "Il semblerait que vous avez perdu le mot de passe du coffre-fort et que vous êtes incapable de vous connecter.",
- "If you want this vault to be removed you can request that here." : "Si vous souhaitez supprimer ce coffre-fort, vous pouvez demander lsa suppression ici.",
+ "If you want this vault to be removed you can request that here." : "Si vous souhaitez supprimer ce coffre-fort, vous pouvez demander la suppression de ce coffre-fort ici.",
"An admin then accepts or declines the request" : "Un administrateur accepte ou refuse alors la requête",
"After an admin destroys this vault, all credentials in it will be lost" : "Après qu'un administrateur ait détruit ce coffre-fort, toutes les informations d'identification contenues à l'intérieur seront perdues",
"Reason for requesting deletion (optional):" : "Motif de la demande de suppression (optionnel) :",
@@ -258,11 +263,13 @@ OC.L10N.register(
"Request removed" : "Demande supprimée",
"Destruction request pending" : "Requête de destruction en attente",
"Warning! Adding credentials over HTTP is insecure!" : "Attention ! Ajouter des informations d'identification en HTTP n'est pas sécurisé !",
- "Logged in to {{vault_name}}" : "Connecté à {{vault_name}}",
+ "Logged into {{vault_name}}" : "Connecté à {{vault_name}}",
"Change vault" : "Modifier le coffre-fort",
"Deleted credentials" : "Supprimer les informations d'identification",
"Logout" : "Se déconnecter",
"Donate" : "Donner",
+ "Show All" : "Tout afficher",
+ "Expired" : "Expiré",
"Someone has shared a credential with you." : "Quelqu'un a partagé une information d'identification avec vous.",
"Click here to request it" : "Cliquez ici pour le demander",
"Loading…" : "Chargement...",
@@ -297,6 +304,8 @@ OC.L10N.register(
"%s has declined your share request for \"%s\"." : "%s a refusé votre demande de partage pour \"%s\"",
"%s has accepted your share request for \"%s\"." : "%s a accepté votre demande de partage pour \"%s\"",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman est un gestionnaire de mot de passe complet.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman est un gestionnaire de mot de passe complet.\nCaractéristiques:\n- Coffres\n- La clé de coffre-fort n'est jamais envoyée au serveur\n- Extension du navigateur pour un accès facile aux mots de passe\n- Application Android pour l'accès mobile\n- Les informations d'identification sont cryptées côté client avec AES 256 bits \n- Les informations d'identification sont cryptées côté serveur avec AES 256 bits \n- Possibilité d'ajouter des champs personnalisés aux informations d'identification\n- Générateur OTP (One Time Password) intégré\n- Analyseur de mot de passe\n- Partager les mots de passe en interne et via un lien de manière sécurisée.\n- Importation à partir de différents gestionnaires de mots de passe (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nPour une démo de cette application, visitez [https://demo.passman.cc] (https://demo.passman.cc)",
"Unable to get version info" : "Impossible d'obtenir l'information de la version",
"Passman Settings" : "Paramètres de Passman",
"GitHub version:" : "Version GitHub :",
@@ -318,7 +327,11 @@ OC.L10N.register(
"Request ID" : "ID de la demande",
"Requested by" : "Demandé par",
"Reason" : "Motif",
- "Connection to server lost" : "Connexion au serveur perdu",
+ "Click here to request\n\t\t\t\t\tit" : "Cliquez ici\n\t\t\t\t\tpour le demander ",
+ "Loading&hellip;" : "Chargement&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Awwhh… n'a pas pu trouver le justificatif d'identité. Peut-être a t-il expiré ?",
+ "Expires:" : "Expire le:",
+ "Connection to server lost" : "Connexion au serveur perdue",
"Problem loading page, reloading in 5 seconds" : "Problème de chargement de la page, actualisation dans 5 secondes",
"Saving..." : "Enregistrement…",
"Dismiss" : "Ignorer",
diff --git a/l10n/fr.json b/l10n/fr.json
index 929087fb..282e82a5 100644
--- a/l10n/fr.json
+++ b/l10n/fr.json
@@ -1,6 +1,6 @@
{ "translations": {
"Passwords" : "Mots de passe",
- "Generating sharing keys ( %step / 2)" : "Génération des clés de partage ( %step / 2 )",
+ "Generating sharing keys ( %s / 2)" : "Génération des clés de partage ( %s/ 2 )",
"Incorrect vault password!" : "Mot de passe du coffre-fort incorrect",
"Passwords do not match" : "Les mots de passe ne correspondent pas",
"General" : "Général",
@@ -8,20 +8,20 @@
"Please fill in a label." : "Veuillez remplir l'étiquette.",
"Please fill in a value." : "Veuillez renseigner une valeur.",
"Error loading file" : "Erreur lors du chargement du fichier",
- "An error occurred during decryption" : "Une erreur est survenue lors du décryptage",
+ "An error occurred during decryption" : "Une erreur est survenue lors du déchiffrement",
"Credential created!" : "Information d'identification créée !",
"Credential deleted" : "Information d'identification supprimée",
"Credential updated" : "Information d'identification mise à jour",
"Credential recovered" : "Information d'identification récupérée",
"Credential destroyed" : "Information d'identification détruite",
- "Error downloading file, you probably don't have sufficient permissions" : "Erreur lors du téléchargement du fichier, vous ne devez sans doute pas avoir les autorisations suffisantes",
+ "Error downloading file, you probably have insufficient permissions" : "Erreur lors du téléchargement du fichier, vos autorisations sont probablement insuffisantes",
"Invalid QR code" : "Code QR invalide",
"Starting export" : "Démarrage de l'export",
"Decrypting credentials" : "Déchiffrement des informations d'identification",
"Done" : "Fait",
- "File read successfully." : "Fichier lu avec succès.",
+ "File read." : "Lecture du fichier",
"Proceed with the following steps to import your file" : "Poursuivez les étapes suivantes pour importer votre fichier",
- "Credential has no label, skipping" : "L'information d'identification n'a pas d'étiquette, ignorée",
+ "Skipping unlabeled credential" : "Ignorer les identifiants sans étiquette",
"Adding {{credential}}" : "{{credential}} en cours d'ajout",
"Added {{credential}}" : "{{credential}} ajouté",
"Skipping credential, missing label on line {{line}}" : "Information d'identification ignorée, étiquette manquante à la ligne {{line}}",
@@ -48,7 +48,7 @@
"Export credentials" : "Exporter les informations d'identification",
"Sharing" : "Partage",
"Are you sure you want to leave? This will destroy all your credentials" : "Êtes-vous sûr de vouloir quitter ? Cela va détruire toutes vos informations d'identification",
- "Your old password is incorrect!" : "Votre ancien mot de passe est incorrect !",
+ "Old password field incorrect!" : "Champ ancien mot de passe incorrect !",
"New password does not match!" : "Le nouveau mot de passe ne correspond pas !",
"Please log in with your new vault password" : "Veuillez vous connecter avec votre nouveau mot de passe du coffre-fort",
"Share with users and groups" : "Partager avec des utilisateurs et des groupes",
@@ -71,6 +71,9 @@
"Username" : "Nom d'utilisateur",
"Repeat password" : "Répéter le mot de passe",
"Add tag" : "Ajouter une étiquette",
+ "Pick an icon" : "Choisir une icône",
+ "Use this icon" : "Utiliser cette icône",
+ "Selected icon" : "Icône sélectionnée",
"Field label" : "Étiquette du champ",
"Field value" : "Valeur du champ",
"Choose a file" : "Choisir un fichier",
@@ -122,7 +125,7 @@
"Version" : "Version",
"Donate to support development" : "Donner pour aider le développement",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Sauvegardez vos mots de passe en 1 clic !",
+ "Save your passwords with one click." : "Sauvegardez vos mots de passe en un clic.",
"Drag below button to your bookmark toolbar." : "Glissez le bouton ci-dessous dans la barre d'outils de vos favoris.",
"Delete vault" : "Supprimer le coffre-fort",
"Vault password" : "Mot de passe du coffre-fort",
@@ -140,20 +143,20 @@
"Save keys" : "Sauvegarder les clés",
"Generate sharing keys" : "Générer des clés de partage",
"Generating sharing keys" : "Génération des clés de partage",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "L'outil de mot de passe va scanner vos mots de passe, calculer le temps moyen pour le déchiffrer et afficher ceux qui sont inférieur au seuil",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "L'outil de mot de passe analyse votre mot de passe, calcule le temps de craquage moyen et répertorie ceux qui se trouvent sous le seuil.",
"Minimum password stength" : "Force minimale du mot de passe",
"Start scan" : "Commencer le scan",
"Result" : "Résultat",
"A total of {{scan_result}} weak credentials were found." : "Un total de {{scan_result}} informations d'identification faibles ont été trouvées",
"Score" : "Résultat",
"Action" : "Action",
- "Search users or groups…" : "Recherche des utilisateurs ou des groupes...",
+ "Search users…" : "Recherche des utilisateurs...",
"Missing users? Only users that have vaults are shown." : "Il manque des utilisateurs ? Uniquement les utilisateurs qui ont un coffre-fort sont montrés.",
"Cyphering" : "Chiffrement",
- "Uploading" : "Téléversement en cours",
+ "Uploading" : "Envoi en cours",
"User" : "Utilisateur",
"Crypto time" : "Temps d'encodage",
- "Total time spent cyphering" : "Temps total passé à chiffrer",
+ "Total time spent encrypting" : "Temps passé au chiffrement",
"Read" : "Lecture",
"Write" : "Écriture",
"Files" : "Fichiers",
@@ -162,7 +165,7 @@
"Enable link sharing" : "Activer le partage par lien",
"Share until date" : "Partage jusqu'à la date",
"Expire after views" : "Expire après plusieurs visualisations",
- "Click Share first" : "Cliquer d'abord sur Partager",
+ "Click \\\"Share\\\" first" : "Cliquez d'abord sur \\\"Partager\\\"",
"Show files" : "Afficher les fichiers",
"Details" : "Détails",
"Hide details" : "Masquer les détails",
@@ -222,7 +225,7 @@
"Use regex" : "Utiliser une expression régulière",
"You have incoming share requests." : "Vous avez des nouvelles demandes de partage.",
"If you want to put the credential in another vault," : "Si vous souhaitez déplacer les informations d'identification dans un autre coffre-fort,",
- "log out of this vault and log in to the vault you want the shared credential in." : "déconnectez-vous de ce coffre-fort et connectez-vous au coffre-fort dans lequel vous voulez les informations d'identification partagées.",
+ "log out of this vault and log into the vault you want the shared credential in." : "déconnectez-vous de ce coffre-fort et connectez-vous au coffre-fort dans lequel vous souhaitez que les informations d'identification partagées soient insérées.",
"Permissions" : "Permissions",
"Received from" : "Reçu de",
"Date" : "Date",
@@ -230,13 +233,15 @@
"Decline" : "Refuser",
"You have {{session_time}} left before logout." : "Il vous reste {{session_time}} avant d'être déconnecté.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Votre coffre-fort a été verrouillé pendant {{time}} à cause de {{tries}} tentatives échouées !",
+ "Hello there!" : "Bonjour et bienvenue,",
+ "It does not seem that you have any passwords. Do you want to add one?" : "Il semblerait que vous n'ayez aucun mot de passe. Souhaitez-vous en définir un ?",
"Last accessed" : "Dernier accès",
"Never" : "Jamais",
"No vaults found, why not create one?" : "Pas de coffre-fort trouvé, pourquoi ne pas en créer un ?",
"Password strength must be at least: {{strength}}" : "La force du mot de passe doit être au moins : {{strength}}",
"Please give your new vault a name." : "Veuillez donner un nom à votre nouveau coffre-fort.",
"Repeat vault password" : "Confirmer le mot de passe du coffre-fort",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Votre clé de partage aura un poids de 1024 octet, ce qui pourra être modifié plus tard dans les paramètres.",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Votre clé de partage aura une robustesse de 1 024 bits. Vous pouvez modifier cette propriété dans \\\"Paramètres\\\".",
"Create vault" : "Créer un coffre-fort",
"Go back to vaults" : "Retourner aux coffres-forts",
"Please input the password for" : "Veuillez entrer le mot de passe pour",
@@ -245,7 +250,7 @@
"Log out of this vault automatically after: " : "Se déconnecter de ce coffre-fort automatiquement après :",
"Decrypt vault" : "Déchiffrer le coffre-fort",
"Seems you lost the vault password and you're unable to log in." : "Il semblerait que vous avez perdu le mot de passe du coffre-fort et que vous êtes incapable de vous connecter.",
- "If you want this vault to be removed you can request that here." : "Si vous souhaitez supprimer ce coffre-fort, vous pouvez demander lsa suppression ici.",
+ "If you want this vault to be removed you can request that here." : "Si vous souhaitez supprimer ce coffre-fort, vous pouvez demander la suppression de ce coffre-fort ici.",
"An admin then accepts or declines the request" : "Un administrateur accepte ou refuse alors la requête",
"After an admin destroys this vault, all credentials in it will be lost" : "Après qu'un administrateur ait détruit ce coffre-fort, toutes les informations d'identification contenues à l'intérieur seront perdues",
"Reason for requesting deletion (optional):" : "Motif de la demande de suppression (optionnel) :",
@@ -256,11 +261,13 @@
"Request removed" : "Demande supprimée",
"Destruction request pending" : "Requête de destruction en attente",
"Warning! Adding credentials over HTTP is insecure!" : "Attention ! Ajouter des informations d'identification en HTTP n'est pas sécurisé !",
- "Logged in to {{vault_name}}" : "Connecté à {{vault_name}}",
+ "Logged into {{vault_name}}" : "Connecté à {{vault_name}}",
"Change vault" : "Modifier le coffre-fort",
"Deleted credentials" : "Supprimer les informations d'identification",
"Logout" : "Se déconnecter",
"Donate" : "Donner",
+ "Show All" : "Tout afficher",
+ "Expired" : "Expiré",
"Someone has shared a credential with you." : "Quelqu'un a partagé une information d'identification avec vous.",
"Click here to request it" : "Cliquez ici pour le demander",
"Loading…" : "Chargement...",
@@ -295,6 +302,8 @@
"%s has declined your share request for \"%s\"." : "%s a refusé votre demande de partage pour \"%s\"",
"%s has accepted your share request for \"%s\"." : "%s a accepté votre demande de partage pour \"%s\"",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman est un gestionnaire de mot de passe complet.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman est un gestionnaire de mot de passe complet.\nCaractéristiques:\n- Coffres\n- La clé de coffre-fort n'est jamais envoyée au serveur\n- Extension du navigateur pour un accès facile aux mots de passe\n- Application Android pour l'accès mobile\n- Les informations d'identification sont cryptées côté client avec AES 256 bits \n- Les informations d'identification sont cryptées côté serveur avec AES 256 bits \n- Possibilité d'ajouter des champs personnalisés aux informations d'identification\n- Générateur OTP (One Time Password) intégré\n- Analyseur de mot de passe\n- Partager les mots de passe en interne et via un lien de manière sécurisée.\n- Importation à partir de différents gestionnaires de mots de passe (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nPour une démo de cette application, visitez [https://demo.passman.cc] (https://demo.passman.cc)",
"Unable to get version info" : "Impossible d'obtenir l'information de la version",
"Passman Settings" : "Paramètres de Passman",
"GitHub version:" : "Version GitHub :",
@@ -316,7 +325,11 @@
"Request ID" : "ID de la demande",
"Requested by" : "Demandé par",
"Reason" : "Motif",
- "Connection to server lost" : "Connexion au serveur perdu",
+ "Click here to request\n\t\t\t\t\tit" : "Cliquez ici\n\t\t\t\t\tpour le demander ",
+ "Loading&hellip;" : "Chargement&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Awwhh… n'a pas pu trouver le justificatif d'identité. Peut-être a t-il expiré ?",
+ "Expires:" : "Expire le:",
+ "Connection to server lost" : "Connexion au serveur perdue",
"Problem loading page, reloading in 5 seconds" : "Problème de chargement de la page, actualisation dans 5 secondes",
"Saving..." : "Enregistrement…",
"Dismiss" : "Ignorer",
diff --git a/l10n/gl.js b/l10n/gl.js
new file mode 100644
index 00000000..4c9478e7
--- /dev/null
+++ b/l10n/gl.js
@@ -0,0 +1,284 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Contrasinais",
+ "Incorrect vault password!" : "Contrasinal da bóveda incorrecta!",
+ "Passwords do not match" : "Os contrasinais non coinciden",
+ "General" : "Xeral",
+ "Custom Fields" : "Campos personalizados",
+ "Error loading file" : "Produciuse un erro ao cargar o ficheiro",
+ "Credential created!" : "Creouse a credencial!",
+ "Credential deleted" : "Credencial eliminada",
+ "Credential updated" : "Credencial actualizada",
+ "Credential recovered" : "Credencial recuperada",
+ "Credential destroyed" : "Credencial destruída",
+ "Invalid QR code" : "Código QR incorrecto",
+ "Starting export" : "Iniciando a exportación",
+ "Decrypting credentials" : "Descifrando credenciais",
+ "Done" : "Feito",
+ "Adding {{credential}}" : "Engadindo {{credential}}",
+ "Added {{credential}}" : "{{credential}} foi engadida",
+ "Skipping credential, missing label on line {{line}}" : "Omitindo credenciais, falta unha etiqueta na liña {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "Analizadas {{num}} credenciais, comezando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comezar a importación",
+ "Select CSV file" : "Seleccione o ficheiro CSV",
+ "Parsed {{rows}} lines from CSV file" : "Analizáronse {{rows}} liñas do ficheiro CSV",
+ "Skip first row" : "Omitir a primeira fila",
+ "You need to assign the label field before you can start the import." : "Ten que asignar o campo de etiqueta antes de comezar a importación.",
+ "Assign the proper fields to each column." : "Asignar os campos axeitados para cada columna.",
+ "Missing an importer? Try it with the generic CSV importer." : "Non atopa unha ferramenta para importar? Probe coa ferramenta xenérica para importar CSV.",
+ "Go back to importers." : "Volver aos importadores.",
+ "Revision deleted" : "Revisión eliminada",
+ "Revision restored" : "Revisión restaurada",
+ "Settings saved" : "Axustes gardados",
+ "General settings" : "Axustes xerais",
+ "Password settings" : "Axuste de contrasinal",
+ "Import credentials" : "Importar credenciais",
+ "Export credentials" : "Exportar credenciais",
+ "Sharing" : "Compartindo",
+ "Share with users and groups" : "Compartir con outros usuarios e grupos",
+ "Share link" : "Compartir ligazón",
+ "Are you sure you want to leave? This will corrupt this credential" : "Confirma que quere saír? Isto estragará esta credencial",
+ "Credential unshared" : "Deixar de compartir esta credencial",
+ "Credential shared" : "Compartir esta credencial",
+ "Saved!" : "Gardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Feble",
+ "Good" : "Bo",
+ "Strong" : "Forte",
+ "Toggle visibility" : "Alternar a visibilidade",
+ "Copy to clipboard" : "Copiar no portapapeis.",
+ "Copied to clipboard!" : "Copiado no portapapeis!",
+ "Generate password" : "Xerar un contrasinal",
+ "Copy password to clipboard" : "Copiar o contrasinal no portapapeis",
+ "Password copied to clipboard!" : "Contrasinal copiado no portapapeis!",
+ "Complete" : "Completo",
+ "Username" : "Nome de usuario",
+ "Repeat password" : "Repita o contrasinal",
+ "Field label" : "Campo etiqueta",
+ "Field value" : "Campo valor",
+ "Choose a file" : "Escolla un ficheiro",
+ "Text" : "Texto",
+ "File" : "Ficheiro",
+ "Add" : "Engadir",
+ "Value" : "Valor",
+ "Type" : "Tipo:",
+ "Actions" : "Accións",
+ "Empty" : "Baleiro",
+ "Filename" : "Nome de ficheiro",
+ "Upload date" : "Data de envío",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Envíe ou insira o seu secreto OTP",
+ "Current OTP settings" : "Axustes OTP actuais",
+ "Issuer" : "Emisor",
+ "Secret" : "Secreto",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Desactivado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Ano(s)",
+ "Password generation settings" : "Axustes de xeración de contrasinais",
+ "Password length" : "Lonxitude do contrasinal",
+ "Minimum amount of digits" : "Cantidade mínima de díxitos",
+ "Use uppercase letters" : "Use letras maiúsculas",
+ "Use lowercase letters" : "Use letras minúsculas",
+ "Use numbers" : "Use números",
+ "Use special characters" : "Use caracteres especiais",
+ "Avoid ambiguous characters" : "Evitar caracteres ambiguos",
+ "Require every character type" : "Requirir todos os tipos de caracteres",
+ "Export type" : "Exportar o tipo",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Insira o contrasinal da bóveda para confirmar a exportación.",
+ "Rename vault" : "Renomear a bóveda",
+ "New vault name" : "Nome novo para a bóveda",
+ "Change" : "Cambio",
+ "Change vault key" : "Cambiar a chave da bóveda",
+ "Old vault password" : "Anterior contrasinal da bóveda",
+ "New vault password" : "Novo contrasinal da bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Agarde mentres se actualiza a súa bóveda, non saia desta páxina.",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Sobre Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Doar para axudar ao dsenvolvemento",
+ "Bookmarklet" : "Marcadores",
+ "Drag below button to your bookmark toolbar." : "Arrastre o botón inferior cara a barra de ferramentas de marcadores.",
+ "Delete vault" : "Eliminar a bóveda",
+ "Vault password" : "Contrasinal da bóveda",
+ "This process is irreversible" : "Este proceso é irreversíbel",
+ "Delete my precious passwords" : "Eliminar os meus valiosos contrasinais",
+ "Yes, delete my precious passwords" : "Si, eliminar os meus valiosos contrasinais",
+ "Import type" : "Importar o tipo",
+ "Import" : "Importar",
+ "Read progress" : "Progreso da lectura",
+ "Upload progress" : "Progreso do envío",
+ "Private Key" : "Chave privada",
+ "Public key" : "Chave pública",
+ "Key size" : "Tamaño da chave",
+ "Save keys" : "Gardar as chaves",
+ "Generate sharing keys" : "Xerar chaves de compartición",
+ "Generating sharing keys" : "Xerando chaves de compartición",
+ "Minimum password stength" : "Fortaleza mínima do contrasinal",
+ "Start scan" : "Iniciar a analise",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Atopouse un tota del {{scan_result}} credenciais débiles.",
+ "Score" : "Puntuación",
+ "Action" : "Acción",
+ "Missing users? Only users that have vaults are shown." : "Faltan usuarios? Só se amosan os usuarios que teñan bóvedas",
+ "Cyphering" : "Cifrado",
+ "Uploading" : "Enviando...",
+ "User" : "Usuario",
+ "Crypto time" : "Tempo de cifrado",
+ "Read" : "Ler",
+ "Write" : "Escribir",
+ "Files" : "Ficheiros",
+ "Revisions" : "Revisións",
+ "Pending" : "Pendente",
+ "Enable link sharing" : "Activar a compartición de ligazóns",
+ "Share until date" : "Compartir ata a data",
+ "Expire after views" : "Caduca despois de vistas",
+ "Show files" : "Amosar os ficheiros",
+ "Details" : "Detalles",
+ "Hide details" : "Agochar os detalles",
+ "Password score" : "Puntuación do contrasinal",
+ "Cracking times" : "Tempos para rachar o contrasinal",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en liña limitado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en liña sen límite",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque local, funcións de resumo lentas, moitos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque local, funcións de resumo rápidas, moitos núcleos",
+ "Match sequence" : "Secuencia coincidente",
+ "See match sequence" : "Ver a secuencia coincidente",
+ "Pattern" : "Modelo",
+ "Matched word" : "Palabra coincidente",
+ "Dictionary name" : "Nome do dicionario",
+ "Rank" : "Intervalo",
+ "Reversed" : "Invertido",
+ "Guesses" : "Suposicións",
+ "Base guesses" : "Suposicións base",
+ "Uppercase variations" : "Variacións en maiúsculas",
+ "l33t-variations" : "Variacións en l33t",
+ "Showing revisions of" : "Amosando revisións de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "Non se atoparon revisións.",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar a revisión",
+ "Delete revision" : "Eliminar a revisión",
+ "Edit credential" : "Editar a credencial",
+ "Create new credential" : "Crear unha nova credencial",
+ "Save" : "Gardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Axustes",
+ "Share credential {{credential}}" : "Compartir credenciais {{credential}}",
+ "Unshare" : "Deixar de compartir",
+ "Showing deleted since" : "Amosando eliminados desde",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Amosando {{number_filtered}} de {{credential_number}} credenciais",
+ "Account" : "Conta",
+ "Password" : "Contrasinal",
+ "OTP" : "OTP",
+ "E-mail" : "Correo-e",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Eliminar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruír",
+ "Use regex" : "Usar expresións regulares",
+ "You have incoming share requests." : "Vostede recibiu solicitudes para compartir. ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Data",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Dispón de {{session_time}} antes de que a súa sesión se peche.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "A súa bóveda atopase bloqueada durante {{time}} por mor dos {{tries}} intentos fallados!",
+ "Last accessed" : "Último o acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "Non se atoparon bóvedas. Por que non crear unha?",
+ "Password strength must be at least: {{strength}}" : "A fortaleza do contrasinal debe ser candoo menos: {{strength}}",
+ "Please give your new vault a name." : "Póñalle un nome á súa bóveda",
+ "Repeat vault password" : "Repita o contrasinal da bóveda",
+ "Create vault" : "Crear unha bóveda",
+ "Go back to vaults" : "Volver ás bóvedas",
+ "Please input the password for" : "Introduza o contrasinal para",
+ "Log into this vault automatically." : "Acceder a esta bóveda automaticamente",
+ "Decrypt vault" : "Descifrar a bóveda",
+ "If you want this vault to be removed you can request that here." : "Se quere que esta bóveda sexa eliminada, pode solicitalo aquí.",
+ "Request vault destruction" : "Solicitar a destrución da bóveda",
+ "Yes, request an admin to destroy this vault" : "Si, solicito que un administrador destrúa esta bóveda",
+ "Cancel destruction request" : "Cancelar a solicitude de destrución",
+ "Vault destruction requested" : "Solicitada a destrución da bóveda",
+ "Request removed" : "Solicitude retirada",
+ "Destruction request pending" : "Solicitude de destrución pendente",
+ "Change vault" : "Cambiar da bóveda",
+ "Deleted credentials" : "Credenciais eliminadas",
+ "Logout" : "Saír",
+ "Donate" : "Doar",
+ "Someone has shared a credential with you." : "Alguén compartiu unha credencial con vostede.",
+ "Click here to request it" : "Prema aquí para solicitalo",
+ "Error while saving field" : "Produciuse un erro ao gardar o campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman pode ser creado, modificado ou eliminado.",
+ "A Passman item has expired" : "Caducou un elemento de Passman",
+ "A Passman item has been shared" : "Foi compartido un elemento de Passman",
+ "A Passman item has been renamed" : "Foi renomeado un elemento de Passman",
+ "%1$s has been created by %2$s" : "%1$s foi creado por %2$s",
+ "You created %1$s" : "Vostede creou %1$s",
+ "%1$s has been updated by %2$s" : "%1$s foi actualizado por %2$s",
+ "You updated %1$s" : "Vostede actualizou %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s revisou %1$s para a revisión de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Vostede reverteu %1$s cara unha revisión anterior de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s renomeou %1$s a %2$s",
+ "You renamed %1$s to %2$s" : "Vostede renomeou %1$s a %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s foi eliminado por %2$s",
+ "You deleted %1$s" : "Vostede eliminou %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s foi recuperado por %2$s",
+ "You recovered %1$s" : "Vostede restaurou %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s foi eliminado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Vostede eliminou permanentemente %1$s",
+ "The password of %1$s has expired, renew it now." : "O contrasinal de %1$s caducou, renóvea agora.",
+ "%1$s has been shared with %2$s" : "%1$s foi compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Vostede recibiu unha solicitude para compartir %1$s desde %2$s",
+ "%s has been shared with a link" : "%s foi compartido cunha ligazón",
+ "Your credential \"%s\" expired, click here to update the credential." : "A sua credencial «%s» caducou, prema aquí para actualizar a credencial.",
+ "Remind me later" : "Lembrarmo más adiante",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s compartiu «%s» con vostede. Prema aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s declinou a súa solicitude para compartir «%s».",
+ "%s has accepted your share request for \"%s\"." : "%s aceptou a súa solicitude para compartir «%s».",
+ "Passman" : "Passman",
+ "Unable to get version info" : "Non é posíbel obter información da versión",
+ "Passman Settings" : "Axustes de Passman",
+ "A newer version of Passman is available" : "Hai dispoñíbel unha nova versión de Passman",
+ "Password sharing" : "Compartición de contrasinais",
+ "Credential mover" : "Trasladar credenciais",
+ "Vault destruction requests" : "Solicitudes para destruír bóvedas",
+ "Check for new versions" : "Verificar se hai novas versións",
+ "Enable HTTPS check" : "Activar a verificación HTTPS",
+ "Disable context menu" : "Desactivar o menú contextual",
+ "Disable JavaScript debugger" : "Desactivar o depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir aos usuarios deste servidor compartir contrasinais cunha ligazón",
+ "Allow users on this server to share passwords with other users" : "Permitir aos usuarios deste servidor compartir contrasinais con outros usuarios",
+ "Move credentials from one account to another" : "Trasladar credenciais dunha conta cara outra",
+ "Source account" : "Conta orixe",
+ "Destination account" : "Conta destino",
+ "Credentials moved!" : "Credenciais trasladadas!",
+ "Requests to destroy vault" : "Solicitudes para eliminar bóvedas",
+ "Request ID" : "ID da solicitude",
+ "Requested by" : "Solicitado por",
+ "Reason" : "Razón",
+ "Connection to server lost" : "Perdida a conexión co servidor",
+ "Problem loading page, reloading in 5 seconds" : "Produciuse un problema ao cargar a páxina, volverá cargar en 5 segundos",
+ "Saving..." : "Gardando...",
+ "Dismiss" : "Desbotar",
+ "seconds ago" : "segundos atrás"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/gl.json b/l10n/gl.json
new file mode 100644
index 00000000..4f238405
--- /dev/null
+++ b/l10n/gl.json
@@ -0,0 +1,282 @@
+{ "translations": {
+ "Passwords" : "Contrasinais",
+ "Incorrect vault password!" : "Contrasinal da bóveda incorrecta!",
+ "Passwords do not match" : "Os contrasinais non coinciden",
+ "General" : "Xeral",
+ "Custom Fields" : "Campos personalizados",
+ "Error loading file" : "Produciuse un erro ao cargar o ficheiro",
+ "Credential created!" : "Creouse a credencial!",
+ "Credential deleted" : "Credencial eliminada",
+ "Credential updated" : "Credencial actualizada",
+ "Credential recovered" : "Credencial recuperada",
+ "Credential destroyed" : "Credencial destruída",
+ "Invalid QR code" : "Código QR incorrecto",
+ "Starting export" : "Iniciando a exportación",
+ "Decrypting credentials" : "Descifrando credenciais",
+ "Done" : "Feito",
+ "Adding {{credential}}" : "Engadindo {{credential}}",
+ "Added {{credential}}" : "{{credential}} foi engadida",
+ "Skipping credential, missing label on line {{line}}" : "Omitindo credenciais, falta unha etiqueta na liña {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "Analizadas {{num}} credenciais, comezando a importar",
+ "Importing" : "Importando",
+ "Start import" : "Comezar a importación",
+ "Select CSV file" : "Seleccione o ficheiro CSV",
+ "Parsed {{rows}} lines from CSV file" : "Analizáronse {{rows}} liñas do ficheiro CSV",
+ "Skip first row" : "Omitir a primeira fila",
+ "You need to assign the label field before you can start the import." : "Ten que asignar o campo de etiqueta antes de comezar a importación.",
+ "Assign the proper fields to each column." : "Asignar os campos axeitados para cada columna.",
+ "Missing an importer? Try it with the generic CSV importer." : "Non atopa unha ferramenta para importar? Probe coa ferramenta xenérica para importar CSV.",
+ "Go back to importers." : "Volver aos importadores.",
+ "Revision deleted" : "Revisión eliminada",
+ "Revision restored" : "Revisión restaurada",
+ "Settings saved" : "Axustes gardados",
+ "General settings" : "Axustes xerais",
+ "Password settings" : "Axuste de contrasinal",
+ "Import credentials" : "Importar credenciais",
+ "Export credentials" : "Exportar credenciais",
+ "Sharing" : "Compartindo",
+ "Share with users and groups" : "Compartir con outros usuarios e grupos",
+ "Share link" : "Compartir ligazón",
+ "Are you sure you want to leave? This will corrupt this credential" : "Confirma que quere saír? Isto estragará esta credencial",
+ "Credential unshared" : "Deixar de compartir esta credencial",
+ "Credential shared" : "Compartir esta credencial",
+ "Saved!" : "Gardado!",
+ "Poor" : "Pobre",
+ "Weak" : "Feble",
+ "Good" : "Bo",
+ "Strong" : "Forte",
+ "Toggle visibility" : "Alternar a visibilidade",
+ "Copy to clipboard" : "Copiar no portapapeis.",
+ "Copied to clipboard!" : "Copiado no portapapeis!",
+ "Generate password" : "Xerar un contrasinal",
+ "Copy password to clipboard" : "Copiar o contrasinal no portapapeis",
+ "Password copied to clipboard!" : "Contrasinal copiado no portapapeis!",
+ "Complete" : "Completo",
+ "Username" : "Nome de usuario",
+ "Repeat password" : "Repita o contrasinal",
+ "Field label" : "Campo etiqueta",
+ "Field value" : "Campo valor",
+ "Choose a file" : "Escolla un ficheiro",
+ "Text" : "Texto",
+ "File" : "Ficheiro",
+ "Add" : "Engadir",
+ "Value" : "Valor",
+ "Type" : "Tipo:",
+ "Actions" : "Accións",
+ "Empty" : "Baleiro",
+ "Filename" : "Nome de ficheiro",
+ "Upload date" : "Data de envío",
+ "Size" : "Tamaño",
+ "Upload or enter your OTP secret" : "Envíe ou insira o seu secreto OTP",
+ "Current OTP settings" : "Axustes OTP actuais",
+ "Issuer" : "Emisor",
+ "Secret" : "Secreto",
+ "Renew interval" : "Intervalo de renovación",
+ "Disabled" : "Desactivado",
+ "Day(s)" : "Día(s)",
+ "Week(s)" : "Semana(s)",
+ "Month(s)" : "Mes(es)",
+ "Year(s)" : "Ano(s)",
+ "Password generation settings" : "Axustes de xeración de contrasinais",
+ "Password length" : "Lonxitude do contrasinal",
+ "Minimum amount of digits" : "Cantidade mínima de díxitos",
+ "Use uppercase letters" : "Use letras maiúsculas",
+ "Use lowercase letters" : "Use letras minúsculas",
+ "Use numbers" : "Use números",
+ "Use special characters" : "Use caracteres especiais",
+ "Avoid ambiguous characters" : "Evitar caracteres ambiguos",
+ "Require every character type" : "Requirir todos os tipos de caracteres",
+ "Export type" : "Exportar o tipo",
+ "Export" : "Exportar",
+ "Enter vault password to confirm export." : "Insira o contrasinal da bóveda para confirmar a exportación.",
+ "Rename vault" : "Renomear a bóveda",
+ "New vault name" : "Nome novo para a bóveda",
+ "Change" : "Cambio",
+ "Change vault key" : "Cambiar a chave da bóveda",
+ "Old vault password" : "Anterior contrasinal da bóveda",
+ "New vault password" : "Novo contrasinal da bóveda",
+ "Please wait your vault is being updated, do not leave this page." : "Agarde mentres se actualiza a súa bóveda, non saia desta páxina.",
+ "Processing" : "Procesando",
+ "Total progress" : "Progreso total",
+ "About Passman" : "Sobre Passman",
+ "Version" : "Versión",
+ "Donate to support development" : "Doar para axudar ao dsenvolvemento",
+ "Bookmarklet" : "Marcadores",
+ "Drag below button to your bookmark toolbar." : "Arrastre o botón inferior cara a barra de ferramentas de marcadores.",
+ "Delete vault" : "Eliminar a bóveda",
+ "Vault password" : "Contrasinal da bóveda",
+ "This process is irreversible" : "Este proceso é irreversíbel",
+ "Delete my precious passwords" : "Eliminar os meus valiosos contrasinais",
+ "Yes, delete my precious passwords" : "Si, eliminar os meus valiosos contrasinais",
+ "Import type" : "Importar o tipo",
+ "Import" : "Importar",
+ "Read progress" : "Progreso da lectura",
+ "Upload progress" : "Progreso do envío",
+ "Private Key" : "Chave privada",
+ "Public key" : "Chave pública",
+ "Key size" : "Tamaño da chave",
+ "Save keys" : "Gardar as chaves",
+ "Generate sharing keys" : "Xerar chaves de compartición",
+ "Generating sharing keys" : "Xerando chaves de compartición",
+ "Minimum password stength" : "Fortaleza mínima do contrasinal",
+ "Start scan" : "Iniciar a analise",
+ "Result" : "Resultado",
+ "A total of {{scan_result}} weak credentials were found." : "Atopouse un tota del {{scan_result}} credenciais débiles.",
+ "Score" : "Puntuación",
+ "Action" : "Acción",
+ "Missing users? Only users that have vaults are shown." : "Faltan usuarios? Só se amosan os usuarios que teñan bóvedas",
+ "Cyphering" : "Cifrado",
+ "Uploading" : "Enviando...",
+ "User" : "Usuario",
+ "Crypto time" : "Tempo de cifrado",
+ "Read" : "Ler",
+ "Write" : "Escribir",
+ "Files" : "Ficheiros",
+ "Revisions" : "Revisións",
+ "Pending" : "Pendente",
+ "Enable link sharing" : "Activar a compartición de ligazóns",
+ "Share until date" : "Compartir ata a data",
+ "Expire after views" : "Caduca despois de vistas",
+ "Show files" : "Amosar os ficheiros",
+ "Details" : "Detalles",
+ "Hide details" : "Agochar os detalles",
+ "Password score" : "Puntuación do contrasinal",
+ "Cracking times" : "Tempos para rachar o contrasinal",
+ "100 / hour" : "100 / hora",
+ "Throttled online attack" : "Ataque en liña limitado",
+ "10 / second" : "10 / segundo",
+ "Unthrottled online attack" : "Ataque en liña sen límite",
+ "10k / second" : "10k / segundo",
+ "Offline attack, slow hash, many cores" : "Ataque local, funcións de resumo lentas, moitos núcleos",
+ "10B / second" : "10B / segundo",
+ "Offline attack, fast hash, many cores" : "Ataque local, funcións de resumo rápidas, moitos núcleos",
+ "Match sequence" : "Secuencia coincidente",
+ "See match sequence" : "Ver a secuencia coincidente",
+ "Pattern" : "Modelo",
+ "Matched word" : "Palabra coincidente",
+ "Dictionary name" : "Nome do dicionario",
+ "Rank" : "Intervalo",
+ "Reversed" : "Invertido",
+ "Guesses" : "Suposicións",
+ "Base guesses" : "Suposicións base",
+ "Uppercase variations" : "Variacións en maiúsculas",
+ "l33t-variations" : "Variacións en l33t",
+ "Showing revisions of" : "Amosando revisións de",
+ "Revision of" : "Revisión de",
+ "by" : "por",
+ "No revisions found." : "Non se atoparon revisións.",
+ "Label" : "Etiqueta",
+ "Restore revision" : "Restaurar a revisión",
+ "Delete revision" : "Eliminar a revisión",
+ "Edit credential" : "Editar a credencial",
+ "Create new credential" : "Crear unha nova credencial",
+ "Save" : "Gardar",
+ "Cancel" : "Cancelar",
+ "Settings" : "Axustes",
+ "Share credential {{credential}}" : "Compartir credenciais {{credential}}",
+ "Unshare" : "Deixar de compartir",
+ "Showing deleted since" : "Amosando eliminados desde",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Amosando {{number_filtered}} de {{credential_number}} credenciais",
+ "Account" : "Conta",
+ "Password" : "Contrasinal",
+ "OTP" : "OTP",
+ "E-mail" : "Correo-e",
+ "URL" : "URL",
+ "Notes" : "Notas",
+ "Changed" : "Cambiado",
+ "Created" : "Creado",
+ "Edit" : "Editar",
+ "Delete" : "Eliminar",
+ "Share" : "Compartir",
+ "Recover" : "Recuperar",
+ "Destroy" : "Destruír",
+ "Use regex" : "Usar expresións regulares",
+ "You have incoming share requests." : "Vostede recibiu solicitudes para compartir. ",
+ "Permissions" : "Permisos",
+ "Received from" : "Recibido de",
+ "Date" : "Data",
+ "Accept" : "Aceptar",
+ "Decline" : "Declinar",
+ "You have {{session_time}} left before logout." : "Dispón de {{session_time}} antes de que a súa sesión se peche.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "A súa bóveda atopase bloqueada durante {{time}} por mor dos {{tries}} intentos fallados!",
+ "Last accessed" : "Último o acceso",
+ "Never" : "Nunca",
+ "No vaults found, why not create one?" : "Non se atoparon bóvedas. Por que non crear unha?",
+ "Password strength must be at least: {{strength}}" : "A fortaleza do contrasinal debe ser candoo menos: {{strength}}",
+ "Please give your new vault a name." : "Póñalle un nome á súa bóveda",
+ "Repeat vault password" : "Repita o contrasinal da bóveda",
+ "Create vault" : "Crear unha bóveda",
+ "Go back to vaults" : "Volver ás bóvedas",
+ "Please input the password for" : "Introduza o contrasinal para",
+ "Log into this vault automatically." : "Acceder a esta bóveda automaticamente",
+ "Decrypt vault" : "Descifrar a bóveda",
+ "If you want this vault to be removed you can request that here." : "Se quere que esta bóveda sexa eliminada, pode solicitalo aquí.",
+ "Request vault destruction" : "Solicitar a destrución da bóveda",
+ "Yes, request an admin to destroy this vault" : "Si, solicito que un administrador destrúa esta bóveda",
+ "Cancel destruction request" : "Cancelar a solicitude de destrución",
+ "Vault destruction requested" : "Solicitada a destrución da bóveda",
+ "Request removed" : "Solicitude retirada",
+ "Destruction request pending" : "Solicitude de destrución pendente",
+ "Change vault" : "Cambiar da bóveda",
+ "Deleted credentials" : "Credenciais eliminadas",
+ "Logout" : "Saír",
+ "Donate" : "Doar",
+ "Someone has shared a credential with you." : "Alguén compartiu unha credencial con vostede.",
+ "Click here to request it" : "Prema aquí para solicitalo",
+ "Error while saving field" : "Produciuse un erro ao gardar o campo",
+ "A Passman item has been created, modified or deleted" : "Un elemento de Passman pode ser creado, modificado ou eliminado.",
+ "A Passman item has expired" : "Caducou un elemento de Passman",
+ "A Passman item has been shared" : "Foi compartido un elemento de Passman",
+ "A Passman item has been renamed" : "Foi renomeado un elemento de Passman",
+ "%1$s has been created by %2$s" : "%1$s foi creado por %2$s",
+ "You created %1$s" : "Vostede creou %1$s",
+ "%1$s has been updated by %2$s" : "%1$s foi actualizado por %2$s",
+ "You updated %1$s" : "Vostede actualizou %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s revisou %1$s para a revisión de %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Vostede reverteu %1$s cara unha revisión anterior de %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s renomeou %1$s a %2$s",
+ "You renamed %1$s to %2$s" : "Vostede renomeou %1$s a %2$s",
+ "%1$s has been deleted by %2$s" : "%1$s foi eliminado por %2$s",
+ "You deleted %1$s" : "Vostede eliminou %1$s",
+ "%1$s has been recovered by %2$s" : "%1$s foi recuperado por %2$s",
+ "You recovered %1$s" : "Vostede restaurou %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%1$s foi eliminado permanentemente por %2$s",
+ "You permanently deleted %1$s" : "Vostede eliminou permanentemente %1$s",
+ "The password of %1$s has expired, renew it now." : "O contrasinal de %1$s caducou, renóvea agora.",
+ "%1$s has been shared with %2$s" : "%1$s foi compartido con %2$s",
+ "You received a share request for %1$s from %2$s" : "Vostede recibiu unha solicitude para compartir %1$s desde %2$s",
+ "%s has been shared with a link" : "%s foi compartido cunha ligazón",
+ "Your credential \"%s\" expired, click here to update the credential." : "A sua credencial «%s» caducou, prema aquí para actualizar a credencial.",
+ "Remind me later" : "Lembrarmo más adiante",
+ "Ignore" : "Ignorar",
+ "%s shared \"%s\" with you. Click here to accept" : "%s compartiu «%s» con vostede. Prema aquí para aceptar",
+ "%s has declined your share request for \"%s\"." : "%s declinou a súa solicitude para compartir «%s».",
+ "%s has accepted your share request for \"%s\"." : "%s aceptou a súa solicitude para compartir «%s».",
+ "Passman" : "Passman",
+ "Unable to get version info" : "Non é posíbel obter información da versión",
+ "Passman Settings" : "Axustes de Passman",
+ "A newer version of Passman is available" : "Hai dispoñíbel unha nova versión de Passman",
+ "Password sharing" : "Compartición de contrasinais",
+ "Credential mover" : "Trasladar credenciais",
+ "Vault destruction requests" : "Solicitudes para destruír bóvedas",
+ "Check for new versions" : "Verificar se hai novas versións",
+ "Enable HTTPS check" : "Activar a verificación HTTPS",
+ "Disable context menu" : "Desactivar o menú contextual",
+ "Disable JavaScript debugger" : "Desactivar o depurador JavaScript",
+ "Allow users on this server to share passwords with a link" : "Permitir aos usuarios deste servidor compartir contrasinais cunha ligazón",
+ "Allow users on this server to share passwords with other users" : "Permitir aos usuarios deste servidor compartir contrasinais con outros usuarios",
+ "Move credentials from one account to another" : "Trasladar credenciais dunha conta cara outra",
+ "Source account" : "Conta orixe",
+ "Destination account" : "Conta destino",
+ "Credentials moved!" : "Credenciais trasladadas!",
+ "Requests to destroy vault" : "Solicitudes para eliminar bóvedas",
+ "Request ID" : "ID da solicitude",
+ "Requested by" : "Solicitado por",
+ "Reason" : "Razón",
+ "Connection to server lost" : "Perdida a conexión co servidor",
+ "Problem loading page, reloading in 5 seconds" : "Produciuse un problema ao cargar a páxina, volverá cargar en 5 segundos",
+ "Saving..." : "Gardando...",
+ "Dismiss" : "Desbotar",
+ "seconds ago" : "segundos atrás"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/he.js b/l10n/he.js
new file mode 100644
index 00000000..1036eef1
--- /dev/null
+++ b/l10n/he.js
@@ -0,0 +1,235 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "ססמאות",
+ "Generating sharing keys ( %s / 2)" : "מפתחות השיתוף נוצרים ( %s / 2)",
+ "Incorrect vault password!" : "ססמת הכספת שגויה!",
+ "Passwords do not match" : "הססמאות אינן תואמות",
+ "General" : "כללי",
+ "Custom Fields" : "שדות בהתאמה אישית",
+ "Please fill in a label." : "נא למלא תווית.",
+ "Please fill in a value." : "נא למלא ערך",
+ "Error loading file" : "שגיאה בטעינת הקובץ",
+ "An error occurred during decryption" : "אירעה שגיאה במהלך הפענוח",
+ "Credential created!" : "נוצרו פרטי גישה!",
+ "Credential deleted" : "פרטי גישה נמחקו",
+ "Credential updated" : "פרטי גישה עודכנו",
+ "Credential recovered" : "פרטי גישה שוחזרו",
+ "Credential destroyed" : "פרטי גישה הושמדו",
+ "Invalid QR code" : "קוד QR שגוי",
+ "Starting export" : "הייצוא מתחיל",
+ "Decrypting credentials" : "פרטי הגישה מפוענחים",
+ "Done" : "הסתיים",
+ "Proceed with the following steps to import your file" : "יש להמשיך בצעדים הבאים כדי לייבא את הקובץ שלך",
+ "Adding {{credential}}" : "{{credential}} בהוספה",
+ "Added {{credential}}" : "{{credential}} נוסף",
+ "Importing" : "מתבצע ייבוא",
+ "Start import" : "התחלת ייבוא",
+ "Select CSV file" : "בחירת קובץ CSV",
+ "Skip first row" : "דילוג על השורה הראשונה",
+ "Revision deleted" : "מהדורה נמחקה",
+ "Revision restored" : "מהדורה שוחזרה",
+ "Save in Passman" : "שמירה ב־Passman",
+ "Settings saved" : "ההגדרות נשמרו",
+ "General settings" : "הגדרות כלליות",
+ "Password audit" : "הגדרות פיקו",
+ "Password settings" : "הגדרות ססמה",
+ "Import credentials" : "ייבוא פרטי גישה",
+ "Export credentials" : "ייצוא פרטי גישה",
+ "Sharing" : "שיתוף",
+ "Are you sure you want to leave? This will destroy all your credentials" : "לצאת? פעולה זו תהרוס את כל פרטי הגישה שלך",
+ "New password does not match!" : "הססמה החדשה לא תואמת!",
+ "Please log in with your new vault password" : "נא להיכנס עם ססמת הכספת החדשה שלך",
+ "Share with users and groups" : "שיתוף עם משתמשים וקבוצות",
+ "Share link" : "קישור לשיתוף",
+ "Are you sure you want to leave? This will corrupt this credential" : "לצאת? פעולה זו תשחית את פרטי הגישה",
+ "Saved!" : "נשמר!",
+ "Poor" : "עלובה",
+ "Weak" : "חלשה",
+ "Good" : "טובה",
+ "Strong" : "חזקה",
+ "Copy to clipboard" : "העתקה ללוח הגזירים",
+ "Copied to clipboard!" : "הועתקה ללוח הגזירים!",
+ "Generate password" : "יצירת ססמה",
+ "Copy password to clipboard" : "העתקת ססמה ללוח הגזירים",
+ "Password copied to clipboard!" : "הססמה הועתקה ללוח הגזירים!",
+ "Username" : "שם משתמש",
+ "Repeat password" : "חזרה על הססמה",
+ "Add tag" : "הוספת תגית",
+ "Pick an icon" : "נא לבחור סמל",
+ "Use this icon" : "להשתמש בסמל זה",
+ "Selected icon" : "סמל שנבחר",
+ "Field label" : "תווית שדה",
+ "Field value" : "ערך שדה",
+ "Choose a file" : "נא לבחור קובץ",
+ "Text" : "טקסט",
+ "File" : "קובץ",
+ "Add" : "הוספה",
+ "Value" : "ערך",
+ "Type" : "סוג",
+ "Actions" : "פעולות",
+ "Empty" : "ריק",
+ "Filename" : "שם קובץ",
+ "Upload date" : "תאריך העלאה",
+ "Size" : "גודל",
+ "Secret" : "סוד",
+ "Expiration date" : "תאריך תפוגה",
+ "No expiration date set" : "לא הוגדר תאריך תפוגה",
+ "Disabled" : "מושבת",
+ "Password generation settings" : "הגדרות יצירת ססמאות",
+ "Password length" : "אורך ססמה",
+ "Minimum amount of digits" : "כמות התווים המזערית",
+ "Use uppercase letters" : "שימוש באותיות גדולות",
+ "Use lowercase letters" : "שימוש באותיות קטנות",
+ "Use numbers" : "שימוש בספרות",
+ "Use special characters" : "שימוש בתווים מיוחדים",
+ "Avoid ambiguous characters" : "חסימת תווים דומים",
+ "Require every character type" : "דרישת כל סוג של תווים",
+ "Export type" : "סוג הייצוא",
+ "Export" : "ייצוא",
+ "Enter vault password to confirm export." : "נא להקליד את ססמת הכספת כדי לאשר את הייצוא.",
+ "Rename vault" : "שינוי שם כספת",
+ "New vault name" : "שם הכספת החדשה",
+ "Change" : "החלפה",
+ "Change vault key" : "החלפת מפתח הכספת",
+ "Old vault password" : "הססמה הישנה של הכספת",
+ "New vault password" : "הססמה החדשה של הכספת",
+ "Repeat new vault password" : "חזרה על ססמת הכספת החדשה",
+ "Please wait your vault is being updated, do not leave this page." : "נא להמתין בעת עדכון הכספת שלך, אין לצאת מעמוד זה.",
+ "Processing" : "מתבצע עיבוד",
+ "Total progress" : "סך כל התהליך",
+ "About Passman" : "על אודות Passman",
+ "Version" : "גרסה",
+ "Donate to support development" : "ניתן לתרום כדי לתרום בפיתוח",
+ "Delete vault" : "מחיקת כספת",
+ "Vault password" : "ססמה לכספ",
+ "This process is irreversible" : "תהליך זה אינו הפיך",
+ "Delete my precious passwords" : "מחיקת ססמתי היקרה מפז",
+ "Yes, delete my precious passwords" : "כן, למחוק את הססמאות היקרות שלי",
+ "Import" : "ייבוא",
+ "Read progress" : "תהליך קריאה",
+ "Upload progress" : "תהליך העלאה",
+ "Private Key" : "מפתח פרט",
+ "Public key" : "מפתח ציבורי",
+ "Key size" : "גודל המפתח",
+ "Save keys" : "שמירת מפתחות",
+ "Generate sharing keys" : "יצירת מפתחות שיתוף",
+ "Generating sharing keys" : "נוצרים מפתחות שיתוף",
+ "Minimum password stength" : "חוזק הססמה המזערי",
+ "Start scan" : "התחלת סריקה",
+ "Result" : "תוצאה",
+ "Score" : "ציון",
+ "Action" : "פעולה",
+ "Search users…" : "חיפוש משתמשים…",
+ "Missing users? Only users that have vaults are shown." : "חסרים משתמשים? רק משתמשים שיש להם כספת מופיעים.",
+ "User" : "משתמש",
+ "Read" : "קריאה",
+ "Write" : "כתיבה",
+ "Files" : "קבצים",
+ "Revisions" : "מהדורות",
+ "Enable link sharing" : "הפעלת שיתוף קישורים",
+ "Share until date" : "לשתף עד לתאריך",
+ "Show files" : "הצגת קבצים",
+ "Details" : "פרטים",
+ "Hide details" : "הסתרת פרטים",
+ "Password score" : "ציון ססמה",
+ "Cracking times" : "מועדי פיצוח",
+ "100 / hour" : "100 / שעה",
+ "Throttled online attack" : "תקיפה מקוונת מוגבלת",
+ "10 / second" : "10 / שנייה",
+ "Unthrottled online attack" : "תקיפה מקוונת בלתי מוגבלת",
+ "10k / second" : "10 אלפים / שנייה",
+ "Offline attack, slow hash, many cores" : "תקיפה בלתי מקוונת, גיבוב אטי, הרבה ליבות",
+ "10B / second" : "10 בתים / שנייה",
+ "Offline attack, fast hash, many cores" : "תקיפה בלתי מקוונת, גיבוב מהיר, הרבה ריבות",
+ "Pattern" : "תבנית",
+ "Dictionary name" : "שם המילון",
+ "Rank" : "דירוג",
+ "Guesses" : "ניחושים",
+ "Showing revisions of" : "הצגת מהדורות של",
+ "Revision of" : "מהדורה של",
+ "No revisions found." : "לא נמצאו מהדורות.",
+ "Label" : "תווית",
+ "Restore revision" : "שחזור מהדורה",
+ "Delete revision" : "מחיקת מהדורה",
+ "Edit credential" : "עריכת פרטי גישה",
+ "Create new credential" : "יצירת פרטי גישה",
+ "Save" : "שמירה",
+ "Cancel" : "ביטול",
+ "Settings" : "הגדרות",
+ "Share credential {{credential}}" : "שיתוף פרטי הגישה {{credential}}",
+ "Unshare" : "ביטול שיתוף",
+ "Account" : "חשבון",
+ "Password" : "ססמה",
+ "E-mail" : "דוא״ל",
+ "URL" : "כתובת",
+ "Notes" : "הערות",
+ "Expiry time" : "מועד תפוגה",
+ "Edit" : "עריכה",
+ "Delete" : "מחיקה",
+ "Share" : "שיתוף",
+ "Recover" : "שחזור",
+ "Destroy" : "השמדה",
+ "Use regex" : "שימוש בביטויים רגולריים",
+ "You have incoming share requests." : "יש לך בקשות שיתוף נכנסות.",
+ "Permissions" : "הרשאות",
+ "Received from" : "התקבל מאת",
+ "Date" : "תאריך",
+ "Accept" : "קבלה",
+ "Decline" : "דחייה",
+ "Last accessed" : "גישה אחרונה",
+ "Never" : "מעולם לא",
+ "No vaults found, why not create one?" : "לא נמצאו כספות, למה שלא ליצור אחת?",
+ "Password strength must be at least: {{strength}}" : "חוזק הססמה חייב להיות לפחות: {{strength}}",
+ "Please give your new vault a name." : "נא להעניק שם לכספת החדשה שלך.",
+ "Repeat vault password" : "חזרה על ססמת הכספת",
+ "Create vault" : "יצירת כספת",
+ "Go back to vaults" : "חזרה לכספות",
+ "Please input the password for" : "נא להכניס את הססמה עבור",
+ "Set this vault as the default." : "הגדרת כספת זו כבררת מחדל.",
+ "Log into this vault automatically." : "כניסה לכספת הזאת אוטומטית.",
+ "Log out of this vault automatically after: " : "יציאה אוטומטית מהכספת הזאת לאחר:",
+ "Decrypt vault" : "פענוח כספת",
+ "If you want this vault to be removed you can request that here." : "אם ברצונך להסיר את הכספת הזאת ניתן לבקש זאת כאן.",
+ "Reason for requesting deletion (optional):" : "סיבת בקשת המחיקה (רשות):",
+ "Request vault destruction" : "בקשת השמדת כספת",
+ "Cancel destruction request" : "ביטול בקשת השמדה",
+ "Vault destruction requested" : "התקבלה בקשה להשמדת כספת",
+ "Request removed" : "בקשה הוסרה",
+ "Change vault" : "החלפת כספת",
+ "Logout" : "יציאה",
+ "Donate" : "תרומה",
+ "Click here to request it" : "יש ללחוץ כאן כדי לבקש זאת",
+ "Loading…" : "בטעינה…",
+ "Error while saving field" : "אירעה שגיאה במהלך שמירת השדה",
+ "Remind me later" : "להזכיר לי מאוחר יותר",
+ "Ignore" : "להתעלם",
+ "Passman Settings" : "הגדרות Passman",
+ "GitHub version:" : "גרסת GitHub:",
+ "A newer version of Passman is available" : "קיימת גרסה חדשה של Passman",
+ "Password sharing" : "שיתוף ססמאות",
+ "Credential mover" : "מעביר פרטי גישה",
+ "Vault destruction requests" : "בקשות להשמדת כספת",
+ "Check for new versions" : "בדיקה לאיתור גרסאות חדשות",
+ "Enable HTTPS check" : "הפעלת בדיקת HTTPS",
+ "Disable context menu" : "השבתת תפריט הקשר",
+ "Disable JavaScript debugger" : "השבתת מנפה שגיאות JavaScript",
+ "Allow users on this server to share passwords with a link" : "לאפשר למשתמשים בשרת זה לשתף ססמאות עם קישור",
+ "Allow users on this server to share passwords with other users" : "לאפשר למשתמשים בשרת זה לשתף ססמאות עם משתמשים אחרים",
+ "Move credentials from one account to another" : "להעביר פרטי גישה מחשבון אחד לאחר",
+ "Source account" : "חשבון מקור",
+ "Destination account" : "חשבון יעד",
+ "Credentials moved!" : "פרטי הגישה הועברו!",
+ "Requests to destroy vault" : "בקשות להשמדת כספת",
+ "Request ID" : "מזהה בקשה",
+ "Requested by" : "הבקשה הוגשה ע״י",
+ "Reason" : "סיבה",
+ "Click here to request\n\t\t\t\t\tit" : "נא ללחוץ כאן כדי\n\t\t\tלבקש זאת",
+ "Loading&hellip;" : "בטעינה&hellip;",
+ "Connection to server lost" : "החיבור לשרת אבד",
+ "Problem loading page, reloading in 5 seconds" : "אירעה שגיאה בעת טעינת העמוד, יתרענן בעוד 5 שניות",
+ "Saving..." : "מתבצעת שמירה…",
+ "Dismiss" : "התעלמות",
+ "seconds ago" : "לפני מספר שניות"
+},
+"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;");
diff --git a/l10n/he.json b/l10n/he.json
new file mode 100644
index 00000000..f24a4154
--- /dev/null
+++ b/l10n/he.json
@@ -0,0 +1,233 @@
+{ "translations": {
+ "Passwords" : "ססמאות",
+ "Generating sharing keys ( %s / 2)" : "מפתחות השיתוף נוצרים ( %s / 2)",
+ "Incorrect vault password!" : "ססמת הכספת שגויה!",
+ "Passwords do not match" : "הססמאות אינן תואמות",
+ "General" : "כללי",
+ "Custom Fields" : "שדות בהתאמה אישית",
+ "Please fill in a label." : "נא למלא תווית.",
+ "Please fill in a value." : "נא למלא ערך",
+ "Error loading file" : "שגיאה בטעינת הקובץ",
+ "An error occurred during decryption" : "אירעה שגיאה במהלך הפענוח",
+ "Credential created!" : "נוצרו פרטי גישה!",
+ "Credential deleted" : "פרטי גישה נמחקו",
+ "Credential updated" : "פרטי גישה עודכנו",
+ "Credential recovered" : "פרטי גישה שוחזרו",
+ "Credential destroyed" : "פרטי גישה הושמדו",
+ "Invalid QR code" : "קוד QR שגוי",
+ "Starting export" : "הייצוא מתחיל",
+ "Decrypting credentials" : "פרטי הגישה מפוענחים",
+ "Done" : "הסתיים",
+ "Proceed with the following steps to import your file" : "יש להמשיך בצעדים הבאים כדי לייבא את הקובץ שלך",
+ "Adding {{credential}}" : "{{credential}} בהוספה",
+ "Added {{credential}}" : "{{credential}} נוסף",
+ "Importing" : "מתבצע ייבוא",
+ "Start import" : "התחלת ייבוא",
+ "Select CSV file" : "בחירת קובץ CSV",
+ "Skip first row" : "דילוג על השורה הראשונה",
+ "Revision deleted" : "מהדורה נמחקה",
+ "Revision restored" : "מהדורה שוחזרה",
+ "Save in Passman" : "שמירה ב־Passman",
+ "Settings saved" : "ההגדרות נשמרו",
+ "General settings" : "הגדרות כלליות",
+ "Password audit" : "הגדרות פיקו",
+ "Password settings" : "הגדרות ססמה",
+ "Import credentials" : "ייבוא פרטי גישה",
+ "Export credentials" : "ייצוא פרטי גישה",
+ "Sharing" : "שיתוף",
+ "Are you sure you want to leave? This will destroy all your credentials" : "לצאת? פעולה זו תהרוס את כל פרטי הגישה שלך",
+ "New password does not match!" : "הססמה החדשה לא תואמת!",
+ "Please log in with your new vault password" : "נא להיכנס עם ססמת הכספת החדשה שלך",
+ "Share with users and groups" : "שיתוף עם משתמשים וקבוצות",
+ "Share link" : "קישור לשיתוף",
+ "Are you sure you want to leave? This will corrupt this credential" : "לצאת? פעולה זו תשחית את פרטי הגישה",
+ "Saved!" : "נשמר!",
+ "Poor" : "עלובה",
+ "Weak" : "חלשה",
+ "Good" : "טובה",
+ "Strong" : "חזקה",
+ "Copy to clipboard" : "העתקה ללוח הגזירים",
+ "Copied to clipboard!" : "הועתקה ללוח הגזירים!",
+ "Generate password" : "יצירת ססמה",
+ "Copy password to clipboard" : "העתקת ססמה ללוח הגזירים",
+ "Password copied to clipboard!" : "הססמה הועתקה ללוח הגזירים!",
+ "Username" : "שם משתמש",
+ "Repeat password" : "חזרה על הססמה",
+ "Add tag" : "הוספת תגית",
+ "Pick an icon" : "נא לבחור סמל",
+ "Use this icon" : "להשתמש בסמל זה",
+ "Selected icon" : "סמל שנבחר",
+ "Field label" : "תווית שדה",
+ "Field value" : "ערך שדה",
+ "Choose a file" : "נא לבחור קובץ",
+ "Text" : "טקסט",
+ "File" : "קובץ",
+ "Add" : "הוספה",
+ "Value" : "ערך",
+ "Type" : "סוג",
+ "Actions" : "פעולות",
+ "Empty" : "ריק",
+ "Filename" : "שם קובץ",
+ "Upload date" : "תאריך העלאה",
+ "Size" : "גודל",
+ "Secret" : "סוד",
+ "Expiration date" : "תאריך תפוגה",
+ "No expiration date set" : "לא הוגדר תאריך תפוגה",
+ "Disabled" : "מושבת",
+ "Password generation settings" : "הגדרות יצירת ססמאות",
+ "Password length" : "אורך ססמה",
+ "Minimum amount of digits" : "כמות התווים המזערית",
+ "Use uppercase letters" : "שימוש באותיות גדולות",
+ "Use lowercase letters" : "שימוש באותיות קטנות",
+ "Use numbers" : "שימוש בספרות",
+ "Use special characters" : "שימוש בתווים מיוחדים",
+ "Avoid ambiguous characters" : "חסימת תווים דומים",
+ "Require every character type" : "דרישת כל סוג של תווים",
+ "Export type" : "סוג הייצוא",
+ "Export" : "ייצוא",
+ "Enter vault password to confirm export." : "נא להקליד את ססמת הכספת כדי לאשר את הייצוא.",
+ "Rename vault" : "שינוי שם כספת",
+ "New vault name" : "שם הכספת החדשה",
+ "Change" : "החלפה",
+ "Change vault key" : "החלפת מפתח הכספת",
+ "Old vault password" : "הססמה הישנה של הכספת",
+ "New vault password" : "הססמה החדשה של הכספת",
+ "Repeat new vault password" : "חזרה על ססמת הכספת החדשה",
+ "Please wait your vault is being updated, do not leave this page." : "נא להמתין בעת עדכון הכספת שלך, אין לצאת מעמוד זה.",
+ "Processing" : "מתבצע עיבוד",
+ "Total progress" : "סך כל התהליך",
+ "About Passman" : "על אודות Passman",
+ "Version" : "גרסה",
+ "Donate to support development" : "ניתן לתרום כדי לתרום בפיתוח",
+ "Delete vault" : "מחיקת כספת",
+ "Vault password" : "ססמה לכספ",
+ "This process is irreversible" : "תהליך זה אינו הפיך",
+ "Delete my precious passwords" : "מחיקת ססמתי היקרה מפז",
+ "Yes, delete my precious passwords" : "כן, למחוק את הססמאות היקרות שלי",
+ "Import" : "ייבוא",
+ "Read progress" : "תהליך קריאה",
+ "Upload progress" : "תהליך העלאה",
+ "Private Key" : "מפתח פרט",
+ "Public key" : "מפתח ציבורי",
+ "Key size" : "גודל המפתח",
+ "Save keys" : "שמירת מפתחות",
+ "Generate sharing keys" : "יצירת מפתחות שיתוף",
+ "Generating sharing keys" : "נוצרים מפתחות שיתוף",
+ "Minimum password stength" : "חוזק הססמה המזערי",
+ "Start scan" : "התחלת סריקה",
+ "Result" : "תוצאה",
+ "Score" : "ציון",
+ "Action" : "פעולה",
+ "Search users…" : "חיפוש משתמשים…",
+ "Missing users? Only users that have vaults are shown." : "חסרים משתמשים? רק משתמשים שיש להם כספת מופיעים.",
+ "User" : "משתמש",
+ "Read" : "קריאה",
+ "Write" : "כתיבה",
+ "Files" : "קבצים",
+ "Revisions" : "מהדורות",
+ "Enable link sharing" : "הפעלת שיתוף קישורים",
+ "Share until date" : "לשתף עד לתאריך",
+ "Show files" : "הצגת קבצים",
+ "Details" : "פרטים",
+ "Hide details" : "הסתרת פרטים",
+ "Password score" : "ציון ססמה",
+ "Cracking times" : "מועדי פיצוח",
+ "100 / hour" : "100 / שעה",
+ "Throttled online attack" : "תקיפה מקוונת מוגבלת",
+ "10 / second" : "10 / שנייה",
+ "Unthrottled online attack" : "תקיפה מקוונת בלתי מוגבלת",
+ "10k / second" : "10 אלפים / שנייה",
+ "Offline attack, slow hash, many cores" : "תקיפה בלתי מקוונת, גיבוב אטי, הרבה ליבות",
+ "10B / second" : "10 בתים / שנייה",
+ "Offline attack, fast hash, many cores" : "תקיפה בלתי מקוונת, גיבוב מהיר, הרבה ריבות",
+ "Pattern" : "תבנית",
+ "Dictionary name" : "שם המילון",
+ "Rank" : "דירוג",
+ "Guesses" : "ניחושים",
+ "Showing revisions of" : "הצגת מהדורות של",
+ "Revision of" : "מהדורה של",
+ "No revisions found." : "לא נמצאו מהדורות.",
+ "Label" : "תווית",
+ "Restore revision" : "שחזור מהדורה",
+ "Delete revision" : "מחיקת מהדורה",
+ "Edit credential" : "עריכת פרטי גישה",
+ "Create new credential" : "יצירת פרטי גישה",
+ "Save" : "שמירה",
+ "Cancel" : "ביטול",
+ "Settings" : "הגדרות",
+ "Share credential {{credential}}" : "שיתוף פרטי הגישה {{credential}}",
+ "Unshare" : "ביטול שיתוף",
+ "Account" : "חשבון",
+ "Password" : "ססמה",
+ "E-mail" : "דוא״ל",
+ "URL" : "כתובת",
+ "Notes" : "הערות",
+ "Expiry time" : "מועד תפוגה",
+ "Edit" : "עריכה",
+ "Delete" : "מחיקה",
+ "Share" : "שיתוף",
+ "Recover" : "שחזור",
+ "Destroy" : "השמדה",
+ "Use regex" : "שימוש בביטויים רגולריים",
+ "You have incoming share requests." : "יש לך בקשות שיתוף נכנסות.",
+ "Permissions" : "הרשאות",
+ "Received from" : "התקבל מאת",
+ "Date" : "תאריך",
+ "Accept" : "קבלה",
+ "Decline" : "דחייה",
+ "Last accessed" : "גישה אחרונה",
+ "Never" : "מעולם לא",
+ "No vaults found, why not create one?" : "לא נמצאו כספות, למה שלא ליצור אחת?",
+ "Password strength must be at least: {{strength}}" : "חוזק הססמה חייב להיות לפחות: {{strength}}",
+ "Please give your new vault a name." : "נא להעניק שם לכספת החדשה שלך.",
+ "Repeat vault password" : "חזרה על ססמת הכספת",
+ "Create vault" : "יצירת כספת",
+ "Go back to vaults" : "חזרה לכספות",
+ "Please input the password for" : "נא להכניס את הססמה עבור",
+ "Set this vault as the default." : "הגדרת כספת זו כבררת מחדל.",
+ "Log into this vault automatically." : "כניסה לכספת הזאת אוטומטית.",
+ "Log out of this vault automatically after: " : "יציאה אוטומטית מהכספת הזאת לאחר:",
+ "Decrypt vault" : "פענוח כספת",
+ "If you want this vault to be removed you can request that here." : "אם ברצונך להסיר את הכספת הזאת ניתן לבקש זאת כאן.",
+ "Reason for requesting deletion (optional):" : "סיבת בקשת המחיקה (רשות):",
+ "Request vault destruction" : "בקשת השמדת כספת",
+ "Cancel destruction request" : "ביטול בקשת השמדה",
+ "Vault destruction requested" : "התקבלה בקשה להשמדת כספת",
+ "Request removed" : "בקשה הוסרה",
+ "Change vault" : "החלפת כספת",
+ "Logout" : "יציאה",
+ "Donate" : "תרומה",
+ "Click here to request it" : "יש ללחוץ כאן כדי לבקש זאת",
+ "Loading…" : "בטעינה…",
+ "Error while saving field" : "אירעה שגיאה במהלך שמירת השדה",
+ "Remind me later" : "להזכיר לי מאוחר יותר",
+ "Ignore" : "להתעלם",
+ "Passman Settings" : "הגדרות Passman",
+ "GitHub version:" : "גרסת GitHub:",
+ "A newer version of Passman is available" : "קיימת גרסה חדשה של Passman",
+ "Password sharing" : "שיתוף ססמאות",
+ "Credential mover" : "מעביר פרטי גישה",
+ "Vault destruction requests" : "בקשות להשמדת כספת",
+ "Check for new versions" : "בדיקה לאיתור גרסאות חדשות",
+ "Enable HTTPS check" : "הפעלת בדיקת HTTPS",
+ "Disable context menu" : "השבתת תפריט הקשר",
+ "Disable JavaScript debugger" : "השבתת מנפה שגיאות JavaScript",
+ "Allow users on this server to share passwords with a link" : "לאפשר למשתמשים בשרת זה לשתף ססמאות עם קישור",
+ "Allow users on this server to share passwords with other users" : "לאפשר למשתמשים בשרת זה לשתף ססמאות עם משתמשים אחרים",
+ "Move credentials from one account to another" : "להעביר פרטי גישה מחשבון אחד לאחר",
+ "Source account" : "חשבון מקור",
+ "Destination account" : "חשבון יעד",
+ "Credentials moved!" : "פרטי הגישה הועברו!",
+ "Requests to destroy vault" : "בקשות להשמדת כספת",
+ "Request ID" : "מזהה בקשה",
+ "Requested by" : "הבקשה הוגשה ע״י",
+ "Reason" : "סיבה",
+ "Click here to request\n\t\t\t\t\tit" : "נא ללחוץ כאן כדי\n\t\t\tלבקש זאת",
+ "Loading&hellip;" : "בטעינה&hellip;",
+ "Connection to server lost" : "החיבור לשרת אבד",
+ "Problem loading page, reloading in 5 seconds" : "אירעה שגיאה בעת טעינת העמוד, יתרענן בעוד 5 שניות",
+ "Saving..." : "מתבצעת שמירה…",
+ "Dismiss" : "התעלמות",
+ "seconds ago" : "לפני מספר שניות"
+},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
+} \ No newline at end of file
diff --git a/l10n/hu.js b/l10n/hu.js
index e12d2b62..402422ee 100644
--- a/l10n/hu.js
+++ b/l10n/hu.js
@@ -2,12 +2,15 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Jelszavak",
- "Generating sharing keys ( %step / 2)" : "Megosztási kulcsok generálása ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Megosztási kulcsok generálása ( %s / 2)",
"Incorrect vault password!" : "Érvénytelen széf jelszó!",
"Passwords do not match" : "A jelszavak nem egyeznek",
"General" : "Általános",
"Custom Fields" : "Egyéni mezők",
+ "Please fill in a label." : "Kérlek tölts ki egy címkét.",
+ "Please fill in a value." : "Kérlek töltsd ki egy értéket.",
"Error loading file" : "Hiba a fájl betöltésekor",
+ "An error occurred during decryption" : "Hiba a visszafejtéskor",
"Credential created!" : "Azonosító létrehozva!",
"Credential deleted" : "Azonosító törölve",
"Credential updated" : "Azonosító frissítve",
@@ -17,22 +20,35 @@ OC.L10N.register(
"Starting export" : "Exportálás kezdése",
"Decrypting credentials" : "Azonosítók visszafejtése",
"Done" : "Kész",
- "Credential has no label, skipping" : "Címke nélküli azonosító, kihagyás",
+ "Proceed with the following steps to import your file" : "A következő lépések végrehajtása a fájl importálásához",
"Adding {{credential}}" : "Hozzáadás: {{credential}}",
"Added {{credential}}" : "Hozzáadva: {{credential}}",
+ "Skipping credential, missing label on line {{line}}" : "Hitelesítőadat kihagyása, hiányzó címke a {{line}} sorban",
"Parsed {{num}} credentials, starting to import" : "{{num}} azonosító feldolgozva, importálás megkezdése",
"Importing" : "Importálás",
"Start import" : "Importálás elindítása",
+ "Select CSV file" : "Válassz CSV fájlt",
+ "Parsed {{rows}} lines from CSV file" : "{{rows}} sor feldolgozva a CSV-ből",
"Skip first row" : "Első sor kihagyása",
+ "You need to assign the label field before you can start the import." : "Meg kell adnod egy címke mezőt az importálás előtt.",
+ "The first 5 lines of the CSV are shown." : "A CSV első 5 sorát mutatjuk.",
+ "Assign the proper fields to each column." : "Rendeld a megfelelő mezőket az oszlopokhoz.",
+ "Example of imported credential" : "Példa az importált hitelesítőadatokból",
+ "Missing an importer? Try it with the generic CSV importer." : "Hiányzik egy importer? Próbáld ki az általános CSV betöltőt.",
+ "Go back to importers." : "Vissza az importálókhoz.",
"Revision deleted" : "Változat törölve",
"Revision restored" : "Változat visszaállítva",
+ "Save in Passman" : "Mentés Passmanba",
"Settings saved" : "Beállítások elmentve",
"General settings" : "Általános beállítások",
+ "Password audit" : "Jelszó audit",
"Password settings" : "Jelszó beállítások",
"Import credentials" : "Azonosítók importálása",
"Export credentials" : "Azonosítók eyportálása",
"Sharing" : "Megosztás",
- "Your old password is incorrect!" : "A régi jelszavad nem megfelelő!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Biztosan el akarsz menni? Ez törli az összes hitelesítőadatodat",
+ "New password does not match!" : "Új jelszó nem egyezik meg!",
+ "Please log in with your new vault password" : "Kérlek jelentkezz be a széf jelszavaddal",
"Share with users and groups" : "Megosztás felhasználókkal és csoportokkal",
"Share link" : "Megosztás hivatkozással",
"Are you sure you want to leave? This will corrupt this credential" : "Biztos, hogy el akarsz menni? Ez tönkre fogja tenni az azonosítót",
@@ -52,6 +68,10 @@ OC.L10N.register(
"Complete" : "Befejezve",
"Username" : "Felhasználónév",
"Repeat password" : "Jelszó ismétlés",
+ "Add tag" : "Címke hozzáadás",
+ "Pick an icon" : "Válassz ikont",
+ "Use this icon" : "Ikon használata",
+ "Selected icon" : "Ikon kiválasztva",
"Field label" : "Mező címke",
"Field value" : "Mező érték",
"Choose a file" : "Válassz egy fájlt",
@@ -65,8 +85,12 @@ OC.L10N.register(
"Filename" : "Fájlnév",
"Upload date" : "Feltöltés dátuma",
"Size" : "Méret",
+ "Upload or enter your OTP secret" : "Töltsd fel vagy írd be az OTP titkodat",
+ "Current OTP settings" : "Jelenlegi OTP beállítások",
"Issuer" : "Kibocsátó",
"Secret" : "Titok",
+ "Expiration date" : "Lejárati idő",
+ "No expiration date set" : "Nincs lejárat beállítva",
"Renew interval" : "Megújítási időköz",
"Disabled" : "Letiltva",
"Day(s)" : "Nap",
@@ -84,12 +108,14 @@ OC.L10N.register(
"Require every character type" : "Minden karakter típus mekövetelése",
"Export type" : "Exportálás típusa",
"Export" : "Exportálás",
+ "Enter vault password to confirm export." : "Add meg a széf jelszavadat az exportálás megerősítéséhez",
"Rename vault" : "Széf átnevezése",
"New vault name" : "Új széf név",
"Change" : "Módosít",
"Change vault key" : "Széf kulcs módosítás",
"Old vault password" : "Régi széf jelszó",
"New vault password" : "Új széf jelszó",
+ "Repeat new vault password" : "Ismételd meg az új széf jelszót",
"Please wait your vault is being updated, do not leave this page." : "Kérlek várj amíg frissül a széfed, ne hagyd el ezt az oldalt.",
"Processing" : "Feldolgozás",
"Total progress" : "Teljes folyamat",
@@ -97,26 +123,35 @@ OC.L10N.register(
"Version" : "Verzió",
"Donate to support development" : "Adományozás a fejlesztés támogatásához",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Mentsd el a jelszavaidat 1 kattintással!",
"Drag below button to your bookmark toolbar." : "Húzd az alábbi gombot a könyvjelző eszköztáradra.",
+ "Delete vault" : "Széf törlése",
+ "Vault password" : "Széf jelszó",
+ "This process is irreversible" : "Ez a folyamat nem visszafordítható",
+ "Delete my precious passwords" : "Korábbi jelszavaim törlése",
+ "Deleting {{password}}…" : "{{password}} törlése…",
"Yes, delete my precious passwords" : "Igen, töröld az értékes jelszavam",
"Import type" : "Importálás típusa",
"Import" : "Importálás",
"Read progress" : "Olvasási folyamat",
"Upload progress" : "Feltöltési folyamat",
- "Private Key" : "Privát kulcs",
+ "Private Key" : "Titkos kulcs",
"Public key" : "Nyilvános kulcs",
"Key size" : "Kulcs méret",
"Save keys" : "Kulcsok mentése",
"Generate sharing keys" : "Megosztási kulcsok létrehozása",
"Generating sharing keys" : "Megosztási kulcsok létrehozása",
"Minimum password stength" : "Minimális jelszó hossz",
+ "Start scan" : "Szkennelés kezdése",
+ "Result" : "Eredmények",
+ "A total of {{scan_result}} weak credentials were found." : "Összesen {{scan_result}} gyenge hitelesítő adatot találtam.",
"Score" : "Pontszám",
"Action" : "Művelet",
+ "Search users…" : "Felhasználók keresése…",
+ "Missing users? Only users that have vaults are shown." : "Hiányzó felhasználók? Csak a széffel rendelkező felhasználókat mutatjuk.",
"Cyphering" : "Rejtjelezés",
"Uploading" : "Feltöltés",
"User" : "Felhasználó",
- "Total time spent cyphering" : "Rejtjelezéssel töltött összes iső",
+ "Crypto time" : "Titkosítási idő",
"Read" : "Olvasás",
"Write" : "Írás",
"Files" : "Fájlok",
@@ -131,19 +166,49 @@ OC.L10N.register(
"Password score" : "Jelszó pontszám",
"Cracking times" : "Feltörési idők",
"100 / hour" : "100 / óra",
+ "Throttled online attack" : "Fojtott online támadás",
"10 / second" : "10 / másodperc",
+ "Unthrottled online attack" : "Fojtatlan online támadás",
"10k / second" : "10k / másodperc",
+ "Offline attack, slow hash, many cores" : "Offline támadás, lassú hash, sok mag",
"10B / second" : "10B / másodperc",
+ "Offline attack, fast hash, many cores" : "Offline támadás, gyors hash, sok mag",
+ "Match sequence" : "Egyeztetési sorrend",
+ "See match sequence" : "Egyeztetési sorrend megtekintése",
"Pattern" : "Minta",
+ "Matched word" : "Egyeztetett szó",
+ "Dictionary name" : "Szótárnév",
+ "Rank" : "Rang",
+ "Reversed" : "Fordított",
+ "Guesses" : "Tippek",
+ "Base guesses" : "Alap tippek",
+ "Uppercase variations" : "Nagybetűs változatok",
+ "l33t-variations" : "l33t variációk",
+ "Showing revisions of" : "A következő felülvizsgálatainak mutatása:",
+ "Revision of" : "Felülvizsgálata ennek",
+ "by" : "által",
+ "No revisions found." : "Nincsenek felülvizsgálatok.",
"Label" : "Címke",
+ "Restore revision" : "Felülvizsgálat visszaállítása",
+ "Delete revision" : "Felülvizsgálat törlése",
+ "Edit credential" : "Hitelesítőadatok szerkesztése",
+ "Create new credential" : "Hitelesítőadat létrehozása",
"Save" : "Mentés",
"Cancel" : "Mégsem",
"Settings" : "Beállítások",
+ "Share credential {{credential}}" : "{{credential}} hitelesítőadat megosztása",
+ "Unshare" : "Megosztás visszavonása",
+ "Showing deleted since" : "Azóta töröltek mutatása",
+ "Beginning" : "Kezdet",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "{{number_filtered}} mutatása {{credential_number}} hitelesítőadatból",
+ "Search for credential…" : "Hitelesítőadat keresése",
"Account" : "Fiók",
"Password" : "Jelszó",
+ "OTP" : "OTP",
"E-mail" : "E-mail",
"URL" : "Hivatkozás",
"Notes" : "Megjegyzés",
+ "Expiry time" : "Lejárati idő",
"Changed" : "Megváltoztatva",
"Created" : "Létrehozva",
"Edit" : "Szerkesztés",
@@ -151,14 +216,50 @@ OC.L10N.register(
"Share" : "Megosztás",
"Recover" : "Visszaállítás",
"Destroy" : "Elpusztítás",
+ "Use regex" : "Regex használata",
+ "You have incoming share requests." : "Bejövő megosztási kérésed van",
+ "If you want to put the credential in another vault," : "Ha másik széfbe akarod tenni a hitelesítőadatot,",
"Permissions" : "Jogosultságok",
+ "Received from" : "Fogadva tőle:",
"Date" : "Dátum",
"Accept" : "Elfogadás",
"Decline" : "Elutasít",
+ "You have {{session_time}} left before logout." : "Ennyi időd maradt a kijelentkezésig: {{session_time}}.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "{{time}} időre zároltuk a fiókodat, mert {{tries}} sikertelen próbálkozásod volt!",
"Last accessed" : "Utoljára hozzáférve",
"Never" : "Soha",
+ "No vaults found, why not create one?" : "Nincsenek széfek, miért nem hozol létre egyet?",
+ "Password strength must be at least: {{strength}}" : "A jelszóerősség minimum ennyi kell legyen: {{strength}}",
+ "Please give your new vault a name." : "Kérlek add meg az új széfed nevét.",
+ "Repeat vault password" : "Ismételd meg a széf jelszót",
+ "Create vault" : "Széf létrehozása",
+ "Go back to vaults" : "Vissza a széfekhez",
+ "Please input the password for" : "Kérlek add meg a jelszavad ehhez:",
+ "Set this vault as the default." : "Ez legyen az alapértelmezett széf.",
+ "Log into this vault automatically." : "Automatikus bejelentkezés ebbe a széfbe.",
+ "Log out of this vault automatically after: " : "Automatikusan jelentkezzen ki ebből a széfből ennyi idő után:",
+ "Decrypt vault" : "Széf viszafejtése",
+ "Seems you lost the vault password and you're unable to log in." : "Úgy tűnik elvesztetted a széfjelszavad így nem tudsz bejelentkezni.",
+ "If you want this vault to be removed you can request that here." : "Ha el akarod távolítani ezt a széfet később kérvényezheted.",
+ "An admin then accepts or declines the request" : "Egy rendszergazda aki elfogadhatja vagy elutasíthatja a kérést",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Ha egy rendszergazda törli ezt a széfet minden hitelesítőadat megsemmisül benne",
+ "Reason for requesting deletion (optional):" : "Törlési kérvény oka (nem kötelező):",
+ "Request vault destruction" : "Széftörlés kérése",
+ "Yes, request an admin to destroy this vault" : "Igen, megkérek egy rendszergazdát a széf törlésére",
+ "Cancel destruction request" : "Törlési kérvény visszavonása",
+ "Vault destruction requested" : "Széftörlési kérvény",
+ "Request removed" : "Kérvény törölve",
+ "Destruction request pending" : "Törlési kérvény függőben",
+ "Warning! Adding credentials over HTTP is insecure!" : "Figyelem! Hitelesítőadatok hozzáadása HTTP-n keresztül veszélyes!",
+ "Change vault" : "Széf váltás",
+ "Deleted credentials" : "Hitelesítőadatok törlése",
"Logout" : "Kijelentkezés",
"Donate" : "Adományozás",
+ "Someone has shared a credential with you." : "Valaki hitelesítőadatokat osztott meg veled.",
+ "Click here to request it" : "Kattints ide a kérvényezéshez",
+ "Loading…" : "Betöltés…",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh… nincs hitelesítőadat. Talán lejárt",
+ "Error while saving field" : "Hiba a mező mentésekor",
"A Passman item has been created, modified or deleted" : "Egy Jelszókezelő elem létrehozva, módosítva vagy törölve",
"A Passman item has expired" : "Egy Jelszókezelő elem lejárt",
"A Passman item has been shared" : "Egy Jelszókezelő elem megosztva",
@@ -167,6 +268,8 @@ OC.L10N.register(
"You created %1$s" : "Létrehoztad: %1$s",
"%1$s has been updated by %2$s" : "%1$s frissítve lett %2$s által",
"You updated %1$s" : "Frissítetted: %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s felülvizsgálta %1$s a %3$s felülvizsgálatát",
+ "You reverted %1$s back to the revision of %3$s" : "Visszaállítottad %1$s erre a revízióra: %3$s",
"%3$s has renamed %1$s to %2$s" : "%3$s átnevezte ezt: %1$s erre: %2$s",
"You renamed %1$s to %2$s" : "Átnevezted ezt: %1$s erre: %2$s",
"%1$s has been deleted by %2$s" : "%1$s törölve lett %2$s által",
@@ -185,9 +288,29 @@ OC.L10N.register(
"%s shared \"%s\" with you. Click here to accept" : "%s megosztotta veled ezt: \"%s\". Kattints ide az elfogadáshoz",
"%s has declined your share request for \"%s\"." : "%s elutasította \"%s\" megosztási kérésedet.",
"%s has accepted your share request for \"%s\"." : "%s elfogadta \"%s\" megosztási kérésedet.",
+ "Passman" : "Passman",
+ "Unable to get version info" : "Verzióinformáció nem elérhető",
+ "Passman Settings" : "Passman beállítások",
+ "GitHub version:" : "GitHub verzió:",
+ "A newer version of Passman is available" : "Új Passman verzió elérhető",
"Password sharing" : "Jelszómegosztás",
+ "Credential mover" : "Hitelesítőadat mozgató",
+ "Vault destruction requests" : "Széftörlési kérések",
+ "Check for new versions" : "Új verzió keresése",
"Enable HTTPS check" : "HTTPS ellenőrzés engedélyezése",
+ "Disable context menu" : "Helyimenü tiltsa",
+ "Disable JavaScript debugger" : "JavaScript hibakereső tiltása",
+ "Allow users on this server to share passwords with a link" : "A szerver felhasználói számára a jelszavak linkkel való megosztásának engedélyezése",
+ "Allow users on this server to share passwords with other users" : "A szerver felhasználói számára a jelszavak másokkal való megosztásának engedélyezése",
+ "Move credentials from one account to another" : "Hitelesítő adatok mozgatása egyik fiókból egy másikba",
+ "Source account" : "Forrás fiók",
+ "Destination account" : "Cél fiók",
+ "Credentials moved!" : "Hitelesítőadatok átmozgatva!",
+ "Requests to destroy vault" : "Széftörlés kérvényezések",
+ "Request ID" : "Kérvény azonosító",
+ "Requested by" : "Kérvényező:",
"Reason" : "Indok",
+ "Click here to request\n\t\t\t\t\tit" : "Kattints ide a kérvényezéshez\n\t\t\t\t\t",
"Connection to server lost" : "Megszakadt a kapcsolat a szerverrel",
"Problem loading page, reloading in 5 seconds" : "Probléma adódott az oldal betöltése közben, újratöltés 5 másodpercen belül",
"Saving..." : "Mentés...",
diff --git a/l10n/hu.json b/l10n/hu.json
index b1b5d617..1cae2beb 100644
--- a/l10n/hu.json
+++ b/l10n/hu.json
@@ -1,11 +1,14 @@
{ "translations": {
"Passwords" : "Jelszavak",
- "Generating sharing keys ( %step / 2)" : "Megosztási kulcsok generálása ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Megosztási kulcsok generálása ( %s / 2)",
"Incorrect vault password!" : "Érvénytelen széf jelszó!",
"Passwords do not match" : "A jelszavak nem egyeznek",
"General" : "Általános",
"Custom Fields" : "Egyéni mezők",
+ "Please fill in a label." : "Kérlek tölts ki egy címkét.",
+ "Please fill in a value." : "Kérlek töltsd ki egy értéket.",
"Error loading file" : "Hiba a fájl betöltésekor",
+ "An error occurred during decryption" : "Hiba a visszafejtéskor",
"Credential created!" : "Azonosító létrehozva!",
"Credential deleted" : "Azonosító törölve",
"Credential updated" : "Azonosító frissítve",
@@ -15,22 +18,35 @@
"Starting export" : "Exportálás kezdése",
"Decrypting credentials" : "Azonosítók visszafejtése",
"Done" : "Kész",
- "Credential has no label, skipping" : "Címke nélküli azonosító, kihagyás",
+ "Proceed with the following steps to import your file" : "A következő lépések végrehajtása a fájl importálásához",
"Adding {{credential}}" : "Hozzáadás: {{credential}}",
"Added {{credential}}" : "Hozzáadva: {{credential}}",
+ "Skipping credential, missing label on line {{line}}" : "Hitelesítőadat kihagyása, hiányzó címke a {{line}} sorban",
"Parsed {{num}} credentials, starting to import" : "{{num}} azonosító feldolgozva, importálás megkezdése",
"Importing" : "Importálás",
"Start import" : "Importálás elindítása",
+ "Select CSV file" : "Válassz CSV fájlt",
+ "Parsed {{rows}} lines from CSV file" : "{{rows}} sor feldolgozva a CSV-ből",
"Skip first row" : "Első sor kihagyása",
+ "You need to assign the label field before you can start the import." : "Meg kell adnod egy címke mezőt az importálás előtt.",
+ "The first 5 lines of the CSV are shown." : "A CSV első 5 sorát mutatjuk.",
+ "Assign the proper fields to each column." : "Rendeld a megfelelő mezőket az oszlopokhoz.",
+ "Example of imported credential" : "Példa az importált hitelesítőadatokból",
+ "Missing an importer? Try it with the generic CSV importer." : "Hiányzik egy importer? Próbáld ki az általános CSV betöltőt.",
+ "Go back to importers." : "Vissza az importálókhoz.",
"Revision deleted" : "Változat törölve",
"Revision restored" : "Változat visszaállítva",
+ "Save in Passman" : "Mentés Passmanba",
"Settings saved" : "Beállítások elmentve",
"General settings" : "Általános beállítások",
+ "Password audit" : "Jelszó audit",
"Password settings" : "Jelszó beállítások",
"Import credentials" : "Azonosítók importálása",
"Export credentials" : "Azonosítók eyportálása",
"Sharing" : "Megosztás",
- "Your old password is incorrect!" : "A régi jelszavad nem megfelelő!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Biztosan el akarsz menni? Ez törli az összes hitelesítőadatodat",
+ "New password does not match!" : "Új jelszó nem egyezik meg!",
+ "Please log in with your new vault password" : "Kérlek jelentkezz be a széf jelszavaddal",
"Share with users and groups" : "Megosztás felhasználókkal és csoportokkal",
"Share link" : "Megosztás hivatkozással",
"Are you sure you want to leave? This will corrupt this credential" : "Biztos, hogy el akarsz menni? Ez tönkre fogja tenni az azonosítót",
@@ -50,6 +66,10 @@
"Complete" : "Befejezve",
"Username" : "Felhasználónév",
"Repeat password" : "Jelszó ismétlés",
+ "Add tag" : "Címke hozzáadás",
+ "Pick an icon" : "Válassz ikont",
+ "Use this icon" : "Ikon használata",
+ "Selected icon" : "Ikon kiválasztva",
"Field label" : "Mező címke",
"Field value" : "Mező érték",
"Choose a file" : "Válassz egy fájlt",
@@ -63,8 +83,12 @@
"Filename" : "Fájlnév",
"Upload date" : "Feltöltés dátuma",
"Size" : "Méret",
+ "Upload or enter your OTP secret" : "Töltsd fel vagy írd be az OTP titkodat",
+ "Current OTP settings" : "Jelenlegi OTP beállítások",
"Issuer" : "Kibocsátó",
"Secret" : "Titok",
+ "Expiration date" : "Lejárati idő",
+ "No expiration date set" : "Nincs lejárat beállítva",
"Renew interval" : "Megújítási időköz",
"Disabled" : "Letiltva",
"Day(s)" : "Nap",
@@ -82,12 +106,14 @@
"Require every character type" : "Minden karakter típus mekövetelése",
"Export type" : "Exportálás típusa",
"Export" : "Exportálás",
+ "Enter vault password to confirm export." : "Add meg a széf jelszavadat az exportálás megerősítéséhez",
"Rename vault" : "Széf átnevezése",
"New vault name" : "Új széf név",
"Change" : "Módosít",
"Change vault key" : "Széf kulcs módosítás",
"Old vault password" : "Régi széf jelszó",
"New vault password" : "Új széf jelszó",
+ "Repeat new vault password" : "Ismételd meg az új széf jelszót",
"Please wait your vault is being updated, do not leave this page." : "Kérlek várj amíg frissül a széfed, ne hagyd el ezt az oldalt.",
"Processing" : "Feldolgozás",
"Total progress" : "Teljes folyamat",
@@ -95,26 +121,35 @@
"Version" : "Verzió",
"Donate to support development" : "Adományozás a fejlesztés támogatásához",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Mentsd el a jelszavaidat 1 kattintással!",
"Drag below button to your bookmark toolbar." : "Húzd az alábbi gombot a könyvjelző eszköztáradra.",
+ "Delete vault" : "Széf törlése",
+ "Vault password" : "Széf jelszó",
+ "This process is irreversible" : "Ez a folyamat nem visszafordítható",
+ "Delete my precious passwords" : "Korábbi jelszavaim törlése",
+ "Deleting {{password}}…" : "{{password}} törlése…",
"Yes, delete my precious passwords" : "Igen, töröld az értékes jelszavam",
"Import type" : "Importálás típusa",
"Import" : "Importálás",
"Read progress" : "Olvasási folyamat",
"Upload progress" : "Feltöltési folyamat",
- "Private Key" : "Privát kulcs",
+ "Private Key" : "Titkos kulcs",
"Public key" : "Nyilvános kulcs",
"Key size" : "Kulcs méret",
"Save keys" : "Kulcsok mentése",
"Generate sharing keys" : "Megosztási kulcsok létrehozása",
"Generating sharing keys" : "Megosztási kulcsok létrehozása",
"Minimum password stength" : "Minimális jelszó hossz",
+ "Start scan" : "Szkennelés kezdése",
+ "Result" : "Eredmények",
+ "A total of {{scan_result}} weak credentials were found." : "Összesen {{scan_result}} gyenge hitelesítő adatot találtam.",
"Score" : "Pontszám",
"Action" : "Művelet",
+ "Search users…" : "Felhasználók keresése…",
+ "Missing users? Only users that have vaults are shown." : "Hiányzó felhasználók? Csak a széffel rendelkező felhasználókat mutatjuk.",
"Cyphering" : "Rejtjelezés",
"Uploading" : "Feltöltés",
"User" : "Felhasználó",
- "Total time spent cyphering" : "Rejtjelezéssel töltött összes iső",
+ "Crypto time" : "Titkosítási idő",
"Read" : "Olvasás",
"Write" : "Írás",
"Files" : "Fájlok",
@@ -129,19 +164,49 @@
"Password score" : "Jelszó pontszám",
"Cracking times" : "Feltörési idők",
"100 / hour" : "100 / óra",
+ "Throttled online attack" : "Fojtott online támadás",
"10 / second" : "10 / másodperc",
+ "Unthrottled online attack" : "Fojtatlan online támadás",
"10k / second" : "10k / másodperc",
+ "Offline attack, slow hash, many cores" : "Offline támadás, lassú hash, sok mag",
"10B / second" : "10B / másodperc",
+ "Offline attack, fast hash, many cores" : "Offline támadás, gyors hash, sok mag",
+ "Match sequence" : "Egyeztetési sorrend",
+ "See match sequence" : "Egyeztetési sorrend megtekintése",
"Pattern" : "Minta",
+ "Matched word" : "Egyeztetett szó",
+ "Dictionary name" : "Szótárnév",
+ "Rank" : "Rang",
+ "Reversed" : "Fordított",
+ "Guesses" : "Tippek",
+ "Base guesses" : "Alap tippek",
+ "Uppercase variations" : "Nagybetűs változatok",
+ "l33t-variations" : "l33t variációk",
+ "Showing revisions of" : "A következő felülvizsgálatainak mutatása:",
+ "Revision of" : "Felülvizsgálata ennek",
+ "by" : "által",
+ "No revisions found." : "Nincsenek felülvizsgálatok.",
"Label" : "Címke",
+ "Restore revision" : "Felülvizsgálat visszaállítása",
+ "Delete revision" : "Felülvizsgálat törlése",
+ "Edit credential" : "Hitelesítőadatok szerkesztése",
+ "Create new credential" : "Hitelesítőadat létrehozása",
"Save" : "Mentés",
"Cancel" : "Mégsem",
"Settings" : "Beállítások",
+ "Share credential {{credential}}" : "{{credential}} hitelesítőadat megosztása",
+ "Unshare" : "Megosztás visszavonása",
+ "Showing deleted since" : "Azóta töröltek mutatása",
+ "Beginning" : "Kezdet",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "{{number_filtered}} mutatása {{credential_number}} hitelesítőadatból",
+ "Search for credential…" : "Hitelesítőadat keresése",
"Account" : "Fiók",
"Password" : "Jelszó",
+ "OTP" : "OTP",
"E-mail" : "E-mail",
"URL" : "Hivatkozás",
"Notes" : "Megjegyzés",
+ "Expiry time" : "Lejárati idő",
"Changed" : "Megváltoztatva",
"Created" : "Létrehozva",
"Edit" : "Szerkesztés",
@@ -149,14 +214,50 @@
"Share" : "Megosztás",
"Recover" : "Visszaállítás",
"Destroy" : "Elpusztítás",
+ "Use regex" : "Regex használata",
+ "You have incoming share requests." : "Bejövő megosztási kérésed van",
+ "If you want to put the credential in another vault," : "Ha másik széfbe akarod tenni a hitelesítőadatot,",
"Permissions" : "Jogosultságok",
+ "Received from" : "Fogadva tőle:",
"Date" : "Dátum",
"Accept" : "Elfogadás",
"Decline" : "Elutasít",
+ "You have {{session_time}} left before logout." : "Ennyi időd maradt a kijelentkezésig: {{session_time}}.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "{{time}} időre zároltuk a fiókodat, mert {{tries}} sikertelen próbálkozásod volt!",
"Last accessed" : "Utoljára hozzáférve",
"Never" : "Soha",
+ "No vaults found, why not create one?" : "Nincsenek széfek, miért nem hozol létre egyet?",
+ "Password strength must be at least: {{strength}}" : "A jelszóerősség minimum ennyi kell legyen: {{strength}}",
+ "Please give your new vault a name." : "Kérlek add meg az új széfed nevét.",
+ "Repeat vault password" : "Ismételd meg a széf jelszót",
+ "Create vault" : "Széf létrehozása",
+ "Go back to vaults" : "Vissza a széfekhez",
+ "Please input the password for" : "Kérlek add meg a jelszavad ehhez:",
+ "Set this vault as the default." : "Ez legyen az alapértelmezett széf.",
+ "Log into this vault automatically." : "Automatikus bejelentkezés ebbe a széfbe.",
+ "Log out of this vault automatically after: " : "Automatikusan jelentkezzen ki ebből a széfből ennyi idő után:",
+ "Decrypt vault" : "Széf viszafejtése",
+ "Seems you lost the vault password and you're unable to log in." : "Úgy tűnik elvesztetted a széfjelszavad így nem tudsz bejelentkezni.",
+ "If you want this vault to be removed you can request that here." : "Ha el akarod távolítani ezt a széfet később kérvényezheted.",
+ "An admin then accepts or declines the request" : "Egy rendszergazda aki elfogadhatja vagy elutasíthatja a kérést",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Ha egy rendszergazda törli ezt a széfet minden hitelesítőadat megsemmisül benne",
+ "Reason for requesting deletion (optional):" : "Törlési kérvény oka (nem kötelező):",
+ "Request vault destruction" : "Széftörlés kérése",
+ "Yes, request an admin to destroy this vault" : "Igen, megkérek egy rendszergazdát a széf törlésére",
+ "Cancel destruction request" : "Törlési kérvény visszavonása",
+ "Vault destruction requested" : "Széftörlési kérvény",
+ "Request removed" : "Kérvény törölve",
+ "Destruction request pending" : "Törlési kérvény függőben",
+ "Warning! Adding credentials over HTTP is insecure!" : "Figyelem! Hitelesítőadatok hozzáadása HTTP-n keresztül veszélyes!",
+ "Change vault" : "Széf váltás",
+ "Deleted credentials" : "Hitelesítőadatok törlése",
"Logout" : "Kijelentkezés",
"Donate" : "Adományozás",
+ "Someone has shared a credential with you." : "Valaki hitelesítőadatokat osztott meg veled.",
+ "Click here to request it" : "Kattints ide a kérvényezéshez",
+ "Loading…" : "Betöltés…",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh… nincs hitelesítőadat. Talán lejárt",
+ "Error while saving field" : "Hiba a mező mentésekor",
"A Passman item has been created, modified or deleted" : "Egy Jelszókezelő elem létrehozva, módosítva vagy törölve",
"A Passman item has expired" : "Egy Jelszókezelő elem lejárt",
"A Passman item has been shared" : "Egy Jelszókezelő elem megosztva",
@@ -165,6 +266,8 @@
"You created %1$s" : "Létrehoztad: %1$s",
"%1$s has been updated by %2$s" : "%1$s frissítve lett %2$s által",
"You updated %1$s" : "Frissítetted: %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s felülvizsgálta %1$s a %3$s felülvizsgálatát",
+ "You reverted %1$s back to the revision of %3$s" : "Visszaállítottad %1$s erre a revízióra: %3$s",
"%3$s has renamed %1$s to %2$s" : "%3$s átnevezte ezt: %1$s erre: %2$s",
"You renamed %1$s to %2$s" : "Átnevezted ezt: %1$s erre: %2$s",
"%1$s has been deleted by %2$s" : "%1$s törölve lett %2$s által",
@@ -183,9 +286,29 @@
"%s shared \"%s\" with you. Click here to accept" : "%s megosztotta veled ezt: \"%s\". Kattints ide az elfogadáshoz",
"%s has declined your share request for \"%s\"." : "%s elutasította \"%s\" megosztási kérésedet.",
"%s has accepted your share request for \"%s\"." : "%s elfogadta \"%s\" megosztási kérésedet.",
+ "Passman" : "Passman",
+ "Unable to get version info" : "Verzióinformáció nem elérhető",
+ "Passman Settings" : "Passman beállítások",
+ "GitHub version:" : "GitHub verzió:",
+ "A newer version of Passman is available" : "Új Passman verzió elérhető",
"Password sharing" : "Jelszómegosztás",
+ "Credential mover" : "Hitelesítőadat mozgató",
+ "Vault destruction requests" : "Széftörlési kérések",
+ "Check for new versions" : "Új verzió keresése",
"Enable HTTPS check" : "HTTPS ellenőrzés engedélyezése",
+ "Disable context menu" : "Helyimenü tiltsa",
+ "Disable JavaScript debugger" : "JavaScript hibakereső tiltása",
+ "Allow users on this server to share passwords with a link" : "A szerver felhasználói számára a jelszavak linkkel való megosztásának engedélyezése",
+ "Allow users on this server to share passwords with other users" : "A szerver felhasználói számára a jelszavak másokkal való megosztásának engedélyezése",
+ "Move credentials from one account to another" : "Hitelesítő adatok mozgatása egyik fiókból egy másikba",
+ "Source account" : "Forrás fiók",
+ "Destination account" : "Cél fiók",
+ "Credentials moved!" : "Hitelesítőadatok átmozgatva!",
+ "Requests to destroy vault" : "Széftörlés kérvényezések",
+ "Request ID" : "Kérvény azonosító",
+ "Requested by" : "Kérvényező:",
"Reason" : "Indok",
+ "Click here to request\n\t\t\t\t\tit" : "Kattints ide a kérvényezéshez\n\t\t\t\t\t",
"Connection to server lost" : "Megszakadt a kapcsolat a szerverrel",
"Problem loading page, reloading in 5 seconds" : "Probléma adódott az oldal betöltése közben, újratöltés 5 másodpercen belül",
"Saving..." : "Mentés...",
diff --git a/l10n/is.js b/l10n/is.js
index afdb2150..f6718e2a 100644
--- a/l10n/is.js
+++ b/l10n/is.js
@@ -2,22 +2,27 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Lykilorð",
- "Generating sharing keys ( %step / 2)" : "Útbý deilingarlykla ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Útbý deilingarlykla ( %s / 2)",
"Incorrect vault password!" : "Rangt lykilorð fyrir lykilorðageymslu!",
"Passwords do not match" : "Lykilorðin stemma ekki",
"General" : "Almennt",
"Custom Fields" : "Sérsniðnir reitir",
+ "Please fill in a label." : "Fylltu út skýringu.",
+ "Please fill in a value." : "Fylltu út gildi.",
"Error loading file" : "Villa við að hlaða inn skrá",
+ "An error occurred during decryption" : "Villa kom upp við afkóðun",
"Credential created!" : "Bjó til auðkenni!",
"Credential deleted" : "Eyddi auðkennum",
"Credential updated" : "Uppfærði auðkenni",
"Credential recovered" : "Endurheimti auðkenni",
"Credential destroyed" : "Eyðilagði auðkenni",
+ "Error downloading file, you probably have insufficient permissions" : "Villa við að sækja skrá, þú hefur líklega ekki nægar aðgangsheimildir",
"Invalid QR code" : "Ógildur QR-kóði",
"Starting export" : "Hef útflutning",
"Decrypting credentials" : "Afkóða auðkenni",
"Done" : "Lokið",
- "Credential has no label, skipping" : "Auðkennið er ekki með neina skýringu, sleppi því",
+ "File read." : "Skrá lesin.",
+ "Proceed with the following steps to import your file" : "Fylgdu eftirfarandi þrepum til að flytja inn skrána þína",
"Adding {{credential}}" : "Bæti við {{credential}}",
"Added {{credential}}" : "Bætti við {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Sleppi auðkenni, vantar skýringu á línu {{line}}",
@@ -28,18 +33,25 @@ OC.L10N.register(
"Parsed {{rows}} lines from CSV file" : "Þáttaði {{rows}} línur úr CSV-skrá",
"Skip first row" : "Sleppti fyrstu röð",
"You need to assign the label field before you can start the import." : "Þú þarft að setja inn skýringu á gagnasviðið áður en þú getur hafið innflutning.",
+ "The first 5 lines of the CSV are shown." : "Fyrstu5 línur CSV-skrárinnar eru sýndar.",
"Assign the proper fields to each column." : "Úthlutaðu réttum gagnasviðum á hvern dálk.",
+ "Example of imported credential" : "Dæmi um innflutt auðkenni",
"Missing an importer? Try it with the generic CSV importer." : "Vantar innflutningsskriftu? Prófaðu með almennu CSV-innflutningsskriftunni.",
"Go back to importers." : "Fara aftur í innflutningsskriftur.",
"Revision deleted" : "Útgáfu eytt",
"Revision restored" : "Útgáfa endurheimt",
+ "Save in Passman" : "Vista í Passman",
"Settings saved" : "Stillingar vistaðar",
"General settings" : "Almennar stillingar",
+ "Password audit" : "Athugun á lykilorði",
"Password settings" : "Stillingar lykilorðs",
"Import credentials" : "Flytja inn auðkenni",
"Export credentials" : "Flytja út auðkenni",
"Sharing" : "Deiling",
- "Your old password is incorrect!" : "Gamla lykilorðið þitt er ekki rétt!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Ertu viss um að þú viljir fara? Þetta mun skemma öll auðkennin þín",
+ "Old password field incorrect!" : "Gamli lykilorðareiturinn er ekki réttur!",
+ "New password does not match!" : "Nýju lykilorðin stemma ekki!",
+ "Please log in with your new vault password" : "Skráðu þig inn í lykilorðageymslu með nýja lykilorðinu",
"Share with users and groups" : "Deila með notendum og hópum",
"Share link" : "Deila tengli",
"Are you sure you want to leave? This will corrupt this credential" : "Ertu viss um að þú viljir fara? Þetta mun skemma þessi auðkenni",
@@ -59,6 +71,10 @@ OC.L10N.register(
"Complete" : "Fullklárað",
"Username" : "Notandanafn",
"Repeat password" : "Endurtaktu lykilorð",
+ "Add tag" : "Bæta við merki",
+ "Pick an icon" : "Veldu táknmynd",
+ "Use this icon" : "Nota þessa táknmynd",
+ "Selected icon" : "Valin táknmynd",
"Field label" : "Skýring gagnasviðs",
"Field value" : "Gildi gagnasviðs",
"Choose a file" : "Veldu skrá",
@@ -76,6 +92,8 @@ OC.L10N.register(
"Current OTP settings" : "Núverandi ESL-stillingar",
"Issuer" : "Útgefandi",
"Secret" : "Leyndarmál",
+ "Expiration date" : "Gildir til",
+ "No expiration date set" : "Engin dagsetning fyrir gildistíma er sett",
"Renew interval" : "Millibil endurnýjunar",
"Disabled" : "Óvirkt",
"Day(s)" : "dag(a)",
@@ -100,6 +118,7 @@ OC.L10N.register(
"Change vault key" : "Breyta lykli á lykilorðageymslu",
"Old vault password" : "Eldra lykilorð lykilorðageymslu",
"New vault password" : "Nýtt lykilorð lykilorðageymslu",
+ "Repeat new vault password" : "Endurtaktu nýtt lykilorð lykilorðageymslu",
"Please wait your vault is being updated, do not leave this page." : "Bíddu á meðan lykilorðageymslan þín er uppfærð, ekki fara af þessari síðu.",
"Processing" : "Í vinnslu",
"Total progress" : "Heildarframvinda",
@@ -107,12 +126,13 @@ OC.L10N.register(
"Version" : "Útgáfunúmer",
"Donate to support development" : "Gefa til að styðja áframhaldandi þróun",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Vistaðu lykilorðin þín með 1 smelli!",
+ "Save your passwords with one click." : "Vistaðu lykilorðin þín með einum smelli.",
"Drag below button to your bookmark toolbar." : "Dragðu hnappinn hér fyrir neðan á bókamerkjastikuna þína.",
"Delete vault" : "Eyða lykilorðageymslu",
"Vault password" : "Lykilorð lykilorðageymslu",
"This process is irreversible" : "Þetta ferli er ekki hægt að afturkalla",
"Delete my precious passwords" : "Eyða dýrmætu lykilorðunum mínum",
+ "Deleting {{password}}…" : "Eyði {{password}}…",
"Yes, delete my precious passwords" : "Já, eyða dýrmætu lykilorðunum mínum",
"Import type" : "Tegund innflutnings",
"Import" : "Flytja inn",
@@ -124,19 +144,20 @@ OC.L10N.register(
"Save keys" : "Vista lykla",
"Generate sharing keys" : "Útbúa deilingarlykla",
"Generating sharing keys" : "Útbý deilingarlykla",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Lykilorðatólið mun skanna lykilorðið þitt, reikna meðaltímann sem tæki að ráða það, og birta lista yfir það sem er neðan við ákveðin mörk",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Lykilorðatólið skannar lykilorðið þitt, reiknar meðaltímann sem tæki að ráða það, og birtir lista yfir það sem er neðan við ákveðin mörk",
"Minimum password stength" : "Lágmarksstyrkur lykilorðs",
"Start scan" : "Hefja skönnun",
"Result" : "Niðurstöður",
"A total of {{scan_result}} weak credentials were found." : "Alls fundust {{scan_result}} veik auðkenni.",
"Score" : "Einkunn",
"Action" : "Aðgerð",
+ "Search users…" : "Leita að notendum…",
"Missing users? Only users that have vaults are shown." : "Vantar notendur? Aðeins eru birtir notendur sem hafa lykilorðageymslur.",
"Cyphering" : "Dulkóðun",
"Uploading" : "Sendi inn ",
"User" : "Notandi",
"Crypto time" : "Afkóðunartími",
- "Total time spent cyphering" : "Heildartími sem þurfti við afkóðun",
+ "Total time spent encrypting" : "Heildartími sem þurfti við dulritun",
"Read" : "Lesa",
"Write" : "Skrifa",
"Files" : "Skrár",
@@ -145,6 +166,7 @@ OC.L10N.register(
"Enable link sharing" : "Virkja deilingu með tengli",
"Share until date" : "Deila þangað til",
"Expire after views" : "Rennur út eftir n skoðanir",
+ "Click \\\"Share\\\" first" : "Smelltu fyrst á \\\"Deila\"\\",
"Show files" : "Sýna skrár",
"Details" : "Nánar",
"Hide details" : "Fela nánari upplýsingar",
@@ -184,13 +206,16 @@ OC.L10N.register(
"Share credential {{credential}}" : "Deila auðkennum {{credential}}",
"Unshare" : "Hætta deilingu",
"Showing deleted since" : "Sýni eytt síðan",
+ "Beginning" : "Upphaf",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Birti {{number_filtered}} af {{credential_number}} auðkennum",
+ "Search for credential…" : "Leita að auðkennum…",
"Account" : "Aðgangur",
"Password" : "Lykilorð",
"OTP" : "ESL (eins-skiptis-leyniorð)",
"E-mail" : "Tölvupóstur",
"URL" : "Slóð (URL)",
"Notes" : "Minnispunktar",
+ "Expiry time" : "Rennur út",
"Changed" : "Breytt",
"Created" : "Búið til",
"Edit" : "Breyta",
@@ -200,6 +225,8 @@ OC.L10N.register(
"Destroy" : "Eyðileggja",
"Use regex" : "Nota reglulega segð",
"You have incoming share requests." : "Þú hefur fengið beiðnir um deilingu.",
+ "If you want to put the credential in another vault," : "Ef þú vilt geyma auðkennin í annarri lykilorðageymslu,",
+ "log out of this vault and log into the vault you want the shared credential in." : "skráðu þig út úr þessari lykilorðageymslu og skráðu þig inn í þá sem þú vilt geyma sameiginlegu auðkennin í.",
"Permissions" : "Heimildir",
"Received from" : "Barst frá",
"Date" : "Dagsetning",
@@ -216,22 +243,31 @@ OC.L10N.register(
"Create vault" : "Búa til lykilorðageymslu",
"Go back to vaults" : "Fara aftur í lykilorðageymslur",
"Please input the password for" : "Settu inn lykilorðið fyrir",
+ "Set this vault as the default." : "Setja þessa lykilorðageymslu sem sjálfgefna.",
"Log into this vault automatically." : "Skrá sjálfvirkt inn í þessa lykilorðageymslu.",
+ "Log out of this vault automatically after: " : "Skrá sjálfvirkt út úr þessari lykilorðageymslu eftir: ",
"Decrypt vault" : "Afkóða lykilorðageymslu",
+ "Seems you lost the vault password and you're unable to log in." : "Það lítur út eins og þú hafir tapað lykilorðinu fyrir lykilorðageymsluna og getir ekki skráð þig inn.",
"If you want this vault to be removed you can request that here." : "Ef þú vilt að þessi lykilorðageymsla verði fjarlægð, geturðu beðið um það hér.",
+ "An admin then accepts or declines the request" : "Kerfisstjóri mun síðan samþykkja beiðnina (eða ekki)",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Eftir að kerfisstjóri eyðir þessari lykilorðageymslu, munu öll auðkenni tapast",
+ "Reason for requesting deletion (optional):" : "Ástæða fyrir beiðni um eyðingu (valfrjálst):",
"Request vault destruction" : "Biðja um eyðingu á lykilorðageymslu",
"Yes, request an admin to destroy this vault" : "Já, biðja kerfisstjóra að eyða þessari lykilorðageymslu",
"Cancel destruction request" : "Hætta við beiðni um eyðileggingu",
"Vault destruction requested" : "Beðið um eyðingu á lykilorðageymslu",
"Request removed" : "Beiðni fjarlægð",
"Destruction request pending" : "Beiðni um eyðileggingu er í biðröð",
- "Logged in to {{vault_name}}" : "Skráður inn í {{vault_name}}",
+ "Warning! Adding credentials over HTTP is insecure!" : "Aðvörun! Að bæta auðkennum við yfir HTTP getur verið óöruggt!",
+ "Logged into {{vault_name}}" : "Skráður inn í {{vault_name}}",
"Change vault" : "Skipta um lykilorðageymslu",
"Deleted credentials" : "Eydd auðkenni",
"Logout" : "Útskráning",
"Donate" : "Styrkja",
"Someone has shared a credential with you." : "Einhver hefur deilt auðkennum með þér.",
"Click here to request it" : "Smelltu hér til að biðja um það",
+ "Loading…" : "Hleð inn…",
+ "Awwhh… credential not found. Maybe it expired" : "Æjæjæ... auðkenni fundust ekki. Kannski þau séu útrunnin",
"Error while saving field" : "Villa kom upp við að vista gagnasvið",
"A Passman item has been created, modified or deleted" : "Passman atriði hefur verið búið til, breytt eða eytt",
"A Passman item has expired" : "Passman atriði er útrunnið",
@@ -262,8 +298,11 @@ OC.L10N.register(
"%s has declined your share request for \"%s\"." : "%s hafnaði beiðni þinni um deilingu á \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s samþykkti beiðni þína um deilingu á \"%s\".",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman er fullbúin lykilorðastýring.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman er fullbúin lykilorðastýring.\nEiginleikar:\n- Lykilorðageymslur\n- Lykill á lykilorðageymslu er aldrei sendur á vefþjón\n- Viðbót fyrir vafra sem veitir einfaldan aðgang að lykilorðum\n- Android-forrit fyrir aðgang úti á mörkinni\n- Auðkenni eru dulrituð á tækinu með 256-bita AES\n- Auðkenni eru dulrituð á vefþjóni með 256-bita AES\n- Hægt er að bæta sérniðnum gagnasviðum við auðkenni\n- Innbyggð gerð OTP (One Time Password) lykilorða\n- Greining lykilorða\n- Öruggar leiðir til að deila lykilorðum innvært og með sendum tenglum.\n- Innflutningur úr ýmsum lykilorðastýringum (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nTil að skoða dæmi um forritið skaltu heimsækja [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Gat ekki náð í upplýsingar um útgáfu",
"Passman Settings" : "Stillingar Passman",
+ "GitHub version:" : "Útgáfa Github:",
"A newer version of Passman is available" : "Nýrri útgáfa Passman er tiltæk",
"Password sharing" : "Deiling lykilorða",
"Credential mover" : "Tilfærsla auðkenna",
@@ -282,6 +321,10 @@ OC.L10N.register(
"Request ID" : "Auðkenni beiðnar",
"Requested by" : "Umbeðið af",
"Reason" : "Ástæða",
+ "Click here to request\n\t\t\t\t\tit" : "Smelltu hér til að biðja um\n\t\t\t\t\tþað",
+ "Loading&hellip;" : "Hleð inn&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Æjæjæ... auðkenni fundust ekki. Kannski þau séu útrunnin?",
+ "Expires:" : "Gildir til:",
"Connection to server lost" : "Tenging við þjón rofnaði",
"Problem loading page, reloading in 5 seconds" : "Vandamál við að hlaða inn síðu, endurhleð eftir 5 sekúndur",
"Saving..." : "Er að vista ...",
diff --git a/l10n/is.json b/l10n/is.json
index cc8ee441..56e2b3c1 100644
--- a/l10n/is.json
+++ b/l10n/is.json
@@ -1,21 +1,26 @@
{ "translations": {
"Passwords" : "Lykilorð",
- "Generating sharing keys ( %step / 2)" : "Útbý deilingarlykla ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Útbý deilingarlykla ( %s / 2)",
"Incorrect vault password!" : "Rangt lykilorð fyrir lykilorðageymslu!",
"Passwords do not match" : "Lykilorðin stemma ekki",
"General" : "Almennt",
"Custom Fields" : "Sérsniðnir reitir",
+ "Please fill in a label." : "Fylltu út skýringu.",
+ "Please fill in a value." : "Fylltu út gildi.",
"Error loading file" : "Villa við að hlaða inn skrá",
+ "An error occurred during decryption" : "Villa kom upp við afkóðun",
"Credential created!" : "Bjó til auðkenni!",
"Credential deleted" : "Eyddi auðkennum",
"Credential updated" : "Uppfærði auðkenni",
"Credential recovered" : "Endurheimti auðkenni",
"Credential destroyed" : "Eyðilagði auðkenni",
+ "Error downloading file, you probably have insufficient permissions" : "Villa við að sækja skrá, þú hefur líklega ekki nægar aðgangsheimildir",
"Invalid QR code" : "Ógildur QR-kóði",
"Starting export" : "Hef útflutning",
"Decrypting credentials" : "Afkóða auðkenni",
"Done" : "Lokið",
- "Credential has no label, skipping" : "Auðkennið er ekki með neina skýringu, sleppi því",
+ "File read." : "Skrá lesin.",
+ "Proceed with the following steps to import your file" : "Fylgdu eftirfarandi þrepum til að flytja inn skrána þína",
"Adding {{credential}}" : "Bæti við {{credential}}",
"Added {{credential}}" : "Bætti við {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Sleppi auðkenni, vantar skýringu á línu {{line}}",
@@ -26,18 +31,25 @@
"Parsed {{rows}} lines from CSV file" : "Þáttaði {{rows}} línur úr CSV-skrá",
"Skip first row" : "Sleppti fyrstu röð",
"You need to assign the label field before you can start the import." : "Þú þarft að setja inn skýringu á gagnasviðið áður en þú getur hafið innflutning.",
+ "The first 5 lines of the CSV are shown." : "Fyrstu5 línur CSV-skrárinnar eru sýndar.",
"Assign the proper fields to each column." : "Úthlutaðu réttum gagnasviðum á hvern dálk.",
+ "Example of imported credential" : "Dæmi um innflutt auðkenni",
"Missing an importer? Try it with the generic CSV importer." : "Vantar innflutningsskriftu? Prófaðu með almennu CSV-innflutningsskriftunni.",
"Go back to importers." : "Fara aftur í innflutningsskriftur.",
"Revision deleted" : "Útgáfu eytt",
"Revision restored" : "Útgáfa endurheimt",
+ "Save in Passman" : "Vista í Passman",
"Settings saved" : "Stillingar vistaðar",
"General settings" : "Almennar stillingar",
+ "Password audit" : "Athugun á lykilorði",
"Password settings" : "Stillingar lykilorðs",
"Import credentials" : "Flytja inn auðkenni",
"Export credentials" : "Flytja út auðkenni",
"Sharing" : "Deiling",
- "Your old password is incorrect!" : "Gamla lykilorðið þitt er ekki rétt!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Ertu viss um að þú viljir fara? Þetta mun skemma öll auðkennin þín",
+ "Old password field incorrect!" : "Gamli lykilorðareiturinn er ekki réttur!",
+ "New password does not match!" : "Nýju lykilorðin stemma ekki!",
+ "Please log in with your new vault password" : "Skráðu þig inn í lykilorðageymslu með nýja lykilorðinu",
"Share with users and groups" : "Deila með notendum og hópum",
"Share link" : "Deila tengli",
"Are you sure you want to leave? This will corrupt this credential" : "Ertu viss um að þú viljir fara? Þetta mun skemma þessi auðkenni",
@@ -57,6 +69,10 @@
"Complete" : "Fullklárað",
"Username" : "Notandanafn",
"Repeat password" : "Endurtaktu lykilorð",
+ "Add tag" : "Bæta við merki",
+ "Pick an icon" : "Veldu táknmynd",
+ "Use this icon" : "Nota þessa táknmynd",
+ "Selected icon" : "Valin táknmynd",
"Field label" : "Skýring gagnasviðs",
"Field value" : "Gildi gagnasviðs",
"Choose a file" : "Veldu skrá",
@@ -74,6 +90,8 @@
"Current OTP settings" : "Núverandi ESL-stillingar",
"Issuer" : "Útgefandi",
"Secret" : "Leyndarmál",
+ "Expiration date" : "Gildir til",
+ "No expiration date set" : "Engin dagsetning fyrir gildistíma er sett",
"Renew interval" : "Millibil endurnýjunar",
"Disabled" : "Óvirkt",
"Day(s)" : "dag(a)",
@@ -98,6 +116,7 @@
"Change vault key" : "Breyta lykli á lykilorðageymslu",
"Old vault password" : "Eldra lykilorð lykilorðageymslu",
"New vault password" : "Nýtt lykilorð lykilorðageymslu",
+ "Repeat new vault password" : "Endurtaktu nýtt lykilorð lykilorðageymslu",
"Please wait your vault is being updated, do not leave this page." : "Bíddu á meðan lykilorðageymslan þín er uppfærð, ekki fara af þessari síðu.",
"Processing" : "Í vinnslu",
"Total progress" : "Heildarframvinda",
@@ -105,12 +124,13 @@
"Version" : "Útgáfunúmer",
"Donate to support development" : "Gefa til að styðja áframhaldandi þróun",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Vistaðu lykilorðin þín með 1 smelli!",
+ "Save your passwords with one click." : "Vistaðu lykilorðin þín með einum smelli.",
"Drag below button to your bookmark toolbar." : "Dragðu hnappinn hér fyrir neðan á bókamerkjastikuna þína.",
"Delete vault" : "Eyða lykilorðageymslu",
"Vault password" : "Lykilorð lykilorðageymslu",
"This process is irreversible" : "Þetta ferli er ekki hægt að afturkalla",
"Delete my precious passwords" : "Eyða dýrmætu lykilorðunum mínum",
+ "Deleting {{password}}…" : "Eyði {{password}}…",
"Yes, delete my precious passwords" : "Já, eyða dýrmætu lykilorðunum mínum",
"Import type" : "Tegund innflutnings",
"Import" : "Flytja inn",
@@ -122,19 +142,20 @@
"Save keys" : "Vista lykla",
"Generate sharing keys" : "Útbúa deilingarlykla",
"Generating sharing keys" : "Útbý deilingarlykla",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Lykilorðatólið mun skanna lykilorðið þitt, reikna meðaltímann sem tæki að ráða það, og birta lista yfir það sem er neðan við ákveðin mörk",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Lykilorðatólið skannar lykilorðið þitt, reiknar meðaltímann sem tæki að ráða það, og birtir lista yfir það sem er neðan við ákveðin mörk",
"Minimum password stength" : "Lágmarksstyrkur lykilorðs",
"Start scan" : "Hefja skönnun",
"Result" : "Niðurstöður",
"A total of {{scan_result}} weak credentials were found." : "Alls fundust {{scan_result}} veik auðkenni.",
"Score" : "Einkunn",
"Action" : "Aðgerð",
+ "Search users…" : "Leita að notendum…",
"Missing users? Only users that have vaults are shown." : "Vantar notendur? Aðeins eru birtir notendur sem hafa lykilorðageymslur.",
"Cyphering" : "Dulkóðun",
"Uploading" : "Sendi inn ",
"User" : "Notandi",
"Crypto time" : "Afkóðunartími",
- "Total time spent cyphering" : "Heildartími sem þurfti við afkóðun",
+ "Total time spent encrypting" : "Heildartími sem þurfti við dulritun",
"Read" : "Lesa",
"Write" : "Skrifa",
"Files" : "Skrár",
@@ -143,6 +164,7 @@
"Enable link sharing" : "Virkja deilingu með tengli",
"Share until date" : "Deila þangað til",
"Expire after views" : "Rennur út eftir n skoðanir",
+ "Click \\\"Share\\\" first" : "Smelltu fyrst á \\\"Deila\"\\",
"Show files" : "Sýna skrár",
"Details" : "Nánar",
"Hide details" : "Fela nánari upplýsingar",
@@ -182,13 +204,16 @@
"Share credential {{credential}}" : "Deila auðkennum {{credential}}",
"Unshare" : "Hætta deilingu",
"Showing deleted since" : "Sýni eytt síðan",
+ "Beginning" : "Upphaf",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Birti {{number_filtered}} af {{credential_number}} auðkennum",
+ "Search for credential…" : "Leita að auðkennum…",
"Account" : "Aðgangur",
"Password" : "Lykilorð",
"OTP" : "ESL (eins-skiptis-leyniorð)",
"E-mail" : "Tölvupóstur",
"URL" : "Slóð (URL)",
"Notes" : "Minnispunktar",
+ "Expiry time" : "Rennur út",
"Changed" : "Breytt",
"Created" : "Búið til",
"Edit" : "Breyta",
@@ -198,6 +223,8 @@
"Destroy" : "Eyðileggja",
"Use regex" : "Nota reglulega segð",
"You have incoming share requests." : "Þú hefur fengið beiðnir um deilingu.",
+ "If you want to put the credential in another vault," : "Ef þú vilt geyma auðkennin í annarri lykilorðageymslu,",
+ "log out of this vault and log into the vault you want the shared credential in." : "skráðu þig út úr þessari lykilorðageymslu og skráðu þig inn í þá sem þú vilt geyma sameiginlegu auðkennin í.",
"Permissions" : "Heimildir",
"Received from" : "Barst frá",
"Date" : "Dagsetning",
@@ -214,22 +241,31 @@
"Create vault" : "Búa til lykilorðageymslu",
"Go back to vaults" : "Fara aftur í lykilorðageymslur",
"Please input the password for" : "Settu inn lykilorðið fyrir",
+ "Set this vault as the default." : "Setja þessa lykilorðageymslu sem sjálfgefna.",
"Log into this vault automatically." : "Skrá sjálfvirkt inn í þessa lykilorðageymslu.",
+ "Log out of this vault automatically after: " : "Skrá sjálfvirkt út úr þessari lykilorðageymslu eftir: ",
"Decrypt vault" : "Afkóða lykilorðageymslu",
+ "Seems you lost the vault password and you're unable to log in." : "Það lítur út eins og þú hafir tapað lykilorðinu fyrir lykilorðageymsluna og getir ekki skráð þig inn.",
"If you want this vault to be removed you can request that here." : "Ef þú vilt að þessi lykilorðageymsla verði fjarlægð, geturðu beðið um það hér.",
+ "An admin then accepts or declines the request" : "Kerfisstjóri mun síðan samþykkja beiðnina (eða ekki)",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Eftir að kerfisstjóri eyðir þessari lykilorðageymslu, munu öll auðkenni tapast",
+ "Reason for requesting deletion (optional):" : "Ástæða fyrir beiðni um eyðingu (valfrjálst):",
"Request vault destruction" : "Biðja um eyðingu á lykilorðageymslu",
"Yes, request an admin to destroy this vault" : "Já, biðja kerfisstjóra að eyða þessari lykilorðageymslu",
"Cancel destruction request" : "Hætta við beiðni um eyðileggingu",
"Vault destruction requested" : "Beðið um eyðingu á lykilorðageymslu",
"Request removed" : "Beiðni fjarlægð",
"Destruction request pending" : "Beiðni um eyðileggingu er í biðröð",
- "Logged in to {{vault_name}}" : "Skráður inn í {{vault_name}}",
+ "Warning! Adding credentials over HTTP is insecure!" : "Aðvörun! Að bæta auðkennum við yfir HTTP getur verið óöruggt!",
+ "Logged into {{vault_name}}" : "Skráður inn í {{vault_name}}",
"Change vault" : "Skipta um lykilorðageymslu",
"Deleted credentials" : "Eydd auðkenni",
"Logout" : "Útskráning",
"Donate" : "Styrkja",
"Someone has shared a credential with you." : "Einhver hefur deilt auðkennum með þér.",
"Click here to request it" : "Smelltu hér til að biðja um það",
+ "Loading…" : "Hleð inn…",
+ "Awwhh… credential not found. Maybe it expired" : "Æjæjæ... auðkenni fundust ekki. Kannski þau séu útrunnin",
"Error while saving field" : "Villa kom upp við að vista gagnasvið",
"A Passman item has been created, modified or deleted" : "Passman atriði hefur verið búið til, breytt eða eytt",
"A Passman item has expired" : "Passman atriði er útrunnið",
@@ -260,8 +296,11 @@
"%s has declined your share request for \"%s\"." : "%s hafnaði beiðni þinni um deilingu á \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s samþykkti beiðni þína um deilingu á \"%s\".",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman er fullbúin lykilorðastýring.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman er fullbúin lykilorðastýring.\nEiginleikar:\n- Lykilorðageymslur\n- Lykill á lykilorðageymslu er aldrei sendur á vefþjón\n- Viðbót fyrir vafra sem veitir einfaldan aðgang að lykilorðum\n- Android-forrit fyrir aðgang úti á mörkinni\n- Auðkenni eru dulrituð á tækinu með 256-bita AES\n- Auðkenni eru dulrituð á vefþjóni með 256-bita AES\n- Hægt er að bæta sérniðnum gagnasviðum við auðkenni\n- Innbyggð gerð OTP (One Time Password) lykilorða\n- Greining lykilorða\n- Öruggar leiðir til að deila lykilorðum innvært og með sendum tenglum.\n- Innflutningur úr ýmsum lykilorðastýringum (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nTil að skoða dæmi um forritið skaltu heimsækja [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Gat ekki náð í upplýsingar um útgáfu",
"Passman Settings" : "Stillingar Passman",
+ "GitHub version:" : "Útgáfa Github:",
"A newer version of Passman is available" : "Nýrri útgáfa Passman er tiltæk",
"Password sharing" : "Deiling lykilorða",
"Credential mover" : "Tilfærsla auðkenna",
@@ -280,6 +319,10 @@
"Request ID" : "Auðkenni beiðnar",
"Requested by" : "Umbeðið af",
"Reason" : "Ástæða",
+ "Click here to request\n\t\t\t\t\tit" : "Smelltu hér til að biðja um\n\t\t\t\t\tþað",
+ "Loading&hellip;" : "Hleð inn&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Æjæjæ... auðkenni fundust ekki. Kannski þau séu útrunnin?",
+ "Expires:" : "Gildir til:",
"Connection to server lost" : "Tenging við þjón rofnaði",
"Problem loading page, reloading in 5 seconds" : "Vandamál við að hlaða inn síðu, endurhleð eftir 5 sekúndur",
"Saving..." : "Er að vista ...",
diff --git a/l10n/it.js b/l10n/it.js
index 76284125..06805a55 100644
--- a/l10n/it.js
+++ b/l10n/it.js
@@ -2,42 +2,57 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Password",
- "Generating sharing keys ( %step / 2)" : "Generazione chiavi condivise ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Generazione chiavi condivise ( %s / 2)",
"Incorrect vault password!" : "Password della cassaforte non corretta!",
"Passwords do not match" : "Le password non corrispondono",
"General" : "Generale",
"Custom Fields" : "Campi personalizzati",
+ "Please fill in a label." : "Aggiungi un'etichetta.",
+ "Please fill in a value." : "Aggiungi un valore.",
"Error loading file" : "Errore durante il caricamento del file",
+ "An error occurred during decryption" : "Si è verificato un errore durante la decifratura",
"Credential created!" : "Credenziali create!",
"Credential deleted" : "Credenziali eliminate",
"Credential updated" : "Credenziali aggiornate",
"Credential recovered" : "Credenziali ripristinate",
"Credential destroyed" : "Credenziali distrutte",
+ "Error downloading file, you probably have insufficient permissions" : "Errore durante lo scaricamento del file, probabilmente non disponi dei permessi necessari",
"Invalid QR code" : "Codice QR non valido",
"Starting export" : "Avvio esportazione",
"Decrypting credentials" : "Decifratura delle credenziali",
"Done" : "Fine",
- "Credential has no label, skipping" : "Credenziali senza etichetta, ignorate",
+ "File read." : "File letto.",
+ "Proceed with the following steps to import your file" : "Procedi con i passaggi seguenti per importare il tuo file",
+ "Skipping unlabeled credential" : "Ignorare le credenziali senza etichetta",
"Adding {{credential}}" : "Aggiunta di {{credential}}",
"Added {{credential}}" : "Aggiunte {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Credenziali ignorate, etichetta mancante alla riga {{line}}",
"Parsed {{num}} credentials, starting to import" : "Elaborate {{num}} credenziali, avvio dell'importazione",
- "Importing" : "Importazione in corso",
+ "Importing" : "Importazione",
"Start import" : "Avvia importazione",
"Select CSV file" : "Seleziona file CSV",
+ "Parsed {{rows}} lines from CSV file" : "Elaborate {{rows}} righe dal file CSV",
"Skip first row" : "Salta la prima riga",
"You need to assign the label field before you can start the import." : "Devi assegnare il campo etichetta prima di avviare l'importazione.",
+ "The first 5 lines of the CSV are shown." : "Vengono mostrate le prime 5 righe del CSV.",
"Assign the proper fields to each column." : "Assegna i campi corretti a ogni colonna.",
+ "Example of imported credential" : "Esempio di credenziali importate",
+ "Missing an importer? Try it with the generic CSV importer." : "Manca un importatore? Prova con l'importatore CSV generico.",
"Go back to importers." : "Torna agli importatori.",
"Revision deleted" : "Revisione eliminata",
"Revision restored" : "Revisione ripristinata",
+ "Save in Passman" : "Salva in Passman",
"Settings saved" : "Impostazioni salvate",
"General settings" : "Impostazioni generali",
+ "Password audit" : "Verifica password",
"Password settings" : "Impostazioni password",
"Import credentials" : "Importa credenziali",
"Export credentials" : "Esporta credenziali",
"Sharing" : "Condivisione",
- "Your old password is incorrect!" : "La tua vecchia password non è corretta!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Sei sicuro di voler uscire? Ciò distruggerà tutte le tue credenziali",
+ "Old password field incorrect!" : "Campo della vecchia password non corretto!",
+ "New password does not match!" : "La nuova password non corrisponde!",
+ "Please log in with your new vault password" : "Accedi con la tua nuova password della cassaforte",
"Share with users and groups" : "Condividi con utenti e gruppi",
"Share link" : "Condividi collegamento",
"Are you sure you want to leave? This will corrupt this credential" : "Sei sicuro di voler uscire? Ciò danneggerà questo credenziali",
@@ -57,6 +72,10 @@ OC.L10N.register(
"Complete" : "Completato",
"Username" : "Nome utente",
"Repeat password" : "Ripeti la password",
+ "Add tag" : "Aggiungi etichetta",
+ "Pick an icon" : "Scegli un'icona",
+ "Use this icon" : "Utilizza questa icona",
+ "Selected icon" : "Icona selezionata",
"Field label" : "Etichetta campo",
"Field value" : "Valore campo",
"Choose a file" : "Scegli un file",
@@ -70,10 +89,12 @@ OC.L10N.register(
"Filename" : "Nome file",
"Upload date" : "Data di caricamento",
"Size" : "Dimensione",
- "Upload or enter your OTP secret" : "Carica o inserisci la tua chiave OTP",
+ "Upload or enter your OTP secret" : "Carica o digita la tua chiave OTP",
"Current OTP settings" : "Impostazioni OTP correnti",
"Issuer" : "Emittente",
"Secret" : "Segreto",
+ "Expiration date" : "Data di scadenza",
+ "No expiration date set" : "Nessuna data di scadenza impostata",
"Renew interval" : "Intervallo di aggiornamento",
"Disabled" : "Disabilitato",
"Day(s)" : "Giorno(i)",
@@ -98,6 +119,7 @@ OC.L10N.register(
"Change vault key" : "Modifica chiave della cassaforte",
"Old vault password" : "Vecchia password della cassaforte",
"New vault password" : "Nuova password della cassaforte",
+ "Repeat new vault password" : "Ripeti la nuova password della cassaforte",
"Please wait your vault is being updated, do not leave this page." : "Attendi l'aggiornamento della tua cassaforte, non abbandonare questa pagina.",
"Processing" : "Elaborazione",
"Total progress" : "Avanzamento totale",
@@ -105,12 +127,13 @@ OC.L10N.register(
"Version" : "Versione",
"Donate to support development" : "Effettua una donazione per supportare lo sviluppo",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Salva le tue password con 1 clic!",
+ "Save your passwords with one click." : "Salva le tue password con un clic.",
"Drag below button to your bookmark toolbar." : "Trascina il pulsante seguente sulla barra degli strumenti.",
"Delete vault" : "Elimina cassaforte",
"Vault password" : "Password della cassaforte",
"This process is irreversible" : "Questo processo è irreversibile",
"Delete my precious passwords" : "Elimina le mie preziose password",
+ "Deleting {{password}}…" : "Eliminazione di {{password}}...",
"Yes, delete my precious passwords" : "Sì, elimina le mie preziose password",
"Import type" : "Importa tipo",
"Import" : "Importa",
@@ -122,17 +145,20 @@ OC.L10N.register(
"Save keys" : "Salva chiavi",
"Generate sharing keys" : "Genera chiavi di condivisione",
"Generating sharing keys" : "Generazione chiavi di condivisione",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Lo strumento delle password analizza la tua password, calcola il tempo medio per decifrarla ed elenca quelle sotto la soglia",
"Minimum password stength" : "Robustezza minima della password",
"Start scan" : "Avvia scansione",
"Result" : "Risultato",
+ "A total of {{scan_result}} weak credentials were found." : "Un totale di {{scan_result}} credenziali deboli è stato trovato.",
"Score" : "Punteggio",
"Action" : "Azione",
- "Missing users? Only users that have vaults are shown." : "Utenti mancanti? Solo gli utenti che hanno una cassaforte saranno mostrati.",
+ "Search users…" : "Cerca utenti...",
+ "Missing users? Only users that have vaults are shown." : "Utenti mancanti? Sono mostrati solo gli utenti che hanno una cassaforte.",
"Cyphering" : "Cifratura",
"Uploading" : "Caricamento",
"User" : "Utente",
"Crypto time" : "Tempo di cifratura",
- "Total time spent cyphering" : "Tempo totale impiegato nella cifratura",
+ "Total time spent encrypting" : "Tempo totale impiegato nella cifratura",
"Read" : "Lettura",
"Write" : "Scrittura",
"Files" : "File",
@@ -141,21 +167,32 @@ OC.L10N.register(
"Enable link sharing" : "Abilita condivisione tramite collegamento",
"Share until date" : "Condividi fino alla data",
"Expire after views" : "Scadenza dopo viste",
+ "Click \\\"Share\\\" first" : "Fai clic prima su \\\"Condividi\\\"",
"Show files" : "Mostra i file",
"Details" : "Dettagli",
"Hide details" : "Nascondi dettagli",
"Password score" : "Punteggio della password",
"Cracking times" : "Tempi per decifrare",
"100 / hour" : "100 / ora",
+ "Throttled online attack" : "Attacco in linea limitato",
"10 / second" : "10 / secondo",
+ "Unthrottled online attack" : "Attacco in linea illimitato",
"10k / second" : "10k / secondo",
+ "Offline attack, slow hash, many cores" : "Attacco non in linea, hash lento, diversi core",
"10B / second" : "10B / secondo",
+ "Offline attack, fast hash, many cores" : "Attacco non in linea, hash veloce, diversi core",
+ "Match sequence" : "Sequenza di verifica",
+ "See match sequence" : "Vedi sequenza di verifica",
"Pattern" : "Modello",
"Matched word" : "Parola verificata",
"Dictionary name" : "Nomi di dizionario",
"Rank" : "Rango",
+ "Reversed" : "Invertita",
+ "Guesses" : "Ipotesi",
+ "Base guesses" : "Ipotesi di base",
"Uppercase variations" : "Variazioni maiuscole",
"l33t-variations" : "Variazioni l33t",
+ "Showing revisions of" : "Mostra revisioni di",
"Revision of" : "Revisione di",
"by" : "di",
"No revisions found." : "Nessuna revisione trovata.",
@@ -169,13 +206,17 @@ OC.L10N.register(
"Settings" : "Impostazioni",
"Share credential {{credential}}" : "Condividi credenziali {{credential}}",
"Unshare" : "Rimuovi condivisione",
+ "Showing deleted since" : "Mostra eliminati da",
+ "Beginning" : "Inizio",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Visualizzazione di {{number_filtered}} di {{credential_number}} credenziali",
+ "Search for credential…" : "Cerca credenziali...",
"Account" : "Account",
"Password" : "Password",
"OTP" : "OTP",
"E-mail" : "Email",
"URL" : "URL",
"Notes" : "Note",
+ "Expiry time" : "Tempo di scadenza",
"Changed" : "Modificate",
"Created" : "Create",
"Edit" : "Modifica",
@@ -185,6 +226,8 @@ OC.L10N.register(
"Destroy" : "Distruggi",
"Use regex" : "Utilizza espressione regolare",
"You have incoming share requests." : "Hai ricevuto delle richieste di condivisione.",
+ "If you want to put the credential in another vault," : "Se vuoi mettere le credenziali in un altra cassaforte,",
+ "log out of this vault and log into the vault you want the shared credential in." : "esci da questa cassaforte e accedi alla cassaforte dove vuoi inserire le credenziali condivise.",
"Permissions" : "Permessi",
"Received from" : "Ricevute da",
"Date" : "Data",
@@ -198,23 +241,35 @@ OC.L10N.register(
"Password strength must be at least: {{strength}}" : "La robustezza della password deve essere almeno: {{strength}}",
"Please give your new vault a name." : "Dai un nome alla tua nuova cassaforte.",
"Repeat vault password" : "Ripeti la password della cassaforte",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Le tue chiavi di condivisione avranno una lunghezza di 1024 bit, che puoii modificare successivamente in \\\"Impostazioni\\\".",
"Create vault" : "Crea cassaforte",
"Go back to vaults" : "Torna alle casseforti",
"Please input the password for" : "Digita la password per",
+ "Set this vault as the default." : "Imposta questa cassaforte come predefinita.",
+ "Log into this vault automatically." : "Accedi a questa cassaforte automaticamente.",
+ "Log out of this vault automatically after: " : "Esci da questa cassaforte automaticamente dopo:",
"Decrypt vault" : "Decifra cassaforte",
+ "Seems you lost the vault password and you're unable to log in." : "Sembra che tu abbia smarrito la password della cassaforte e non sia in grado di effettuare l'accesso.",
+ "If you want this vault to be removed you can request that here." : "Se desideri che questa cassaforte sia rimossa, puoi richiedere qui la rimozione.",
+ "An admin then accepts or declines the request" : "Un amministratore quindi accetta o rifiuta la richiesta",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Una volta che un amministratore avrà distrutto questa cassaforte, tutte le credenziali saranno perse",
+ "Reason for requesting deletion (optional):" : "Motivo della richiesta di eliminazione (facoltativo):",
"Request vault destruction" : "Richiedi la distruzione della cassaforte",
"Yes, request an admin to destroy this vault" : "Sì, richiede a un amministratore di distruggere questa cassaforte",
"Cancel destruction request" : "Annulla richiesta di distruzione",
"Vault destruction requested" : "Distruzione della cassaforte richiesta",
- "Request removed" : "Richiesta annullata",
+ "Request removed" : "Richiesta rimossa",
"Destruction request pending" : "Richiesta di distruzione in attesa",
- "Logged in to {{vault_name}}" : "Accesso effettuato a {{vault_name}}",
+ "Warning! Adding credentials over HTTP is insecure!" : "Avviso! L'aggiunta di credenziali su HTTP è insicura!",
+ "Logged into {{vault_name}}" : "Accesso effettuato a {{vault_name}}",
"Change vault" : "Cambia cassaforte",
"Deleted credentials" : "Credenziali eliminate",
"Logout" : "Esci",
"Donate" : "Donazione",
"Someone has shared a credential with you." : "Qualcuno ha condiviso delle credenziali con te.",
"Click here to request it" : "Fai clic qui per richiederle",
+ "Loading…" : "Caricamento in corso...",
+ "Awwhh… credential not found. Maybe it expired" : "Ops... credenziali non trovate. Potrebbero essere scadute",
"Error while saving field" : "Errore durante il salvataggio del campo",
"A Passman item has been created, modified or deleted" : "Un elemento Passman è stato creato, modificato o eliminato",
"A Passman item has expired" : "Un elemento Passman è scaduto",
@@ -245,10 +300,14 @@ OC.L10N.register(
"%s has declined your share request for \"%s\"." : "%s ha rifiutato la tua richiesta di condivisione per \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s ha accettato la tua richiesta di condivisione per \"%s\".",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman è un gestore delle password pieno di funzionalità.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman è un gestore di password pieno di funzionalità.\nFunzionalità:\n- Casseforti \n- La chiave della cassaforte non è mai inviata al server\n- Estensione del browser per accedere rapidamente alle password\n- Applicazione Android per l'accesso mobile\n- Le credenziali sono cifrate lato client con AES a 256 bit\n- Le credenziali sono cifrate lato server con AES a 256 bit\n- Abilità di aggiungere campi personalizzati alle credenziali\n- Generatore OTP (One Time Password) integrato\n- Analizzatore delle password\n- Condivisione delle password internamente e tramite collegamento in maniera sicura\n- Importazione da vari gestori delle password (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nPer una dimostrazione di questa applicazione visita [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Impossibile ottenere le informazioni di versione",
"Passman Settings" : "Impostazioni di Passman",
+ "GitHub version:" : "Versione di Github:",
"A newer version of Passman is available" : "Una nuova versione di Passman è disponibile",
"Password sharing" : "Condivisione password",
+ "Credential mover" : "Sposta credenziali",
"Vault destruction requests" : "Richieste di distruzione della cassaforte",
"Check for new versions" : "Controlla la presenza di nuove versioni",
"Enable HTTPS check" : "Abilita controllo HTTPS",
@@ -258,12 +317,16 @@ OC.L10N.register(
"Allow users on this server to share passwords with other users" : "Consenti agli utenti su questo server di condividere le password con altri utenti",
"Move credentials from one account to another" : "Sposta le credenziali da un account a un altro",
"Source account" : "Account sorgente",
- "Destination account" : "Account destinazione",
+ "Destination account" : "Account di destinazione",
"Credentials moved!" : "Credenziali spostate!",
"Requests to destroy vault" : "Richiede la distruzione della cassaforte",
"Request ID" : "ID richiesta",
"Requested by" : "Richiesto da",
- "Reason" : "Ragione",
+ "Reason" : "Motivo",
+ "Click here to request\n\t\t\t\t\tit" : "Fai clic qui per richiederla",
+ "Loading&hellip;" : "Caricamento&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Ops... credenziali non trovate. Potrebbero essere scadute?",
+ "Expires:" : "Scade:",
"Connection to server lost" : "Connessione al server interrotta",
"Problem loading page, reloading in 5 seconds" : "Problema durante il caricamento della pagina, aggiornamento tra 5 secondi",
"Saving..." : "Salvataggio in corso...",
diff --git a/l10n/it.json b/l10n/it.json
index 4b64e63c..bd597f16 100644
--- a/l10n/it.json
+++ b/l10n/it.json
@@ -1,41 +1,56 @@
{ "translations": {
"Passwords" : "Password",
- "Generating sharing keys ( %step / 2)" : "Generazione chiavi condivise ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Generazione chiavi condivise ( %s / 2)",
"Incorrect vault password!" : "Password della cassaforte non corretta!",
"Passwords do not match" : "Le password non corrispondono",
"General" : "Generale",
"Custom Fields" : "Campi personalizzati",
+ "Please fill in a label." : "Aggiungi un'etichetta.",
+ "Please fill in a value." : "Aggiungi un valore.",
"Error loading file" : "Errore durante il caricamento del file",
+ "An error occurred during decryption" : "Si è verificato un errore durante la decifratura",
"Credential created!" : "Credenziali create!",
"Credential deleted" : "Credenziali eliminate",
"Credential updated" : "Credenziali aggiornate",
"Credential recovered" : "Credenziali ripristinate",
"Credential destroyed" : "Credenziali distrutte",
+ "Error downloading file, you probably have insufficient permissions" : "Errore durante lo scaricamento del file, probabilmente non disponi dei permessi necessari",
"Invalid QR code" : "Codice QR non valido",
"Starting export" : "Avvio esportazione",
"Decrypting credentials" : "Decifratura delle credenziali",
"Done" : "Fine",
- "Credential has no label, skipping" : "Credenziali senza etichetta, ignorate",
+ "File read." : "File letto.",
+ "Proceed with the following steps to import your file" : "Procedi con i passaggi seguenti per importare il tuo file",
+ "Skipping unlabeled credential" : "Ignorare le credenziali senza etichetta",
"Adding {{credential}}" : "Aggiunta di {{credential}}",
"Added {{credential}}" : "Aggiunte {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Credenziali ignorate, etichetta mancante alla riga {{line}}",
"Parsed {{num}} credentials, starting to import" : "Elaborate {{num}} credenziali, avvio dell'importazione",
- "Importing" : "Importazione in corso",
+ "Importing" : "Importazione",
"Start import" : "Avvia importazione",
"Select CSV file" : "Seleziona file CSV",
+ "Parsed {{rows}} lines from CSV file" : "Elaborate {{rows}} righe dal file CSV",
"Skip first row" : "Salta la prima riga",
"You need to assign the label field before you can start the import." : "Devi assegnare il campo etichetta prima di avviare l'importazione.",
+ "The first 5 lines of the CSV are shown." : "Vengono mostrate le prime 5 righe del CSV.",
"Assign the proper fields to each column." : "Assegna i campi corretti a ogni colonna.",
+ "Example of imported credential" : "Esempio di credenziali importate",
+ "Missing an importer? Try it with the generic CSV importer." : "Manca un importatore? Prova con l'importatore CSV generico.",
"Go back to importers." : "Torna agli importatori.",
"Revision deleted" : "Revisione eliminata",
"Revision restored" : "Revisione ripristinata",
+ "Save in Passman" : "Salva in Passman",
"Settings saved" : "Impostazioni salvate",
"General settings" : "Impostazioni generali",
+ "Password audit" : "Verifica password",
"Password settings" : "Impostazioni password",
"Import credentials" : "Importa credenziali",
"Export credentials" : "Esporta credenziali",
"Sharing" : "Condivisione",
- "Your old password is incorrect!" : "La tua vecchia password non è corretta!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Sei sicuro di voler uscire? Ciò distruggerà tutte le tue credenziali",
+ "Old password field incorrect!" : "Campo della vecchia password non corretto!",
+ "New password does not match!" : "La nuova password non corrisponde!",
+ "Please log in with your new vault password" : "Accedi con la tua nuova password della cassaforte",
"Share with users and groups" : "Condividi con utenti e gruppi",
"Share link" : "Condividi collegamento",
"Are you sure you want to leave? This will corrupt this credential" : "Sei sicuro di voler uscire? Ciò danneggerà questo credenziali",
@@ -55,6 +70,10 @@
"Complete" : "Completato",
"Username" : "Nome utente",
"Repeat password" : "Ripeti la password",
+ "Add tag" : "Aggiungi etichetta",
+ "Pick an icon" : "Scegli un'icona",
+ "Use this icon" : "Utilizza questa icona",
+ "Selected icon" : "Icona selezionata",
"Field label" : "Etichetta campo",
"Field value" : "Valore campo",
"Choose a file" : "Scegli un file",
@@ -68,10 +87,12 @@
"Filename" : "Nome file",
"Upload date" : "Data di caricamento",
"Size" : "Dimensione",
- "Upload or enter your OTP secret" : "Carica o inserisci la tua chiave OTP",
+ "Upload or enter your OTP secret" : "Carica o digita la tua chiave OTP",
"Current OTP settings" : "Impostazioni OTP correnti",
"Issuer" : "Emittente",
"Secret" : "Segreto",
+ "Expiration date" : "Data di scadenza",
+ "No expiration date set" : "Nessuna data di scadenza impostata",
"Renew interval" : "Intervallo di aggiornamento",
"Disabled" : "Disabilitato",
"Day(s)" : "Giorno(i)",
@@ -96,6 +117,7 @@
"Change vault key" : "Modifica chiave della cassaforte",
"Old vault password" : "Vecchia password della cassaforte",
"New vault password" : "Nuova password della cassaforte",
+ "Repeat new vault password" : "Ripeti la nuova password della cassaforte",
"Please wait your vault is being updated, do not leave this page." : "Attendi l'aggiornamento della tua cassaforte, non abbandonare questa pagina.",
"Processing" : "Elaborazione",
"Total progress" : "Avanzamento totale",
@@ -103,12 +125,13 @@
"Version" : "Versione",
"Donate to support development" : "Effettua una donazione per supportare lo sviluppo",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Salva le tue password con 1 clic!",
+ "Save your passwords with one click." : "Salva le tue password con un clic.",
"Drag below button to your bookmark toolbar." : "Trascina il pulsante seguente sulla barra degli strumenti.",
"Delete vault" : "Elimina cassaforte",
"Vault password" : "Password della cassaforte",
"This process is irreversible" : "Questo processo è irreversibile",
"Delete my precious passwords" : "Elimina le mie preziose password",
+ "Deleting {{password}}…" : "Eliminazione di {{password}}...",
"Yes, delete my precious passwords" : "Sì, elimina le mie preziose password",
"Import type" : "Importa tipo",
"Import" : "Importa",
@@ -120,17 +143,20 @@
"Save keys" : "Salva chiavi",
"Generate sharing keys" : "Genera chiavi di condivisione",
"Generating sharing keys" : "Generazione chiavi di condivisione",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Lo strumento delle password analizza la tua password, calcola il tempo medio per decifrarla ed elenca quelle sotto la soglia",
"Minimum password stength" : "Robustezza minima della password",
"Start scan" : "Avvia scansione",
"Result" : "Risultato",
+ "A total of {{scan_result}} weak credentials were found." : "Un totale di {{scan_result}} credenziali deboli è stato trovato.",
"Score" : "Punteggio",
"Action" : "Azione",
- "Missing users? Only users that have vaults are shown." : "Utenti mancanti? Solo gli utenti che hanno una cassaforte saranno mostrati.",
+ "Search users…" : "Cerca utenti...",
+ "Missing users? Only users that have vaults are shown." : "Utenti mancanti? Sono mostrati solo gli utenti che hanno una cassaforte.",
"Cyphering" : "Cifratura",
"Uploading" : "Caricamento",
"User" : "Utente",
"Crypto time" : "Tempo di cifratura",
- "Total time spent cyphering" : "Tempo totale impiegato nella cifratura",
+ "Total time spent encrypting" : "Tempo totale impiegato nella cifratura",
"Read" : "Lettura",
"Write" : "Scrittura",
"Files" : "File",
@@ -139,21 +165,32 @@
"Enable link sharing" : "Abilita condivisione tramite collegamento",
"Share until date" : "Condividi fino alla data",
"Expire after views" : "Scadenza dopo viste",
+ "Click \\\"Share\\\" first" : "Fai clic prima su \\\"Condividi\\\"",
"Show files" : "Mostra i file",
"Details" : "Dettagli",
"Hide details" : "Nascondi dettagli",
"Password score" : "Punteggio della password",
"Cracking times" : "Tempi per decifrare",
"100 / hour" : "100 / ora",
+ "Throttled online attack" : "Attacco in linea limitato",
"10 / second" : "10 / secondo",
+ "Unthrottled online attack" : "Attacco in linea illimitato",
"10k / second" : "10k / secondo",
+ "Offline attack, slow hash, many cores" : "Attacco non in linea, hash lento, diversi core",
"10B / second" : "10B / secondo",
+ "Offline attack, fast hash, many cores" : "Attacco non in linea, hash veloce, diversi core",
+ "Match sequence" : "Sequenza di verifica",
+ "See match sequence" : "Vedi sequenza di verifica",
"Pattern" : "Modello",
"Matched word" : "Parola verificata",
"Dictionary name" : "Nomi di dizionario",
"Rank" : "Rango",
+ "Reversed" : "Invertita",
+ "Guesses" : "Ipotesi",
+ "Base guesses" : "Ipotesi di base",
"Uppercase variations" : "Variazioni maiuscole",
"l33t-variations" : "Variazioni l33t",
+ "Showing revisions of" : "Mostra revisioni di",
"Revision of" : "Revisione di",
"by" : "di",
"No revisions found." : "Nessuna revisione trovata.",
@@ -167,13 +204,17 @@
"Settings" : "Impostazioni",
"Share credential {{credential}}" : "Condividi credenziali {{credential}}",
"Unshare" : "Rimuovi condivisione",
+ "Showing deleted since" : "Mostra eliminati da",
+ "Beginning" : "Inizio",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Visualizzazione di {{number_filtered}} di {{credential_number}} credenziali",
+ "Search for credential…" : "Cerca credenziali...",
"Account" : "Account",
"Password" : "Password",
"OTP" : "OTP",
"E-mail" : "Email",
"URL" : "URL",
"Notes" : "Note",
+ "Expiry time" : "Tempo di scadenza",
"Changed" : "Modificate",
"Created" : "Create",
"Edit" : "Modifica",
@@ -183,6 +224,8 @@
"Destroy" : "Distruggi",
"Use regex" : "Utilizza espressione regolare",
"You have incoming share requests." : "Hai ricevuto delle richieste di condivisione.",
+ "If you want to put the credential in another vault," : "Se vuoi mettere le credenziali in un altra cassaforte,",
+ "log out of this vault and log into the vault you want the shared credential in." : "esci da questa cassaforte e accedi alla cassaforte dove vuoi inserire le credenziali condivise.",
"Permissions" : "Permessi",
"Received from" : "Ricevute da",
"Date" : "Data",
@@ -196,23 +239,35 @@
"Password strength must be at least: {{strength}}" : "La robustezza della password deve essere almeno: {{strength}}",
"Please give your new vault a name." : "Dai un nome alla tua nuova cassaforte.",
"Repeat vault password" : "Ripeti la password della cassaforte",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Le tue chiavi di condivisione avranno una lunghezza di 1024 bit, che puoii modificare successivamente in \\\"Impostazioni\\\".",
"Create vault" : "Crea cassaforte",
"Go back to vaults" : "Torna alle casseforti",
"Please input the password for" : "Digita la password per",
+ "Set this vault as the default." : "Imposta questa cassaforte come predefinita.",
+ "Log into this vault automatically." : "Accedi a questa cassaforte automaticamente.",
+ "Log out of this vault automatically after: " : "Esci da questa cassaforte automaticamente dopo:",
"Decrypt vault" : "Decifra cassaforte",
+ "Seems you lost the vault password and you're unable to log in." : "Sembra che tu abbia smarrito la password della cassaforte e non sia in grado di effettuare l'accesso.",
+ "If you want this vault to be removed you can request that here." : "Se desideri che questa cassaforte sia rimossa, puoi richiedere qui la rimozione.",
+ "An admin then accepts or declines the request" : "Un amministratore quindi accetta o rifiuta la richiesta",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Una volta che un amministratore avrà distrutto questa cassaforte, tutte le credenziali saranno perse",
+ "Reason for requesting deletion (optional):" : "Motivo della richiesta di eliminazione (facoltativo):",
"Request vault destruction" : "Richiedi la distruzione della cassaforte",
"Yes, request an admin to destroy this vault" : "Sì, richiede a un amministratore di distruggere questa cassaforte",
"Cancel destruction request" : "Annulla richiesta di distruzione",
"Vault destruction requested" : "Distruzione della cassaforte richiesta",
- "Request removed" : "Richiesta annullata",
+ "Request removed" : "Richiesta rimossa",
"Destruction request pending" : "Richiesta di distruzione in attesa",
- "Logged in to {{vault_name}}" : "Accesso effettuato a {{vault_name}}",
+ "Warning! Adding credentials over HTTP is insecure!" : "Avviso! L'aggiunta di credenziali su HTTP è insicura!",
+ "Logged into {{vault_name}}" : "Accesso effettuato a {{vault_name}}",
"Change vault" : "Cambia cassaforte",
"Deleted credentials" : "Credenziali eliminate",
"Logout" : "Esci",
"Donate" : "Donazione",
"Someone has shared a credential with you." : "Qualcuno ha condiviso delle credenziali con te.",
"Click here to request it" : "Fai clic qui per richiederle",
+ "Loading…" : "Caricamento in corso...",
+ "Awwhh… credential not found. Maybe it expired" : "Ops... credenziali non trovate. Potrebbero essere scadute",
"Error while saving field" : "Errore durante il salvataggio del campo",
"A Passman item has been created, modified or deleted" : "Un elemento Passman è stato creato, modificato o eliminato",
"A Passman item has expired" : "Un elemento Passman è scaduto",
@@ -243,10 +298,14 @@
"%s has declined your share request for \"%s\"." : "%s ha rifiutato la tua richiesta di condivisione per \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s ha accettato la tua richiesta di condivisione per \"%s\".",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman è un gestore delle password pieno di funzionalità.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman è un gestore di password pieno di funzionalità.\nFunzionalità:\n- Casseforti \n- La chiave della cassaforte non è mai inviata al server\n- Estensione del browser per accedere rapidamente alle password\n- Applicazione Android per l'accesso mobile\n- Le credenziali sono cifrate lato client con AES a 256 bit\n- Le credenziali sono cifrate lato server con AES a 256 bit\n- Abilità di aggiungere campi personalizzati alle credenziali\n- Generatore OTP (One Time Password) integrato\n- Analizzatore delle password\n- Condivisione delle password internamente e tramite collegamento in maniera sicura\n- Importazione da vari gestori delle password (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nPer una dimostrazione di questa applicazione visita [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Impossibile ottenere le informazioni di versione",
"Passman Settings" : "Impostazioni di Passman",
+ "GitHub version:" : "Versione di Github:",
"A newer version of Passman is available" : "Una nuova versione di Passman è disponibile",
"Password sharing" : "Condivisione password",
+ "Credential mover" : "Sposta credenziali",
"Vault destruction requests" : "Richieste di distruzione della cassaforte",
"Check for new versions" : "Controlla la presenza di nuove versioni",
"Enable HTTPS check" : "Abilita controllo HTTPS",
@@ -256,12 +315,16 @@
"Allow users on this server to share passwords with other users" : "Consenti agli utenti su questo server di condividere le password con altri utenti",
"Move credentials from one account to another" : "Sposta le credenziali da un account a un altro",
"Source account" : "Account sorgente",
- "Destination account" : "Account destinazione",
+ "Destination account" : "Account di destinazione",
"Credentials moved!" : "Credenziali spostate!",
"Requests to destroy vault" : "Richiede la distruzione della cassaforte",
"Request ID" : "ID richiesta",
"Requested by" : "Richiesto da",
- "Reason" : "Ragione",
+ "Reason" : "Motivo",
+ "Click here to request\n\t\t\t\t\tit" : "Fai clic qui per richiederla",
+ "Loading&hellip;" : "Caricamento&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Ops... credenziali non trovate. Potrebbero essere scadute?",
+ "Expires:" : "Scade:",
"Connection to server lost" : "Connessione al server interrotta",
"Problem loading page, reloading in 5 seconds" : "Problema durante il caricamento della pagina, aggiornamento tra 5 secondi",
"Saving..." : "Salvataggio in corso...",
diff --git a/l10n/ja.js b/l10n/ja.js
new file mode 100644
index 00000000..912d6707
--- /dev/null
+++ b/l10n/ja.js
@@ -0,0 +1,323 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "パスワード",
+ "Generating sharing keys ( %s / 2)" : "共有キーを生成しています ( %s / 2)",
+ "Incorrect vault password!" : "保管庫パスワードが間違っています!",
+ "Passwords do not match" : "パスワードが一致しません",
+ "General" : "一般",
+ "Custom Fields" : "カスタムフィールド",
+ "Please fill in a label." : "ラベルを記入してください",
+ "Please fill in a value." : "値を記入してください",
+ "Error loading file" : "ファイルの読み込みエラー",
+ "An error occurred during decryption" : "復号化中にエラーが発生しました",
+ "Credential created!" : "資格情報が作成されました!",
+ "Credential deleted" : "資格情報が削除されました",
+ "Credential updated" : "資格情報が更新されました",
+ "Credential recovered" : "資格情報を復元しました",
+ "Credential destroyed" : "資格情報を破棄しました",
+ "Invalid QR code" : "無効なQRコード",
+ "Starting export" : "エクスポートの開始",
+ "Decrypting credentials" : "資格情報の復号化をしています",
+ "Done" : "完了",
+ "Proceed with the following steps to import your file" : "ファイルをインポートするために次のステップに進んでください",
+ "Adding {{credential}}" : "{{credential}}を追加中",
+ "Added {{credential}}" : "{{credential}}を追加しました",
+ "Skipping credential, missing label on line {{line}}" : "資格情報をスキップしています、{{line}} 行目のラベルが見つかりません",
+ "Parsed {{num}} credentials, starting to import" : "{{num}}個の資格情報のインポートを開始しました",
+ "Importing" : "インポート中",
+ "Start import" : "インポートを開始",
+ "Select CSV file" : "CSVファイルを選択",
+ "Parsed {{rows}} lines from CSV file" : "CSVファイルから {{rows}} 行を読み込みました",
+ "Skip first row" : "一行目をスキップ",
+ "You need to assign the label field before you can start the import." : "インポートを開始する前にラベルフィールドを割り当てる必要があります",
+ "The first 5 lines of the CSV are shown." : "CSVの始めの5行を表示しています",
+ "Assign the proper fields to each column." : "各列へ適切なフィールドを割り当ててください",
+ "Example of imported credential" : "インポートされた資格情報の例",
+ "Missing an importer? Try it with the generic CSV importer." : "インポーターが見つかりませんか?一般的なCSVインポーターを試してください",
+ "Go back to importers." : "インポーターに戻る",
+ "Revision deleted" : "リビジョンを削除しました",
+ "Revision restored" : "リビジョンを復元しました",
+ "Save in Passman" : "Passmanに保存する",
+ "Settings saved" : "設定を保存しました",
+ "General settings" : "一般設定",
+ "Password audit" : "パスワードの監査",
+ "Password settings" : "パスワードの設定",
+ "Import credentials" : "資格情報のインポート",
+ "Export credentials" : "資格情報のエクスポート",
+ "Sharing" : "共有",
+ "Are you sure you want to leave? This will destroy all your credentials" : "すべての資格情報が破棄されます。本当に終了しますか?",
+ "New password does not match!" : "新しいパスワードが一致しません!",
+ "Please log in with your new vault password" : "新しいパスワードでログインしてください",
+ "Share with users and groups" : "ユーザーとグループで共有",
+ "Share link" : "URLで共有",
+ "Are you sure you want to leave? This will corrupt this credential" : "この資格情報が破損します。本当に終了しますか?",
+ "Credential unshared" : "非共有の資格情報",
+ "Credential shared" : "共有済みの資格情報",
+ "Saved!" : "保存しました!",
+ "Poor" : "脆弱",
+ "Weak" : "弱い",
+ "Good" : "良い",
+ "Strong" : "強い",
+ "Toggle visibility" : "可視性を切り替える",
+ "Copy to clipboard" : "クリップボードにコピー",
+ "Copied to clipboard!" : "クリップボードにコピーしました!",
+ "Generate password" : "パスワードを生成",
+ "Copy password to clipboard" : "パスワードをクリップボードにコピー",
+ "Password copied to clipboard!" : "パスワードをクリップボードにコピーしました!",
+ "Complete" : "完了",
+ "Username" : "ユーザー名",
+ "Repeat password" : "パスワードをもう一度入力",
+ "Add tag" : "タグを追加",
+ "Pick an icon" : "アイコンを選択",
+ "Use this icon" : "このアイコンを使用する",
+ "Selected icon" : "選択されたアイコン",
+ "Field label" : "フィールドラベル",
+ "Field value" : "フィールドの値",
+ "Choose a file" : "ファイルを選択する",
+ "Text" : "テキスト",
+ "File" : "ファイル",
+ "Add" : "追加",
+ "Value" : "値",
+ "Type" : "種類",
+ "Actions" : "アクション",
+ "Empty" : "空",
+ "Filename" : "ファイル名",
+ "Upload date" : "アップロード日",
+ "Size" : "サイズ",
+ "Upload or enter your OTP secret" : "OTPシークレットをアップロードまたは入力する",
+ "Current OTP settings" : "現在のOTP設定",
+ "Issuer" : "発行者",
+ "Secret" : "シークレット",
+ "Expiration date" : "有効期限",
+ "No expiration date set" : "有効期限が未設定",
+ "Renew interval" : "更新周期",
+ "Disabled" : "無効",
+ "Day(s)" : "日",
+ "Week(s)" : "週",
+ "Month(s)" : "月",
+ "Year(s)" : "年",
+ "Password generation settings" : "パスワード生成設定",
+ "Password length" : "パスワード長",
+ "Minimum amount of digits" : "最小の桁数",
+ "Use uppercase letters" : "大文字を使用する",
+ "Use lowercase letters" : "小文字を使用する",
+ "Use numbers" : "数字を使用する",
+ "Use special characters" : "特殊文字を使用する",
+ "Avoid ambiguous characters" : "あいまいな文字を避ける",
+ "Require every character type" : "すべての文字種を必須にする",
+ "Export type" : "エクスポートタイプ",
+ "Export" : "エクスポート",
+ "Enter vault password to confirm export." : "エクスポートの確認の為に保管庫パスワードを入力してください。",
+ "Rename vault" : "保管庫の名前を変更する",
+ "New vault name" : "新しい保管庫の名前",
+ "Change" : "変更する",
+ "Change vault key" : "保管庫キーを変更する",
+ "Old vault password" : "現在の保管庫パスワード",
+ "New vault password" : "新しい保管庫パスワード",
+ "Repeat new vault password" : "新しい保管庫パスワードを再入力してください",
+ "Please wait your vault is being updated, do not leave this page." : "保管庫を更新しています。このページから移動しないでください。",
+ "Processing" : "処理中",
+ "Total progress" : "総進捗状況",
+ "About Passman" : "Passmanについて",
+ "Version" : "バージョン",
+ "Donate to support development" : "開発者支援のために寄付する",
+ "Bookmarklet" : "ブックマークレット",
+ "Drag below button to your bookmark toolbar." : "ボタンより下のブックマークツールバーへドラッグしてください。",
+ "Delete vault" : "保管庫を削除する",
+ "Vault password" : "保管庫パスワード",
+ "This process is irreversible" : "この手順は取り消せません",
+ "Delete my precious passwords" : "貴重なパスワードを削除する",
+ "Deleting {{password}}…" : "{{password}} を削除しています",
+ "Yes, delete my precious passwords" : "はい、貴重なパスワードを削除します",
+ "Import type" : "インポートタイプ",
+ "Import" : "インポート",
+ "Read progress" : "読み込み状況",
+ "Upload progress" : "アップロード状況",
+ "Private Key" : "秘密鍵",
+ "Public key" : "公開鍵",
+ "Key size" : "キーのサイズ",
+ "Save keys" : "キーを保存する",
+ "Generate sharing keys" : "共有キーを生成",
+ "Generating sharing keys" : "共有キーを生成中",
+ "Minimum password stength" : "最小のパスワードの長さ",
+ "Start scan" : "スキャンを開始",
+ "Result" : "結果",
+ "A total of {{scan_result}} weak credentials were found." : "全部で {{scan_result}} 件の脆弱な資格情報が見つかりました。",
+ "Score" : "スコア",
+ "Action" : "アクション",
+ "Search users…" : "ユーザーを検索",
+ "Missing users? Only users that have vaults are shown." : "ユーザーが見つかりませんか?保管庫をもつユーザーのみが表示されます。",
+ "Cyphering" : "暗号化",
+ "Uploading" : "アップロード中",
+ "User" : "ユーザー",
+ "Crypto time" : "暗号化時間",
+ "Read" : "読み込み",
+ "Write" : "書き込み",
+ "Files" : "ファイル",
+ "Revisions" : "リビジョン",
+ "Pending" : "保留中",
+ "Enable link sharing" : "リンク共有を有効化",
+ "Share until date" : "有効期限まで共有する",
+ "Expire after views" : "表示後に期限切れにする",
+ "Show files" : "ファイルを表示する",
+ "Details" : "詳細",
+ "Hide details" : "詳細を隠す",
+ "Password score" : "パスワードスコア",
+ "Cracking times" : "クラック時間",
+ "100 / hour" : "100 / 毎時",
+ "Throttled online attack" : "抑えられたオンライン攻撃",
+ "10 / second" : "10 / 毎秒",
+ "Unthrottled online attack" : "抑えられていないオンライン攻撃",
+ "10k / second" : "10k / 毎秒",
+ "Offline attack, slow hash, many cores" : "オフライン攻撃、低速ハッシュ、多数のコア",
+ "10B / second" : "10B / 毎秒",
+ "Offline attack, fast hash, many cores" : "オフライン攻撃、高速ハッシュ、多数のコア",
+ "Match sequence" : "一致シーケンス",
+ "See match sequence" : "一致シーケンスを見る",
+ "Pattern" : "パターン",
+ "Matched word" : "マッチした単語",
+ "Dictionary name" : "辞書名",
+ "Rank" : "強度",
+ "Reversed" : "反転",
+ "Guesses" : "推測",
+ "Base guesses" : "基本推測",
+ "Uppercase variations" : "大文字のバリエーション",
+ "l33t-variations" : "l33t バリエーション",
+ "Showing revisions of" : "次の履歴を表示しています",
+ "Revision of" : "履歴",
+ "by" : "記載者",
+ "No revisions found." : "履歴が見つかりません",
+ "Label" : "ラベル",
+ "Restore revision" : "履歴を復元する",
+ "Delete revision" : "履歴を削除する",
+ "Edit credential" : "資格情報を編集する",
+ "Create new credential" : "新しく資格情報を作成する",
+ "Save" : "保存",
+ "Cancel" : "キャンセル",
+ "Settings" : "設定",
+ "Share credential {{credential}}" : "{{credential}} の資格情報を共有する",
+ "Unshare" : "共有を解除する",
+ "Showing deleted since" : "削除された時期を表示する",
+ "Beginning" : "開始",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "{{number_filtered}} / {{credential_number}} の資格情報を表示しています",
+ "Search for credential…" : "資格情報を検索しています...",
+ "Account" : "アカウント",
+ "Password" : "パスワード",
+ "OTP" : "OTP",
+ "E-mail" : "メール",
+ "URL" : "URL",
+ "Notes" : "メモ",
+ "Expiry time" : "期限",
+ "Changed" : "変更しました",
+ "Created" : "作成されました",
+ "Edit" : "編集",
+ "Delete" : "削除",
+ "Share" : "共有",
+ "Recover" : "復元",
+ "Destroy" : "破棄",
+ "Use regex" : "正規表現を使用する",
+ "You have incoming share requests." : "共有リクエストが届いています",
+ "If you want to put the credential in another vault," : "証明書を他の保管庫に保存したい場合、",
+ "Permissions" : "アクセス権限",
+ "Received from" : "受信",
+ "Date" : "日付",
+ "Accept" : "承諾",
+ "Decline" : "拒否",
+ "You have {{session_time}} left before logout." : "ログアウトするまであと {{session_time}} 秒",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "{{tries}} 回失敗したため保管庫は{{time}} 秒ロックされます",
+ "Last accessed" : "最終アクセス",
+ "Never" : "未使用",
+ "No vaults found, why not create one?" : "保管庫が見つかりません。新しく作成しますか?",
+ "Password strength must be at least: {{strength}}" : "パスワードは次の文字数以上である必要があります:{{strength}}",
+ "Please give your new vault a name." : "新しいVaultの名前をつけてください",
+ "Repeat vault password" : "保管庫パスワードを再入力してください",
+ "Create vault" : "保管庫を作成する",
+ "Go back to vaults" : "保管庫へ戻る",
+ "Please input the password for" : "パスワードを入力してください",
+ "Set this vault as the default." : "この保管庫をデフォルトに設定しました。",
+ "Log into this vault automatically." : "この保管庫へ自動的にログインします。",
+ "Log out of this vault automatically after: " : "この保管庫から自動的にログアウトします:",
+ "Decrypt vault" : "保管庫を復号",
+ "Seems you lost the vault password and you're unable to log in." : "ログインできません。保管庫のパスワードを忘れていませんか?",
+ "If you want this vault to be removed you can request that here." : "この保管庫を削除するには、こちらからリクエストしてください。",
+ "An admin then accepts or declines the request" : "管理者がリクエストを許可または拒否します",
+ "After an admin destroys this vault, all credentials in it will be lost" : "管理者がこの保管庫を破棄すると、すべての資格証明が失われます。",
+ "Reason for requesting deletion (optional):" : "破棄リクエストの理由(任意):",
+ "Request vault destruction" : "保管庫の破棄をリクエストする",
+ "Yes, request an admin to destroy this vault" : "はい、管理者へこの保管庫の破棄をリクエストします。",
+ "Cancel destruction request" : "破棄リクエストをキャンセル",
+ "Vault destruction requested" : "保管庫の破棄をリクエストしました",
+ "Request removed" : "リクエストを取り消しました",
+ "Destruction request pending" : "破棄リクエスト保留中",
+ "Warning! Adding credentials over HTTP is insecure!" : "警告!HTTP経由で証明書を付与するのは安全ではありません!",
+ "Change vault" : "保管庫を変更する",
+ "Deleted credentials" : "削除された証明書",
+ "Logout" : "ログアウト",
+ "Donate" : "寄付",
+ "Someone has shared a credential with you." : "誰かがあなたと資格情報を共有しました。",
+ "Click here to request it" : "リクエストするにはここをクリックしてください",
+ "Loading…" : "読み込み中...",
+ "Awwhh… credential not found. Maybe it expired" : "資格情報が見つかりません。期限切れの可能性があります",
+ "Error while saving field" : "フィールドの保存中にエラーが発生しました",
+ "A Passman item has been created, modified or deleted" : "Passman のアイテムが作成、変更、または削除されました",
+ "A Passman item has expired" : "Pasman アイテムが期限切れ",
+ "A Passman item has been shared" : "Passman アイテムが共有されました",
+ "A Passman item has been renamed" : "Passman アイテムがリネームされました",
+ "%1$s has been created by %2$s" : "%1$s が %2$s によって作成されました",
+ "You created %1$s" : "%1$s を作成しました",
+ "%1$s has been updated by %2$s" : "%1$s が %2$s によって更新されました",
+ "You updated %1$s" : "%1$sを更新しました",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s は %1$s を %3$s のリビジョンに改訂しました",
+ "You reverted %1$s back to the revision of %3$s" : "%1$s を %3$s のリビジョンに戻しました",
+ "%3$s has renamed %1$s to %2$s" : "%3$s は %1$s を %2$s にリネームしました",
+ "You renamed %1$s to %2$s" : "%1$s を %2$s にリネームしました",
+ "%1$s has been deleted by %2$s" : "%1$s は %2$s により削除されました",
+ "You deleted %1$s" : "%1$s を削除しました",
+ "%1$s has been recovered by %2$s" : "%1$s は %2$s によって復元されました",
+ "You recovered %1$s" : "%1$s を復旧しました",
+ "%1$s has been permanently deleted by %2$s" : "%1$s は %2$sにより完全に削除されました",
+ "You permanently deleted %1$s" : "%1$s を完全に削除しました",
+ "The password of %1$s has expired, renew it now." : "%1$s のパスワードは期限切れです。新しくしてください。",
+ "%1$s has been shared with %2$s" : "%1$s を %2$s と共有しました",
+ "You received a share request for %1$s from %2$s" : "%2$s から %1$s の共有リクエストを受信しました",
+ "%s has been shared with a link" : "%s がリンクで共有されました",
+ "Your credential \"%s\" expired, click here to update the credential." : "証明書 ”%s” は期限切れです。証明書を更新するにはここをクリックしてください。",
+ "Remind me later" : "後で通知する",
+ "Ignore" : "無視する",
+ "%s shared \"%s\" with you. Click here to accept" : "%s から \"%s\" が共有されました。受け入れるにはここをクリックしてください。",
+ "%s has declined your share request for \"%s\"." : "%s は 共有リクエスト \"%s\" を拒否しました。",
+ "%s has accepted your share request for \"%s\"." : "%s は 共有リクエスト \"%s\" を受領しました。",
+ "Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman は、高機能パスワード管理ツールです。",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman は、高機能パスワード管理ツールです。\n特徴:\n- パスワード保管\n- パスワード解除キーは、サーバーには絶対に送信されません\n- パスワードを簡単に取得できるブラウザー拡張\n- モバイルネットワーク用アンドロイドアプリ\n- クライアント側での重要情報の暗号化に256bit AESを利用\n- サーバー側での重要情報の暗号化に256bit AESを利用\n- 重要情報をカスタマイズして追加可能\n- OTP(ワンタイムパスワード)生成機能を装備\n- パスワード強度解析\n- セキュリティを保持してパスワードを共有する機能\n- 複数のパスワードマネージャーからのインポート機能(KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nこのアプリのデモは以下のサイトを見てください [https://demo.passman.cc](https://demo.passman.cc)",
+ "Unable to get version info" : "バージョン情報を取得できません",
+ "Passman Settings" : "Passman 設定",
+ "GitHub version:" : "GitHub バージョン:",
+ "A newer version of Passman is available" : "Passman の新しいバージョンが利用可能",
+ "Password sharing" : "パスワード共有",
+ "Credential mover" : "資格情報の移行",
+ "Vault destruction requests" : "保管庫破棄リクエスト",
+ "Check for new versions" : "新しいバージョンを確認する",
+ "Enable HTTPS check" : "HTTPSチェックを有効化",
+ "Disable context menu" : "コンテキストメニューを無効化",
+ "Disable JavaScript debugger" : "JavaScript debugger を無効化",
+ "Allow users on this server to share passwords with a link" : "このサーバー上でリンクによってパスワードを共有することをユーザーに許可する",
+ "Allow users on this server to share passwords with other users" : "このサーバー上で他のユーザーとパスワードを共有することをユーザーに許可する",
+ "Move credentials from one account to another" : "アカウント間で資格情報を移行させる",
+ "Source account" : "移行元アカウント",
+ "Destination account" : "移行先アカウント",
+ "Credentials moved!" : "資格情報を移行しました!",
+ "Requests to destroy vault" : "保管庫の破棄のリクエスト",
+ "Request ID" : "リクエスト ID",
+ "Requested by" : "次からのリクエスト",
+ "Reason" : "理由",
+ "Click here to request\n\t\t\t\t\tit" : "クリックしてリクエスト\n\t\t\t\t\t",
+ "Loading&hellip;" : "Loading&hellip;",
+ "Connection to server lost" : "サーバーとの接続が切断されました",
+ "Problem loading page, reloading in 5 seconds" : "ページのロードに問題があります、5秒以内に再ロードします",
+ "Saving..." : "保存中...",
+ "Dismiss" : "閉じる",
+ "seconds ago" : "数秒前"
+},
+"nplurals=1; plural=0;");
diff --git a/l10n/ja.json b/l10n/ja.json
new file mode 100644
index 00000000..4e22cf17
--- /dev/null
+++ b/l10n/ja.json
@@ -0,0 +1,321 @@
+{ "translations": {
+ "Passwords" : "パスワード",
+ "Generating sharing keys ( %s / 2)" : "共有キーを生成しています ( %s / 2)",
+ "Incorrect vault password!" : "保管庫パスワードが間違っています!",
+ "Passwords do not match" : "パスワードが一致しません",
+ "General" : "一般",
+ "Custom Fields" : "カスタムフィールド",
+ "Please fill in a label." : "ラベルを記入してください",
+ "Please fill in a value." : "値を記入してください",
+ "Error loading file" : "ファイルの読み込みエラー",
+ "An error occurred during decryption" : "復号化中にエラーが発生しました",
+ "Credential created!" : "資格情報が作成されました!",
+ "Credential deleted" : "資格情報が削除されました",
+ "Credential updated" : "資格情報が更新されました",
+ "Credential recovered" : "資格情報を復元しました",
+ "Credential destroyed" : "資格情報を破棄しました",
+ "Invalid QR code" : "無効なQRコード",
+ "Starting export" : "エクスポートの開始",
+ "Decrypting credentials" : "資格情報の復号化をしています",
+ "Done" : "完了",
+ "Proceed with the following steps to import your file" : "ファイルをインポートするために次のステップに進んでください",
+ "Adding {{credential}}" : "{{credential}}を追加中",
+ "Added {{credential}}" : "{{credential}}を追加しました",
+ "Skipping credential, missing label on line {{line}}" : "資格情報をスキップしています、{{line}} 行目のラベルが見つかりません",
+ "Parsed {{num}} credentials, starting to import" : "{{num}}個の資格情報のインポートを開始しました",
+ "Importing" : "インポート中",
+ "Start import" : "インポートを開始",
+ "Select CSV file" : "CSVファイルを選択",
+ "Parsed {{rows}} lines from CSV file" : "CSVファイルから {{rows}} 行を読み込みました",
+ "Skip first row" : "一行目をスキップ",
+ "You need to assign the label field before you can start the import." : "インポートを開始する前にラベルフィールドを割り当てる必要があります",
+ "The first 5 lines of the CSV are shown." : "CSVの始めの5行を表示しています",
+ "Assign the proper fields to each column." : "各列へ適切なフィールドを割り当ててください",
+ "Example of imported credential" : "インポートされた資格情報の例",
+ "Missing an importer? Try it with the generic CSV importer." : "インポーターが見つかりませんか?一般的なCSVインポーターを試してください",
+ "Go back to importers." : "インポーターに戻る",
+ "Revision deleted" : "リビジョンを削除しました",
+ "Revision restored" : "リビジョンを復元しました",
+ "Save in Passman" : "Passmanに保存する",
+ "Settings saved" : "設定を保存しました",
+ "General settings" : "一般設定",
+ "Password audit" : "パスワードの監査",
+ "Password settings" : "パスワードの設定",
+ "Import credentials" : "資格情報のインポート",
+ "Export credentials" : "資格情報のエクスポート",
+ "Sharing" : "共有",
+ "Are you sure you want to leave? This will destroy all your credentials" : "すべての資格情報が破棄されます。本当に終了しますか?",
+ "New password does not match!" : "新しいパスワードが一致しません!",
+ "Please log in with your new vault password" : "新しいパスワードでログインしてください",
+ "Share with users and groups" : "ユーザーとグループで共有",
+ "Share link" : "URLで共有",
+ "Are you sure you want to leave? This will corrupt this credential" : "この資格情報が破損します。本当に終了しますか?",
+ "Credential unshared" : "非共有の資格情報",
+ "Credential shared" : "共有済みの資格情報",
+ "Saved!" : "保存しました!",
+ "Poor" : "脆弱",
+ "Weak" : "弱い",
+ "Good" : "良い",
+ "Strong" : "強い",
+ "Toggle visibility" : "可視性を切り替える",
+ "Copy to clipboard" : "クリップボードにコピー",
+ "Copied to clipboard!" : "クリップボードにコピーしました!",
+ "Generate password" : "パスワードを生成",
+ "Copy password to clipboard" : "パスワードをクリップボードにコピー",
+ "Password copied to clipboard!" : "パスワードをクリップボードにコピーしました!",
+ "Complete" : "完了",
+ "Username" : "ユーザー名",
+ "Repeat password" : "パスワードをもう一度入力",
+ "Add tag" : "タグを追加",
+ "Pick an icon" : "アイコンを選択",
+ "Use this icon" : "このアイコンを使用する",
+ "Selected icon" : "選択されたアイコン",
+ "Field label" : "フィールドラベル",
+ "Field value" : "フィールドの値",
+ "Choose a file" : "ファイルを選択する",
+ "Text" : "テキスト",
+ "File" : "ファイル",
+ "Add" : "追加",
+ "Value" : "値",
+ "Type" : "種類",
+ "Actions" : "アクション",
+ "Empty" : "空",
+ "Filename" : "ファイル名",
+ "Upload date" : "アップロード日",
+ "Size" : "サイズ",
+ "Upload or enter your OTP secret" : "OTPシークレットをアップロードまたは入力する",
+ "Current OTP settings" : "現在のOTP設定",
+ "Issuer" : "発行者",
+ "Secret" : "シークレット",
+ "Expiration date" : "有効期限",
+ "No expiration date set" : "有効期限が未設定",
+ "Renew interval" : "更新周期",
+ "Disabled" : "無効",
+ "Day(s)" : "日",
+ "Week(s)" : "週",
+ "Month(s)" : "月",
+ "Year(s)" : "年",
+ "Password generation settings" : "パスワード生成設定",
+ "Password length" : "パスワード長",
+ "Minimum amount of digits" : "最小の桁数",
+ "Use uppercase letters" : "大文字を使用する",
+ "Use lowercase letters" : "小文字を使用する",
+ "Use numbers" : "数字を使用する",
+ "Use special characters" : "特殊文字を使用する",
+ "Avoid ambiguous characters" : "あいまいな文字を避ける",
+ "Require every character type" : "すべての文字種を必須にする",
+ "Export type" : "エクスポートタイプ",
+ "Export" : "エクスポート",
+ "Enter vault password to confirm export." : "エクスポートの確認の為に保管庫パスワードを入力してください。",
+ "Rename vault" : "保管庫の名前を変更する",
+ "New vault name" : "新しい保管庫の名前",
+ "Change" : "変更する",
+ "Change vault key" : "保管庫キーを変更する",
+ "Old vault password" : "現在の保管庫パスワード",
+ "New vault password" : "新しい保管庫パスワード",
+ "Repeat new vault password" : "新しい保管庫パスワードを再入力してください",
+ "Please wait your vault is being updated, do not leave this page." : "保管庫を更新しています。このページから移動しないでください。",
+ "Processing" : "処理中",
+ "Total progress" : "総進捗状況",
+ "About Passman" : "Passmanについて",
+ "Version" : "バージョン",
+ "Donate to support development" : "開発者支援のために寄付する",
+ "Bookmarklet" : "ブックマークレット",
+ "Drag below button to your bookmark toolbar." : "ボタンより下のブックマークツールバーへドラッグしてください。",
+ "Delete vault" : "保管庫を削除する",
+ "Vault password" : "保管庫パスワード",
+ "This process is irreversible" : "この手順は取り消せません",
+ "Delete my precious passwords" : "貴重なパスワードを削除する",
+ "Deleting {{password}}…" : "{{password}} を削除しています",
+ "Yes, delete my precious passwords" : "はい、貴重なパスワードを削除します",
+ "Import type" : "インポートタイプ",
+ "Import" : "インポート",
+ "Read progress" : "読み込み状況",
+ "Upload progress" : "アップロード状況",
+ "Private Key" : "秘密鍵",
+ "Public key" : "公開鍵",
+ "Key size" : "キーのサイズ",
+ "Save keys" : "キーを保存する",
+ "Generate sharing keys" : "共有キーを生成",
+ "Generating sharing keys" : "共有キーを生成中",
+ "Minimum password stength" : "最小のパスワードの長さ",
+ "Start scan" : "スキャンを開始",
+ "Result" : "結果",
+ "A total of {{scan_result}} weak credentials were found." : "全部で {{scan_result}} 件の脆弱な資格情報が見つかりました。",
+ "Score" : "スコア",
+ "Action" : "アクション",
+ "Search users…" : "ユーザーを検索",
+ "Missing users? Only users that have vaults are shown." : "ユーザーが見つかりませんか?保管庫をもつユーザーのみが表示されます。",
+ "Cyphering" : "暗号化",
+ "Uploading" : "アップロード中",
+ "User" : "ユーザー",
+ "Crypto time" : "暗号化時間",
+ "Read" : "読み込み",
+ "Write" : "書き込み",
+ "Files" : "ファイル",
+ "Revisions" : "リビジョン",
+ "Pending" : "保留中",
+ "Enable link sharing" : "リンク共有を有効化",
+ "Share until date" : "有効期限まで共有する",
+ "Expire after views" : "表示後に期限切れにする",
+ "Show files" : "ファイルを表示する",
+ "Details" : "詳細",
+ "Hide details" : "詳細を隠す",
+ "Password score" : "パスワードスコア",
+ "Cracking times" : "クラック時間",
+ "100 / hour" : "100 / 毎時",
+ "Throttled online attack" : "抑えられたオンライン攻撃",
+ "10 / second" : "10 / 毎秒",
+ "Unthrottled online attack" : "抑えられていないオンライン攻撃",
+ "10k / second" : "10k / 毎秒",
+ "Offline attack, slow hash, many cores" : "オフライン攻撃、低速ハッシュ、多数のコア",
+ "10B / second" : "10B / 毎秒",
+ "Offline attack, fast hash, many cores" : "オフライン攻撃、高速ハッシュ、多数のコア",
+ "Match sequence" : "一致シーケンス",
+ "See match sequence" : "一致シーケンスを見る",
+ "Pattern" : "パターン",
+ "Matched word" : "マッチした単語",
+ "Dictionary name" : "辞書名",
+ "Rank" : "強度",
+ "Reversed" : "反転",
+ "Guesses" : "推測",
+ "Base guesses" : "基本推測",
+ "Uppercase variations" : "大文字のバリエーション",
+ "l33t-variations" : "l33t バリエーション",
+ "Showing revisions of" : "次の履歴を表示しています",
+ "Revision of" : "履歴",
+ "by" : "記載者",
+ "No revisions found." : "履歴が見つかりません",
+ "Label" : "ラベル",
+ "Restore revision" : "履歴を復元する",
+ "Delete revision" : "履歴を削除する",
+ "Edit credential" : "資格情報を編集する",
+ "Create new credential" : "新しく資格情報を作成する",
+ "Save" : "保存",
+ "Cancel" : "キャンセル",
+ "Settings" : "設定",
+ "Share credential {{credential}}" : "{{credential}} の資格情報を共有する",
+ "Unshare" : "共有を解除する",
+ "Showing deleted since" : "削除された時期を表示する",
+ "Beginning" : "開始",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "{{number_filtered}} / {{credential_number}} の資格情報を表示しています",
+ "Search for credential…" : "資格情報を検索しています...",
+ "Account" : "アカウント",
+ "Password" : "パスワード",
+ "OTP" : "OTP",
+ "E-mail" : "メール",
+ "URL" : "URL",
+ "Notes" : "メモ",
+ "Expiry time" : "期限",
+ "Changed" : "変更しました",
+ "Created" : "作成されました",
+ "Edit" : "編集",
+ "Delete" : "削除",
+ "Share" : "共有",
+ "Recover" : "復元",
+ "Destroy" : "破棄",
+ "Use regex" : "正規表現を使用する",
+ "You have incoming share requests." : "共有リクエストが届いています",
+ "If you want to put the credential in another vault," : "証明書を他の保管庫に保存したい場合、",
+ "Permissions" : "アクセス権限",
+ "Received from" : "受信",
+ "Date" : "日付",
+ "Accept" : "承諾",
+ "Decline" : "拒否",
+ "You have {{session_time}} left before logout." : "ログアウトするまであと {{session_time}} 秒",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "{{tries}} 回失敗したため保管庫は{{time}} 秒ロックされます",
+ "Last accessed" : "最終アクセス",
+ "Never" : "未使用",
+ "No vaults found, why not create one?" : "保管庫が見つかりません。新しく作成しますか?",
+ "Password strength must be at least: {{strength}}" : "パスワードは次の文字数以上である必要があります:{{strength}}",
+ "Please give your new vault a name." : "新しいVaultの名前をつけてください",
+ "Repeat vault password" : "保管庫パスワードを再入力してください",
+ "Create vault" : "保管庫を作成する",
+ "Go back to vaults" : "保管庫へ戻る",
+ "Please input the password for" : "パスワードを入力してください",
+ "Set this vault as the default." : "この保管庫をデフォルトに設定しました。",
+ "Log into this vault automatically." : "この保管庫へ自動的にログインします。",
+ "Log out of this vault automatically after: " : "この保管庫から自動的にログアウトします:",
+ "Decrypt vault" : "保管庫を復号",
+ "Seems you lost the vault password and you're unable to log in." : "ログインできません。保管庫のパスワードを忘れていませんか?",
+ "If you want this vault to be removed you can request that here." : "この保管庫を削除するには、こちらからリクエストしてください。",
+ "An admin then accepts or declines the request" : "管理者がリクエストを許可または拒否します",
+ "After an admin destroys this vault, all credentials in it will be lost" : "管理者がこの保管庫を破棄すると、すべての資格証明が失われます。",
+ "Reason for requesting deletion (optional):" : "破棄リクエストの理由(任意):",
+ "Request vault destruction" : "保管庫の破棄をリクエストする",
+ "Yes, request an admin to destroy this vault" : "はい、管理者へこの保管庫の破棄をリクエストします。",
+ "Cancel destruction request" : "破棄リクエストをキャンセル",
+ "Vault destruction requested" : "保管庫の破棄をリクエストしました",
+ "Request removed" : "リクエストを取り消しました",
+ "Destruction request pending" : "破棄リクエスト保留中",
+ "Warning! Adding credentials over HTTP is insecure!" : "警告!HTTP経由で証明書を付与するのは安全ではありません!",
+ "Change vault" : "保管庫を変更する",
+ "Deleted credentials" : "削除された証明書",
+ "Logout" : "ログアウト",
+ "Donate" : "寄付",
+ "Someone has shared a credential with you." : "誰かがあなたと資格情報を共有しました。",
+ "Click here to request it" : "リクエストするにはここをクリックしてください",
+ "Loading…" : "読み込み中...",
+ "Awwhh… credential not found. Maybe it expired" : "資格情報が見つかりません。期限切れの可能性があります",
+ "Error while saving field" : "フィールドの保存中にエラーが発生しました",
+ "A Passman item has been created, modified or deleted" : "Passman のアイテムが作成、変更、または削除されました",
+ "A Passman item has expired" : "Pasman アイテムが期限切れ",
+ "A Passman item has been shared" : "Passman アイテムが共有されました",
+ "A Passman item has been renamed" : "Passman アイテムがリネームされました",
+ "%1$s has been created by %2$s" : "%1$s が %2$s によって作成されました",
+ "You created %1$s" : "%1$s を作成しました",
+ "%1$s has been updated by %2$s" : "%1$s が %2$s によって更新されました",
+ "You updated %1$s" : "%1$sを更新しました",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s は %1$s を %3$s のリビジョンに改訂しました",
+ "You reverted %1$s back to the revision of %3$s" : "%1$s を %3$s のリビジョンに戻しました",
+ "%3$s has renamed %1$s to %2$s" : "%3$s は %1$s を %2$s にリネームしました",
+ "You renamed %1$s to %2$s" : "%1$s を %2$s にリネームしました",
+ "%1$s has been deleted by %2$s" : "%1$s は %2$s により削除されました",
+ "You deleted %1$s" : "%1$s を削除しました",
+ "%1$s has been recovered by %2$s" : "%1$s は %2$s によって復元されました",
+ "You recovered %1$s" : "%1$s を復旧しました",
+ "%1$s has been permanently deleted by %2$s" : "%1$s は %2$sにより完全に削除されました",
+ "You permanently deleted %1$s" : "%1$s を完全に削除しました",
+ "The password of %1$s has expired, renew it now." : "%1$s のパスワードは期限切れです。新しくしてください。",
+ "%1$s has been shared with %2$s" : "%1$s を %2$s と共有しました",
+ "You received a share request for %1$s from %2$s" : "%2$s から %1$s の共有リクエストを受信しました",
+ "%s has been shared with a link" : "%s がリンクで共有されました",
+ "Your credential \"%s\" expired, click here to update the credential." : "証明書 ”%s” は期限切れです。証明書を更新するにはここをクリックしてください。",
+ "Remind me later" : "後で通知する",
+ "Ignore" : "無視する",
+ "%s shared \"%s\" with you. Click here to accept" : "%s から \"%s\" が共有されました。受け入れるにはここをクリックしてください。",
+ "%s has declined your share request for \"%s\"." : "%s は 共有リクエスト \"%s\" を拒否しました。",
+ "%s has accepted your share request for \"%s\"." : "%s は 共有リクエスト \"%s\" を受領しました。",
+ "Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman は、高機能パスワード管理ツールです。",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman は、高機能パスワード管理ツールです。\n特徴:\n- パスワード保管\n- パスワード解除キーは、サーバーには絶対に送信されません\n- パスワードを簡単に取得できるブラウザー拡張\n- モバイルネットワーク用アンドロイドアプリ\n- クライアント側での重要情報の暗号化に256bit AESを利用\n- サーバー側での重要情報の暗号化に256bit AESを利用\n- 重要情報をカスタマイズして追加可能\n- OTP(ワンタイムパスワード)生成機能を装備\n- パスワード強度解析\n- セキュリティを保持してパスワードを共有する機能\n- 複数のパスワードマネージャーからのインポート機能(KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nこのアプリのデモは以下のサイトを見てください [https://demo.passman.cc](https://demo.passman.cc)",
+ "Unable to get version info" : "バージョン情報を取得できません",
+ "Passman Settings" : "Passman 設定",
+ "GitHub version:" : "GitHub バージョン:",
+ "A newer version of Passman is available" : "Passman の新しいバージョンが利用可能",
+ "Password sharing" : "パスワード共有",
+ "Credential mover" : "資格情報の移行",
+ "Vault destruction requests" : "保管庫破棄リクエスト",
+ "Check for new versions" : "新しいバージョンを確認する",
+ "Enable HTTPS check" : "HTTPSチェックを有効化",
+ "Disable context menu" : "コンテキストメニューを無効化",
+ "Disable JavaScript debugger" : "JavaScript debugger を無効化",
+ "Allow users on this server to share passwords with a link" : "このサーバー上でリンクによってパスワードを共有することをユーザーに許可する",
+ "Allow users on this server to share passwords with other users" : "このサーバー上で他のユーザーとパスワードを共有することをユーザーに許可する",
+ "Move credentials from one account to another" : "アカウント間で資格情報を移行させる",
+ "Source account" : "移行元アカウント",
+ "Destination account" : "移行先アカウント",
+ "Credentials moved!" : "資格情報を移行しました!",
+ "Requests to destroy vault" : "保管庫の破棄のリクエスト",
+ "Request ID" : "リクエスト ID",
+ "Requested by" : "次からのリクエスト",
+ "Reason" : "理由",
+ "Click here to request\n\t\t\t\t\tit" : "クリックしてリクエスト\n\t\t\t\t\t",
+ "Loading&hellip;" : "Loading&hellip;",
+ "Connection to server lost" : "サーバーとの接続が切断されました",
+ "Problem loading page, reloading in 5 seconds" : "ページのロードに問題があります、5秒以内に再ロードします",
+ "Saving..." : "保存中...",
+ "Dismiss" : "閉じる",
+ "seconds ago" : "数秒前"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/l10n/ka_GE.js b/l10n/ka_GE.js
new file mode 100644
index 00000000..6eb604a1
--- /dev/null
+++ b/l10n/ka_GE.js
@@ -0,0 +1,320 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "პაროლები",
+ "Generating sharing keys ( %s / 2)" : "გაზიარების გასაღებების გენერირება (%s / 2)",
+ "Incorrect vault password!" : "სეიფის არასწორი პაროლი",
+ "Passwords do not match" : "პაროლები ერთმანეთს არ ემთხვევა",
+ "General" : "მთავარი",
+ "Custom Fields" : "პერსონალური ველები",
+ "Please fill in a label." : "შეავსეთ ლეიბლი.",
+ "Please fill in a value." : "შეავსეთ მნიშვნელობა.",
+ "Error loading file" : "შეცდომა ფაილის ჩატვირთვისას",
+ "An error occurred during decryption" : "დეშიფრაციისას წარმოიშვა შეცდომა",
+ "Credential created!" : "უფლებამოსილება შეიქმნა!",
+ "Credential deleted" : "უფლებამოსილება გაუქმდა",
+ "Credential updated" : "უფლებამოსილება განახლდა",
+ "Credential recovered" : "უფლებამოსილება აღდგა",
+ "Credential destroyed" : "უფლებამოსილება გაუქმდა",
+ "Invalid QR code" : "არასწორი QR კოდი",
+ "Starting export" : "ექსპორტის დაწეყება",
+ "Decrypting credentials" : "უფლებასმოსილების დეშიფრაცია",
+ "Done" : "დასრულდა",
+ "Proceed with the following steps to import your file" : "ფიალის იმპორტისთვის მიყევით შემდეგ ნაბიჯებს",
+ "Adding {{credential}}" : "ემატება {{credential}}",
+ "Added {{credential}}" : "{{credential}} დაემატა",
+ "Skipping credential, missing label on line {{line}}" : "უფლებამოსილების გამოტოვება, ლეიბლი ხაზზე {{line}} არაა",
+ "Parsed {{num}} credentials, starting to import" : "გარჩეულია {{num}} უფლებამოსილება, იმპორტის დაწყება",
+ "Importing" : "იმპორტირება",
+ "Start import" : "იმპორტის დაწყება",
+ "Select CSV file" : "აირჩიეთ CSV ფაილი",
+ "Parsed {{rows}} lines from CSV file" : "CSV ფაილიდან გარჩეულია {{rows}} ხაზი",
+ "Skip first row" : "პირველი რიგის გამოტოვება",
+ "You need to assign the label field before you can start the import." : "იმპორტამდე საჭიროა ლეიბლის ველის მინიჭება.",
+ "The first 5 lines of the CSV are shown." : "გამოტანილია CSV-ს პირველი 5 ხაზი.",
+ "Assign the proper fields to each column." : "თითოეულ სვეტს მიანიჭეთ სწორი ველი.",
+ "Example of imported credential" : "იმპორტირებული უფლებამოსილების მაგალითი",
+ "Missing an importer? Try it with the generic CSV importer." : "გაკლიათ იმპორტერი? სცადეთ ზოგად CSV იმპორტერი.",
+ "Go back to importers." : "უკან იმპორტერებისკენ.",
+ "Revision deleted" : "რევიზია გაუქმდა",
+ "Revision restored" : "რევიზია აღდგა",
+ "Save in Passman" : "შენავა Passman-ში",
+ "Settings saved" : "პარამეტრები შენაულია",
+ "General settings" : "მთავარი პარამეტრები",
+ "Password audit" : "პაროლის აუდიტი",
+ "Password settings" : "პაროლის პარამეტრები",
+ "Import credentials" : "უფლებამოსილებების იმპორტი",
+ "Export credentials" : "უფლებამოსილებების ექსპორტი",
+ "Sharing" : "გაზიარება",
+ "Are you sure you want to leave? This will destroy all your credentials" : "დარწმუნებული ხართ, რომ გუსრთ გასვლა? ეს გააუქმებს თქვენს ყველა უფლებამოსილებას",
+ "New password does not match!" : "ახალი პაროლები ერთამნეთს არ ემთხვევა!",
+ "Please log in with your new vault password" : "გაიარეთ ავტორიზაცია სეიფის ახალი პაროლით",
+ "Share with users and groups" : "გაუზიარეთ მომხმარებლებს და ჯგუფებს",
+ "Share link" : "ბმულის გაზიარება",
+ "Are you sure you want to leave? This will corrupt this credential" : "დარწმუნებული ხართ, რომ გუსრთ გახვიდეთ? ეს დააზიანბს უფლებამოსილებას",
+ "Credential unshared" : "უფლებამოსილება არაა გაზიარებული",
+ "Credential shared" : "უფლებამოსილება გაზიარებულია",
+ "Saved!" : "შენახულია!",
+ "Poor" : "ძალიან სუსტია",
+ "Weak" : "სუსტია",
+ "Good" : "კარგია",
+ "Strong" : "ძლიერია",
+ "Toggle visibility" : "ხილვადობის გადართვა",
+ "Copy to clipboard" : "კოპირება ბუფერში",
+ "Copied to clipboard!" : "კოპირებულია ბუფერში!",
+ "Generate password" : "პაროლის გენერირება",
+ "Copy password to clipboard" : "პაროლის კოპირება ბუფერში",
+ "Password copied to clipboard!" : "პაროლი კოპირებულია ბუფერში!",
+ "Complete" : "დასრულებულია",
+ "Username" : "მომხმარებლის სახელი",
+ "Repeat password" : "პაროლის გამეორება",
+ "Add tag" : "ტეგის დამატება",
+ "Pick an icon" : "აირჩიეთ პიქტოგრამა",
+ "Use this icon" : "გამოიყენეთ ეს პიქტოგრამა",
+ "Selected icon" : "არჩეული პიქტოგრამა",
+ "Field label" : "ველის ლეიბლი",
+ "Field value" : "ველის მნიშვნელობა",
+ "Choose a file" : "აირჩიეთ ფაილი",
+ "Text" : "ტექსტი",
+ "File" : "ფაილი",
+ "Add" : "დამატება",
+ "Value" : "მნიშვნელობა",
+ "Type" : "სახეობა",
+ "Actions" : "მოქმედებები",
+ "Empty" : "ცარიელი",
+ "Filename" : "ფაილის სახელი",
+ "Upload date" : "ატვირთვის თარიღი",
+ "Size" : "ზომა",
+ "Upload or enter your OTP secret" : "ატვირთეთ ან შეიყვანეთ თქვენი OTP საიდუმლო",
+ "Current OTP settings" : "ამჟამინდელი OTP პარამეტრი",
+ "Issuer" : "გამცემი",
+ "Secret" : "საიდუმლო",
+ "Expiration date" : "გაუქმების თარიღი",
+ "No expiration date set" : "გაუქმების თარიღი დაყენებული არაა",
+ "Renew interval" : "ინტერვალის განახლება",
+ "Disabled" : "გათიშულია",
+ "Day(s)" : "(დღე)",
+ "Week(s)" : "(კვირა)",
+ "Month(s)" : "(თვე)",
+ "Year(s)" : "(წელი)",
+ "Password generation settings" : "პაროლის გენერირების პარამეტრები",
+ "Password length" : "პაროლის სიგრძე",
+ "Minimum amount of digits" : "ციფრების მინ. რაოდენობა",
+ "Use uppercase letters" : "გამოიყენეთ დიდი ასოები",
+ "Use lowercase letters" : "გამოიყენეთ პატარა ასოები",
+ "Use numbers" : "გამოიყენეთ ციფრები",
+ "Use special characters" : "გამოიყენეთ სპეციალური ნიშნები",
+ "Avoid ambiguous characters" : "თავის არიდება გაურკვეველ ნიშნებზე",
+ "Require every character type" : "ყველა ნიშნის სახეობის მოთხოვნა",
+ "Export type" : "ექსპორტის სახეობა",
+ "Export" : "ექსპორტი",
+ "Enter vault password to confirm export." : "ექპორტის დასადასტურებლად შეიყვანეთ სეიფის პაროლი.",
+ "Rename vault" : "სეიფის სახელის შეცვლა",
+ "New vault name" : "ახალი სეიფის სახელი",
+ "Change" : "შეცვლა",
+ "Change vault key" : "სეიფის გასაღების შეცვლა",
+ "Old vault password" : "სეიფის ძველი პაროლი",
+ "New vault password" : "სეიფის ახალი პაროლი",
+ "Repeat new vault password" : "გაიმეორეთ სეიფის ახალი პაროლი",
+ "Please wait your vault is being updated, do not leave this page." : "გთხოვთ დაელოდოთ სეიფის განახლებას, არ დატოვოთ ეს გვერდი.",
+ "Processing" : "პროცესირება",
+ "Total progress" : "პროგრესის ჯამი",
+ "About Passman" : "Passman-ის შესახებ",
+ "Version" : "ვერსია",
+ "Donate to support development" : "დაუჭირეთ დეველოპერის მხარი შემოწირულობით",
+ "Bookmarklet" : "Bookmarklet-ი",
+ "Drag below button to your bookmark toolbar." : "გადაიტანეთ ქვემოთ მყოფი ღილაკი სანიშნეების პანელისკენ.",
+ "Delete vault" : "სეიფის გაუქმება",
+ "Vault password" : "სეიფის პაროლი",
+ "This process is irreversible" : "ეს პროცესი არაა უკუქცევადი",
+ "Delete my precious passwords" : "ჩემი მშვენიერი პაროლების გაუქმება",
+ "Deleting {{password}}…" : "{{password}}-ის გაუქმება…",
+ "Yes, delete my precious passwords" : "კი, გააუქმდეს ჩემი მშვენიერი პაროლები",
+ "Import type" : "იმპორტის სახეობა",
+ "Import" : "იმპორტი",
+ "Read progress" : "პროგრესის წაკითხვა",
+ "Upload progress" : "ატვირთვის პროგრესი",
+ "Private Key" : "პირადი გასაღები",
+ "Public key" : "ღია გასაღები",
+ "Key size" : "გასაღების ზომა",
+ "Save keys" : "გასაღებების შენახვა",
+ "Generate sharing keys" : "გაზიარების გასაღებების გენერირება",
+ "Generating sharing keys" : "მიმდინარეობს გაზიარების გასაღებების გენერირება",
+ "Minimum password stength" : "პაროლის მინ. სიგრძე",
+ "Start scan" : "სკანირების დაწყება",
+ "Result" : "შედეგი",
+ "A total of {{scan_result}} weak credentials were found." : "სულ ნაპოვნია {{scan_result}} სუსტი უფლებამოსილება.",
+ "Score" : "ქულა",
+ "Action" : "ქმედება",
+ "Search users…" : "მომხმარებლების ძიება...",
+ "Missing users? Only users that have vaults are shown." : "აკლია მომხმარებლები? ნაჩვენებია მხოლოდ სეიფის მქონე მომხმარებლები.",
+ "Cyphering" : "იშიფრება",
+ "Uploading" : "ხდება ატვირთვა",
+ "User" : "მომხმარებელი",
+ "Crypto time" : "კრიპტო დრო",
+ "Read" : "წაკითხვა",
+ "Write" : "ჩაწერა",
+ "Files" : "ფაილები",
+ "Revisions" : "რევიზიები",
+ "Pending" : "მოლოდინში",
+ "Enable link sharing" : "ბმულით გაზიარების ამოქმედება",
+ "Share until date" : "გაზიარება დრომდე",
+ "Expire after views" : "უქმდება ჩვენებების შემდეგ",
+ "Show files" : "ფაილების ჩვენება",
+ "Details" : "დეტალები",
+ "Hide details" : "დეტალების დამალვა",
+ "Password score" : "პაროლის ქულა",
+ "Cracking times" : "გატეხვის დროები",
+ "100 / hour" : "100 / საათი",
+ "Throttled online attack" : "დარტყმული ონლაინ შეტევა",
+ "10 / second" : "10 / წამი",
+ "Unthrottled online attack" : "დაურტყმელი ონლაინ შეტევა",
+ "10k / second" : "10კ / წამი",
+ "Offline attack, slow hash, many cores" : "კავშირ-გარეშე შეტევა, ნელი ჰეში, ბევრი ბირთვი",
+ "10B / second" : "10ბ / წამი",
+ "Offline attack, fast hash, many cores" : "კავშირ-გარეშე შეტევა, სწრაფი ჰეში, ბევრი ბირთვი",
+ "Match sequence" : "თანმიმდევრობაზე დამთხვევა",
+ "See match sequence" : "დამთხვეული თანმიმდევრობის ჩვენება",
+ "Pattern" : "ნიმუში",
+ "Matched word" : "დამთხვეული სიტყვა",
+ "Dictionary name" : "ანბანის სახელი",
+ "Rank" : "რანგი",
+ "Reversed" : "დაბრუნებული",
+ "Guesses" : "გამოცნობები",
+ "Base guesses" : "ფუძისეული გამოცნობები",
+ "Uppercase variations" : "დიდ-ასოიანი ვარიაციები",
+ "l33t-variations" : "l33t-ვარიაციები",
+ "Showing revisions of" : "რევიზიების ჩვენება",
+ "Revision of" : "ობიექტი:",
+ "by" : "სუბიექტი:",
+ "No revisions found." : "რევიზიები ვერ იქნა ნაპოვნი",
+ "Label" : "ლეიბლი",
+ "Restore revision" : "რევიზიის აღდგენა",
+ "Delete revision" : "რევიზიის გაუქმება",
+ "Edit credential" : "უფლებამოსილების ცვლილება",
+ "Create new credential" : "ახალი უფლებამოსილების შექმნა",
+ "Save" : "შენახვა",
+ "Cancel" : "უარყოფა",
+ "Settings" : "პარამეტრები",
+ "Share credential {{credential}}" : "უფლებამოსილების გაზიარება {{credential}}",
+ "Unshare" : "გაზიარების შეყვეტა",
+ "Showing deleted since" : "ვაჩვენებთ გადაგდებულს დანიშმულების შემდეგ",
+ "Beginning" : "დასაწყისი",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "ვაჩვენებთ {{number_filtered}} სულ {{credential_number}} უფლებამოსილებიდან",
+ "Search for credential…" : "უფლებამოსილების ძებნა...",
+ "Account" : "ანგარიში",
+ "Password" : "პაროლი",
+ "OTP" : "OTP",
+ "E-mail" : "ელ-ფოსტა",
+ "URL" : "URL",
+ "Notes" : "ჩანაწერები",
+ "Expiry time" : "გაუქმების დრო",
+ "Changed" : "შეცვლილია",
+ "Created" : "შექმნილია",
+ "Edit" : "შეცვლა",
+ "Delete" : "გაუქმება",
+ "Share" : "გაზიარება",
+ "Recover" : "აღდგენა",
+ "Destroy" : "გაუქმება",
+ "Use regex" : "რეგ. გამოსახულება",
+ "You have incoming share requests." : "თქვენ გაქვთ შემოსული გაზიარების მოთხოვნები.",
+ "If you want to put the credential in another vault," : "თუ გსურთ უფლებამოსილების სხვა სეიფში მოთავსება,",
+ "Permissions" : "უფლებები",
+ "Received from" : "ვისგან:",
+ "Date" : "თარიღი",
+ "Accept" : "მიღება",
+ "Decline" : "ურაყოფა",
+ "You have {{session_time}} left before logout." : "გასვლამდა დაგრჩათ {{session_time}}.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "თქვენი სეიფი ჩაიკეტა {{time}} {{tries}} არასწორი მცდელობის გამო!",
+ "Last accessed" : "ბოლო წვდომა",
+ "Never" : "არასდროს",
+ "No vaults found, why not create one?" : "სეიფები არ იქნა ნაპოვნი, რატომ არ შექმნით ახალს?",
+ "Password strength must be at least: {{strength}}" : "პაროლის სიძლიერე უნდა იყოს მინ.: {{strength}}",
+ "Please give your new vault a name." : "გთხოვთ თქვენს სეიფს დაარქვათ ახალი სახელი.",
+ "Repeat vault password" : "გაიმეორეთ სეიფის სახელი",
+ "Create vault" : "სეიფის შექმნა",
+ "Go back to vaults" : "უკან სეიფებისკენ",
+ "Please input the password for" : "შეიყვანეთ პაროლი ობიექტისთვის",
+ "Set this vault as the default." : "ამ სეიფის საწყისად მოხმარება.",
+ "Log into this vault automatically." : "ავტომატურად მოხდეს ავტორიზაცია ამ სეიფზე.",
+ "Log out of this vault automatically after: " : "მოხდეს სეიფიდან ავტომატური გასვლა:",
+ "Decrypt vault" : "სეიფის დეშიფრაცია",
+ "Seems you lost the vault password and you're unable to log in." : "როგორც ჩანს სეიფის პაროლი დაკარგეთ და ვერ გადიხართ ავტორიზაციას.",
+ "If you want this vault to be removed you can request that here." : "თუ გსურთ ამ სეიფის გაუქმება შეგიძლიათ მოითხოვოთ აქ.",
+ "An admin then accepts or declines the request" : "ადმინისტრატორი იღებს ან უარყოფს ამ მოთხოვნას",
+ "After an admin destroys this vault, all credentials in it will be lost" : "მას შემდეგ რაც ადმინისტრატორი გააუქმებს ამ სეიფს, მასში არსებული ყველა უფლებამოსილება გაუქმება",
+ "Reason for requesting deletion (optional):" : "გაუქმების მოთოვნის მიზეზი (არასავალდებულო):",
+ "Request vault destruction" : "სეიფის დესტრუქციის მოთხოვნა",
+ "Yes, request an admin to destroy this vault" : "კი, სთხოვეთ ადმინისტრატორს ამ სეიფის გაუქმება",
+ "Cancel destruction request" : "სეიფის დესტრუქციის მოთხოვნის უარყოფა",
+ "Vault destruction requested" : "სეიფის დესტრუქცია მოთხოვნილია",
+ "Request removed" : "მოთხოვნილება გაუქმდა",
+ "Destruction request pending" : "დესტრუქციის მოთხოვნა მოლოდინშია",
+ "Warning! Adding credentials over HTTP is insecure!" : "გაფრთხილება! უფლებამოსილების დამატება HTTP-ით საშიშია!",
+ "Change vault" : "სეიფის ცვლილება",
+ "Deleted credentials" : "წაშლილი უფლებამოსილებები",
+ "Logout" : "გასვლა",
+ "Donate" : "შემოწირულობა",
+ "Someone has shared a credential with you." : "ვიღაცამ გაგიზიარათ უფლებამოსილება.",
+ "Click here to request it" : "მოთხოვნისთვის დააწკაპუნეთ აქ",
+ "Loading…" : "იტვირთება…",
+ "Awwhh… credential not found. Maybe it expired" : "უფლებამოსილების მოძიება ვერ მოხერხდა. შეიძლება ის გაუქმდა",
+ "Error while saving field" : "ველის შენახვისას წარმოიქმნა შეცდომა",
+ "A Passman item has been created, modified or deleted" : "Passman-ის ელემენტი შეიქმნა, შეიცვალა ან გაუქმდა",
+ "A Passman item has expired" : "Passman-ის ელემენტს გაუვიდა ვადა",
+ "A Passman item has been shared" : "Passman-ის ელემენტი გაზიარებულ იქნა",
+ "A Passman item has been renamed" : "Passman-ის ელემენტს შეეცვალა სახელი",
+ "%1$s has been created by %2$s" : "%2$s მომხმარებელმა შექმნა %1$s",
+ "You created %1$s" : "თქვენ შექმენით %1$s",
+ "%1$s has been updated by %2$s" : "%2$s მომხმარებელმა განაახლა %1$s",
+ "You updated %1$s" : "თქვენ განაახლეთ %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s-მა %1$s განათავსა %3$s-ის რევიზიაში",
+ "You reverted %1$s back to the revision of %3$s" : "თქვენ %1$s დააბრუნეთ უკან %3$s-ის რევიზიაში",
+ "%3$s has renamed %1$s to %2$s" : "%3$s-ს სახელი შეეცვალა %1$s-იდან %2$s-ზე",
+ "You renamed %1$s to %2$s" : "თქვენ გადაარქვით %1$s-ს ახელი %2$s-ზე",
+ "%1$s has been deleted by %2$s" : "%2$s მომხმარებელმა გააუქმა %1$s",
+ "You deleted %1$s" : "თქვენ გააუქმეთ %1$s",
+ "%1$s has been recovered by %2$s" : "%2$s მომხმარებელმა აღადგინა %1$s",
+ "You recovered %1$s" : "თქვენ აღადგინეთ %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%2$s მომხმარებელმა სამუდამოდ გააუქმა %1$s",
+ "You permanently deleted %1$s" : "თქვენ სამუდამოდ გააუქმეთ %1$s",
+ "The password of %1$s has expired, renew it now." : "%1$s-ის პაროლს ვადა გაუვიდა, გაანახლეთ ის.",
+ "%1$s has been shared with %2$s" : "%1$s გაზიარდა მომხმარებელთან %2$s",
+ "You received a share request for %1$s from %2$s" : "%2$s მომხმარებლისგან მოგივიდათ გაზიარების მოთხოვნა %1$s-ზე",
+ "%s has been shared with a link" : "%s გაზიარდა ბმულით",
+ "Your credential \"%s\" expired, click here to update the credential." : "თქვენს უფლებამოსილებას \"%s\"-ს გაუვიდა ვადა, გასანახლებლად დააწკაპუნეთ აქ.",
+ "Remind me later" : "გამახსენეთ მოგვიანებით",
+ "Ignore" : "იგნორი",
+ "%s shared \"%s\" with you. Click here to accept" : "%s მომხმარებელმა გაგიზიარათ \"%s\". მისაღებად დააწკაპუნეთ",
+ "%s has declined your share request for \"%s\"." : "%s მომხმარებელმა უარყო გაზიარების მოთხოვნა \"%s\"-ზე.",
+ "%s has accepted your share request for \"%s\"." : "%s მომხმარებელმა დაადასტურა გაზიარების მოთხოვნა \"%s\"-ზე.",
+ "Passman" : "Passman-ი",
+ "Unable to get version info" : "ვერსიის ინფორმაციის მიღება არ ხერხდება",
+ "Passman Settings" : "Passman-ის პარამეტრები",
+ "GitHub version:" : "GitHub-ის ვერსია:",
+ "A newer version of Passman is available" : "Passman-ის ახლი ვერსია ხელმისაწვდომია",
+ "Password sharing" : "პაროლის გაზიარება",
+ "Credential mover" : "უფლებამოსილებების გადამტანი",
+ "Vault destruction requests" : "სეიფის დესტრუქციის მოთხოვნები",
+ "Check for new versions" : "შეამოწმეთ ახალი ვერსიები",
+ "Enable HTTPS check" : "HTTPS შემოწმების ამოქმედება",
+ "Disable context menu" : "კონტექსტ-მენიუს გათიშვა",
+ "Disable JavaScript debugger" : "JavaScript დებაგერის გათიშვა",
+ "Allow users on this server to share passwords with a link" : "მიეცით უფლება მომხმარებლებს ამ სერვერზე გააზიარონ პაროლები ბმულით",
+ "Allow users on this server to share passwords with other users" : "მიეცით უფლება მომხმარებლებს ამ სერვერზე სხვა მომხმარებლებს გაუზიარონ პაროლები",
+ "Move credentials from one account to another" : "უფლებამოსილებების ერთი ანგარიშიდან მეორეზე გადატანა",
+ "Source account" : "საწყისი ანგარიში",
+ "Destination account" : "დანიშნულების ანგარიში",
+ "Credentials moved!" : "უფლებამოსილებები გადატანილია!",
+ "Requests to destroy vault" : "მოთხოვნები სეიფის გაუქმებაზე",
+ "Request ID" : "მოთხოვნის ID",
+ "Requested by" : "მომთხოვნელი",
+ "Reason" : "მიზეზი",
+ "Click here to request\n\t\t\t\t\tit" : "დააჭირეთ რომ მოითხოვოთ\n\t\t\t\t\tის",
+ "Connection to server lost" : "სერვერთან კავშირი გაწყდა",
+ "Problem loading page, reloading in 5 seconds" : "გვერდის ჩატვირთვის შეცდომა, გადაიტვირთება 5 წამში",
+ "Saving..." : "მიმდინარეობს შენახვა…",
+ "Dismiss" : "დათხოვნა",
+ "seconds ago" : "წამის წინ"
+},
+"nplurals=2; plural=(n!=1);");
diff --git a/l10n/ka_GE.json b/l10n/ka_GE.json
new file mode 100644
index 00000000..8e721ba9
--- /dev/null
+++ b/l10n/ka_GE.json
@@ -0,0 +1,318 @@
+{ "translations": {
+ "Passwords" : "პაროლები",
+ "Generating sharing keys ( %s / 2)" : "გაზიარების გასაღებების გენერირება (%s / 2)",
+ "Incorrect vault password!" : "სეიფის არასწორი პაროლი",
+ "Passwords do not match" : "პაროლები ერთმანეთს არ ემთხვევა",
+ "General" : "მთავარი",
+ "Custom Fields" : "პერსონალური ველები",
+ "Please fill in a label." : "შეავსეთ ლეიბლი.",
+ "Please fill in a value." : "შეავსეთ მნიშვნელობა.",
+ "Error loading file" : "შეცდომა ფაილის ჩატვირთვისას",
+ "An error occurred during decryption" : "დეშიფრაციისას წარმოიშვა შეცდომა",
+ "Credential created!" : "უფლებამოსილება შეიქმნა!",
+ "Credential deleted" : "უფლებამოსილება გაუქმდა",
+ "Credential updated" : "უფლებამოსილება განახლდა",
+ "Credential recovered" : "უფლებამოსილება აღდგა",
+ "Credential destroyed" : "უფლებამოსილება გაუქმდა",
+ "Invalid QR code" : "არასწორი QR კოდი",
+ "Starting export" : "ექსპორტის დაწეყება",
+ "Decrypting credentials" : "უფლებასმოსილების დეშიფრაცია",
+ "Done" : "დასრულდა",
+ "Proceed with the following steps to import your file" : "ფიალის იმპორტისთვის მიყევით შემდეგ ნაბიჯებს",
+ "Adding {{credential}}" : "ემატება {{credential}}",
+ "Added {{credential}}" : "{{credential}} დაემატა",
+ "Skipping credential, missing label on line {{line}}" : "უფლებამოსილების გამოტოვება, ლეიბლი ხაზზე {{line}} არაა",
+ "Parsed {{num}} credentials, starting to import" : "გარჩეულია {{num}} უფლებამოსილება, იმპორტის დაწყება",
+ "Importing" : "იმპორტირება",
+ "Start import" : "იმპორტის დაწყება",
+ "Select CSV file" : "აირჩიეთ CSV ფაილი",
+ "Parsed {{rows}} lines from CSV file" : "CSV ფაილიდან გარჩეულია {{rows}} ხაზი",
+ "Skip first row" : "პირველი რიგის გამოტოვება",
+ "You need to assign the label field before you can start the import." : "იმპორტამდე საჭიროა ლეიბლის ველის მინიჭება.",
+ "The first 5 lines of the CSV are shown." : "გამოტანილია CSV-ს პირველი 5 ხაზი.",
+ "Assign the proper fields to each column." : "თითოეულ სვეტს მიანიჭეთ სწორი ველი.",
+ "Example of imported credential" : "იმპორტირებული უფლებამოსილების მაგალითი",
+ "Missing an importer? Try it with the generic CSV importer." : "გაკლიათ იმპორტერი? სცადეთ ზოგად CSV იმპორტერი.",
+ "Go back to importers." : "უკან იმპორტერებისკენ.",
+ "Revision deleted" : "რევიზია გაუქმდა",
+ "Revision restored" : "რევიზია აღდგა",
+ "Save in Passman" : "შენავა Passman-ში",
+ "Settings saved" : "პარამეტრები შენაულია",
+ "General settings" : "მთავარი პარამეტრები",
+ "Password audit" : "პაროლის აუდიტი",
+ "Password settings" : "პაროლის პარამეტრები",
+ "Import credentials" : "უფლებამოსილებების იმპორტი",
+ "Export credentials" : "უფლებამოსილებების ექსპორტი",
+ "Sharing" : "გაზიარება",
+ "Are you sure you want to leave? This will destroy all your credentials" : "დარწმუნებული ხართ, რომ გუსრთ გასვლა? ეს გააუქმებს თქვენს ყველა უფლებამოსილებას",
+ "New password does not match!" : "ახალი პაროლები ერთამნეთს არ ემთხვევა!",
+ "Please log in with your new vault password" : "გაიარეთ ავტორიზაცია სეიფის ახალი პაროლით",
+ "Share with users and groups" : "გაუზიარეთ მომხმარებლებს და ჯგუფებს",
+ "Share link" : "ბმულის გაზიარება",
+ "Are you sure you want to leave? This will corrupt this credential" : "დარწმუნებული ხართ, რომ გუსრთ გახვიდეთ? ეს დააზიანბს უფლებამოსილებას",
+ "Credential unshared" : "უფლებამოსილება არაა გაზიარებული",
+ "Credential shared" : "უფლებამოსილება გაზიარებულია",
+ "Saved!" : "შენახულია!",
+ "Poor" : "ძალიან სუსტია",
+ "Weak" : "სუსტია",
+ "Good" : "კარგია",
+ "Strong" : "ძლიერია",
+ "Toggle visibility" : "ხილვადობის გადართვა",
+ "Copy to clipboard" : "კოპირება ბუფერში",
+ "Copied to clipboard!" : "კოპირებულია ბუფერში!",
+ "Generate password" : "პაროლის გენერირება",
+ "Copy password to clipboard" : "პაროლის კოპირება ბუფერში",
+ "Password copied to clipboard!" : "პაროლი კოპირებულია ბუფერში!",
+ "Complete" : "დასრულებულია",
+ "Username" : "მომხმარებლის სახელი",
+ "Repeat password" : "პაროლის გამეორება",
+ "Add tag" : "ტეგის დამატება",
+ "Pick an icon" : "აირჩიეთ პიქტოგრამა",
+ "Use this icon" : "გამოიყენეთ ეს პიქტოგრამა",
+ "Selected icon" : "არჩეული პიქტოგრამა",
+ "Field label" : "ველის ლეიბლი",
+ "Field value" : "ველის მნიშვნელობა",
+ "Choose a file" : "აირჩიეთ ფაილი",
+ "Text" : "ტექსტი",
+ "File" : "ფაილი",
+ "Add" : "დამატება",
+ "Value" : "მნიშვნელობა",
+ "Type" : "სახეობა",
+ "Actions" : "მოქმედებები",
+ "Empty" : "ცარიელი",
+ "Filename" : "ფაილის სახელი",
+ "Upload date" : "ატვირთვის თარიღი",
+ "Size" : "ზომა",
+ "Upload or enter your OTP secret" : "ატვირთეთ ან შეიყვანეთ თქვენი OTP საიდუმლო",
+ "Current OTP settings" : "ამჟამინდელი OTP პარამეტრი",
+ "Issuer" : "გამცემი",
+ "Secret" : "საიდუმლო",
+ "Expiration date" : "გაუქმების თარიღი",
+ "No expiration date set" : "გაუქმების თარიღი დაყენებული არაა",
+ "Renew interval" : "ინტერვალის განახლება",
+ "Disabled" : "გათიშულია",
+ "Day(s)" : "(დღე)",
+ "Week(s)" : "(კვირა)",
+ "Month(s)" : "(თვე)",
+ "Year(s)" : "(წელი)",
+ "Password generation settings" : "პაროლის გენერირების პარამეტრები",
+ "Password length" : "პაროლის სიგრძე",
+ "Minimum amount of digits" : "ციფრების მინ. რაოდენობა",
+ "Use uppercase letters" : "გამოიყენეთ დიდი ასოები",
+ "Use lowercase letters" : "გამოიყენეთ პატარა ასოები",
+ "Use numbers" : "გამოიყენეთ ციფრები",
+ "Use special characters" : "გამოიყენეთ სპეციალური ნიშნები",
+ "Avoid ambiguous characters" : "თავის არიდება გაურკვეველ ნიშნებზე",
+ "Require every character type" : "ყველა ნიშნის სახეობის მოთხოვნა",
+ "Export type" : "ექსპორტის სახეობა",
+ "Export" : "ექსპორტი",
+ "Enter vault password to confirm export." : "ექპორტის დასადასტურებლად შეიყვანეთ სეიფის პაროლი.",
+ "Rename vault" : "სეიფის სახელის შეცვლა",
+ "New vault name" : "ახალი სეიფის სახელი",
+ "Change" : "შეცვლა",
+ "Change vault key" : "სეიფის გასაღების შეცვლა",
+ "Old vault password" : "სეიფის ძველი პაროლი",
+ "New vault password" : "სეიფის ახალი პაროლი",
+ "Repeat new vault password" : "გაიმეორეთ სეიფის ახალი პაროლი",
+ "Please wait your vault is being updated, do not leave this page." : "გთხოვთ დაელოდოთ სეიფის განახლებას, არ დატოვოთ ეს გვერდი.",
+ "Processing" : "პროცესირება",
+ "Total progress" : "პროგრესის ჯამი",
+ "About Passman" : "Passman-ის შესახებ",
+ "Version" : "ვერსია",
+ "Donate to support development" : "დაუჭირეთ დეველოპერის მხარი შემოწირულობით",
+ "Bookmarklet" : "Bookmarklet-ი",
+ "Drag below button to your bookmark toolbar." : "გადაიტანეთ ქვემოთ მყოფი ღილაკი სანიშნეების პანელისკენ.",
+ "Delete vault" : "სეიფის გაუქმება",
+ "Vault password" : "სეიფის პაროლი",
+ "This process is irreversible" : "ეს პროცესი არაა უკუქცევადი",
+ "Delete my precious passwords" : "ჩემი მშვენიერი პაროლების გაუქმება",
+ "Deleting {{password}}…" : "{{password}}-ის გაუქმება…",
+ "Yes, delete my precious passwords" : "კი, გააუქმდეს ჩემი მშვენიერი პაროლები",
+ "Import type" : "იმპორტის სახეობა",
+ "Import" : "იმპორტი",
+ "Read progress" : "პროგრესის წაკითხვა",
+ "Upload progress" : "ატვირთვის პროგრესი",
+ "Private Key" : "პირადი გასაღები",
+ "Public key" : "ღია გასაღები",
+ "Key size" : "გასაღების ზომა",
+ "Save keys" : "გასაღებების შენახვა",
+ "Generate sharing keys" : "გაზიარების გასაღებების გენერირება",
+ "Generating sharing keys" : "მიმდინარეობს გაზიარების გასაღებების გენერირება",
+ "Minimum password stength" : "პაროლის მინ. სიგრძე",
+ "Start scan" : "სკანირების დაწყება",
+ "Result" : "შედეგი",
+ "A total of {{scan_result}} weak credentials were found." : "სულ ნაპოვნია {{scan_result}} სუსტი უფლებამოსილება.",
+ "Score" : "ქულა",
+ "Action" : "ქმედება",
+ "Search users…" : "მომხმარებლების ძიება...",
+ "Missing users? Only users that have vaults are shown." : "აკლია მომხმარებლები? ნაჩვენებია მხოლოდ სეიფის მქონე მომხმარებლები.",
+ "Cyphering" : "იშიფრება",
+ "Uploading" : "ხდება ატვირთვა",
+ "User" : "მომხმარებელი",
+ "Crypto time" : "კრიპტო დრო",
+ "Read" : "წაკითხვა",
+ "Write" : "ჩაწერა",
+ "Files" : "ფაილები",
+ "Revisions" : "რევიზიები",
+ "Pending" : "მოლოდინში",
+ "Enable link sharing" : "ბმულით გაზიარების ამოქმედება",
+ "Share until date" : "გაზიარება დრომდე",
+ "Expire after views" : "უქმდება ჩვენებების შემდეგ",
+ "Show files" : "ფაილების ჩვენება",
+ "Details" : "დეტალები",
+ "Hide details" : "დეტალების დამალვა",
+ "Password score" : "პაროლის ქულა",
+ "Cracking times" : "გატეხვის დროები",
+ "100 / hour" : "100 / საათი",
+ "Throttled online attack" : "დარტყმული ონლაინ შეტევა",
+ "10 / second" : "10 / წამი",
+ "Unthrottled online attack" : "დაურტყმელი ონლაინ შეტევა",
+ "10k / second" : "10კ / წამი",
+ "Offline attack, slow hash, many cores" : "კავშირ-გარეშე შეტევა, ნელი ჰეში, ბევრი ბირთვი",
+ "10B / second" : "10ბ / წამი",
+ "Offline attack, fast hash, many cores" : "კავშირ-გარეშე შეტევა, სწრაფი ჰეში, ბევრი ბირთვი",
+ "Match sequence" : "თანმიმდევრობაზე დამთხვევა",
+ "See match sequence" : "დამთხვეული თანმიმდევრობის ჩვენება",
+ "Pattern" : "ნიმუში",
+ "Matched word" : "დამთხვეული სიტყვა",
+ "Dictionary name" : "ანბანის სახელი",
+ "Rank" : "რანგი",
+ "Reversed" : "დაბრუნებული",
+ "Guesses" : "გამოცნობები",
+ "Base guesses" : "ფუძისეული გამოცნობები",
+ "Uppercase variations" : "დიდ-ასოიანი ვარიაციები",
+ "l33t-variations" : "l33t-ვარიაციები",
+ "Showing revisions of" : "რევიზიების ჩვენება",
+ "Revision of" : "ობიექტი:",
+ "by" : "სუბიექტი:",
+ "No revisions found." : "რევიზიები ვერ იქნა ნაპოვნი",
+ "Label" : "ლეიბლი",
+ "Restore revision" : "რევიზიის აღდგენა",
+ "Delete revision" : "რევიზიის გაუქმება",
+ "Edit credential" : "უფლებამოსილების ცვლილება",
+ "Create new credential" : "ახალი უფლებამოსილების შექმნა",
+ "Save" : "შენახვა",
+ "Cancel" : "უარყოფა",
+ "Settings" : "პარამეტრები",
+ "Share credential {{credential}}" : "უფლებამოსილების გაზიარება {{credential}}",
+ "Unshare" : "გაზიარების შეყვეტა",
+ "Showing deleted since" : "ვაჩვენებთ გადაგდებულს დანიშმულების შემდეგ",
+ "Beginning" : "დასაწყისი",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "ვაჩვენებთ {{number_filtered}} სულ {{credential_number}} უფლებამოსილებიდან",
+ "Search for credential…" : "უფლებამოსილების ძებნა...",
+ "Account" : "ანგარიში",
+ "Password" : "პაროლი",
+ "OTP" : "OTP",
+ "E-mail" : "ელ-ფოსტა",
+ "URL" : "URL",
+ "Notes" : "ჩანაწერები",
+ "Expiry time" : "გაუქმების დრო",
+ "Changed" : "შეცვლილია",
+ "Created" : "შექმნილია",
+ "Edit" : "შეცვლა",
+ "Delete" : "გაუქმება",
+ "Share" : "გაზიარება",
+ "Recover" : "აღდგენა",
+ "Destroy" : "გაუქმება",
+ "Use regex" : "რეგ. გამოსახულება",
+ "You have incoming share requests." : "თქვენ გაქვთ შემოსული გაზიარების მოთხოვნები.",
+ "If you want to put the credential in another vault," : "თუ გსურთ უფლებამოსილების სხვა სეიფში მოთავსება,",
+ "Permissions" : "უფლებები",
+ "Received from" : "ვისგან:",
+ "Date" : "თარიღი",
+ "Accept" : "მიღება",
+ "Decline" : "ურაყოფა",
+ "You have {{session_time}} left before logout." : "გასვლამდა დაგრჩათ {{session_time}}.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "თქვენი სეიფი ჩაიკეტა {{time}} {{tries}} არასწორი მცდელობის გამო!",
+ "Last accessed" : "ბოლო წვდომა",
+ "Never" : "არასდროს",
+ "No vaults found, why not create one?" : "სეიფები არ იქნა ნაპოვნი, რატომ არ შექმნით ახალს?",
+ "Password strength must be at least: {{strength}}" : "პაროლის სიძლიერე უნდა იყოს მინ.: {{strength}}",
+ "Please give your new vault a name." : "გთხოვთ თქვენს სეიფს დაარქვათ ახალი სახელი.",
+ "Repeat vault password" : "გაიმეორეთ სეიფის სახელი",
+ "Create vault" : "სეიფის შექმნა",
+ "Go back to vaults" : "უკან სეიფებისკენ",
+ "Please input the password for" : "შეიყვანეთ პაროლი ობიექტისთვის",
+ "Set this vault as the default." : "ამ სეიფის საწყისად მოხმარება.",
+ "Log into this vault automatically." : "ავტომატურად მოხდეს ავტორიზაცია ამ სეიფზე.",
+ "Log out of this vault automatically after: " : "მოხდეს სეიფიდან ავტომატური გასვლა:",
+ "Decrypt vault" : "სეიფის დეშიფრაცია",
+ "Seems you lost the vault password and you're unable to log in." : "როგორც ჩანს სეიფის პაროლი დაკარგეთ და ვერ გადიხართ ავტორიზაციას.",
+ "If you want this vault to be removed you can request that here." : "თუ გსურთ ამ სეიფის გაუქმება შეგიძლიათ მოითხოვოთ აქ.",
+ "An admin then accepts or declines the request" : "ადმინისტრატორი იღებს ან უარყოფს ამ მოთხოვნას",
+ "After an admin destroys this vault, all credentials in it will be lost" : "მას შემდეგ რაც ადმინისტრატორი გააუქმებს ამ სეიფს, მასში არსებული ყველა უფლებამოსილება გაუქმება",
+ "Reason for requesting deletion (optional):" : "გაუქმების მოთოვნის მიზეზი (არასავალდებულო):",
+ "Request vault destruction" : "სეიფის დესტრუქციის მოთხოვნა",
+ "Yes, request an admin to destroy this vault" : "კი, სთხოვეთ ადმინისტრატორს ამ სეიფის გაუქმება",
+ "Cancel destruction request" : "სეიფის დესტრუქციის მოთხოვნის უარყოფა",
+ "Vault destruction requested" : "სეიფის დესტრუქცია მოთხოვნილია",
+ "Request removed" : "მოთხოვნილება გაუქმდა",
+ "Destruction request pending" : "დესტრუქციის მოთხოვნა მოლოდინშია",
+ "Warning! Adding credentials over HTTP is insecure!" : "გაფრთხილება! უფლებამოსილების დამატება HTTP-ით საშიშია!",
+ "Change vault" : "სეიფის ცვლილება",
+ "Deleted credentials" : "წაშლილი უფლებამოსილებები",
+ "Logout" : "გასვლა",
+ "Donate" : "შემოწირულობა",
+ "Someone has shared a credential with you." : "ვიღაცამ გაგიზიარათ უფლებამოსილება.",
+ "Click here to request it" : "მოთხოვნისთვის დააწკაპუნეთ აქ",
+ "Loading…" : "იტვირთება…",
+ "Awwhh… credential not found. Maybe it expired" : "უფლებამოსილების მოძიება ვერ მოხერხდა. შეიძლება ის გაუქმდა",
+ "Error while saving field" : "ველის შენახვისას წარმოიქმნა შეცდომა",
+ "A Passman item has been created, modified or deleted" : "Passman-ის ელემენტი შეიქმნა, შეიცვალა ან გაუქმდა",
+ "A Passman item has expired" : "Passman-ის ელემენტს გაუვიდა ვადა",
+ "A Passman item has been shared" : "Passman-ის ელემენტი გაზიარებულ იქნა",
+ "A Passman item has been renamed" : "Passman-ის ელემენტს შეეცვალა სახელი",
+ "%1$s has been created by %2$s" : "%2$s მომხმარებელმა შექმნა %1$s",
+ "You created %1$s" : "თქვენ შექმენით %1$s",
+ "%1$s has been updated by %2$s" : "%2$s მომხმარებელმა განაახლა %1$s",
+ "You updated %1$s" : "თქვენ განაახლეთ %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s-მა %1$s განათავსა %3$s-ის რევიზიაში",
+ "You reverted %1$s back to the revision of %3$s" : "თქვენ %1$s დააბრუნეთ უკან %3$s-ის რევიზიაში",
+ "%3$s has renamed %1$s to %2$s" : "%3$s-ს სახელი შეეცვალა %1$s-იდან %2$s-ზე",
+ "You renamed %1$s to %2$s" : "თქვენ გადაარქვით %1$s-ს ახელი %2$s-ზე",
+ "%1$s has been deleted by %2$s" : "%2$s მომხმარებელმა გააუქმა %1$s",
+ "You deleted %1$s" : "თქვენ გააუქმეთ %1$s",
+ "%1$s has been recovered by %2$s" : "%2$s მომხმარებელმა აღადგინა %1$s",
+ "You recovered %1$s" : "თქვენ აღადგინეთ %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%2$s მომხმარებელმა სამუდამოდ გააუქმა %1$s",
+ "You permanently deleted %1$s" : "თქვენ სამუდამოდ გააუქმეთ %1$s",
+ "The password of %1$s has expired, renew it now." : "%1$s-ის პაროლს ვადა გაუვიდა, გაანახლეთ ის.",
+ "%1$s has been shared with %2$s" : "%1$s გაზიარდა მომხმარებელთან %2$s",
+ "You received a share request for %1$s from %2$s" : "%2$s მომხმარებლისგან მოგივიდათ გაზიარების მოთხოვნა %1$s-ზე",
+ "%s has been shared with a link" : "%s გაზიარდა ბმულით",
+ "Your credential \"%s\" expired, click here to update the credential." : "თქვენს უფლებამოსილებას \"%s\"-ს გაუვიდა ვადა, გასანახლებლად დააწკაპუნეთ აქ.",
+ "Remind me later" : "გამახსენეთ მოგვიანებით",
+ "Ignore" : "იგნორი",
+ "%s shared \"%s\" with you. Click here to accept" : "%s მომხმარებელმა გაგიზიარათ \"%s\". მისაღებად დააწკაპუნეთ",
+ "%s has declined your share request for \"%s\"." : "%s მომხმარებელმა უარყო გაზიარების მოთხოვნა \"%s\"-ზე.",
+ "%s has accepted your share request for \"%s\"." : "%s მომხმარებელმა დაადასტურა გაზიარების მოთხოვნა \"%s\"-ზე.",
+ "Passman" : "Passman-ი",
+ "Unable to get version info" : "ვერსიის ინფორმაციის მიღება არ ხერხდება",
+ "Passman Settings" : "Passman-ის პარამეტრები",
+ "GitHub version:" : "GitHub-ის ვერსია:",
+ "A newer version of Passman is available" : "Passman-ის ახლი ვერსია ხელმისაწვდომია",
+ "Password sharing" : "პაროლის გაზიარება",
+ "Credential mover" : "უფლებამოსილებების გადამტანი",
+ "Vault destruction requests" : "სეიფის დესტრუქციის მოთხოვნები",
+ "Check for new versions" : "შეამოწმეთ ახალი ვერსიები",
+ "Enable HTTPS check" : "HTTPS შემოწმების ამოქმედება",
+ "Disable context menu" : "კონტექსტ-მენიუს გათიშვა",
+ "Disable JavaScript debugger" : "JavaScript დებაგერის გათიშვა",
+ "Allow users on this server to share passwords with a link" : "მიეცით უფლება მომხმარებლებს ამ სერვერზე გააზიარონ პაროლები ბმულით",
+ "Allow users on this server to share passwords with other users" : "მიეცით უფლება მომხმარებლებს ამ სერვერზე სხვა მომხმარებლებს გაუზიარონ პაროლები",
+ "Move credentials from one account to another" : "უფლებამოსილებების ერთი ანგარიშიდან მეორეზე გადატანა",
+ "Source account" : "საწყისი ანგარიში",
+ "Destination account" : "დანიშნულების ანგარიში",
+ "Credentials moved!" : "უფლებამოსილებები გადატანილია!",
+ "Requests to destroy vault" : "მოთხოვნები სეიფის გაუქმებაზე",
+ "Request ID" : "მოთხოვნის ID",
+ "Requested by" : "მომთხოვნელი",
+ "Reason" : "მიზეზი",
+ "Click here to request\n\t\t\t\t\tit" : "დააჭირეთ რომ მოითხოვოთ\n\t\t\t\t\tის",
+ "Connection to server lost" : "სერვერთან კავშირი გაწყდა",
+ "Problem loading page, reloading in 5 seconds" : "გვერდის ჩატვირთვის შეცდომა, გადაიტვირთება 5 წამში",
+ "Saving..." : "მიმდინარეობს შენახვა…",
+ "Dismiss" : "დათხოვნა",
+ "seconds ago" : "წამის წინ"
+},"pluralForm" :"nplurals=2; plural=(n!=1);"
+} \ No newline at end of file
diff --git a/l10n/ko.js b/l10n/ko.js
new file mode 100644
index 00000000..19a5882d
--- /dev/null
+++ b/l10n/ko.js
@@ -0,0 +1,320 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "암호",
+ "Generating sharing keys ( %s / 2)" : "공유 키 생성 중 (%s/2)",
+ "Incorrect vault password!" : "비밀 저장소 암호가 잘못되었습니다!",
+ "Passwords do not match" : "암호가 일치하지 않습니다",
+ "General" : "일반",
+ "Custom Fields" : "사용자 정의 필드",
+ "Please fill in a label." : "레이블을 입력하십시오.",
+ "Please fill in a value." : "값을 입력하십시오.",
+ "Error loading file" : "파일 불러오기 오류",
+ "An error occurred during decryption" : "복호화 도중 오류 발생",
+ "Credential created!" : "인증 정보를 생성했습니다!",
+ "Credential deleted" : "인증 정보 삭제됨",
+ "Credential updated" : "인증 정보 업데이트됨",
+ "Credential recovered" : "인증 정보 복구됨",
+ "Credential destroyed" : "인증 정보 파괴됨",
+ "Invalid QR code" : "잘못된 QR 코드",
+ "Starting export" : "내보내기 시작하는 중",
+ "Decrypting credentials" : "인증 정보 복호화 중",
+ "Done" : "완료",
+ "Proceed with the following steps to import your file" : "파일을 가져오려면 다음 단계를 실행하십시오",
+ "Adding {{credential}}" : "{{credential}} 추가 중",
+ "Added {{credential}}" : "{{credential}} 추가됨",
+ "Skipping credential, missing label on line {{line}}" : "{{line}}번째 줄에 레이블이 없어서 인증 정보 건너뜀",
+ "Parsed {{num}} credentials, starting to import" : "인증 정보 {{num}}개 처리함, 가져오기 시작",
+ "Importing" : "가져오는 중",
+ "Start import" : "가져오기 시작",
+ "Select CSV file" : "CSV 파일 선택",
+ "Parsed {{rows}} lines from CSV file" : "CSV 파일에서 {{rows}}줄을 처리함",
+ "Skip first row" : "첫 줄 건너뛰기",
+ "You need to assign the label field before you can start the import." : "가져오기를 시작하기 전에 레이블 필드를 지정해야 합니다.",
+ "The first 5 lines of the CSV are shown." : "CSV 파일의 첫 5줄을 표시합니다.",
+ "Assign the proper fields to each column." : "각각 열별로 필드를 지정하십시오.",
+ "Example of imported credential" : "가져온 인증 정보 예시",
+ "Missing an importer? Try it with the generic CSV importer." : "가져오기 도구가 없습니까? 일반 CSV 가져오기 도구를 시도해 보십시오.",
+ "Go back to importers." : "가져오기 도구로 돌아갑니다.",
+ "Revision deleted" : "리비전 삭제됨",
+ "Revision restored" : "리비전 복원됨",
+ "Save in Passman" : "Passman에 저장",
+ "Settings saved" : "설정 저장됨",
+ "General settings" : "일반 설정",
+ "Password audit" : "암호 감사",
+ "Password settings" : "암호 설정",
+ "Import credentials" : "인증 정보 가져오기",
+ "Export credentials" : "인증 정보 내보내기",
+ "Sharing" : "공유",
+ "Are you sure you want to leave? This will destroy all your credentials" : "떠나시겠습니까? 모든 인증 정보를 파괴합니다",
+ "New password does not match!" : "새 암호가 일치하지 않습니다!",
+ "Please log in with your new vault password" : "새 비밀 저장소 암호로 로그인하십시오",
+ "Share with users and groups" : "다음 사용자 및 그룹과 공유",
+ "Share link" : "링크 공유",
+ "Are you sure you want to leave? This will corrupt this credential" : "떠나시겠습니까? 이 인증 정보를 사용할 수 없습니다",
+ "Credential unshared" : "인증 정보 공유 해제됨",
+ "Credential shared" : "인증 정보 공유됨",
+ "Saved!" : "저장됨!",
+ "Poor" : "나쁨",
+ "Weak" : "약함",
+ "Good" : "좋음",
+ "Strong" : "강함",
+ "Toggle visibility" : "보이기/숨기기",
+ "Copy to clipboard" : "클립보드로 복사",
+ "Copied to clipboard!" : "클립보드에 복사했습니다!",
+ "Generate password" : "암호 생성",
+ "Copy password to clipboard" : "클립보드에 암호 복사",
+ "Password copied to clipboard!" : "암호를 클립보드에 복사했습니다!",
+ "Complete" : "완료",
+ "Username" : "사용자 이름",
+ "Repeat password" : "암호 확인",
+ "Add tag" : "태그 추가",
+ "Pick an icon" : "아이콘 선택",
+ "Use this icon" : "이 아이콘 사용",
+ "Selected icon" : "선택한 아이콘",
+ "Field label" : "필드 레이블",
+ "Field value" : "필드 값",
+ "Choose a file" : "파일 선택",
+ "Text" : "텍스트",
+ "File" : "파일",
+ "Add" : "추가",
+ "Value" : "값",
+ "Type" : "종류",
+ "Actions" : "동작",
+ "Empty" : "비어 있음",
+ "Filename" : "파일 이름",
+ "Upload date" : "업로드한 날짜",
+ "Size" : "크기",
+ "Upload or enter your OTP secret" : "OTP 비밀 키를 업로드하거나 입력",
+ "Current OTP settings" : "현재 OTP 설정",
+ "Issuer" : "발급자",
+ "Secret" : "비밀 값",
+ "Expiration date" : "만료 날짜",
+ "No expiration date set" : "만료 날짜가 설정되지 않았음",
+ "Renew interval" : "새로 고침 간격",
+ "Disabled" : "비활성화됨",
+ "Day(s)" : "일",
+ "Week(s)" : "주",
+ "Month(s)" : "개월",
+ "Year(s)" : "년",
+ "Password generation settings" : "암호 생성 설정",
+ "Password length" : "암호 길이",
+ "Minimum amount of digits" : "최소 자릿수",
+ "Use uppercase letters" : "대문자 사용",
+ "Use lowercase letters" : "소문자 사용",
+ "Use numbers" : "숫자 사용",
+ "Use special characters" : "특수 문자 사용",
+ "Avoid ambiguous characters" : "모호한 글자 피하기",
+ "Require every character type" : "종류별로 최소 1글자씩 사용",
+ "Export type" : "내보내기 종류",
+ "Export" : "내보내기",
+ "Enter vault password to confirm export." : "내보내기를 확인하려면 비밀 저장소 암호를 입력하십시오.",
+ "Rename vault" : "비밀 저장소 이름 바꾸기",
+ "New vault name" : "새 비밀 저장소 이름",
+ "Change" : "변경",
+ "Change vault key" : "비밀 저장소 키 변경",
+ "Old vault password" : "이전 비밀 저장소 암호",
+ "New vault password" : "새 비밀 저장소 암호",
+ "Repeat new vault password" : "새 비밀 저장소 암호 확인",
+ "Please wait your vault is being updated, do not leave this page." : "비밀 저장소를 업데이트하는 동안 기다려 주십시오. 이 페이지를 떠나지 마십시오.",
+ "Processing" : "처리 중",
+ "Total progress" : "전체 진행",
+ "About Passman" : "Passman 정보",
+ "Version" : "버전",
+ "Donate to support development" : "기부하여 개발을 지원해 주십시오",
+ "Bookmarklet" : "북마크릿",
+ "Drag below button to your bookmark toolbar." : "북마크 도구 모음에 아래 단추를 끌어다 놓으십시오.",
+ "Delete vault" : "비밀 저장소 삭제",
+ "Vault password" : "저장소 암호",
+ "This process is irreversible" : "이 작업은 취소할 수 없습니다",
+ "Delete my precious passwords" : "내 소중한 암호를 삭제합니다",
+ "Deleting {{password}}…" : "{{password}} 삭제 중…",
+ "Yes, delete my precious passwords" : "예, 내 소중한 암호를 삭제합니다",
+ "Import type" : "가져오기 종류",
+ "Import" : "가져오기",
+ "Read progress" : "읽기 진행",
+ "Upload progress" : "업로드 진행",
+ "Private Key" : "비밀 키",
+ "Public key" : "공개 키",
+ "Key size" : "키 크기",
+ "Save keys" : "키 저장",
+ "Generate sharing keys" : "공유 키 생성",
+ "Generating sharing keys" : "공유 키 생성 중",
+ "Minimum password stength" : "최소 암호 강도",
+ "Start scan" : "검색 시작",
+ "Result" : "결과",
+ "A total of {{scan_result}} weak credentials were found." : "약한 암호를 {{scan_result}}개 찾았습니다.",
+ "Score" : "점수",
+ "Action" : "동작",
+ "Search users…" : "사용자 검색…",
+ "Missing users? Only users that have vaults are shown." : "사용자가 없습니까? 비밀 저장소가 있는 사용자만 표시됩니다.",
+ "Cyphering" : "암호화 중",
+ "Uploading" : "업로드 중",
+ "User" : "사용자",
+ "Crypto time" : "암호화 시간",
+ "Read" : "읽기",
+ "Write" : "쓰기",
+ "Files" : "파일",
+ "Revisions" : "리비전",
+ "Pending" : "대기 중",
+ "Enable link sharing" : "링크 공유 사용",
+ "Share until date" : "공유할 끝 날짜",
+ "Expire after views" : "특정 조회수 이상 시 만료",
+ "Show files" : "파일 보이기",
+ "Details" : "자세한 정보",
+ "Hide details" : "자세한 정보 숨기기",
+ "Password score" : "암호 점수",
+ "Cracking times" : "크래킹 시간",
+ "100 / hour" : "100 / 시간",
+ "Throttled online attack" : "제한된 온라인 공격",
+ "10 / second" : "10 / 초",
+ "Unthrottled online attack" : "제한되지 않은 온라인 공격",
+ "10k / second" : "1만 / 초",
+ "Offline attack, slow hash, many cores" : "오프라인 공격, 느린 해시, 다중 코어",
+ "10B / second" : "100억 / 초",
+ "Offline attack, fast hash, many cores" : "오프라인 공격, 빠른 해시, 다중 코어",
+ "Match sequence" : "시퀀스 일치",
+ "See match sequence" : "일치하는 시퀀스 보기",
+ "Pattern" : "패턴",
+ "Matched word" : "일치하는 단어",
+ "Dictionary name" : "사전 이름",
+ "Rank" : "등위",
+ "Reversed" : "반전됨",
+ "Guesses" : "추측",
+ "Base guesses" : "기본 추측",
+ "Uppercase variations" : "대문자 변형",
+ "l33t-variations" : "l33t 변형",
+ "Showing revisions of" : "다음의 리비전 표시",
+ "Revision of" : "다음의 리비전",
+ "by" : "by",
+ "No revisions found." : "리비전을 찾을 수 없습니다.",
+ "Label" : "레이블",
+ "Restore revision" : "리비전 복원",
+ "Delete revision" : "리비전 삭제",
+ "Edit credential" : "인증 정보 편집",
+ "Create new credential" : "새 인증 정보 만들기",
+ "Save" : "저장",
+ "Cancel" : "취소",
+ "Settings" : "설정",
+ "Share credential {{credential}}" : "{{credential}} 인증 정보 공유",
+ "Unshare" : "공유 해제",
+ "Showing deleted since" : "다음 시기 이후 삭제된 항목 표시",
+ "Beginning" : "시작",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "{{number_filtered}}/{{credential_number}}개 인증 정보 표시됨",
+ "Search for credential…" : "인증 정보 검색…",
+ "Account" : "계정",
+ "Password" : "암호",
+ "OTP" : "OTP",
+ "E-mail" : "이메일",
+ "URL" : "URL",
+ "Notes" : "메모",
+ "Expiry time" : "만료 시간",
+ "Changed" : "변경됨",
+ "Created" : "생성됨",
+ "Edit" : "편집",
+ "Delete" : "삭제",
+ "Share" : "공유",
+ "Recover" : "복구",
+ "Destroy" : "파괴",
+ "Use regex" : "정규 표현식 사용",
+ "You have incoming share requests." : "들어오는 공유 요청이 있습니다.",
+ "If you want to put the credential in another vault," : "인증 정보를 다른 비밀 저장소에 추가하려면",
+ "Permissions" : "권한",
+ "Received from" : "다음으로부터 받음",
+ "Date" : "날짜",
+ "Accept" : "수락",
+ "Decline" : "거절",
+ "You have {{session_time}} left before logout." : "{{session_time}} 후 로그아웃합니다.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "로그인 시도가 {{tries}}회 실패했기 때문에 {{time}} 동안 비밀 저장소가 잠겼습니다!",
+ "Last accessed" : "마지막 접근",
+ "Never" : "하지 않음",
+ "No vaults found, why not create one?" : "비밀 저장소를 찾을 수 없습니다. 새로 만드시겠습니까?",
+ "Password strength must be at least: {{strength}}" : "최소 암호 강도: {{strength}}",
+ "Please give your new vault a name." : "새 비밀 저장소의 이름을 입력하십시오.",
+ "Repeat vault password" : "비밀 저장소 암호 확인",
+ "Create vault" : "비밀 저장소 만들기",
+ "Go back to vaults" : "비밀 저장소로 돌아가기",
+ "Please input the password for" : "다음의 암호를 입력하십시오",
+ "Set this vault as the default." : "이 비밀 저장소를 기본값으로 설정합니다.",
+ "Log into this vault automatically." : "이 비밀 저장소에 자동으로 로그인합니다.",
+ "Log out of this vault automatically after: " : "다음 시간 이후 비밀 저장소에서 자동으로 로그아웃:",
+ "Decrypt vault" : "비밀 저장소 복호화",
+ "Seems you lost the vault password and you're unable to log in." : "비밀 저장소 암호를 잊었거나 로그인할 수 없는 것 같습니다.",
+ "If you want this vault to be removed you can request that here." : "이 비밀 저장소를 삭제하려면 여기에 요청하십시오.",
+ "An admin then accepts or declines the request" : "관리자가 해당 요청을 수락하거나 거부합니다.",
+ "After an admin destroys this vault, all credentials in it will be lost" : "관리자가 비밀 저장소를 파괴하면 저장되어 있는 모든 인증 정보가 손실됩니다",
+ "Reason for requesting deletion (optional):" : "삭제 요청 이유(선택 사항):",
+ "Request vault destruction" : "비밀 저장소 파괴 요청",
+ "Yes, request an admin to destroy this vault" : "예, 관리자에게 비밀 저장소 파괴를 요청합니다",
+ "Cancel destruction request" : "파괴 요청 취소",
+ "Vault destruction requested" : "비밀 저장소 파괴가 요청됨",
+ "Request removed" : "요청 삭제됨",
+ "Destruction request pending" : "파괴 요청 대기 중",
+ "Warning! Adding credentials over HTTP is insecure!" : "경고! HTTP로 인증 정보를 추가하면 안전하지 않습니다!",
+ "Change vault" : "비밀 저장소 변경",
+ "Deleted credentials" : "삭제된 인증 정보",
+ "Logout" : "로그아웃",
+ "Donate" : "기부하기",
+ "Someone has shared a credential with you." : "누군가가 여러분과 인증 정보를 공유했습니다.",
+ "Click here to request it" : "여기를 눌러서 요청하십시오",
+ "Loading…" : "불러오는 중…",
+ "Awwhh… credential not found. Maybe it expired" : "어… 인증 정보를 찾을 수 없습니다. 만료되었을 수도 있습니다",
+ "Error while saving field" : "필드를 저장하는 중 오류 발생",
+ "A Passman item has been created, modified or deleted" : "Passman 항목이 생성, 수정 및 삭제됨",
+ "A Passman item has expired" : "Passman 항목이 만료됨",
+ "A Passman item has been shared" : "Passman 항목이 공유됨",
+ "A Passman item has been renamed" : "Passman 항목의 이름이 변경됨",
+ "%1$s has been created by %2$s" : "%2$s 님이 %1$s을(를) 생성함",
+ "You created %1$s" : "여러분이 %1$s을(를) 생성함",
+ "%1$s has been updated by %2$s" : "%2$s 님이 %1$s을(를) 업데이트함",
+ "You updated %1$s" : "여러분이 %1$s을(를) 업데이트함",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s 님이 %1$s을(를) 리비전 %3$s(으)로 갱신함",
+ "You reverted %1$s back to the revision of %3$s" : "여러분이 %1$s을(를) 리비전 %3$s(으)로 되돌림",
+ "%3$s has renamed %1$s to %2$s" : "%3$s 님이 %1$s의 이름을 %2$s(으)로 변경함",
+ "You renamed %1$s to %2$s" : "여러분이 %1$s의 이름을 %2$s(으)로 변경함",
+ "%1$s has been deleted by %2$s" : "%2$s 님이 %1$s을(를) 삭제함",
+ "You deleted %1$s" : "여러분이 %1$s을(를) 삭제함",
+ "%1$s has been recovered by %2$s" : "%2$s 님이 %1$s을(를) 복원함",
+ "You recovered %1$s" : "여러분이 %1$s을(를) 복원함",
+ "%1$s has been permanently deleted by %2$s" : "%2$s 님이 %1$s을(를) 영원히 삭제함",
+ "You permanently deleted %1$s" : "여러분이 %1$s을(를) 영원히 삭제함",
+ "The password of %1$s has expired, renew it now." : "%1$s의 암호가 만료되었습니다. 지금 새로 고치십시오.",
+ "%1$s has been shared with %2$s" : "%1$s이(가) %2$s 님과 공유됨",
+ "You received a share request for %1$s from %2$s" : "%2$s 님의 %1$s 공유 요청을 받음",
+ "%s has been shared with a link" : "%s이(가) 링크로 공유됨",
+ "Your credential \"%s\" expired, click here to update the credential." : "\"%s\" 인증 정보가 만료되었습니다. 여기를 눌러서 업데이트하십시오.",
+ "Remind me later" : "나중에 다시 알림",
+ "Ignore" : "무시",
+ "%s shared \"%s\" with you. Click here to accept" : "%s 님이 \"%s\"을(를) 공유했습니다. 수락하려면 누르십시오",
+ "%s has declined your share request for \"%s\"." : "%s 님이 \"%s\" 공유 요청을 거절했습니다.",
+ "%s has accepted your share request for \"%s\"." : "%s 님이 \"%s\" 공유 요청을 수락했습니다.",
+ "Passman" : "Passman",
+ "Unable to get version info" : "버전 정보를 가져올 수 없음",
+ "Passman Settings" : "Passman 설정",
+ "GitHub version:" : "GitHub 버전:",
+ "A newer version of Passman is available" : "Passman의 새 버전을 사용할 수 있음",
+ "Password sharing" : "암호 공유",
+ "Credential mover" : "인증 정보 이동 도구",
+ "Vault destruction requests" : "비밀 저장소 파괴 요청",
+ "Check for new versions" : "새 버전 확인",
+ "Enable HTTPS check" : "HTTPS 검사 활성화",
+ "Disable context menu" : "컨텍스트 메뉴 비활성화",
+ "Disable JavaScript debugger" : "JavaScript 디버거 비활성화",
+ "Allow users on this server to share passwords with a link" : "이 서버의 사용자가 링크로 암호를 공유할 수 있도록 허용",
+ "Allow users on this server to share passwords with other users" : "이 서버의 사용자가 다른 사용자와 암호를 공유할 수 있도록 허용",
+ "Move credentials from one account to another" : "한 계정에서 다른 계정으로 인증 정보 이동",
+ "Source account" : "원본 계정",
+ "Destination account" : "대상 계정",
+ "Credentials moved!" : "인증 정보를 이동했습니다!",
+ "Requests to destroy vault" : "비밀 저장소 파괴 요청",
+ "Request ID" : "요청 ID",
+ "Requested by" : "요청한 사용자",
+ "Reason" : "이유",
+ "Click here to request\n\t\t\t\t\tit" : "여기를 누르면 요청할 수\n\t\t\t\t\t있습니다",
+ "Connection to server lost" : "서버와의 연결이 끊어짐",
+ "Problem loading page, reloading in 5 seconds" : "페이지 불러오기 오류, 5초 후 새로 고침",
+ "Saving..." : "저장 중...",
+ "Dismiss" : "끄기",
+ "seconds ago" : "초 전"
+},
+"nplurals=1; plural=0;");
diff --git a/l10n/ko.json b/l10n/ko.json
new file mode 100644
index 00000000..c3ea4bf2
--- /dev/null
+++ b/l10n/ko.json
@@ -0,0 +1,318 @@
+{ "translations": {
+ "Passwords" : "암호",
+ "Generating sharing keys ( %s / 2)" : "공유 키 생성 중 (%s/2)",
+ "Incorrect vault password!" : "비밀 저장소 암호가 잘못되었습니다!",
+ "Passwords do not match" : "암호가 일치하지 않습니다",
+ "General" : "일반",
+ "Custom Fields" : "사용자 정의 필드",
+ "Please fill in a label." : "레이블을 입력하십시오.",
+ "Please fill in a value." : "값을 입력하십시오.",
+ "Error loading file" : "파일 불러오기 오류",
+ "An error occurred during decryption" : "복호화 도중 오류 발생",
+ "Credential created!" : "인증 정보를 생성했습니다!",
+ "Credential deleted" : "인증 정보 삭제됨",
+ "Credential updated" : "인증 정보 업데이트됨",
+ "Credential recovered" : "인증 정보 복구됨",
+ "Credential destroyed" : "인증 정보 파괴됨",
+ "Invalid QR code" : "잘못된 QR 코드",
+ "Starting export" : "내보내기 시작하는 중",
+ "Decrypting credentials" : "인증 정보 복호화 중",
+ "Done" : "완료",
+ "Proceed with the following steps to import your file" : "파일을 가져오려면 다음 단계를 실행하십시오",
+ "Adding {{credential}}" : "{{credential}} 추가 중",
+ "Added {{credential}}" : "{{credential}} 추가됨",
+ "Skipping credential, missing label on line {{line}}" : "{{line}}번째 줄에 레이블이 없어서 인증 정보 건너뜀",
+ "Parsed {{num}} credentials, starting to import" : "인증 정보 {{num}}개 처리함, 가져오기 시작",
+ "Importing" : "가져오는 중",
+ "Start import" : "가져오기 시작",
+ "Select CSV file" : "CSV 파일 선택",
+ "Parsed {{rows}} lines from CSV file" : "CSV 파일에서 {{rows}}줄을 처리함",
+ "Skip first row" : "첫 줄 건너뛰기",
+ "You need to assign the label field before you can start the import." : "가져오기를 시작하기 전에 레이블 필드를 지정해야 합니다.",
+ "The first 5 lines of the CSV are shown." : "CSV 파일의 첫 5줄을 표시합니다.",
+ "Assign the proper fields to each column." : "각각 열별로 필드를 지정하십시오.",
+ "Example of imported credential" : "가져온 인증 정보 예시",
+ "Missing an importer? Try it with the generic CSV importer." : "가져오기 도구가 없습니까? 일반 CSV 가져오기 도구를 시도해 보십시오.",
+ "Go back to importers." : "가져오기 도구로 돌아갑니다.",
+ "Revision deleted" : "리비전 삭제됨",
+ "Revision restored" : "리비전 복원됨",
+ "Save in Passman" : "Passman에 저장",
+ "Settings saved" : "설정 저장됨",
+ "General settings" : "일반 설정",
+ "Password audit" : "암호 감사",
+ "Password settings" : "암호 설정",
+ "Import credentials" : "인증 정보 가져오기",
+ "Export credentials" : "인증 정보 내보내기",
+ "Sharing" : "공유",
+ "Are you sure you want to leave? This will destroy all your credentials" : "떠나시겠습니까? 모든 인증 정보를 파괴합니다",
+ "New password does not match!" : "새 암호가 일치하지 않습니다!",
+ "Please log in with your new vault password" : "새 비밀 저장소 암호로 로그인하십시오",
+ "Share with users and groups" : "다음 사용자 및 그룹과 공유",
+ "Share link" : "링크 공유",
+ "Are you sure you want to leave? This will corrupt this credential" : "떠나시겠습니까? 이 인증 정보를 사용할 수 없습니다",
+ "Credential unshared" : "인증 정보 공유 해제됨",
+ "Credential shared" : "인증 정보 공유됨",
+ "Saved!" : "저장됨!",
+ "Poor" : "나쁨",
+ "Weak" : "약함",
+ "Good" : "좋음",
+ "Strong" : "강함",
+ "Toggle visibility" : "보이기/숨기기",
+ "Copy to clipboard" : "클립보드로 복사",
+ "Copied to clipboard!" : "클립보드에 복사했습니다!",
+ "Generate password" : "암호 생성",
+ "Copy password to clipboard" : "클립보드에 암호 복사",
+ "Password copied to clipboard!" : "암호를 클립보드에 복사했습니다!",
+ "Complete" : "완료",
+ "Username" : "사용자 이름",
+ "Repeat password" : "암호 확인",
+ "Add tag" : "태그 추가",
+ "Pick an icon" : "아이콘 선택",
+ "Use this icon" : "이 아이콘 사용",
+ "Selected icon" : "선택한 아이콘",
+ "Field label" : "필드 레이블",
+ "Field value" : "필드 값",
+ "Choose a file" : "파일 선택",
+ "Text" : "텍스트",
+ "File" : "파일",
+ "Add" : "추가",
+ "Value" : "값",
+ "Type" : "종류",
+ "Actions" : "동작",
+ "Empty" : "비어 있음",
+ "Filename" : "파일 이름",
+ "Upload date" : "업로드한 날짜",
+ "Size" : "크기",
+ "Upload or enter your OTP secret" : "OTP 비밀 키를 업로드하거나 입력",
+ "Current OTP settings" : "현재 OTP 설정",
+ "Issuer" : "발급자",
+ "Secret" : "비밀 값",
+ "Expiration date" : "만료 날짜",
+ "No expiration date set" : "만료 날짜가 설정되지 않았음",
+ "Renew interval" : "새로 고침 간격",
+ "Disabled" : "비활성화됨",
+ "Day(s)" : "일",
+ "Week(s)" : "주",
+ "Month(s)" : "개월",
+ "Year(s)" : "년",
+ "Password generation settings" : "암호 생성 설정",
+ "Password length" : "암호 길이",
+ "Minimum amount of digits" : "최소 자릿수",
+ "Use uppercase letters" : "대문자 사용",
+ "Use lowercase letters" : "소문자 사용",
+ "Use numbers" : "숫자 사용",
+ "Use special characters" : "특수 문자 사용",
+ "Avoid ambiguous characters" : "모호한 글자 피하기",
+ "Require every character type" : "종류별로 최소 1글자씩 사용",
+ "Export type" : "내보내기 종류",
+ "Export" : "내보내기",
+ "Enter vault password to confirm export." : "내보내기를 확인하려면 비밀 저장소 암호를 입력하십시오.",
+ "Rename vault" : "비밀 저장소 이름 바꾸기",
+ "New vault name" : "새 비밀 저장소 이름",
+ "Change" : "변경",
+ "Change vault key" : "비밀 저장소 키 변경",
+ "Old vault password" : "이전 비밀 저장소 암호",
+ "New vault password" : "새 비밀 저장소 암호",
+ "Repeat new vault password" : "새 비밀 저장소 암호 확인",
+ "Please wait your vault is being updated, do not leave this page." : "비밀 저장소를 업데이트하는 동안 기다려 주십시오. 이 페이지를 떠나지 마십시오.",
+ "Processing" : "처리 중",
+ "Total progress" : "전체 진행",
+ "About Passman" : "Passman 정보",
+ "Version" : "버전",
+ "Donate to support development" : "기부하여 개발을 지원해 주십시오",
+ "Bookmarklet" : "북마크릿",
+ "Drag below button to your bookmark toolbar." : "북마크 도구 모음에 아래 단추를 끌어다 놓으십시오.",
+ "Delete vault" : "비밀 저장소 삭제",
+ "Vault password" : "저장소 암호",
+ "This process is irreversible" : "이 작업은 취소할 수 없습니다",
+ "Delete my precious passwords" : "내 소중한 암호를 삭제합니다",
+ "Deleting {{password}}…" : "{{password}} 삭제 중…",
+ "Yes, delete my precious passwords" : "예, 내 소중한 암호를 삭제합니다",
+ "Import type" : "가져오기 종류",
+ "Import" : "가져오기",
+ "Read progress" : "읽기 진행",
+ "Upload progress" : "업로드 진행",
+ "Private Key" : "비밀 키",
+ "Public key" : "공개 키",
+ "Key size" : "키 크기",
+ "Save keys" : "키 저장",
+ "Generate sharing keys" : "공유 키 생성",
+ "Generating sharing keys" : "공유 키 생성 중",
+ "Minimum password stength" : "최소 암호 강도",
+ "Start scan" : "검색 시작",
+ "Result" : "결과",
+ "A total of {{scan_result}} weak credentials were found." : "약한 암호를 {{scan_result}}개 찾았습니다.",
+ "Score" : "점수",
+ "Action" : "동작",
+ "Search users…" : "사용자 검색…",
+ "Missing users? Only users that have vaults are shown." : "사용자가 없습니까? 비밀 저장소가 있는 사용자만 표시됩니다.",
+ "Cyphering" : "암호화 중",
+ "Uploading" : "업로드 중",
+ "User" : "사용자",
+ "Crypto time" : "암호화 시간",
+ "Read" : "읽기",
+ "Write" : "쓰기",
+ "Files" : "파일",
+ "Revisions" : "리비전",
+ "Pending" : "대기 중",
+ "Enable link sharing" : "링크 공유 사용",
+ "Share until date" : "공유할 끝 날짜",
+ "Expire after views" : "특정 조회수 이상 시 만료",
+ "Show files" : "파일 보이기",
+ "Details" : "자세한 정보",
+ "Hide details" : "자세한 정보 숨기기",
+ "Password score" : "암호 점수",
+ "Cracking times" : "크래킹 시간",
+ "100 / hour" : "100 / 시간",
+ "Throttled online attack" : "제한된 온라인 공격",
+ "10 / second" : "10 / 초",
+ "Unthrottled online attack" : "제한되지 않은 온라인 공격",
+ "10k / second" : "1만 / 초",
+ "Offline attack, slow hash, many cores" : "오프라인 공격, 느린 해시, 다중 코어",
+ "10B / second" : "100억 / 초",
+ "Offline attack, fast hash, many cores" : "오프라인 공격, 빠른 해시, 다중 코어",
+ "Match sequence" : "시퀀스 일치",
+ "See match sequence" : "일치하는 시퀀스 보기",
+ "Pattern" : "패턴",
+ "Matched word" : "일치하는 단어",
+ "Dictionary name" : "사전 이름",
+ "Rank" : "등위",
+ "Reversed" : "반전됨",
+ "Guesses" : "추측",
+ "Base guesses" : "기본 추측",
+ "Uppercase variations" : "대문자 변형",
+ "l33t-variations" : "l33t 변형",
+ "Showing revisions of" : "다음의 리비전 표시",
+ "Revision of" : "다음의 리비전",
+ "by" : "by",
+ "No revisions found." : "리비전을 찾을 수 없습니다.",
+ "Label" : "레이블",
+ "Restore revision" : "리비전 복원",
+ "Delete revision" : "리비전 삭제",
+ "Edit credential" : "인증 정보 편집",
+ "Create new credential" : "새 인증 정보 만들기",
+ "Save" : "저장",
+ "Cancel" : "취소",
+ "Settings" : "설정",
+ "Share credential {{credential}}" : "{{credential}} 인증 정보 공유",
+ "Unshare" : "공유 해제",
+ "Showing deleted since" : "다음 시기 이후 삭제된 항목 표시",
+ "Beginning" : "시작",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "{{number_filtered}}/{{credential_number}}개 인증 정보 표시됨",
+ "Search for credential…" : "인증 정보 검색…",
+ "Account" : "계정",
+ "Password" : "암호",
+ "OTP" : "OTP",
+ "E-mail" : "이메일",
+ "URL" : "URL",
+ "Notes" : "메모",
+ "Expiry time" : "만료 시간",
+ "Changed" : "변경됨",
+ "Created" : "생성됨",
+ "Edit" : "편집",
+ "Delete" : "삭제",
+ "Share" : "공유",
+ "Recover" : "복구",
+ "Destroy" : "파괴",
+ "Use regex" : "정규 표현식 사용",
+ "You have incoming share requests." : "들어오는 공유 요청이 있습니다.",
+ "If you want to put the credential in another vault," : "인증 정보를 다른 비밀 저장소에 추가하려면",
+ "Permissions" : "권한",
+ "Received from" : "다음으로부터 받음",
+ "Date" : "날짜",
+ "Accept" : "수락",
+ "Decline" : "거절",
+ "You have {{session_time}} left before logout." : "{{session_time}} 후 로그아웃합니다.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "로그인 시도가 {{tries}}회 실패했기 때문에 {{time}} 동안 비밀 저장소가 잠겼습니다!",
+ "Last accessed" : "마지막 접근",
+ "Never" : "하지 않음",
+ "No vaults found, why not create one?" : "비밀 저장소를 찾을 수 없습니다. 새로 만드시겠습니까?",
+ "Password strength must be at least: {{strength}}" : "최소 암호 강도: {{strength}}",
+ "Please give your new vault a name." : "새 비밀 저장소의 이름을 입력하십시오.",
+ "Repeat vault password" : "비밀 저장소 암호 확인",
+ "Create vault" : "비밀 저장소 만들기",
+ "Go back to vaults" : "비밀 저장소로 돌아가기",
+ "Please input the password for" : "다음의 암호를 입력하십시오",
+ "Set this vault as the default." : "이 비밀 저장소를 기본값으로 설정합니다.",
+ "Log into this vault automatically." : "이 비밀 저장소에 자동으로 로그인합니다.",
+ "Log out of this vault automatically after: " : "다음 시간 이후 비밀 저장소에서 자동으로 로그아웃:",
+ "Decrypt vault" : "비밀 저장소 복호화",
+ "Seems you lost the vault password and you're unable to log in." : "비밀 저장소 암호를 잊었거나 로그인할 수 없는 것 같습니다.",
+ "If you want this vault to be removed you can request that here." : "이 비밀 저장소를 삭제하려면 여기에 요청하십시오.",
+ "An admin then accepts or declines the request" : "관리자가 해당 요청을 수락하거나 거부합니다.",
+ "After an admin destroys this vault, all credentials in it will be lost" : "관리자가 비밀 저장소를 파괴하면 저장되어 있는 모든 인증 정보가 손실됩니다",
+ "Reason for requesting deletion (optional):" : "삭제 요청 이유(선택 사항):",
+ "Request vault destruction" : "비밀 저장소 파괴 요청",
+ "Yes, request an admin to destroy this vault" : "예, 관리자에게 비밀 저장소 파괴를 요청합니다",
+ "Cancel destruction request" : "파괴 요청 취소",
+ "Vault destruction requested" : "비밀 저장소 파괴가 요청됨",
+ "Request removed" : "요청 삭제됨",
+ "Destruction request pending" : "파괴 요청 대기 중",
+ "Warning! Adding credentials over HTTP is insecure!" : "경고! HTTP로 인증 정보를 추가하면 안전하지 않습니다!",
+ "Change vault" : "비밀 저장소 변경",
+ "Deleted credentials" : "삭제된 인증 정보",
+ "Logout" : "로그아웃",
+ "Donate" : "기부하기",
+ "Someone has shared a credential with you." : "누군가가 여러분과 인증 정보를 공유했습니다.",
+ "Click here to request it" : "여기를 눌러서 요청하십시오",
+ "Loading…" : "불러오는 중…",
+ "Awwhh… credential not found. Maybe it expired" : "어… 인증 정보를 찾을 수 없습니다. 만료되었을 수도 있습니다",
+ "Error while saving field" : "필드를 저장하는 중 오류 발생",
+ "A Passman item has been created, modified or deleted" : "Passman 항목이 생성, 수정 및 삭제됨",
+ "A Passman item has expired" : "Passman 항목이 만료됨",
+ "A Passman item has been shared" : "Passman 항목이 공유됨",
+ "A Passman item has been renamed" : "Passman 항목의 이름이 변경됨",
+ "%1$s has been created by %2$s" : "%2$s 님이 %1$s을(를) 생성함",
+ "You created %1$s" : "여러분이 %1$s을(를) 생성함",
+ "%1$s has been updated by %2$s" : "%2$s 님이 %1$s을(를) 업데이트함",
+ "You updated %1$s" : "여러분이 %1$s을(를) 업데이트함",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s 님이 %1$s을(를) 리비전 %3$s(으)로 갱신함",
+ "You reverted %1$s back to the revision of %3$s" : "여러분이 %1$s을(를) 리비전 %3$s(으)로 되돌림",
+ "%3$s has renamed %1$s to %2$s" : "%3$s 님이 %1$s의 이름을 %2$s(으)로 변경함",
+ "You renamed %1$s to %2$s" : "여러분이 %1$s의 이름을 %2$s(으)로 변경함",
+ "%1$s has been deleted by %2$s" : "%2$s 님이 %1$s을(를) 삭제함",
+ "You deleted %1$s" : "여러분이 %1$s을(를) 삭제함",
+ "%1$s has been recovered by %2$s" : "%2$s 님이 %1$s을(를) 복원함",
+ "You recovered %1$s" : "여러분이 %1$s을(를) 복원함",
+ "%1$s has been permanently deleted by %2$s" : "%2$s 님이 %1$s을(를) 영원히 삭제함",
+ "You permanently deleted %1$s" : "여러분이 %1$s을(를) 영원히 삭제함",
+ "The password of %1$s has expired, renew it now." : "%1$s의 암호가 만료되었습니다. 지금 새로 고치십시오.",
+ "%1$s has been shared with %2$s" : "%1$s이(가) %2$s 님과 공유됨",
+ "You received a share request for %1$s from %2$s" : "%2$s 님의 %1$s 공유 요청을 받음",
+ "%s has been shared with a link" : "%s이(가) 링크로 공유됨",
+ "Your credential \"%s\" expired, click here to update the credential." : "\"%s\" 인증 정보가 만료되었습니다. 여기를 눌러서 업데이트하십시오.",
+ "Remind me later" : "나중에 다시 알림",
+ "Ignore" : "무시",
+ "%s shared \"%s\" with you. Click here to accept" : "%s 님이 \"%s\"을(를) 공유했습니다. 수락하려면 누르십시오",
+ "%s has declined your share request for \"%s\"." : "%s 님이 \"%s\" 공유 요청을 거절했습니다.",
+ "%s has accepted your share request for \"%s\"." : "%s 님이 \"%s\" 공유 요청을 수락했습니다.",
+ "Passman" : "Passman",
+ "Unable to get version info" : "버전 정보를 가져올 수 없음",
+ "Passman Settings" : "Passman 설정",
+ "GitHub version:" : "GitHub 버전:",
+ "A newer version of Passman is available" : "Passman의 새 버전을 사용할 수 있음",
+ "Password sharing" : "암호 공유",
+ "Credential mover" : "인증 정보 이동 도구",
+ "Vault destruction requests" : "비밀 저장소 파괴 요청",
+ "Check for new versions" : "새 버전 확인",
+ "Enable HTTPS check" : "HTTPS 검사 활성화",
+ "Disable context menu" : "컨텍스트 메뉴 비활성화",
+ "Disable JavaScript debugger" : "JavaScript 디버거 비활성화",
+ "Allow users on this server to share passwords with a link" : "이 서버의 사용자가 링크로 암호를 공유할 수 있도록 허용",
+ "Allow users on this server to share passwords with other users" : "이 서버의 사용자가 다른 사용자와 암호를 공유할 수 있도록 허용",
+ "Move credentials from one account to another" : "한 계정에서 다른 계정으로 인증 정보 이동",
+ "Source account" : "원본 계정",
+ "Destination account" : "대상 계정",
+ "Credentials moved!" : "인증 정보를 이동했습니다!",
+ "Requests to destroy vault" : "비밀 저장소 파괴 요청",
+ "Request ID" : "요청 ID",
+ "Requested by" : "요청한 사용자",
+ "Reason" : "이유",
+ "Click here to request\n\t\t\t\t\tit" : "여기를 누르면 요청할 수\n\t\t\t\t\t있습니다",
+ "Connection to server lost" : "서버와의 연결이 끊어짐",
+ "Problem loading page, reloading in 5 seconds" : "페이지 불러오기 오류, 5초 후 새로 고침",
+ "Saving..." : "저장 중...",
+ "Dismiss" : "끄기",
+ "seconds ago" : "초 전"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/l10n/lt_LT.js b/l10n/lt_LT.js
index 2f28af74..2711e7e4 100644
--- a/l10n/lt_LT.js
+++ b/l10n/lt_LT.js
@@ -2,24 +2,23 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Slaptažodžiai",
- "Incorrect vault password!" : "Neteisingas saugyklos slaptažodis!",
+ "Incorrect vault password!" : "Neteisingas slėptuvės slaptažodis!",
"Passwords do not match" : "Slaptažodžiai nesutampa",
"General" : "Bendras",
"Custom Fields" : "Nestandartiniai laukai",
+ "Please fill in a label." : "Prašome užpildyti etiketę.",
+ "Please fill in a value." : "Prašome įrašyti reikšmę.",
"Error loading file" : "Klaida įkeliant failą",
+ "An error occurred during decryption" : "Iššifravimo metu įvyko klaida",
"Credential created!" : "Prisijungimo duomenys sukurti",
"Credential deleted" : "Prisijungimo duomenys ištrinti",
"Credential updated" : "Prisijungimo duomenys atnaujinti",
"Credential recovered" : "Prisijungimo duomenys atkurti",
"Credential destroyed" : "Prisijungimo duomenys sunaikinti",
"Invalid QR code" : "Neteisingas QR kodas",
- "Starting export" : "Pradedamas eksportas",
- "Decrypting credentials" : "Dekriptuojami prisijungimo duomenys",
+ "Starting export" : "Pradedamas eksportavimas",
+ "Decrypting credentials" : "Iššifruojami prisijungimo duomenys",
"Done" : "Atlikta",
- "Credential has no label, skipping" : "Prisijungimo duomenys neturi žymeklio, praleidžiama",
- "Adding {{credential}}" : "Pridedama {{prisijungimo duomenys}}",
- "Added {{credential}}" : "Pridėta {{prisijungimo duomenys}}",
- "Skipping credential, missing label on line {{line}}" : "Prisijungimo duomenys praleidžiami, nėra žymeklio ant eilutės {{eilutė}}",
"Parsed {{num}} credentials, starting to import" : "Prisijungimo duomenys patikrinti, pradedamas importas",
"Importing" : "Importuojama",
"Start import" : "Pradėti importą",
@@ -27,18 +26,23 @@ OC.L10N.register(
"Parsed {{rows}} lines from CSV file" : "Tikrinama {{eilutės}} eilutės iš CSV failo",
"Skip first row" : "Praleisti pirmą eilutę",
"You need to assign the label field before you can start the import." : "Privalote priskirti pavadinimo laukelį prieš pradėdami importą",
+ "The first 5 lines of the CSV are shown." : "Rodomos pirmos 5 CSV failo eilutės.",
"Assign the proper fields to each column." : "Priskirkite tinkamus laukelius kiekvienai kolonai",
+ "Example of imported credential" : "Suimportuotų prisijungimo duomenų pavyzdys",
"Missing an importer? Try it with the generic CSV importer." : "Trūksta importuotojo? Išbandykit bendrą CSV importuotoją.",
"Go back to importers." : "Grįžti prie importuotojų",
"Revision deleted" : "Revizija ištrinta",
"Revision restored" : "Revizija atkurta",
"Settings saved" : "Nustatymai įrašyti",
"General settings" : "Bendri nustatymai",
+ "Password audit" : "Slaptažodžio peržiūra",
"Password settings" : "Slaptažodžio nustatymai",
"Import credentials" : "Importuoti prisijungimo duomenis",
"Export credentials" : "Eksportuoti prisijungimo duomenis",
"Sharing" : "Bendrinimas",
- "Your old password is incorrect!" : "Jūsų senas slaptažodis yra neteisingas!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Ar Jūs tikrai norite išeiti? Tai sunaikins Jūsų prisijungimo duomenis",
+ "New password does not match!" : "Naujieji slaptažodžiai nesutampa!",
+ "Please log in with your new vault password" : "Prisijunkite su nauju slėptuvės slaptažodžiu",
"Share with users and groups" : "Bendrintis su vartotojais ir jų grupėmis",
"Share link" : "Pasidalinti nuoroda",
"Are you sure you want to leave? This will corrupt this credential" : "Ar tikrai norite išeiti? Tai pakenks jūsų prisijungimo duomenims",
@@ -58,6 +62,8 @@ OC.L10N.register(
"Complete" : "Baigti",
"Username" : "Naudotojo vardas",
"Repeat password" : "Pakartoti slaptažodį",
+ "Add tag" : "Pridėti žymę",
+ "Use this icon" : "Naudoti šią piktogramą",
"Field label" : "Laukelio pavadinimas",
"Field value" : "Laukelio vertė",
"Choose a file" : "Pasirinkti failą",
@@ -71,23 +77,54 @@ OC.L10N.register(
"Filename" : "Failo pavadinimas",
"Upload date" : "Įkėlimo data",
"Size" : "Dydis",
+ "Current OTP settings" : "Esami OTP nustatymai",
+ "Expiration date" : "Galiojimo laikas",
+ "Renew interval" : "Atnaujinimo intervalas",
"Disabled" : "Išjungta",
+ "Day(s)" : "Diena(os)",
+ "Week(s)" : "Savaitė(s)",
+ "Month(s)" : "Mėnuo",
+ "Year(s)" : "Metai",
+ "Password generation settings" : "Slaptažodžio generavimo nustatymai",
"Password length" : "Slaptažodžio ilgis",
+ "Minimum amount of digits" : "Mažiausias skaitmenų skaičius",
"Use uppercase letters" : "Naudoti didžiąsias raides",
"Use lowercase letters" : "Naudoti mažąsias raides",
+ "Use numbers" : "Naudokite skaičius",
"Use special characters" : "Naudoti specialius simbolius",
+ "Avoid ambiguous characters" : "Venkite nevienareikšmių simbolių",
+ "Export" : "Eksportuoti",
+ "Enter vault password to confirm export." : "Norėdami patvirtinti eksportavimą, įveskite slėptuvės slaptažodį.",
+ "Rename vault" : "Pervadinti slėptuvę",
+ "New vault name" : "Naujas slėptuvės pavadinimas",
"Change" : "Keisti",
+ "Change vault key" : "Pakeisti slėptuvės raktą",
+ "Old vault password" : "Senas slėptuvės slaptažodis",
+ "New vault password" : "Naujas slėptuvės slaptažodis",
+ "Repeat new vault password" : "Pakartokite naują slėptuvės slaptažodį",
+ "Please wait your vault is being updated, do not leave this page." : "Palaukite, jūsų slėptuvė yra atnaujinama. Neišeikite iš šio puslapio.",
"Processing" : "Apdorojama",
+ "Total progress" : "Bendra eiga",
+ "About Passman" : "Apie Passman",
"Version" : "Versija",
+ "Delete vault" : "Ištrinti slėptuvę",
+ "Vault password" : "Slėptuvės slaptažodis",
+ "This process is irreversible" : "Šis procesas yra nepanaikinamas",
+ "Deleting {{password}}…" : "Ištrinamas {{password}}…",
"Import" : "Importuoti",
"Private Key" : "Privatusis raktas",
"Public key" : "Viešasis raktas",
"Key size" : "Rakto dydis",
+ "Save keys" : "Įrašyti raktus",
+ "Action" : "Veiksmas",
+ "Missing users? Only users that have vaults are shown." : "Trūksta naudotojų? Yra rodomi tik naudotojai, turintys slėptuves.",
"Uploading" : "Įkeliama",
"User" : "Naudotojas",
"Show files" : "Rodyti failus",
"Details" : "Išsamesnė informacija",
"Hide details" : "Slėpti išsamesnę informaciją",
+ "Pattern" : "Šablonas",
+ "Dictionary name" : "Žodyno pavadinimas",
"Label" : "Etiketė",
"Restore revision" : "Atkurti poversijį",
"Delete revision" : "Ištrinti poversijį",
@@ -96,23 +133,64 @@ OC.L10N.register(
"Settings" : "Nustatymai",
"Account" : "Paskyra",
"Password" : "Slaptažodis",
+ "E-mail" : "El. paštas",
"URL" : "URL",
+ "Edit" : "Taisyti",
"Delete" : "Ištrinti",
+ "Destroy" : "Sunaikinti",
+ "Permissions" : "Leidimai",
"Date" : "Data",
"Accept" : "Priimti",
"Decline" : "Atmesti",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Jūsų slėptuvė dėl {{tries}} nepavykusių bandymų yra užrakinta {{time}}!",
"Never" : "Niekada",
+ "No vaults found, why not create one?" : "Nerasta jokių slėptuvių, kodėl gi jos nesukūrus?",
+ "Please give your new vault a name." : "Suteikite savo naujajai slėptuvei pavadinimą.",
+ "Repeat vault password" : "Pakartokite slėptuvės slaptažodį",
+ "Create vault" : "Sukurti slėptuvę",
+ "Go back to vaults" : "Grįžti prie slėptuvių",
+ "Please input the password for" : "Įveskite slaptažodį, skirtą",
+ "Set this vault as the default." : "Nustatyti šią slėptuvę kaip numatytąją.",
+ "Log into this vault automatically." : "Automatiškai prisijungti į šią slėptuvę.",
+ "Log out of this vault automatically after: " : "Automatiškai atsijungti nuo šios slėptuvės po: ",
+ "Decrypt vault" : "Iššifruoti slėptuvę",
+ "Seems you lost the vault password and you're unable to log in." : "Atrodo, kad praradote slėptuvės slaptažodį ir negalite prisijungti.",
+ "If you want this vault to be removed you can request that here." : "Jeigu norite, kad ši slėptuvė būtų pašalinta, galite tai užklausti čia.",
+ "Request vault destruction" : "Užklausti sunaikinti slėptuvę",
+ "Yes, request an admin to destroy this vault" : "Taip, užklausti administratoriaus, kad sunaikintų šią slėptuvę",
+ "Cancel destruction request" : "Atsisakyti sunaikinimo užklausos",
+ "Vault destruction requested" : "Slėptuvės sunaikinimas užklaustas",
"Request removed" : "Užklausa pašalinta",
+ "Change vault" : "Pakeisti slėptuvę",
"Logout" : "Atsijungti",
+ "Loading…" : "Įkeliama…",
+ "Error while saving field" : "Klaida įrašant lauką",
+ "%1$s has been created by %2$s" : "%2$s sukūrė %1$s",
"You created %1$s" : "Jūs sukūrėte %1$s",
+ "%1$s has been updated by %2$s" : "%2$s atnaujino %1$s",
"You updated %1$s" : "Jūs atnaujinote %1$s",
"%3$s has renamed %1$s to %2$s" : "%3$s pervadino %1$s į %2$s",
"You renamed %1$s to %2$s" : "Jūs pervadinote %1$s į %2$s",
"%1$s has been deleted by %2$s" : "%2$s ištrynė %1$s",
"You deleted %1$s" : "Jūs ištrynėte %1$s",
+ "%1$s has been recovered by %2$s" : "%2$s atkūrė %1$s",
+ "You recovered %1$s" : "Jūs atkūrėte %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%2$s visiems laikams ištrynė %1$s",
"You permanently deleted %1$s" : "Jūs visiems laikams ištrynėte %1$s",
"Remind me later" : "Priminti vėliau",
"Ignore" : "Nepaisyti",
+ "Passman" : "Passman",
+ "Unable to get version info" : "Nepavyko gauti versijos informacijos",
+ "Passman Settings" : "Passman nustatymai",
+ "GitHub version:" : "GitHub versija:",
+ "A newer version of Passman is available" : "Yra prieinama naujesnė Passman versija",
+ "Check for new versions" : "Tikrinti ar yra naujų versijų",
+ "Enable HTTPS check" : "Įjungti HTTPS patikrinimą",
+ "Disable context menu" : "Išjungti kontekstinį meniu",
+ "Disable JavaScript debugger" : "Išjungti JavaScript derintuvę",
+ "Source account" : "Šaltinio paskyra",
+ "Destination account" : "Paskirties paskyra",
+ "Requested by" : "Užklausė",
"Reason" : "Priežastis",
"Connection to server lost" : "Ryšys su serveriu nutrūko",
"Problem loading page, reloading in 5 seconds" : "Problemos, įkeliant puslapį, po 5 sekundžių įkeliama iš naujo",
@@ -120,4 +198,4 @@ OC.L10N.register(
"Dismiss" : "Atmesti",
"seconds ago" : "prieš keletą sekundžių"
},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/l10n/lt_LT.json b/l10n/lt_LT.json
index e6bad519..081caadd 100644
--- a/l10n/lt_LT.json
+++ b/l10n/lt_LT.json
@@ -1,23 +1,22 @@
{ "translations": {
"Passwords" : "Slaptažodžiai",
- "Incorrect vault password!" : "Neteisingas saugyklos slaptažodis!",
+ "Incorrect vault password!" : "Neteisingas slėptuvės slaptažodis!",
"Passwords do not match" : "Slaptažodžiai nesutampa",
"General" : "Bendras",
"Custom Fields" : "Nestandartiniai laukai",
+ "Please fill in a label." : "Prašome užpildyti etiketę.",
+ "Please fill in a value." : "Prašome įrašyti reikšmę.",
"Error loading file" : "Klaida įkeliant failą",
+ "An error occurred during decryption" : "Iššifravimo metu įvyko klaida",
"Credential created!" : "Prisijungimo duomenys sukurti",
"Credential deleted" : "Prisijungimo duomenys ištrinti",
"Credential updated" : "Prisijungimo duomenys atnaujinti",
"Credential recovered" : "Prisijungimo duomenys atkurti",
"Credential destroyed" : "Prisijungimo duomenys sunaikinti",
"Invalid QR code" : "Neteisingas QR kodas",
- "Starting export" : "Pradedamas eksportas",
- "Decrypting credentials" : "Dekriptuojami prisijungimo duomenys",
+ "Starting export" : "Pradedamas eksportavimas",
+ "Decrypting credentials" : "Iššifruojami prisijungimo duomenys",
"Done" : "Atlikta",
- "Credential has no label, skipping" : "Prisijungimo duomenys neturi žymeklio, praleidžiama",
- "Adding {{credential}}" : "Pridedama {{prisijungimo duomenys}}",
- "Added {{credential}}" : "Pridėta {{prisijungimo duomenys}}",
- "Skipping credential, missing label on line {{line}}" : "Prisijungimo duomenys praleidžiami, nėra žymeklio ant eilutės {{eilutė}}",
"Parsed {{num}} credentials, starting to import" : "Prisijungimo duomenys patikrinti, pradedamas importas",
"Importing" : "Importuojama",
"Start import" : "Pradėti importą",
@@ -25,18 +24,23 @@
"Parsed {{rows}} lines from CSV file" : "Tikrinama {{eilutės}} eilutės iš CSV failo",
"Skip first row" : "Praleisti pirmą eilutę",
"You need to assign the label field before you can start the import." : "Privalote priskirti pavadinimo laukelį prieš pradėdami importą",
+ "The first 5 lines of the CSV are shown." : "Rodomos pirmos 5 CSV failo eilutės.",
"Assign the proper fields to each column." : "Priskirkite tinkamus laukelius kiekvienai kolonai",
+ "Example of imported credential" : "Suimportuotų prisijungimo duomenų pavyzdys",
"Missing an importer? Try it with the generic CSV importer." : "Trūksta importuotojo? Išbandykit bendrą CSV importuotoją.",
"Go back to importers." : "Grįžti prie importuotojų",
"Revision deleted" : "Revizija ištrinta",
"Revision restored" : "Revizija atkurta",
"Settings saved" : "Nustatymai įrašyti",
"General settings" : "Bendri nustatymai",
+ "Password audit" : "Slaptažodžio peržiūra",
"Password settings" : "Slaptažodžio nustatymai",
"Import credentials" : "Importuoti prisijungimo duomenis",
"Export credentials" : "Eksportuoti prisijungimo duomenis",
"Sharing" : "Bendrinimas",
- "Your old password is incorrect!" : "Jūsų senas slaptažodis yra neteisingas!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Ar Jūs tikrai norite išeiti? Tai sunaikins Jūsų prisijungimo duomenis",
+ "New password does not match!" : "Naujieji slaptažodžiai nesutampa!",
+ "Please log in with your new vault password" : "Prisijunkite su nauju slėptuvės slaptažodžiu",
"Share with users and groups" : "Bendrintis su vartotojais ir jų grupėmis",
"Share link" : "Pasidalinti nuoroda",
"Are you sure you want to leave? This will corrupt this credential" : "Ar tikrai norite išeiti? Tai pakenks jūsų prisijungimo duomenims",
@@ -56,6 +60,8 @@
"Complete" : "Baigti",
"Username" : "Naudotojo vardas",
"Repeat password" : "Pakartoti slaptažodį",
+ "Add tag" : "Pridėti žymę",
+ "Use this icon" : "Naudoti šią piktogramą",
"Field label" : "Laukelio pavadinimas",
"Field value" : "Laukelio vertė",
"Choose a file" : "Pasirinkti failą",
@@ -69,23 +75,54 @@
"Filename" : "Failo pavadinimas",
"Upload date" : "Įkėlimo data",
"Size" : "Dydis",
+ "Current OTP settings" : "Esami OTP nustatymai",
+ "Expiration date" : "Galiojimo laikas",
+ "Renew interval" : "Atnaujinimo intervalas",
"Disabled" : "Išjungta",
+ "Day(s)" : "Diena(os)",
+ "Week(s)" : "Savaitė(s)",
+ "Month(s)" : "Mėnuo",
+ "Year(s)" : "Metai",
+ "Password generation settings" : "Slaptažodžio generavimo nustatymai",
"Password length" : "Slaptažodžio ilgis",
+ "Minimum amount of digits" : "Mažiausias skaitmenų skaičius",
"Use uppercase letters" : "Naudoti didžiąsias raides",
"Use lowercase letters" : "Naudoti mažąsias raides",
+ "Use numbers" : "Naudokite skaičius",
"Use special characters" : "Naudoti specialius simbolius",
+ "Avoid ambiguous characters" : "Venkite nevienareikšmių simbolių",
+ "Export" : "Eksportuoti",
+ "Enter vault password to confirm export." : "Norėdami patvirtinti eksportavimą, įveskite slėptuvės slaptažodį.",
+ "Rename vault" : "Pervadinti slėptuvę",
+ "New vault name" : "Naujas slėptuvės pavadinimas",
"Change" : "Keisti",
+ "Change vault key" : "Pakeisti slėptuvės raktą",
+ "Old vault password" : "Senas slėptuvės slaptažodis",
+ "New vault password" : "Naujas slėptuvės slaptažodis",
+ "Repeat new vault password" : "Pakartokite naują slėptuvės slaptažodį",
+ "Please wait your vault is being updated, do not leave this page." : "Palaukite, jūsų slėptuvė yra atnaujinama. Neišeikite iš šio puslapio.",
"Processing" : "Apdorojama",
+ "Total progress" : "Bendra eiga",
+ "About Passman" : "Apie Passman",
"Version" : "Versija",
+ "Delete vault" : "Ištrinti slėptuvę",
+ "Vault password" : "Slėptuvės slaptažodis",
+ "This process is irreversible" : "Šis procesas yra nepanaikinamas",
+ "Deleting {{password}}…" : "Ištrinamas {{password}}…",
"Import" : "Importuoti",
"Private Key" : "Privatusis raktas",
"Public key" : "Viešasis raktas",
"Key size" : "Rakto dydis",
+ "Save keys" : "Įrašyti raktus",
+ "Action" : "Veiksmas",
+ "Missing users? Only users that have vaults are shown." : "Trūksta naudotojų? Yra rodomi tik naudotojai, turintys slėptuves.",
"Uploading" : "Įkeliama",
"User" : "Naudotojas",
"Show files" : "Rodyti failus",
"Details" : "Išsamesnė informacija",
"Hide details" : "Slėpti išsamesnę informaciją",
+ "Pattern" : "Šablonas",
+ "Dictionary name" : "Žodyno pavadinimas",
"Label" : "Etiketė",
"Restore revision" : "Atkurti poversijį",
"Delete revision" : "Ištrinti poversijį",
@@ -94,28 +131,69 @@
"Settings" : "Nustatymai",
"Account" : "Paskyra",
"Password" : "Slaptažodis",
+ "E-mail" : "El. paštas",
"URL" : "URL",
+ "Edit" : "Taisyti",
"Delete" : "Ištrinti",
+ "Destroy" : "Sunaikinti",
+ "Permissions" : "Leidimai",
"Date" : "Data",
"Accept" : "Priimti",
"Decline" : "Atmesti",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Jūsų slėptuvė dėl {{tries}} nepavykusių bandymų yra užrakinta {{time}}!",
"Never" : "Niekada",
+ "No vaults found, why not create one?" : "Nerasta jokių slėptuvių, kodėl gi jos nesukūrus?",
+ "Please give your new vault a name." : "Suteikite savo naujajai slėptuvei pavadinimą.",
+ "Repeat vault password" : "Pakartokite slėptuvės slaptažodį",
+ "Create vault" : "Sukurti slėptuvę",
+ "Go back to vaults" : "Grįžti prie slėptuvių",
+ "Please input the password for" : "Įveskite slaptažodį, skirtą",
+ "Set this vault as the default." : "Nustatyti šią slėptuvę kaip numatytąją.",
+ "Log into this vault automatically." : "Automatiškai prisijungti į šią slėptuvę.",
+ "Log out of this vault automatically after: " : "Automatiškai atsijungti nuo šios slėptuvės po: ",
+ "Decrypt vault" : "Iššifruoti slėptuvę",
+ "Seems you lost the vault password and you're unable to log in." : "Atrodo, kad praradote slėptuvės slaptažodį ir negalite prisijungti.",
+ "If you want this vault to be removed you can request that here." : "Jeigu norite, kad ši slėptuvė būtų pašalinta, galite tai užklausti čia.",
+ "Request vault destruction" : "Užklausti sunaikinti slėptuvę",
+ "Yes, request an admin to destroy this vault" : "Taip, užklausti administratoriaus, kad sunaikintų šią slėptuvę",
+ "Cancel destruction request" : "Atsisakyti sunaikinimo užklausos",
+ "Vault destruction requested" : "Slėptuvės sunaikinimas užklaustas",
"Request removed" : "Užklausa pašalinta",
+ "Change vault" : "Pakeisti slėptuvę",
"Logout" : "Atsijungti",
+ "Loading…" : "Įkeliama…",
+ "Error while saving field" : "Klaida įrašant lauką",
+ "%1$s has been created by %2$s" : "%2$s sukūrė %1$s",
"You created %1$s" : "Jūs sukūrėte %1$s",
+ "%1$s has been updated by %2$s" : "%2$s atnaujino %1$s",
"You updated %1$s" : "Jūs atnaujinote %1$s",
"%3$s has renamed %1$s to %2$s" : "%3$s pervadino %1$s į %2$s",
"You renamed %1$s to %2$s" : "Jūs pervadinote %1$s į %2$s",
"%1$s has been deleted by %2$s" : "%2$s ištrynė %1$s",
"You deleted %1$s" : "Jūs ištrynėte %1$s",
+ "%1$s has been recovered by %2$s" : "%2$s atkūrė %1$s",
+ "You recovered %1$s" : "Jūs atkūrėte %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%2$s visiems laikams ištrynė %1$s",
"You permanently deleted %1$s" : "Jūs visiems laikams ištrynėte %1$s",
"Remind me later" : "Priminti vėliau",
"Ignore" : "Nepaisyti",
+ "Passman" : "Passman",
+ "Unable to get version info" : "Nepavyko gauti versijos informacijos",
+ "Passman Settings" : "Passman nustatymai",
+ "GitHub version:" : "GitHub versija:",
+ "A newer version of Passman is available" : "Yra prieinama naujesnė Passman versija",
+ "Check for new versions" : "Tikrinti ar yra naujų versijų",
+ "Enable HTTPS check" : "Įjungti HTTPS patikrinimą",
+ "Disable context menu" : "Išjungti kontekstinį meniu",
+ "Disable JavaScript debugger" : "Išjungti JavaScript derintuvę",
+ "Source account" : "Šaltinio paskyra",
+ "Destination account" : "Paskirties paskyra",
+ "Requested by" : "Užklausė",
"Reason" : "Priežastis",
"Connection to server lost" : "Ryšys su serveriu nutrūko",
"Problem loading page, reloading in 5 seconds" : "Problemos, įkeliant puslapį, po 5 sekundžių įkeliama iš naujo",
"Saving..." : "Įrašoma...",
"Dismiss" : "Atmesti",
"seconds ago" : "prieš keletą sekundžių"
-},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"
+},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/l10n/lv.js b/l10n/lv.js
index 8de5c76e..d52d84c7 100644
--- a/l10n/lv.js
+++ b/l10n/lv.js
@@ -2,12 +2,11 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Paroles",
- "Generating sharing keys ( %step / 2)" : "Radīt koplietošanas atslēgas ( %solis / 2)",
"Incorrect vault password!" : "Nepareiza akreditācijas datu parole!",
"Passwords do not match" : "Paroles nesakrīt",
"General" : "Vispārīgi",
"Custom Fields" : "Pielāgotie lauki",
- "Error loading file" : "Kļūda, ielādējot failu",
+ "Error loading file" : "Kļūda, ielādējot datni",
"Credential created!" : "Akreditācijas izveidota!",
"Credential deleted" : "Akreditācijas dati izdzēsti",
"Credential updated" : "Akreditācijas dati atjaunināti",
@@ -22,7 +21,6 @@ OC.L10N.register(
"General settings" : "Vispārīgie iestatījumi",
"Password settings" : "Paroles iestatījumi",
"Sharing" : "Koplietošana",
- "Your old password is incorrect!" : "Vecā parole ir nepareiza!",
"Share with users and groups" : "Koplietot ar lietotājiem vai grupām",
"Share link" : "Koplietot saiti",
"Saved!" : "Saglabāts!",
@@ -69,7 +67,6 @@ OC.L10N.register(
"About Passman" : "Par Passman",
"Version" : "Versija",
"Bookmarklet" : "Grāmatzīmes",
- "Save your passwords with 1 click!" : "Saglabājiet paroles ar 1 klikšķi!",
"Import type" : "Importa tips",
"Import" : "Importēt",
"Upload progress" : "Augšupielādes norise",
diff --git a/l10n/lv.json b/l10n/lv.json
index 16f5f82b..3e7c4a12 100644
--- a/l10n/lv.json
+++ b/l10n/lv.json
@@ -1,11 +1,10 @@
{ "translations": {
"Passwords" : "Paroles",
- "Generating sharing keys ( %step / 2)" : "Radīt koplietošanas atslēgas ( %solis / 2)",
"Incorrect vault password!" : "Nepareiza akreditācijas datu parole!",
"Passwords do not match" : "Paroles nesakrīt",
"General" : "Vispārīgi",
"Custom Fields" : "Pielāgotie lauki",
- "Error loading file" : "Kļūda, ielādējot failu",
+ "Error loading file" : "Kļūda, ielādējot datni",
"Credential created!" : "Akreditācijas izveidota!",
"Credential deleted" : "Akreditācijas dati izdzēsti",
"Credential updated" : "Akreditācijas dati atjaunināti",
@@ -20,7 +19,6 @@
"General settings" : "Vispārīgie iestatījumi",
"Password settings" : "Paroles iestatījumi",
"Sharing" : "Koplietošana",
- "Your old password is incorrect!" : "Vecā parole ir nepareiza!",
"Share with users and groups" : "Koplietot ar lietotājiem vai grupām",
"Share link" : "Koplietot saiti",
"Saved!" : "Saglabāts!",
@@ -67,7 +65,6 @@
"About Passman" : "Par Passman",
"Version" : "Versija",
"Bookmarklet" : "Grāmatzīmes",
- "Save your passwords with 1 click!" : "Saglabājiet paroles ar 1 klikšķi!",
"Import type" : "Importa tips",
"Import" : "Importēt",
"Upload progress" : "Augšupielādes norise",
diff --git a/l10n/nb.js b/l10n/nb.js
index 2565bd17..0ac7f539 100644
--- a/l10n/nb.js
+++ b/l10n/nb.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Passord",
- "Generating sharing keys ( %step / 2)" : "Oppretter delingsnøkler ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Oppretter delingsnøkler ( %s / 2)",
"Incorrect vault password!" : "Feil hvelv-passord!",
"Passwords do not match" : "Passordene samsvarer ikke",
"General" : "Generelt",
@@ -11,19 +11,16 @@ OC.L10N.register(
"Please fill in a value." : "Fyll inn en verdi.",
"Error loading file" : "Feil ved lasting av fil",
"An error occurred during decryption" : "En feil oppstod under dekryptering",
- "Credential created!" : "Legitimasjonen ble laget",
- "Credential deleted" : "Legitimasjonen ble slettet",
- "Credential updated" : "Legitimasjonen ble oppdatert",
- "Credential recovered" : "Legitimasjonen ble gjenopprettet",
- "Credential destroyed" : "Legitimasjonen ble destruert",
- "Error downloading file, you probably don't have sufficient permissions" : "Kunne ikke laste ned fil, du har sannsynligvis ikke nok rettigheter",
+ "Credential created!" : "Påloggingsdetalj opprettet!",
+ "Credential deleted" : "Påloggingsdetalj slettet",
+ "Credential updated" : "Påloggingsdetalj oppdatert",
+ "Credential recovered" : "Påloggingsdetalj gjenopprettet",
+ "Credential destroyed" : "Påloggingsdetalj destruert",
"Invalid QR code" : "Ugyldig QR-kode",
"Starting export" : "Starter eksport",
- "Decrypting credentials" : "Dekrypterer legitimasjon",
+ "Decrypting credentials" : "Dekrypterer Påloggingsdetaljer",
"Done" : "Ferdig",
- "File read successfully." : "Fil lest.",
- "Proceed with the following steps to import your file" : "Fortsett med følgende steg for å importere fila di",
- "Credential has no label, skipping" : "Påloggingsdetaljer mangler etikett, hopper over",
+ "Proceed with the following steps to import your file" : "Fortsett med følgende steg for å importere filen din",
"Adding {{credential}}" : "Legger til {{credential}}",
"Added {{credential}}" : "{{credential}} lagt til",
"Skipping credential, missing label on line {{line}}" : "Hopper over påloggingsdetalj, manglende etikett på linje {{line}}",
@@ -46,11 +43,10 @@ OC.L10N.register(
"General settings" : "Generelle innstillinger",
"Password audit" : "Passordgjennomsyn",
"Password settings" : "Passordinnstillinger",
- "Import credentials" : "Importer legitimasjon",
+ "Import credentials" : "Importer Påloggingsdetaljer",
"Export credentials" : "Eksporter påloggingsdetaljer",
"Sharing" : "Deling",
"Are you sure you want to leave? This will destroy all your credentials" : "Er du sikker på at du ønsker å forlate? Dette vil ødelegge alle dine påloggingsdetaljer",
- "Your old password is incorrect!" : "Ditt gamle passord er feil!",
"New password does not match!" : "Det nye passordet samsvarer ikke!",
"Please log in with your new vault password" : "Logg inn med ditt nye hvelv-passord",
"Share with users and groups" : "Del med brukere og grupper",
@@ -73,6 +69,9 @@ OC.L10N.register(
"Username" : "Brukernavn",
"Repeat password" : "Gjenta passord",
"Add tag" : "Legg til merkelapp",
+ "Pick an icon" : "Velg et ikon",
+ "Use this icon" : "Bruk dette ikonet",
+ "Selected icon" : "Valgt ikon",
"Field label" : "Feltetikett",
"Field value" : "Feltverdi",
"Choose a file" : "Velg fil",
@@ -124,7 +123,6 @@ OC.L10N.register(
"Version" : "Versjon",
"Donate to support development" : "Doner for å støtte utviklingen",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Lagre passordene dine med ett klikk!",
"Drag below button to your bookmark toolbar." : "Dra knappen nedenfor til din bokmerkeverktøyslinje.",
"Delete vault" : "Slett hvelv",
"Vault password" : "Hvelv-passord",
@@ -142,20 +140,18 @@ OC.L10N.register(
"Save keys" : "Lagre nøkler",
"Generate sharing keys" : "Opprett delingsnøkler",
"Generating sharing keys" : "Oppretter delingsnøkler",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Passordverktøyet vil skanne passordet ditt, kalkulere gjennomsnittlig tid for knekking og liste dem som er under terskelen",
"Minimum password stength" : "Minimums passordstyrke",
"Start scan" : "Start skanning",
"Result" : "Resultat",
"A total of {{scan_result}} weak credentials were found." : "Fant {{scan_result}} svake identitetsdetaljer.",
"Score" : "Poengsum",
"Action" : "Handling",
- "Search users or groups…" : "Søk etter brukere eller grupper…",
+ "Search users…" : "Søk etter brukere…",
"Missing users? Only users that have vaults are shown." : "Manglende brukere? Bare brukere som har hvelv blir vist.",
"Cyphering" : "Chiffrerer",
"Uploading" : "Laster opp",
"User" : "Bruker",
"Crypto time" : "Krypteringstid",
- "Total time spent cyphering" : "Tid brukt på chiffrering",
"Read" : "Les",
"Write" : "Skriv",
"Files" : "Filer",
@@ -164,7 +160,6 @@ OC.L10N.register(
"Enable link sharing" : "Skru på deling av lenker",
"Share until date" : "Del til dato",
"Expire after views" : "Utløper etter antall visninger",
- "Click Share first" : "Klikk \"Del\" først:",
"Show files" : "Vis filer",
"Details" : "Detaljer",
"Hide details" : "Skjul detaljer",
@@ -211,7 +206,7 @@ OC.L10N.register(
"Password" : "Passord",
"OTP" : "Éngangspassord (OTP)",
"E-mail" : "E-post",
- "URL" : "URL",
+ "URL" : "Nettadresse",
"Notes" : "Notater",
"Expiry time" : "Utløpstid",
"Changed" : "Endret",
@@ -224,7 +219,6 @@ OC.L10N.register(
"Use regex" : "Bruk regulære uttrykk",
"You have incoming share requests." : "Du har innkommende delingsforespørsler.",
"If you want to put the credential in another vault," : "Hvis du ønsker å putte identitetsdeltaljen i et annet hvelv,",
- "log out of this vault and log in to the vault you want the shared credential in." : "logg ut av dette hvelvet og logg inn i det hvelvet du ønsker å legge identitetsdetaljene i.",
"Permissions" : "Rettigheter",
"Received from" : "Mottatt fra",
"Date" : "Dato",
@@ -238,7 +232,6 @@ OC.L10N.register(
"Password strength must be at least: {{strength}}" : "Passordstyrken må være minst: {{strength}}",
"Please give your new vault a name." : "Velg et nytt navn for hvelvet.",
"Repeat vault password" : "Gjenta hvelv-passord",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Dine delingsnøkkel vil ha en styrke på 1024 bit, som du kan endre senere i Innstillinger.",
"Create vault" : "Opprett hvelv",
"Go back to vaults" : "Gå tilbake til hvelv",
"Please input the password for" : "Skriv inn passordet for",
@@ -258,7 +251,6 @@ OC.L10N.register(
"Request removed" : "Forespørsel fjernet",
"Destruction request pending" : "Ødeleggelsesforespørsel på vent",
"Warning! Adding credentials over HTTP is insecure!" : "Advarsel! Å legge til identitetsdetaljer over HTTP er usikkert!",
- "Logged in to {{vault_name}}" : "Logget inn på {{vault_name}}",
"Change vault" : "Bytt hvelv",
"Deleted credentials" : "Slett påloggingsdetaljer",
"Logout" : "Logg ut",
@@ -297,6 +289,8 @@ OC.L10N.register(
"%s has declined your share request for \"%s\"." : "%s har avvist din forespørsel om å dele \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s har akseptert din forespørsel om å dele \"%s\".",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman er en fullverdig passordbehandler.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman er en fullverdig passordbehandler.\nEgenskaper:\n- Hvelv\n- Nøkkel for hvelv er aldri sendt til server\n- Nettleserutvidelse for enkel tilgang til passord\n- Android program for underveis tilgang\n- Referanser er på klient siden kryptert med 256bit AES\n- Referanser er på server siden kryptert med 256bit AES\n- Mulighet til å legge til egendefinerte felt til legitimasjon\n- Innebygd OTP (engangs passord) generator\n- Passord analyse\n- Del passord internt og via lenke på en sikker måte.\n- Import fra ulike passordbehandlere (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nFor en demo av denne appen besøk [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Kunne ikke hente versjonsinfo",
"Passman Settings" : "Passman-innstillinger",
"GitHub version:" : "GitHub-versjon:",
@@ -318,9 +312,11 @@ OC.L10N.register(
"Request ID" : "Forespør ID",
"Requested by" : "Forespurt av",
"Reason" : "Grunn",
+ "Click here to request\n\t\t\t\t\tit" : "Klikk her for å forespørre\n\t\t\t\t\tdet",
+ "Loading&hellip;" : "Laster&hellip;",
"Connection to server lost" : "Mistet tilkobling til tjeneren",
"Problem loading page, reloading in 5 seconds" : "Problem ved lasting av side, laster på nytt om 5 sekunder",
- "Saving..." : "Lagrer...",
+ "Saving..." : "Lagrer…",
"Dismiss" : "Forkast",
"seconds ago" : "sekunder siden"
},
diff --git a/l10n/nb.json b/l10n/nb.json
index 0e281d18..c95a90bb 100644
--- a/l10n/nb.json
+++ b/l10n/nb.json
@@ -1,6 +1,6 @@
{ "translations": {
"Passwords" : "Passord",
- "Generating sharing keys ( %step / 2)" : "Oppretter delingsnøkler ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Oppretter delingsnøkler ( %s / 2)",
"Incorrect vault password!" : "Feil hvelv-passord!",
"Passwords do not match" : "Passordene samsvarer ikke",
"General" : "Generelt",
@@ -9,19 +9,16 @@
"Please fill in a value." : "Fyll inn en verdi.",
"Error loading file" : "Feil ved lasting av fil",
"An error occurred during decryption" : "En feil oppstod under dekryptering",
- "Credential created!" : "Legitimasjonen ble laget",
- "Credential deleted" : "Legitimasjonen ble slettet",
- "Credential updated" : "Legitimasjonen ble oppdatert",
- "Credential recovered" : "Legitimasjonen ble gjenopprettet",
- "Credential destroyed" : "Legitimasjonen ble destruert",
- "Error downloading file, you probably don't have sufficient permissions" : "Kunne ikke laste ned fil, du har sannsynligvis ikke nok rettigheter",
+ "Credential created!" : "Påloggingsdetalj opprettet!",
+ "Credential deleted" : "Påloggingsdetalj slettet",
+ "Credential updated" : "Påloggingsdetalj oppdatert",
+ "Credential recovered" : "Påloggingsdetalj gjenopprettet",
+ "Credential destroyed" : "Påloggingsdetalj destruert",
"Invalid QR code" : "Ugyldig QR-kode",
"Starting export" : "Starter eksport",
- "Decrypting credentials" : "Dekrypterer legitimasjon",
+ "Decrypting credentials" : "Dekrypterer Påloggingsdetaljer",
"Done" : "Ferdig",
- "File read successfully." : "Fil lest.",
- "Proceed with the following steps to import your file" : "Fortsett med følgende steg for å importere fila di",
- "Credential has no label, skipping" : "Påloggingsdetaljer mangler etikett, hopper over",
+ "Proceed with the following steps to import your file" : "Fortsett med følgende steg for å importere filen din",
"Adding {{credential}}" : "Legger til {{credential}}",
"Added {{credential}}" : "{{credential}} lagt til",
"Skipping credential, missing label on line {{line}}" : "Hopper over påloggingsdetalj, manglende etikett på linje {{line}}",
@@ -44,11 +41,10 @@
"General settings" : "Generelle innstillinger",
"Password audit" : "Passordgjennomsyn",
"Password settings" : "Passordinnstillinger",
- "Import credentials" : "Importer legitimasjon",
+ "Import credentials" : "Importer Påloggingsdetaljer",
"Export credentials" : "Eksporter påloggingsdetaljer",
"Sharing" : "Deling",
"Are you sure you want to leave? This will destroy all your credentials" : "Er du sikker på at du ønsker å forlate? Dette vil ødelegge alle dine påloggingsdetaljer",
- "Your old password is incorrect!" : "Ditt gamle passord er feil!",
"New password does not match!" : "Det nye passordet samsvarer ikke!",
"Please log in with your new vault password" : "Logg inn med ditt nye hvelv-passord",
"Share with users and groups" : "Del med brukere og grupper",
@@ -71,6 +67,9 @@
"Username" : "Brukernavn",
"Repeat password" : "Gjenta passord",
"Add tag" : "Legg til merkelapp",
+ "Pick an icon" : "Velg et ikon",
+ "Use this icon" : "Bruk dette ikonet",
+ "Selected icon" : "Valgt ikon",
"Field label" : "Feltetikett",
"Field value" : "Feltverdi",
"Choose a file" : "Velg fil",
@@ -122,7 +121,6 @@
"Version" : "Versjon",
"Donate to support development" : "Doner for å støtte utviklingen",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Lagre passordene dine med ett klikk!",
"Drag below button to your bookmark toolbar." : "Dra knappen nedenfor til din bokmerkeverktøyslinje.",
"Delete vault" : "Slett hvelv",
"Vault password" : "Hvelv-passord",
@@ -140,20 +138,18 @@
"Save keys" : "Lagre nøkler",
"Generate sharing keys" : "Opprett delingsnøkler",
"Generating sharing keys" : "Oppretter delingsnøkler",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Passordverktøyet vil skanne passordet ditt, kalkulere gjennomsnittlig tid for knekking og liste dem som er under terskelen",
"Minimum password stength" : "Minimums passordstyrke",
"Start scan" : "Start skanning",
"Result" : "Resultat",
"A total of {{scan_result}} weak credentials were found." : "Fant {{scan_result}} svake identitetsdetaljer.",
"Score" : "Poengsum",
"Action" : "Handling",
- "Search users or groups…" : "Søk etter brukere eller grupper…",
+ "Search users…" : "Søk etter brukere…",
"Missing users? Only users that have vaults are shown." : "Manglende brukere? Bare brukere som har hvelv blir vist.",
"Cyphering" : "Chiffrerer",
"Uploading" : "Laster opp",
"User" : "Bruker",
"Crypto time" : "Krypteringstid",
- "Total time spent cyphering" : "Tid brukt på chiffrering",
"Read" : "Les",
"Write" : "Skriv",
"Files" : "Filer",
@@ -162,7 +158,6 @@
"Enable link sharing" : "Skru på deling av lenker",
"Share until date" : "Del til dato",
"Expire after views" : "Utløper etter antall visninger",
- "Click Share first" : "Klikk \"Del\" først:",
"Show files" : "Vis filer",
"Details" : "Detaljer",
"Hide details" : "Skjul detaljer",
@@ -209,7 +204,7 @@
"Password" : "Passord",
"OTP" : "Éngangspassord (OTP)",
"E-mail" : "E-post",
- "URL" : "URL",
+ "URL" : "Nettadresse",
"Notes" : "Notater",
"Expiry time" : "Utløpstid",
"Changed" : "Endret",
@@ -222,7 +217,6 @@
"Use regex" : "Bruk regulære uttrykk",
"You have incoming share requests." : "Du har innkommende delingsforespørsler.",
"If you want to put the credential in another vault," : "Hvis du ønsker å putte identitetsdeltaljen i et annet hvelv,",
- "log out of this vault and log in to the vault you want the shared credential in." : "logg ut av dette hvelvet og logg inn i det hvelvet du ønsker å legge identitetsdetaljene i.",
"Permissions" : "Rettigheter",
"Received from" : "Mottatt fra",
"Date" : "Dato",
@@ -236,7 +230,6 @@
"Password strength must be at least: {{strength}}" : "Passordstyrken må være minst: {{strength}}",
"Please give your new vault a name." : "Velg et nytt navn for hvelvet.",
"Repeat vault password" : "Gjenta hvelv-passord",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Dine delingsnøkkel vil ha en styrke på 1024 bit, som du kan endre senere i Innstillinger.",
"Create vault" : "Opprett hvelv",
"Go back to vaults" : "Gå tilbake til hvelv",
"Please input the password for" : "Skriv inn passordet for",
@@ -256,7 +249,6 @@
"Request removed" : "Forespørsel fjernet",
"Destruction request pending" : "Ødeleggelsesforespørsel på vent",
"Warning! Adding credentials over HTTP is insecure!" : "Advarsel! Å legge til identitetsdetaljer over HTTP er usikkert!",
- "Logged in to {{vault_name}}" : "Logget inn på {{vault_name}}",
"Change vault" : "Bytt hvelv",
"Deleted credentials" : "Slett påloggingsdetaljer",
"Logout" : "Logg ut",
@@ -295,6 +287,8 @@
"%s has declined your share request for \"%s\"." : "%s har avvist din forespørsel om å dele \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s har akseptert din forespørsel om å dele \"%s\".",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman er en fullverdig passordbehandler.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman er en fullverdig passordbehandler.\nEgenskaper:\n- Hvelv\n- Nøkkel for hvelv er aldri sendt til server\n- Nettleserutvidelse for enkel tilgang til passord\n- Android program for underveis tilgang\n- Referanser er på klient siden kryptert med 256bit AES\n- Referanser er på server siden kryptert med 256bit AES\n- Mulighet til å legge til egendefinerte felt til legitimasjon\n- Innebygd OTP (engangs passord) generator\n- Passord analyse\n- Del passord internt og via lenke på en sikker måte.\n- Import fra ulike passordbehandlere (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nFor en demo av denne appen besøk [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Kunne ikke hente versjonsinfo",
"Passman Settings" : "Passman-innstillinger",
"GitHub version:" : "GitHub-versjon:",
@@ -316,9 +310,11 @@
"Request ID" : "Forespør ID",
"Requested by" : "Forespurt av",
"Reason" : "Grunn",
+ "Click here to request\n\t\t\t\t\tit" : "Klikk her for å forespørre\n\t\t\t\t\tdet",
+ "Loading&hellip;" : "Laster&hellip;",
"Connection to server lost" : "Mistet tilkobling til tjeneren",
"Problem loading page, reloading in 5 seconds" : "Problem ved lasting av side, laster på nytt om 5 sekunder",
- "Saving..." : "Lagrer...",
+ "Saving..." : "Lagrer…",
"Dismiss" : "Forkast",
"seconds ago" : "sekunder siden"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/l10n/nl.js b/l10n/nl.js
index 2c656ea6..eaa2b450 100644
--- a/l10n/nl.js
+++ b/l10n/nl.js
@@ -2,13 +2,13 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Wachtwoorden",
- "Generating sharing keys ( %step / 2)" : "Genereren share sleutels ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Genereren share sleutels ( %s / 2)",
"Incorrect vault password!" : "Onjuist kluiswachtwoord",
"Passwords do not match" : "Wachtwoorden komen niet overeen.",
"General" : "Algemeen",
"Custom Fields" : "Maatwerk velden",
- "Please fill in a label." : "Voeg een label toe.",
- "Please fill in a value." : "Voeg een waarde toe.",
+ "Please fill in a label." : "Voer een label in.",
+ "Please fill in a value." : "Voer een waarde in.",
"Error loading file" : "Fout bij laden bestand",
"An error occurred during decryption" : "Er trad een fout op bij ontsleutelen",
"Credential created!" : "Inloggegevens aangemaakt!",
@@ -16,14 +16,14 @@ OC.L10N.register(
"Credential updated" : "Inloggegevens bijgewerkt",
"Credential recovered" : "Inloggegevens hersteld",
"Credential destroyed" : "Inloggegevens vernietigd",
- "Error downloading file, you probably don't have sufficient permissions" : "Fout bij downloaden bestand, je hebt waarschijnlijk niet genoeg rechten",
+ "Error downloading file, you probably have insufficient permissions" : "Fout bij downloaden bestand, je hebt waarschijnlijk niet genoeg rechten",
"Invalid QR code" : "Ongeldige QR code",
"Starting export" : "Starten export",
"Decrypting credentials" : "Ontsleutelen inloggegevens",
"Done" : "Gereed",
- "File read successfully." : "Bestand succesvol gelezen.",
+ "File read." : "Bestand gelezen.",
"Proceed with the following steps to import your file" : "Ga verder met de volgende stappen om je bestand te importeren",
- "Credential has no label, skipping" : "Inloggegeven zonder label, sla over",
+ "Skipping unlabeled credential" : "Overslaan ongelabeld inloggegeven",
"Adding {{credential}}" : "Toevoegen {{credential}}",
"Added {{credential}}" : "Toegevoegd {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Inloggegeven overslaan, ontbrekend label op regel {{line}} ",
@@ -50,7 +50,7 @@ OC.L10N.register(
"Export credentials" : "Exporteren inloggegevens",
"Sharing" : "Delen",
"Are you sure you want to leave? This will destroy all your credentials" : "Weet je zeker dat je wilt stoppen? Dit zal alle inloggegevens kapot maken",
- "Your old password is incorrect!" : "Je oude wachtwoord is onjuist!",
+ "Old password field incorrect!" : "Oude wachtwoord onjuist!",
"New password does not match!" : "Nieuwe wachtwoord komt niet overeen!",
"Please log in with your new vault password" : "Login met je nieuwe kluiswachtwoord",
"Share with users and groups" : "Delen met gebruikers en groepen",
@@ -73,6 +73,9 @@ OC.L10N.register(
"Username" : "Gebruikersnaam",
"Repeat password" : "Herhaal wachtwoord",
"Add tag" : "Tag toevoegen",
+ "Pick an icon" : "Kies een pictogram",
+ "Use this icon" : "gebruik dit pictogram",
+ "Selected icon" : "Geselecteerde pictogram",
"Field label" : "Veldlabel",
"Field value" : "Veldwaarde",
"Choose a file" : "Kies een bestand",
@@ -122,9 +125,9 @@ OC.L10N.register(
"Total progress" : "Totale voortgang",
"About Passman" : "Over Passman",
"Version" : "Versie",
- "Donate to support development" : "Doneer om de ontwikkeling te ondersteunen",
+ "Donate to support development" : "Doneer en ondersteun de ontwikkeling",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Bewaar je wachtwoorden met 1 klik!",
+ "Save your passwords with one click." : "Sla je wachtwoorden met één klik op.",
"Drag below button to your bookmark toolbar." : "Sleep onderstaande knop naar je bladwijzer balk.",
"Delete vault" : "Standaardkluis",
"Vault password" : "Kluiswachtwoord",
@@ -142,20 +145,20 @@ OC.L10N.register(
"Save keys" : "Opslaan sleutels",
"Generate sharing keys" : "Genereren sleutels om te delen",
"Generating sharing keys" : "Genereren sleutels om te delen",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Het wachtwoord hulpje scant je wachtwoord, berekent de gemiddelde kraaktijd en toont de zwakke wachtwoorden",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "De wachtwoordhulp scant je wachtwoord, berekent de gemiddelde kraaktijd en toont de zwakke wachtwoorden",
"Minimum password stength" : "Minimale wachtwoordsterkte",
"Start scan" : "Start scan",
"Result" : "Resultaat",
"A total of {{scan_result}} weak credentials were found." : "Totaal {{scan_result}} zwakke wachtwoorden gevonden.",
"Score" : "Score",
"Action" : "Actie",
- "Search users or groups…" : "Zoek gebruikers of groepen...",
+ "Search users…" : "Gebruikers zoeken…",
"Missing users? Only users that have vaults are shown." : "Mis je gebruikers? Alleen gebruikers in de kluis worden getoond.",
"Cyphering" : "Versleutelen",
"Uploading" : "Uploaden",
"User" : "Gebruiker",
"Crypto time" : "Cryptotijd",
- "Total time spent cyphering" : "Totale tijd besteed aan versleutelen",
+ "Total time spent encrypting" : "Totale tijd besteed aan versleutelen",
"Read" : "Lezen",
"Write" : "Schrijven",
"Files" : "Bestanden",
@@ -164,7 +167,7 @@ OC.L10N.register(
"Enable link sharing" : "Inschakelen delen link",
"Share until date" : "Delen tot datum",
"Expire after views" : "Vervallen na bezichtiging",
- "Click Share first" : "Klik eerst op Delen",
+ "Click \\\"Share\\\" first" : "Klik eerst op \\\"Share\\\" ",
"Show files" : "Tonen bestanden",
"Details" : "Details",
"Hide details" : "Verbergen details",
@@ -221,10 +224,10 @@ OC.L10N.register(
"Share" : "Delen",
"Recover" : "herstellen",
"Destroy" : "Vernietigen",
- "Use regex" : "Gebruiken regex",
+ "Use regex" : "Gebruik regex",
"You have incoming share requests." : "Je hebt binnengekomen deelverzoeken.",
"If you want to put the credential in another vault," : "Als je de inloggegevens in een andere kluis wilt stoppen,",
- "log out of this vault and log in to the vault you want the shared credential in." : "Log uit van deze kluis en login in de kluis waar je de gedeelde inloggegevens wilt bewaren.",
+ "log out of this vault and log into the vault you want the shared credential in." : "Log uit bij deze kluis en log in bij de kluis waar je de gedeelde inloggegevens wilt bewaren.",
"Permissions" : "Permissies",
"Received from" : "Ontvangen van",
"Date" : "Datum",
@@ -238,27 +241,27 @@ OC.L10N.register(
"Password strength must be at least: {{strength}}" : "Wachtwoordsterkte minimale waarde: {{strength}}",
"Please give your new vault a name." : "Voer de naam van je nieuwe kluis in.",
"Repeat vault password" : "Herhaal kluiswachtwoord",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "De deelsleutels zal een sterkte van 1024 bit hebben. Later is dit te wijzigen bij de instellingen.",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Je deelsleutels zullen een sterkte van 1024 bit hebben. Dit kun je later in \\\"Instellingen\\\" aanpassen.",
"Create vault" : "Creëren kluis",
"Go back to vaults" : "Terug naar kluizen",
"Please input the password for" : "Voer het wachtwoord in voor",
"Set this vault as the default." : "Stel is als standaard kluis.",
- "Log into this vault automatically." : "Automatisch in deze kluis uitloggen.",
- "Log out of this vault automatically after: " : "Automatisch van deze kluis uitloggen na:",
+ "Log into this vault automatically." : "Automatisch bij deze kluis inloggen.",
+ "Log out of this vault automatically after: " : "Automatisch bij deze kluis uitloggen na:",
"Decrypt vault" : "Ontsleutel kluis",
- "Seems you lost the vault password and you're unable to log in." : "Het lijkt erop dat je het kluiswachtwoord kwijt bent en niet meer kan inloggen.",
+ "Seems you lost the vault password and you're unable to log in." : "Het lijkt erop dat je het kluiswachtwoord kwijt bent en niet meer in kan loggen.",
"If you want this vault to be removed you can request that here." : "Als je deze kluis verwijderd wilt hebben, kun je de vernietiging van de kluis hier aanvragen.",
"An admin then accepts or declines the request" : "Een beheerder zal dan deze aanvraag accepteren of afwijzen",
"After an admin destroys this vault, all credentials in it will be lost" : "Nadat een beheerde deze kluis vernietigd zijn alle inloggegevens verloren",
"Reason for requesting deletion (optional):" : "Reden voor aanvraag vernietiging (optioneel):",
"Request vault destruction" : "Aanvragen kluisvernietiging",
"Yes, request an admin to destroy this vault" : "Ja, vraag een beheerder om deze kluis te vernietigen",
- "Cancel destruction request" : "Annuleren vernietigingsaanvraag",
+ "Cancel destruction request" : "Vernietigingsaanvraag annuleren",
"Vault destruction requested" : "Kluisvernietiging aangevraagd",
"Request removed" : "Aanvraag verwijderd",
"Destruction request pending" : "Vernietigingsaanvragen in behandeling",
"Warning! Adding credentials over HTTP is insecure!" : "Waarschuwing! Het toevoegen van inloggegevens over HTTP is niet veilig!",
- "Logged in to {{vault_name}}" : "Ingelogd in {{vault_name}}",
+ "Logged into {{vault_name}}" : "Ingelogd in {{vault_name}}",
"Change vault" : "Wijzigen kluis",
"Deleted credentials" : "Verwijderde inloggegevens",
"Logout" : "Uitloggen",
@@ -297,6 +300,8 @@ OC.L10N.register(
"%s has declined your share request for \"%s\"." : "%s weigerde je aanvraag om \"%s\" te delen.",
"%s has accepted your share request for \"%s\"." : "%s accepteerde je aanvraag om \"%s\" te delen.",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman is een wachtwoordbeheerder met alle functionaliteiten.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman is een wachtwoordmanager met alles wat je nodig hebt:\n- Kluizen\n- De kluissleutel wordt nooit verstuurd naar de server\n- Browser-extensie voor eenvoudige toegang tot wachtwoorden\n- Android app voor toegang onderweg\n- Inloggegevens worden client side versleuteld met 256bit AES\n- Inloggegevens worden op de server versleuteld met 256bit AES\n- Mogelijkheid om maatwerkvelden bij wachtwoorden toe te voegen\n- Ingebouwde OTP (One Time Password) generator\n- Wachtwoordanalyse\n- Intern en via een link veilig delen van wachtwoorden.\n- Import vanuit verschillende wachtwoordmanagers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nVoor een demo van deze app bezoek [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Kon de versieinformatie niet ophalen",
"Passman Settings" : "Passman instellingen",
"GitHub version:" : "Github versie:",
@@ -306,8 +311,8 @@ OC.L10N.register(
"Vault destruction requests" : "Kluisvernietigingsaanvragen",
"Check for new versions" : "Controleren op nieuwe versies",
"Enable HTTPS check" : "Inschakelen HTTPS controle",
- "Disable context menu" : "Deactiveren contextmenu",
- "Disable JavaScript debugger" : "Uitschakelen JavaScript debugger",
+ "Disable context menu" : "Uitschakelen contextmenu",
+ "Disable JavaScript debugger" : "Uitschakelen JavaScript-debugger",
"Allow users on this server to share passwords with a link" : "Toestaan dat gebruikers op deze server wachtwoorden delen via een link",
"Allow users on this server to share passwords with other users" : "Toestaan dat gebruikers op deze server wachtwoorden met andere gebruikers delen",
"Move credentials from one account to another" : "Verplaats inloggegevens van het ene account naar een ander",
@@ -318,6 +323,10 @@ OC.L10N.register(
"Request ID" : "Aanvraag ID",
"Requested by" : "Aangevraagd door",
"Reason" : "Reden",
+ "Click here to request\n\t\t\t\t\tit" : "Klik hier om aan te vragen",
+ "Loading&hellip;" : "Laden&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Ai. kon inlogtoken niet vinden. Misschien vervallen?",
+ "Expires:" : "Vervalt:",
"Connection to server lost" : "Verbinding met server verloren",
"Problem loading page, reloading in 5 seconds" : "Probleem met het laden van de pagina, wordt ververst in 5 seconden",
"Saving..." : "Opslaan...",
diff --git a/l10n/nl.json b/l10n/nl.json
index e882de52..b084626f 100644
--- a/l10n/nl.json
+++ b/l10n/nl.json
@@ -1,12 +1,12 @@
{ "translations": {
"Passwords" : "Wachtwoorden",
- "Generating sharing keys ( %step / 2)" : "Genereren share sleutels ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Genereren share sleutels ( %s / 2)",
"Incorrect vault password!" : "Onjuist kluiswachtwoord",
"Passwords do not match" : "Wachtwoorden komen niet overeen.",
"General" : "Algemeen",
"Custom Fields" : "Maatwerk velden",
- "Please fill in a label." : "Voeg een label toe.",
- "Please fill in a value." : "Voeg een waarde toe.",
+ "Please fill in a label." : "Voer een label in.",
+ "Please fill in a value." : "Voer een waarde in.",
"Error loading file" : "Fout bij laden bestand",
"An error occurred during decryption" : "Er trad een fout op bij ontsleutelen",
"Credential created!" : "Inloggegevens aangemaakt!",
@@ -14,14 +14,14 @@
"Credential updated" : "Inloggegevens bijgewerkt",
"Credential recovered" : "Inloggegevens hersteld",
"Credential destroyed" : "Inloggegevens vernietigd",
- "Error downloading file, you probably don't have sufficient permissions" : "Fout bij downloaden bestand, je hebt waarschijnlijk niet genoeg rechten",
+ "Error downloading file, you probably have insufficient permissions" : "Fout bij downloaden bestand, je hebt waarschijnlijk niet genoeg rechten",
"Invalid QR code" : "Ongeldige QR code",
"Starting export" : "Starten export",
"Decrypting credentials" : "Ontsleutelen inloggegevens",
"Done" : "Gereed",
- "File read successfully." : "Bestand succesvol gelezen.",
+ "File read." : "Bestand gelezen.",
"Proceed with the following steps to import your file" : "Ga verder met de volgende stappen om je bestand te importeren",
- "Credential has no label, skipping" : "Inloggegeven zonder label, sla over",
+ "Skipping unlabeled credential" : "Overslaan ongelabeld inloggegeven",
"Adding {{credential}}" : "Toevoegen {{credential}}",
"Added {{credential}}" : "Toegevoegd {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Inloggegeven overslaan, ontbrekend label op regel {{line}} ",
@@ -48,7 +48,7 @@
"Export credentials" : "Exporteren inloggegevens",
"Sharing" : "Delen",
"Are you sure you want to leave? This will destroy all your credentials" : "Weet je zeker dat je wilt stoppen? Dit zal alle inloggegevens kapot maken",
- "Your old password is incorrect!" : "Je oude wachtwoord is onjuist!",
+ "Old password field incorrect!" : "Oude wachtwoord onjuist!",
"New password does not match!" : "Nieuwe wachtwoord komt niet overeen!",
"Please log in with your new vault password" : "Login met je nieuwe kluiswachtwoord",
"Share with users and groups" : "Delen met gebruikers en groepen",
@@ -71,6 +71,9 @@
"Username" : "Gebruikersnaam",
"Repeat password" : "Herhaal wachtwoord",
"Add tag" : "Tag toevoegen",
+ "Pick an icon" : "Kies een pictogram",
+ "Use this icon" : "gebruik dit pictogram",
+ "Selected icon" : "Geselecteerde pictogram",
"Field label" : "Veldlabel",
"Field value" : "Veldwaarde",
"Choose a file" : "Kies een bestand",
@@ -120,9 +123,9 @@
"Total progress" : "Totale voortgang",
"About Passman" : "Over Passman",
"Version" : "Versie",
- "Donate to support development" : "Doneer om de ontwikkeling te ondersteunen",
+ "Donate to support development" : "Doneer en ondersteun de ontwikkeling",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Bewaar je wachtwoorden met 1 klik!",
+ "Save your passwords with one click." : "Sla je wachtwoorden met één klik op.",
"Drag below button to your bookmark toolbar." : "Sleep onderstaande knop naar je bladwijzer balk.",
"Delete vault" : "Standaardkluis",
"Vault password" : "Kluiswachtwoord",
@@ -140,20 +143,20 @@
"Save keys" : "Opslaan sleutels",
"Generate sharing keys" : "Genereren sleutels om te delen",
"Generating sharing keys" : "Genereren sleutels om te delen",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Het wachtwoord hulpje scant je wachtwoord, berekent de gemiddelde kraaktijd en toont de zwakke wachtwoorden",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "De wachtwoordhulp scant je wachtwoord, berekent de gemiddelde kraaktijd en toont de zwakke wachtwoorden",
"Minimum password stength" : "Minimale wachtwoordsterkte",
"Start scan" : "Start scan",
"Result" : "Resultaat",
"A total of {{scan_result}} weak credentials were found." : "Totaal {{scan_result}} zwakke wachtwoorden gevonden.",
"Score" : "Score",
"Action" : "Actie",
- "Search users or groups…" : "Zoek gebruikers of groepen...",
+ "Search users…" : "Gebruikers zoeken…",
"Missing users? Only users that have vaults are shown." : "Mis je gebruikers? Alleen gebruikers in de kluis worden getoond.",
"Cyphering" : "Versleutelen",
"Uploading" : "Uploaden",
"User" : "Gebruiker",
"Crypto time" : "Cryptotijd",
- "Total time spent cyphering" : "Totale tijd besteed aan versleutelen",
+ "Total time spent encrypting" : "Totale tijd besteed aan versleutelen",
"Read" : "Lezen",
"Write" : "Schrijven",
"Files" : "Bestanden",
@@ -162,7 +165,7 @@
"Enable link sharing" : "Inschakelen delen link",
"Share until date" : "Delen tot datum",
"Expire after views" : "Vervallen na bezichtiging",
- "Click Share first" : "Klik eerst op Delen",
+ "Click \\\"Share\\\" first" : "Klik eerst op \\\"Share\\\" ",
"Show files" : "Tonen bestanden",
"Details" : "Details",
"Hide details" : "Verbergen details",
@@ -219,10 +222,10 @@
"Share" : "Delen",
"Recover" : "herstellen",
"Destroy" : "Vernietigen",
- "Use regex" : "Gebruiken regex",
+ "Use regex" : "Gebruik regex",
"You have incoming share requests." : "Je hebt binnengekomen deelverzoeken.",
"If you want to put the credential in another vault," : "Als je de inloggegevens in een andere kluis wilt stoppen,",
- "log out of this vault and log in to the vault you want the shared credential in." : "Log uit van deze kluis en login in de kluis waar je de gedeelde inloggegevens wilt bewaren.",
+ "log out of this vault and log into the vault you want the shared credential in." : "Log uit bij deze kluis en log in bij de kluis waar je de gedeelde inloggegevens wilt bewaren.",
"Permissions" : "Permissies",
"Received from" : "Ontvangen van",
"Date" : "Datum",
@@ -236,27 +239,27 @@
"Password strength must be at least: {{strength}}" : "Wachtwoordsterkte minimale waarde: {{strength}}",
"Please give your new vault a name." : "Voer de naam van je nieuwe kluis in.",
"Repeat vault password" : "Herhaal kluiswachtwoord",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "De deelsleutels zal een sterkte van 1024 bit hebben. Later is dit te wijzigen bij de instellingen.",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Je deelsleutels zullen een sterkte van 1024 bit hebben. Dit kun je later in \\\"Instellingen\\\" aanpassen.",
"Create vault" : "Creëren kluis",
"Go back to vaults" : "Terug naar kluizen",
"Please input the password for" : "Voer het wachtwoord in voor",
"Set this vault as the default." : "Stel is als standaard kluis.",
- "Log into this vault automatically." : "Automatisch in deze kluis uitloggen.",
- "Log out of this vault automatically after: " : "Automatisch van deze kluis uitloggen na:",
+ "Log into this vault automatically." : "Automatisch bij deze kluis inloggen.",
+ "Log out of this vault automatically after: " : "Automatisch bij deze kluis uitloggen na:",
"Decrypt vault" : "Ontsleutel kluis",
- "Seems you lost the vault password and you're unable to log in." : "Het lijkt erop dat je het kluiswachtwoord kwijt bent en niet meer kan inloggen.",
+ "Seems you lost the vault password and you're unable to log in." : "Het lijkt erop dat je het kluiswachtwoord kwijt bent en niet meer in kan loggen.",
"If you want this vault to be removed you can request that here." : "Als je deze kluis verwijderd wilt hebben, kun je de vernietiging van de kluis hier aanvragen.",
"An admin then accepts or declines the request" : "Een beheerder zal dan deze aanvraag accepteren of afwijzen",
"After an admin destroys this vault, all credentials in it will be lost" : "Nadat een beheerde deze kluis vernietigd zijn alle inloggegevens verloren",
"Reason for requesting deletion (optional):" : "Reden voor aanvraag vernietiging (optioneel):",
"Request vault destruction" : "Aanvragen kluisvernietiging",
"Yes, request an admin to destroy this vault" : "Ja, vraag een beheerder om deze kluis te vernietigen",
- "Cancel destruction request" : "Annuleren vernietigingsaanvraag",
+ "Cancel destruction request" : "Vernietigingsaanvraag annuleren",
"Vault destruction requested" : "Kluisvernietiging aangevraagd",
"Request removed" : "Aanvraag verwijderd",
"Destruction request pending" : "Vernietigingsaanvragen in behandeling",
"Warning! Adding credentials over HTTP is insecure!" : "Waarschuwing! Het toevoegen van inloggegevens over HTTP is niet veilig!",
- "Logged in to {{vault_name}}" : "Ingelogd in {{vault_name}}",
+ "Logged into {{vault_name}}" : "Ingelogd in {{vault_name}}",
"Change vault" : "Wijzigen kluis",
"Deleted credentials" : "Verwijderde inloggegevens",
"Logout" : "Uitloggen",
@@ -295,6 +298,8 @@
"%s has declined your share request for \"%s\"." : "%s weigerde je aanvraag om \"%s\" te delen.",
"%s has accepted your share request for \"%s\"." : "%s accepteerde je aanvraag om \"%s\" te delen.",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman is een wachtwoordbeheerder met alle functionaliteiten.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman is een wachtwoordmanager met alles wat je nodig hebt:\n- Kluizen\n- De kluissleutel wordt nooit verstuurd naar de server\n- Browser-extensie voor eenvoudige toegang tot wachtwoorden\n- Android app voor toegang onderweg\n- Inloggegevens worden client side versleuteld met 256bit AES\n- Inloggegevens worden op de server versleuteld met 256bit AES\n- Mogelijkheid om maatwerkvelden bij wachtwoorden toe te voegen\n- Ingebouwde OTP (One Time Password) generator\n- Wachtwoordanalyse\n- Intern en via een link veilig delen van wachtwoorden.\n- Import vanuit verschillende wachtwoordmanagers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nVoor een demo van deze app bezoek [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Kon de versieinformatie niet ophalen",
"Passman Settings" : "Passman instellingen",
"GitHub version:" : "Github versie:",
@@ -304,8 +309,8 @@
"Vault destruction requests" : "Kluisvernietigingsaanvragen",
"Check for new versions" : "Controleren op nieuwe versies",
"Enable HTTPS check" : "Inschakelen HTTPS controle",
- "Disable context menu" : "Deactiveren contextmenu",
- "Disable JavaScript debugger" : "Uitschakelen JavaScript debugger",
+ "Disable context menu" : "Uitschakelen contextmenu",
+ "Disable JavaScript debugger" : "Uitschakelen JavaScript-debugger",
"Allow users on this server to share passwords with a link" : "Toestaan dat gebruikers op deze server wachtwoorden delen via een link",
"Allow users on this server to share passwords with other users" : "Toestaan dat gebruikers op deze server wachtwoorden met andere gebruikers delen",
"Move credentials from one account to another" : "Verplaats inloggegevens van het ene account naar een ander",
@@ -316,6 +321,10 @@
"Request ID" : "Aanvraag ID",
"Requested by" : "Aangevraagd door",
"Reason" : "Reden",
+ "Click here to request\n\t\t\t\t\tit" : "Klik hier om aan te vragen",
+ "Loading&hellip;" : "Laden&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Ai. kon inlogtoken niet vinden. Misschien vervallen?",
+ "Expires:" : "Vervalt:",
"Connection to server lost" : "Verbinding met server verloren",
"Problem loading page, reloading in 5 seconds" : "Probleem met het laden van de pagina, wordt ververst in 5 seconden",
"Saving..." : "Opslaan...",
diff --git a/l10n/pl.js b/l10n/pl.js
index 548e6c62..353c616d 100644
--- a/l10n/pl.js
+++ b/l10n/pl.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Hasła",
- "Generating sharing keys ( %step / 2)" : "Tworzenie kluczy współdzielonych ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Tworzenie kluczy współdzielonych ( %s / 2)",
"Incorrect vault password!" : "Nieprawidłowe hasło sejfu!",
"Passwords do not match" : "Hasła nie pasują",
"General" : "Ogólne",
@@ -16,14 +16,11 @@ OC.L10N.register(
"Credential updated" : "Poświadczenie zaktualizowane",
"Credential recovered" : "Poświadczenie odzyskane",
"Credential destroyed" : "Poświadczenie zniszczone",
- "Error downloading file, you probably don't have sufficient permissions" : "Błąd ściągania pliku, prawdopodobnie nie masz wystarczających uprawnień",
"Invalid QR code" : "Błędny kod QR",
"Starting export" : "Zaczynam eksport",
"Decrypting credentials" : "Odszyfrowywanie poświadczeń",
"Done" : "Zrobione",
- "File read successfully." : "Prawidłowy odczyt pliku.",
"Proceed with the following steps to import your file" : "Podążaj za kolejnymi krokami w celu zaimportowania pliku",
- "Credential has no label, skipping" : "Poświadczenie nie ma etykiety, pomijam",
"Adding {{credential}}" : "Dodawanie {{credential}}",
"Added {{credential}}" : "Dodano {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Pomijam poświadczenia, brak etykiety w linii {{line}}",
@@ -50,7 +47,6 @@ OC.L10N.register(
"Export credentials" : "Eksport poświadczeń",
"Sharing" : "Współdzielenie",
"Are you sure you want to leave? This will destroy all your credentials" : "Na pewno chcesz wyjść? To skasuje wszystkie twoje poświadczenia",
- "Your old password is incorrect!" : "Twoje stare hasło jest nieprawidłowe",
"New password does not match!" : "Nowe hasła nie pasują do siebie",
"Please log in with your new vault password" : "Zaloguj się do sejfu używając nowego hasła",
"Share with users and groups" : "Udostępnij użytkownikom i grupom",
@@ -73,6 +69,9 @@ OC.L10N.register(
"Username" : "Nazwa użytkownika",
"Repeat password" : "Powtórz hasło",
"Add tag" : "Dodaj tag",
+ "Pick an icon" : "Wybierz ikonę",
+ "Use this icon" : "Użyj tej ikony",
+ "Selected icon" : "Wybierz ikonę",
"Field label" : "Pole etykiety",
"Field value" : "Pole wartości",
"Choose a file" : "Wybierz plik",
@@ -124,12 +123,12 @@ OC.L10N.register(
"Version" : "Wersja",
"Donate to support development" : "Dotuj, aby wesprzeć programistów",
"Bookmarklet" : "Skryptozakładka",
- "Save your passwords with 1 click!" : "Zapisz swoje hasło jednym kliknięciem!",
"Drag below button to your bookmark toolbar." : "Przesuń poniższy przycisk na pasek zakładek.",
"Delete vault" : "Usuń sejf",
"Vault password" : "Hasło sejfu",
"This process is irreversible" : "Ten proces jest nieodwracalny",
"Delete my precious passwords" : "Skasuj moje cenne hasła",
+ "Deleting {{password}}…" : "Usuwanie {{password}}…",
"Yes, delete my precious passwords" : "Tak, skasuj moje cenne hasła",
"Import type" : "Typ importu",
"Import" : "Import",
@@ -141,19 +140,18 @@ OC.L10N.register(
"Save keys" : "Zapisz klucze",
"Generate sharing keys" : "Generuj klucze współdzielone",
"Generating sharing keys" : "Generowanie klucze współdzielone",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Narzędzie przeskanuje Twoje hasła, obliczy czas potrzebny do ich złamania i wyświetli te, które znajdą się poniżej założonego progu",
"Minimum password stength" : "Minimalna siła hasła",
"Start scan" : "Rozpocznij skanowanie",
"Result" : "Wynik",
"A total of {{scan_result}} weak credentials were found." : "Znaleziono {{scan_result}} słabych uprawnień.",
"Score" : "Punktacja",
"Action" : "Akcja",
+ "Search users…" : "Wyszukaj użytkowników…",
"Missing users? Only users that have vaults are shown." : "Brakuje użytkowników? Zostali pokazani tylko użytkownicy posiadający sejfy.",
"Cyphering" : "Szyfrowanie",
"Uploading" : "Wysyłanie",
"User" : "Użytkownik",
"Crypto time" : "Czas szyfrowania",
- "Total time spent cyphering" : "Całkowity czas spędzony na szyfrowaniu",
"Read" : "Wczytaj",
"Write" : "Zapisz",
"Files" : "Pliki",
@@ -201,13 +199,16 @@ OC.L10N.register(
"Share credential {{credential}}" : "Udostępnij poświadczenie {{credential}}",
"Unshare" : "Cofnij udostępnienie",
"Showing deleted since" : "Pokazuję skasowane od",
+ "Beginning" : "Początek",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Pokazuję {{number_filtered}} z {{credential_number}} poświadczeń",
+ "Search for credential…" : "Szukaj poświadczeń",
"Account" : "Konto",
"Password" : "Hasło",
"OTP" : "OTP",
"E-mail" : "E-mail",
"URL" : "URL",
"Notes" : "Notatki",
+ "Expiry time" : "Czas wygaśnięcia",
"Changed" : "Zmieniono",
"Created" : "Utworzono",
"Edit" : "Edytuj",
@@ -217,6 +218,7 @@ OC.L10N.register(
"Destroy" : "Zniszcz",
"Use regex" : "Użyj wyrażeń regularnych",
"You have incoming share requests." : "Masz nowe żądania udostępniania.",
+ "If you want to put the credential in another vault," : "Jeśli chcesz zapisać poświadczenia w innym sejfie,",
"Permissions" : "Uprawnienia",
"Received from" : "Otrzymane od",
"Date" : "Data",
@@ -233,22 +235,30 @@ OC.L10N.register(
"Create vault" : "Utwórz nowy sejf",
"Go back to vaults" : "Wróć do sejfów",
"Please input the password for" : "Proszę wprowadzić hasło do",
+ "Set this vault as the default." : "Ustaw ten sejf jako domyślny.",
"Log into this vault automatically." : "Automatycznie zaloguj do tego sejfu.",
+ "Log out of this vault automatically after: " : "Wyloguj z tego sejfu automatycznie po: ",
"Decrypt vault" : "Odszyfruj sejf",
+ "Seems you lost the vault password and you're unable to log in." : "Wygląda na to, że nie możesz się zalogować ponieważ zgubiłeś hasło do sejfu.",
"If you want this vault to be removed you can request that here." : "Jeżeli chcesz usunąć ten sejf możesz to zgłosić tutaj.",
+ "An admin then accepts or declines the request" : "Administrator akceptuje bądź odrzuca prośbę",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Po zniszczeniu sejfu przez administratora, wszystkie poświadczenia zostaną również utracone",
+ "Reason for requesting deletion (optional):" : "Powód prośby o usunięcie (opcjonalnie): ",
"Request vault destruction" : "Poproś o zniszczenie sejfu",
"Yes, request an admin to destroy this vault" : "Tak, poproś administratora o zniszczenie tego sejfu",
"Cancel destruction request" : "Anuluj prośbę o zniszczenie",
"Vault destruction requested" : "Prośba o zniszczenie sejfu została wysłana",
"Request removed" : "Prośba została usunięta",
"Destruction request pending" : "Oczekuje na zniszczenie",
- "Logged in to {{vault_name}}" : "Zalogowano do {{vault_name}}",
+ "Warning! Adding credentials over HTTP is insecure!" : "Uwaga! Dodawanie poświadczeń przez HTTP jest niebezpieczne!",
"Change vault" : "Zmień sejf",
"Deleted credentials" : "Usunięte poświadczenia",
"Logout" : "Wyloguj",
"Donate" : "Dotuj",
"Someone has shared a credential with you." : "Ktoś udostępnił ci poświadczenia",
"Click here to request it" : "Kliknij to, aby zażądać tego",
+ "Loading…" : "Ładowanie…",
+ "Awwhh… credential not found. Maybe it expired" : "Ups… poświadczenie nie znalezione. Może wygasło.",
"Error while saving field" : "Błąd podczas zapisywania pola",
"A Passman item has been created, modified or deleted" : "Pozycja Passmana została utworzona, zmodyfikowana lub skasowana",
"A Passman item has expired" : "Pozycja Passmana wygasła",
@@ -279,8 +289,11 @@ OC.L10N.register(
"%s has declined your share request for \"%s\"." : "%s odrzucił twoją prośbę o udostępnienie \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s zaakceptował twoją prośbę o udostępnienie \"%s\".",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman to w pełni funkcjonalny menedżer haseł.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman to w pełni funkcjonalny menedżer haseł.\nFunkcje:\n- Sejfy\n- Klucz Sejfu nigdy nie jest wysyłany na serwer\n- Rozszerzenie przeglądarki dla łatwego dostępu do haseł\n- Aplikacja na Androida na dostęp do drogi\n- Poświadczenia są po stronie klienta zaszyfrowane za pomocą 256-bitowej AES\n- Poświadczenia są szyfrowane po stronie serwera za pomocą 256-bitowej AES\n- Możliwość dodawania pól niestandardowych do poświadczeń\n- Wbudowany generator OTP (One Time Password)\n- Analizator haseł\n- Udostępniaj hasła wewnętrznie i przez łącze w bezpieczny sposób.\n- Importowanie z różnych menedżerów haseł (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nAby zapoznać się z demonstracją tej aplikacji, odwiedź [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Nie mogę uzyskać informacji o wersji",
"Passman Settings" : "Ustawienia Passmana",
+ "GitHub version:" : "Wersja GitHub: ",
"A newer version of Passman is available" : "Nowsza wersja aplikacji Passman jest dostępna",
"Password sharing" : "Współdzielenie hasła",
"Credential mover" : "Przenoszenie poświadczeń",
@@ -299,9 +312,11 @@ OC.L10N.register(
"Request ID" : "Identyfikator prośby",
"Requested by" : "Prośba złożona przez",
"Reason" : "Powód",
+ "Click here to request\n\t\t\t\t\tit" : "Kliknij tutaj aby poprosić o\n\t\t\t\t\t",
+ "Loading&hellip;" : "Ładowanie&hellip;",
"Connection to server lost" : "Utracono połączenie z serwerem",
"Problem loading page, reloading in 5 seconds" : "Problem z załadowaniem strony, przeładuję za 5 sekund",
- "Saving..." : "Zapisywanie...",
+ "Saving..." : "Zapisywanie…",
"Dismiss" : "Odrzuć",
"seconds ago" : "sekund temu"
},
diff --git a/l10n/pl.json b/l10n/pl.json
index 5f30fbee..983521a2 100644
--- a/l10n/pl.json
+++ b/l10n/pl.json
@@ -1,6 +1,6 @@
{ "translations": {
"Passwords" : "Hasła",
- "Generating sharing keys ( %step / 2)" : "Tworzenie kluczy współdzielonych ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Tworzenie kluczy współdzielonych ( %s / 2)",
"Incorrect vault password!" : "Nieprawidłowe hasło sejfu!",
"Passwords do not match" : "Hasła nie pasują",
"General" : "Ogólne",
@@ -14,14 +14,11 @@
"Credential updated" : "Poświadczenie zaktualizowane",
"Credential recovered" : "Poświadczenie odzyskane",
"Credential destroyed" : "Poświadczenie zniszczone",
- "Error downloading file, you probably don't have sufficient permissions" : "Błąd ściągania pliku, prawdopodobnie nie masz wystarczających uprawnień",
"Invalid QR code" : "Błędny kod QR",
"Starting export" : "Zaczynam eksport",
"Decrypting credentials" : "Odszyfrowywanie poświadczeń",
"Done" : "Zrobione",
- "File read successfully." : "Prawidłowy odczyt pliku.",
"Proceed with the following steps to import your file" : "Podążaj za kolejnymi krokami w celu zaimportowania pliku",
- "Credential has no label, skipping" : "Poświadczenie nie ma etykiety, pomijam",
"Adding {{credential}}" : "Dodawanie {{credential}}",
"Added {{credential}}" : "Dodano {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Pomijam poświadczenia, brak etykiety w linii {{line}}",
@@ -48,7 +45,6 @@
"Export credentials" : "Eksport poświadczeń",
"Sharing" : "Współdzielenie",
"Are you sure you want to leave? This will destroy all your credentials" : "Na pewno chcesz wyjść? To skasuje wszystkie twoje poświadczenia",
- "Your old password is incorrect!" : "Twoje stare hasło jest nieprawidłowe",
"New password does not match!" : "Nowe hasła nie pasują do siebie",
"Please log in with your new vault password" : "Zaloguj się do sejfu używając nowego hasła",
"Share with users and groups" : "Udostępnij użytkownikom i grupom",
@@ -71,6 +67,9 @@
"Username" : "Nazwa użytkownika",
"Repeat password" : "Powtórz hasło",
"Add tag" : "Dodaj tag",
+ "Pick an icon" : "Wybierz ikonę",
+ "Use this icon" : "Użyj tej ikony",
+ "Selected icon" : "Wybierz ikonę",
"Field label" : "Pole etykiety",
"Field value" : "Pole wartości",
"Choose a file" : "Wybierz plik",
@@ -122,12 +121,12 @@
"Version" : "Wersja",
"Donate to support development" : "Dotuj, aby wesprzeć programistów",
"Bookmarklet" : "Skryptozakładka",
- "Save your passwords with 1 click!" : "Zapisz swoje hasło jednym kliknięciem!",
"Drag below button to your bookmark toolbar." : "Przesuń poniższy przycisk na pasek zakładek.",
"Delete vault" : "Usuń sejf",
"Vault password" : "Hasło sejfu",
"This process is irreversible" : "Ten proces jest nieodwracalny",
"Delete my precious passwords" : "Skasuj moje cenne hasła",
+ "Deleting {{password}}…" : "Usuwanie {{password}}…",
"Yes, delete my precious passwords" : "Tak, skasuj moje cenne hasła",
"Import type" : "Typ importu",
"Import" : "Import",
@@ -139,19 +138,18 @@
"Save keys" : "Zapisz klucze",
"Generate sharing keys" : "Generuj klucze współdzielone",
"Generating sharing keys" : "Generowanie klucze współdzielone",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Narzędzie przeskanuje Twoje hasła, obliczy czas potrzebny do ich złamania i wyświetli te, które znajdą się poniżej założonego progu",
"Minimum password stength" : "Minimalna siła hasła",
"Start scan" : "Rozpocznij skanowanie",
"Result" : "Wynik",
"A total of {{scan_result}} weak credentials were found." : "Znaleziono {{scan_result}} słabych uprawnień.",
"Score" : "Punktacja",
"Action" : "Akcja",
+ "Search users…" : "Wyszukaj użytkowników…",
"Missing users? Only users that have vaults are shown." : "Brakuje użytkowników? Zostali pokazani tylko użytkownicy posiadający sejfy.",
"Cyphering" : "Szyfrowanie",
"Uploading" : "Wysyłanie",
"User" : "Użytkownik",
"Crypto time" : "Czas szyfrowania",
- "Total time spent cyphering" : "Całkowity czas spędzony na szyfrowaniu",
"Read" : "Wczytaj",
"Write" : "Zapisz",
"Files" : "Pliki",
@@ -199,13 +197,16 @@
"Share credential {{credential}}" : "Udostępnij poświadczenie {{credential}}",
"Unshare" : "Cofnij udostępnienie",
"Showing deleted since" : "Pokazuję skasowane od",
+ "Beginning" : "Początek",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Pokazuję {{number_filtered}} z {{credential_number}} poświadczeń",
+ "Search for credential…" : "Szukaj poświadczeń",
"Account" : "Konto",
"Password" : "Hasło",
"OTP" : "OTP",
"E-mail" : "E-mail",
"URL" : "URL",
"Notes" : "Notatki",
+ "Expiry time" : "Czas wygaśnięcia",
"Changed" : "Zmieniono",
"Created" : "Utworzono",
"Edit" : "Edytuj",
@@ -215,6 +216,7 @@
"Destroy" : "Zniszcz",
"Use regex" : "Użyj wyrażeń regularnych",
"You have incoming share requests." : "Masz nowe żądania udostępniania.",
+ "If you want to put the credential in another vault," : "Jeśli chcesz zapisać poświadczenia w innym sejfie,",
"Permissions" : "Uprawnienia",
"Received from" : "Otrzymane od",
"Date" : "Data",
@@ -231,22 +233,30 @@
"Create vault" : "Utwórz nowy sejf",
"Go back to vaults" : "Wróć do sejfów",
"Please input the password for" : "Proszę wprowadzić hasło do",
+ "Set this vault as the default." : "Ustaw ten sejf jako domyślny.",
"Log into this vault automatically." : "Automatycznie zaloguj do tego sejfu.",
+ "Log out of this vault automatically after: " : "Wyloguj z tego sejfu automatycznie po: ",
"Decrypt vault" : "Odszyfruj sejf",
+ "Seems you lost the vault password and you're unable to log in." : "Wygląda na to, że nie możesz się zalogować ponieważ zgubiłeś hasło do sejfu.",
"If you want this vault to be removed you can request that here." : "Jeżeli chcesz usunąć ten sejf możesz to zgłosić tutaj.",
+ "An admin then accepts or declines the request" : "Administrator akceptuje bądź odrzuca prośbę",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Po zniszczeniu sejfu przez administratora, wszystkie poświadczenia zostaną również utracone",
+ "Reason for requesting deletion (optional):" : "Powód prośby o usunięcie (opcjonalnie): ",
"Request vault destruction" : "Poproś o zniszczenie sejfu",
"Yes, request an admin to destroy this vault" : "Tak, poproś administratora o zniszczenie tego sejfu",
"Cancel destruction request" : "Anuluj prośbę o zniszczenie",
"Vault destruction requested" : "Prośba o zniszczenie sejfu została wysłana",
"Request removed" : "Prośba została usunięta",
"Destruction request pending" : "Oczekuje na zniszczenie",
- "Logged in to {{vault_name}}" : "Zalogowano do {{vault_name}}",
+ "Warning! Adding credentials over HTTP is insecure!" : "Uwaga! Dodawanie poświadczeń przez HTTP jest niebezpieczne!",
"Change vault" : "Zmień sejf",
"Deleted credentials" : "Usunięte poświadczenia",
"Logout" : "Wyloguj",
"Donate" : "Dotuj",
"Someone has shared a credential with you." : "Ktoś udostępnił ci poświadczenia",
"Click here to request it" : "Kliknij to, aby zażądać tego",
+ "Loading…" : "Ładowanie…",
+ "Awwhh… credential not found. Maybe it expired" : "Ups… poświadczenie nie znalezione. Może wygasło.",
"Error while saving field" : "Błąd podczas zapisywania pola",
"A Passman item has been created, modified or deleted" : "Pozycja Passmana została utworzona, zmodyfikowana lub skasowana",
"A Passman item has expired" : "Pozycja Passmana wygasła",
@@ -277,8 +287,11 @@
"%s has declined your share request for \"%s\"." : "%s odrzucił twoją prośbę o udostępnienie \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s zaakceptował twoją prośbę o udostępnienie \"%s\".",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman to w pełni funkcjonalny menedżer haseł.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman to w pełni funkcjonalny menedżer haseł.\nFunkcje:\n- Sejfy\n- Klucz Sejfu nigdy nie jest wysyłany na serwer\n- Rozszerzenie przeglądarki dla łatwego dostępu do haseł\n- Aplikacja na Androida na dostęp do drogi\n- Poświadczenia są po stronie klienta zaszyfrowane za pomocą 256-bitowej AES\n- Poświadczenia są szyfrowane po stronie serwera za pomocą 256-bitowej AES\n- Możliwość dodawania pól niestandardowych do poświadczeń\n- Wbudowany generator OTP (One Time Password)\n- Analizator haseł\n- Udostępniaj hasła wewnętrznie i przez łącze w bezpieczny sposób.\n- Importowanie z różnych menedżerów haseł (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nAby zapoznać się z demonstracją tej aplikacji, odwiedź [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Nie mogę uzyskać informacji o wersji",
"Passman Settings" : "Ustawienia Passmana",
+ "GitHub version:" : "Wersja GitHub: ",
"A newer version of Passman is available" : "Nowsza wersja aplikacji Passman jest dostępna",
"Password sharing" : "Współdzielenie hasła",
"Credential mover" : "Przenoszenie poświadczeń",
@@ -297,9 +310,11 @@
"Request ID" : "Identyfikator prośby",
"Requested by" : "Prośba złożona przez",
"Reason" : "Powód",
+ "Click here to request\n\t\t\t\t\tit" : "Kliknij tutaj aby poprosić o\n\t\t\t\t\t",
+ "Loading&hellip;" : "Ładowanie&hellip;",
"Connection to server lost" : "Utracono połączenie z serwerem",
"Problem loading page, reloading in 5 seconds" : "Problem z załadowaniem strony, przeładuję za 5 sekund",
- "Saving..." : "Zapisywanie...",
+ "Saving..." : "Zapisywanie…",
"Dismiss" : "Odrzuć",
"seconds ago" : "sekund temu"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
diff --git a/l10n/pt_BR.js b/l10n/pt_BR.js
index fb2cd752..4d1b148e 100644
--- a/l10n/pt_BR.js
+++ b/l10n/pt_BR.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Senhas",
- "Generating sharing keys ( %step / 2)" : "Gerando chave de compartilhamento ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Gerando chaves de compartilhamento ( %s / 2)",
"Incorrect vault password!" : "Senha do cofre incorreta",
"Passwords do not match" : "As senhas não coincidem",
"General" : "Geral",
@@ -16,14 +16,14 @@ OC.L10N.register(
"Credential updated" : "Credencial atualizada",
"Credential recovered" : "Credencial recuperada",
"Credential destroyed" : "Credencial destruida",
- "Error downloading file, you probably don't have sufficient permissions" : "Erro ao baixar o arquivo, você provavelmente não possui permissões suficientes",
+ "Error downloading file, you probably have insufficient permissions" : "Erro ao baixar o arquivo, provavelmente você não tem permissões suficientes",
"Invalid QR code" : "Código QR inválido",
"Starting export" : "Iniciando a exportação",
"Decrypting credentials" : "Credenciais de descriptografia",
"Done" : "Concluído",
- "File read successfully." : "Arquivo lido com sucesso.",
+ "File read." : "Arquivo lido.",
"Proceed with the following steps to import your file" : "Prossiga com as seguintes etapas para importar seu arquivo",
- "Credential has no label, skipping" : "Credencial não tem etiqueta, ignorando",
+ "Skipping unlabeled credential" : "Ignorando credencial sem etiqueta",
"Adding {{credential}}" : "Adicionando {{credential}}",
"Added {{credential}}" : "Adicionada {{credential}} ",
"Skipping credential, missing label on line {{line}}" : "Ignorando credencial, falta etiqueta online {{line}}",
@@ -50,7 +50,7 @@ OC.L10N.register(
"Export credentials" : "Exportar credenciais",
"Sharing" : "Compartilhando",
"Are you sure you want to leave? This will destroy all your credentials" : "Você tem certeza de que quer sair? Isso irá destruir todas as suas credenciais",
- "Your old password is incorrect!" : "Sua senha antiga está incorreta!",
+ "Old password field incorrect!" : "Senha antiga incorreta!",
"New password does not match!" : "Nova senha não confere!",
"Please log in with your new vault password" : "Faça o login com sua nova senha do cofre",
"Share with users and groups" : "Compartilhar com usuários e grupos",
@@ -73,6 +73,11 @@ OC.L10N.register(
"Username" : "Nome do usuário",
"Repeat password" : "Repetir a senha",
"Add tag" : "Adicionar rótulo",
+ "Pick an icon" : "Escolher um ícone",
+ "Search icons" : "Procurar ícones",
+ "Upload a custom icon:" : "Enviar um ícone personalizado:",
+ "Use this icon" : "Usar este ícone",
+ "Selected icon" : "Ícone selecionado",
"Field label" : "Campo etiqueta",
"Field value" : "Campo valor",
"Choose a file" : "Escolher um arquivo",
@@ -124,7 +129,7 @@ OC.L10N.register(
"Version" : "Versão",
"Donate to support development" : "Doar para apoiar o desenvolvimento",
"Bookmarklet" : "Marcado",
- "Save your passwords with 1 click!" : "Salve suas senhas com um 1 clique!",
+ "Save your passwords with one click." : "Salve suas senhas com um clique.",
"Drag below button to your bookmark toolbar." : "Arraste o botão abaixo para a barra de ferramentas de marcadores.",
"Delete vault" : "Excluir o cofre",
"Vault password" : "Senha do cofre",
@@ -142,20 +147,20 @@ OC.L10N.register(
"Save keys" : "Salvar chaves",
"Generate sharing keys" : "Gerar chaves de compartilhamento",
"Generating sharing keys" : "Gerando chaves de compartilhamento",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "A ferramenta de senha irá escanear sua senha, calcular o tempo médio para quebrá-la e listar aquelas que estão abaixo do limiar",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "A ferramenta de senha verifica sua senha, calcula o tempo médio de quebra, listando aquelas abaixo do limite",
"Minimum password stength" : "Força mínima da senha",
"Start scan" : "Iniciar escaneamento",
"Result" : "Resultado",
"A total of {{scan_result}} weak credentials were found." : "{{scan_result}} credenciais fracas foram encontradas.",
"Score" : "Pontuação",
"Action" : "Ação",
- "Search users or groups…" : "Procurar usuários ou grupos...",
+ "Search users…" : "Pesquisar usuários...",
"Missing users? Only users that have vaults are shown." : "Usuários ausentes? Somente os usuários que têm cofres são mostrados.",
"Cyphering" : "Cifrando",
"Uploading" : "Enviando",
"User" : "Usuário",
"Crypto time" : "Tempo de criptografia",
- "Total time spent cyphering" : "Tempo total gasto na criptografia",
+ "Total time spent encrypting" : "Tempo total gasto na criptografia",
"Read" : "Ler",
"Write" : "Escrever",
"Files" : "Arquivos",
@@ -164,7 +169,7 @@ OC.L10N.register(
"Enable link sharing" : "Ativar o compartilhamento de links",
"Share until date" : "Compartilhar até a data",
"Expire after views" : "Expirar após visualizações",
- "Click Share first" : "Clique em Compartilhar primeiro",
+ "Click \\\"Share\\\" first" : "Clique em \\\"Compartilhar\\\" primeiro",
"Show files" : "Mostrar arquivos",
"Details" : "Detalhes",
"Hide details" : "Ocultar detalhes",
@@ -224,7 +229,7 @@ OC.L10N.register(
"Use regex" : "Usar regex",
"You have incoming share requests." : "Você tem solicitações de compartilhamento.",
"If you want to put the credential in another vault," : "Se você quiser colocar a credencial em outro cofre,",
- "log out of this vault and log in to the vault you want the shared credential in." : "Saia deste cofre e entre no qual deseja a credencial compartilhada.",
+ "log out of this vault and log into the vault you want the shared credential in." : "saia deste cofre e faça o login no cofre em que você deseja a credencial compartilhada.",
"Permissions" : "Permissões",
"Received from" : "Recebido de",
"Date" : "Data",
@@ -232,13 +237,22 @@ OC.L10N.register(
"Decline" : "Rejeitar",
"You have {{session_time}} left before logout." : "Você tem {{session_time}} de espera antes de efetuar logout.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Seu cofre foi bloqueado por {{time}} por causa de {{tries}} tentativas que falharam!",
+ "Hello there!" : "Olá!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "Parece que você não tem nenhuma senha. Quer adicionar uma?",
+ "You don't have good credentials" : "Você não tem credenciais boas",
+ "You don't have medium credentials" : "Você não tem credenciais médias",
+ "You don't have bad credentials" : "Você não tem credenciais ruins",
+ "You don't have expired credentials" : "Você não tem credenciais vencidas",
+ "You don't have deleted credentials" : "Você não tem credenciais excluídas",
+ "There are no credentials with your selected tags" : "Não há credenciais com os rótulos selecionados",
+ "There are no credentials matching" : "Nenhuma credencial confere",
"Last accessed" : "Último acesso",
"Never" : "Nunca",
"No vaults found, why not create one?" : "Nenhum cofre encontrado. Por que não criar um?",
"Password strength must be at least: {{strength}}" : "A força da senha deve ser pelo menos: {{strength}}",
"Please give your new vault a name." : "Por favor, dê um nome ao seu novo cofre.",
"Repeat vault password" : "Repita a senha do cofre",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Sua chave de compartilhamento terá uma força de 1024 bits, que você pode alterar em Configurações mais tarde.",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Suas chaves de compartilhamento serão de 1024 bits, alteráveis em \\\"Configurações\\\" mais tarde.",
"Create vault" : "Criar cofre",
"Go back to vaults" : "Voltar para os cofres",
"Please input the password for" : "Por favor entre uma senha para",
@@ -258,11 +272,20 @@ OC.L10N.register(
"Request removed" : "Solicitação excluída",
"Destruction request pending" : "Solicitação de destruição pendente",
"Warning! Adding credentials over HTTP is insecure!" : "Atenção! Adicionar credenciais sobre HTTP é inseguro!",
- "Logged in to {{vault_name}}" : "Logou em {{vault_name}}",
+ "Logged into {{vault_name}}" : "Logado em {{vault_name}}",
"Change vault" : "Alterar cofre",
"Deleted credentials" : "Credenciais excluídas",
"Logout" : "Sair",
"Donate" : "Doar",
+ "Show All" : "Mostrar Tudo",
+ "Tags" : "Rótulos",
+ "Search Tags" : "Procurar Rótulos",
+ "Good Strength" : "Força Boa",
+ "Medium Strength" : "Força Média",
+ "Bad Strength" : "Força Ruim",
+ "Expired" : "Vencido",
+ "Filter Tags" : "Filtrar Rótulos",
+ "Simple Navigation" : "Navegação Simples",
"Someone has shared a credential with you." : "Alguém compartilhou uma credencial com você.",
"Click here to request it" : "Clique aqui para solicitá-lo",
"Loading…" : "Carregando...",
@@ -297,6 +320,8 @@ OC.L10N.register(
"%s has declined your share request for \"%s\"." : "%s recusou sua solicitação de compartilhamento de \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s aceitou sua solicitação de compartilhamento para \"%s\".",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman é um gerenciador de senhas completo.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman é um gerenciador de senhas completo.\nRecursos:\n- Cofres\n- A chave do cofre nunca é enviada ao servidor\n- Extensão do navegador para acesso fácil a senhas\n- Aplicativo Android para acesso móvel\n- As credenciais são criptografadas no lado do cliente com 256bits de AES\n- As credenciais são criptografadas pelo servidor com 256bits de AES\n- Capacidade de adicionar campos personalizados a credenciais\n- Gerador OTP (One Time Password) integrado\n- Analisador de senha\n- Compartilhe senhas internamente e via link de maneira segura.\n- Importe de vários gerenciadores de senha (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nPara uma demonstração deste aplicativo visite [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Não foi possível obter informações sobre a versão",
"Passman Settings" : "Configurações do Passman",
"GitHub version:" : "Versão GitHub:",
@@ -307,7 +332,7 @@ OC.L10N.register(
"Check for new versions" : "Verificar novas versões",
"Enable HTTPS check" : "Ativar verificação HTTPS",
"Disable context menu" : "Desativar menu de contexto",
- "Disable JavaScript debugger" : "Desabilitar a depuração JavaScript",
+ "Disable JavaScript debugger" : "Desativar a depuração JavaScript",
"Allow users on this server to share passwords with a link" : "Permitir que usuários neste servidor compartilhem senhas com um link",
"Allow users on this server to share passwords with other users" : "Permitir que usuários neste servidor compartilhem senhas com outros usuários",
"Move credentials from one account to another" : "Mover credenciais de uma conta para outra",
@@ -318,6 +343,10 @@ OC.L10N.register(
"Request ID" : "Solicitar ID",
"Requested by" : "Requerido por",
"Reason" : "Razão",
+ "Click here to request\n\t\t\t\t\tit" : "Clique aqui para\n\t\t\t\t\trequisitá-lo",
+ "Loading&hellip;" : "Carregando&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Awwhh… não conseguiu encontrar a credencial. Talvez tenha expirado?",
+ "Expires:" : "Expira em:",
"Connection to server lost" : "Conexão perdida com o servidor",
"Problem loading page, reloading in 5 seconds" : "Problema ao carregar a página, recarregando em 5 segundos",
"Saving..." : "Salvando...",
diff --git a/l10n/pt_BR.json b/l10n/pt_BR.json
index ca0a038e..8ce8dceb 100644
--- a/l10n/pt_BR.json
+++ b/l10n/pt_BR.json
@@ -1,6 +1,6 @@
{ "translations": {
"Passwords" : "Senhas",
- "Generating sharing keys ( %step / 2)" : "Gerando chave de compartilhamento ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Gerando chaves de compartilhamento ( %s / 2)",
"Incorrect vault password!" : "Senha do cofre incorreta",
"Passwords do not match" : "As senhas não coincidem",
"General" : "Geral",
@@ -14,14 +14,14 @@
"Credential updated" : "Credencial atualizada",
"Credential recovered" : "Credencial recuperada",
"Credential destroyed" : "Credencial destruida",
- "Error downloading file, you probably don't have sufficient permissions" : "Erro ao baixar o arquivo, você provavelmente não possui permissões suficientes",
+ "Error downloading file, you probably have insufficient permissions" : "Erro ao baixar o arquivo, provavelmente você não tem permissões suficientes",
"Invalid QR code" : "Código QR inválido",
"Starting export" : "Iniciando a exportação",
"Decrypting credentials" : "Credenciais de descriptografia",
"Done" : "Concluído",
- "File read successfully." : "Arquivo lido com sucesso.",
+ "File read." : "Arquivo lido.",
"Proceed with the following steps to import your file" : "Prossiga com as seguintes etapas para importar seu arquivo",
- "Credential has no label, skipping" : "Credencial não tem etiqueta, ignorando",
+ "Skipping unlabeled credential" : "Ignorando credencial sem etiqueta",
"Adding {{credential}}" : "Adicionando {{credential}}",
"Added {{credential}}" : "Adicionada {{credential}} ",
"Skipping credential, missing label on line {{line}}" : "Ignorando credencial, falta etiqueta online {{line}}",
@@ -48,7 +48,7 @@
"Export credentials" : "Exportar credenciais",
"Sharing" : "Compartilhando",
"Are you sure you want to leave? This will destroy all your credentials" : "Você tem certeza de que quer sair? Isso irá destruir todas as suas credenciais",
- "Your old password is incorrect!" : "Sua senha antiga está incorreta!",
+ "Old password field incorrect!" : "Senha antiga incorreta!",
"New password does not match!" : "Nova senha não confere!",
"Please log in with your new vault password" : "Faça o login com sua nova senha do cofre",
"Share with users and groups" : "Compartilhar com usuários e grupos",
@@ -71,6 +71,11 @@
"Username" : "Nome do usuário",
"Repeat password" : "Repetir a senha",
"Add tag" : "Adicionar rótulo",
+ "Pick an icon" : "Escolher um ícone",
+ "Search icons" : "Procurar ícones",
+ "Upload a custom icon:" : "Enviar um ícone personalizado:",
+ "Use this icon" : "Usar este ícone",
+ "Selected icon" : "Ícone selecionado",
"Field label" : "Campo etiqueta",
"Field value" : "Campo valor",
"Choose a file" : "Escolher um arquivo",
@@ -122,7 +127,7 @@
"Version" : "Versão",
"Donate to support development" : "Doar para apoiar o desenvolvimento",
"Bookmarklet" : "Marcado",
- "Save your passwords with 1 click!" : "Salve suas senhas com um 1 clique!",
+ "Save your passwords with one click." : "Salve suas senhas com um clique.",
"Drag below button to your bookmark toolbar." : "Arraste o botão abaixo para a barra de ferramentas de marcadores.",
"Delete vault" : "Excluir o cofre",
"Vault password" : "Senha do cofre",
@@ -140,20 +145,20 @@
"Save keys" : "Salvar chaves",
"Generate sharing keys" : "Gerar chaves de compartilhamento",
"Generating sharing keys" : "Gerando chaves de compartilhamento",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "A ferramenta de senha irá escanear sua senha, calcular o tempo médio para quebrá-la e listar aquelas que estão abaixo do limiar",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "A ferramenta de senha verifica sua senha, calcula o tempo médio de quebra, listando aquelas abaixo do limite",
"Minimum password stength" : "Força mínima da senha",
"Start scan" : "Iniciar escaneamento",
"Result" : "Resultado",
"A total of {{scan_result}} weak credentials were found." : "{{scan_result}} credenciais fracas foram encontradas.",
"Score" : "Pontuação",
"Action" : "Ação",
- "Search users or groups…" : "Procurar usuários ou grupos...",
+ "Search users…" : "Pesquisar usuários...",
"Missing users? Only users that have vaults are shown." : "Usuários ausentes? Somente os usuários que têm cofres são mostrados.",
"Cyphering" : "Cifrando",
"Uploading" : "Enviando",
"User" : "Usuário",
"Crypto time" : "Tempo de criptografia",
- "Total time spent cyphering" : "Tempo total gasto na criptografia",
+ "Total time spent encrypting" : "Tempo total gasto na criptografia",
"Read" : "Ler",
"Write" : "Escrever",
"Files" : "Arquivos",
@@ -162,7 +167,7 @@
"Enable link sharing" : "Ativar o compartilhamento de links",
"Share until date" : "Compartilhar até a data",
"Expire after views" : "Expirar após visualizações",
- "Click Share first" : "Clique em Compartilhar primeiro",
+ "Click \\\"Share\\\" first" : "Clique em \\\"Compartilhar\\\" primeiro",
"Show files" : "Mostrar arquivos",
"Details" : "Detalhes",
"Hide details" : "Ocultar detalhes",
@@ -222,7 +227,7 @@
"Use regex" : "Usar regex",
"You have incoming share requests." : "Você tem solicitações de compartilhamento.",
"If you want to put the credential in another vault," : "Se você quiser colocar a credencial em outro cofre,",
- "log out of this vault and log in to the vault you want the shared credential in." : "Saia deste cofre e entre no qual deseja a credencial compartilhada.",
+ "log out of this vault and log into the vault you want the shared credential in." : "saia deste cofre e faça o login no cofre em que você deseja a credencial compartilhada.",
"Permissions" : "Permissões",
"Received from" : "Recebido de",
"Date" : "Data",
@@ -230,13 +235,22 @@
"Decline" : "Rejeitar",
"You have {{session_time}} left before logout." : "Você tem {{session_time}} de espera antes de efetuar logout.",
"Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Seu cofre foi bloqueado por {{time}} por causa de {{tries}} tentativas que falharam!",
+ "Hello there!" : "Olá!",
+ "It does not seem that you have any passwords. Do you want to add one?" : "Parece que você não tem nenhuma senha. Quer adicionar uma?",
+ "You don't have good credentials" : "Você não tem credenciais boas",
+ "You don't have medium credentials" : "Você não tem credenciais médias",
+ "You don't have bad credentials" : "Você não tem credenciais ruins",
+ "You don't have expired credentials" : "Você não tem credenciais vencidas",
+ "You don't have deleted credentials" : "Você não tem credenciais excluídas",
+ "There are no credentials with your selected tags" : "Não há credenciais com os rótulos selecionados",
+ "There are no credentials matching" : "Nenhuma credencial confere",
"Last accessed" : "Último acesso",
"Never" : "Nunca",
"No vaults found, why not create one?" : "Nenhum cofre encontrado. Por que não criar um?",
"Password strength must be at least: {{strength}}" : "A força da senha deve ser pelo menos: {{strength}}",
"Please give your new vault a name." : "Por favor, dê um nome ao seu novo cofre.",
"Repeat vault password" : "Repita a senha do cofre",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Sua chave de compartilhamento terá uma força de 1024 bits, que você pode alterar em Configurações mais tarde.",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Suas chaves de compartilhamento serão de 1024 bits, alteráveis em \\\"Configurações\\\" mais tarde.",
"Create vault" : "Criar cofre",
"Go back to vaults" : "Voltar para os cofres",
"Please input the password for" : "Por favor entre uma senha para",
@@ -256,11 +270,20 @@
"Request removed" : "Solicitação excluída",
"Destruction request pending" : "Solicitação de destruição pendente",
"Warning! Adding credentials over HTTP is insecure!" : "Atenção! Adicionar credenciais sobre HTTP é inseguro!",
- "Logged in to {{vault_name}}" : "Logou em {{vault_name}}",
+ "Logged into {{vault_name}}" : "Logado em {{vault_name}}",
"Change vault" : "Alterar cofre",
"Deleted credentials" : "Credenciais excluídas",
"Logout" : "Sair",
"Donate" : "Doar",
+ "Show All" : "Mostrar Tudo",
+ "Tags" : "Rótulos",
+ "Search Tags" : "Procurar Rótulos",
+ "Good Strength" : "Força Boa",
+ "Medium Strength" : "Força Média",
+ "Bad Strength" : "Força Ruim",
+ "Expired" : "Vencido",
+ "Filter Tags" : "Filtrar Rótulos",
+ "Simple Navigation" : "Navegação Simples",
"Someone has shared a credential with you." : "Alguém compartilhou uma credencial com você.",
"Click here to request it" : "Clique aqui para solicitá-lo",
"Loading…" : "Carregando...",
@@ -295,6 +318,8 @@
"%s has declined your share request for \"%s\"." : "%s recusou sua solicitação de compartilhamento de \"%s\".",
"%s has accepted your share request for \"%s\"." : "%s aceitou sua solicitação de compartilhamento para \"%s\".",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman é um gerenciador de senhas completo.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman é um gerenciador de senhas completo.\nRecursos:\n- Cofres\n- A chave do cofre nunca é enviada ao servidor\n- Extensão do navegador para acesso fácil a senhas\n- Aplicativo Android para acesso móvel\n- As credenciais são criptografadas no lado do cliente com 256bits de AES\n- As credenciais são criptografadas pelo servidor com 256bits de AES\n- Capacidade de adicionar campos personalizados a credenciais\n- Gerador OTP (One Time Password) integrado\n- Analisador de senha\n- Compartilhe senhas internamente e via link de maneira segura.\n- Importe de vários gerenciadores de senha (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nPara uma demonstração deste aplicativo visite [https://demo.passman.cc](https://demo.passman.cc)",
"Unable to get version info" : "Não foi possível obter informações sobre a versão",
"Passman Settings" : "Configurações do Passman",
"GitHub version:" : "Versão GitHub:",
@@ -305,7 +330,7 @@
"Check for new versions" : "Verificar novas versões",
"Enable HTTPS check" : "Ativar verificação HTTPS",
"Disable context menu" : "Desativar menu de contexto",
- "Disable JavaScript debugger" : "Desabilitar a depuração JavaScript",
+ "Disable JavaScript debugger" : "Desativar a depuração JavaScript",
"Allow users on this server to share passwords with a link" : "Permitir que usuários neste servidor compartilhem senhas com um link",
"Allow users on this server to share passwords with other users" : "Permitir que usuários neste servidor compartilhem senhas com outros usuários",
"Move credentials from one account to another" : "Mover credenciais de uma conta para outra",
@@ -316,6 +341,10 @@
"Request ID" : "Solicitar ID",
"Requested by" : "Requerido por",
"Reason" : "Razão",
+ "Click here to request\n\t\t\t\t\tit" : "Clique aqui para\n\t\t\t\t\trequisitá-lo",
+ "Loading&hellip;" : "Carregando&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Awwhh… não conseguiu encontrar a credencial. Talvez tenha expirado?",
+ "Expires:" : "Expira em:",
"Connection to server lost" : "Conexão perdida com o servidor",
"Problem loading page, reloading in 5 seconds" : "Problema ao carregar a página, recarregando em 5 segundos",
"Saving..." : "Salvando...",
diff --git a/l10n/ru.js b/l10n/ru.js
index 7df191e3..f9390014 100644
--- a/l10n/ru.js
+++ b/l10n/ru.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Пароли",
- "Generating sharing keys ( %step / 2)" : "Создаются ключи общего доступа ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Создаются ключи общего доступа (%s/ 2)",
"Incorrect vault password!" : "Неверный пароль хранилища!",
"Passwords do not match" : "Пароли не совпадают",
"General" : "Основные",
@@ -16,14 +16,11 @@ OC.L10N.register(
"Credential updated" : "Запись обновлена",
"Credential recovered" : "Запись восстановлена",
"Credential destroyed" : "Учетные данные уничтожены",
- "Error downloading file, you probably don't have sufficient permissions" : "Ошибка загрузки файла, возможно у вас не достаточно прав доступа",
"Invalid QR code" : "Неверный QR код",
"Starting export" : "Начинается экспорт",
"Decrypting credentials" : "Расшифровка записей",
"Done" : "Готово",
- "File read successfully." : "Файл успешно прочитан.",
"Proceed with the following steps to import your file" : "Для импорта файла выполните следующее",
- "Credential has no label, skipping" : "У записи нет названия, пропускается",
"Adding {{credential}}" : "Добавляется {{credential}}",
"Added {{credential}}" : "Добавлено {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Запись пропускается, отсутствует метка на строке {{line}}",
@@ -50,7 +47,6 @@ OC.L10N.register(
"Export credentials" : "Экспортировать записи",
"Sharing" : "Общий доступ",
"Are you sure you want to leave? This will destroy all your credentials" : "Действительно выйти? Это повредит все ваши записи",
- "Your old password is incorrect!" : "Старый пароль неверен!",
"New password does not match!" : "Новые пароли не совпадают!",
"Please log in with your new vault password" : "Войдите в систему используя новый пароль хранилища",
"Share with users and groups" : "Поделиться с пользователями и группами",
@@ -73,6 +69,9 @@ OC.L10N.register(
"Username" : "Имя пользователя",
"Repeat password" : "Повторите пароль",
"Add tag" : "Добавить метку",
+ "Pick an icon" : "Выбрать значок",
+ "Use this icon" : "Использовать этот значок",
+ "Selected icon" : "Выбранный значок",
"Field label" : "Название поля",
"Field value" : "Значение поля",
"Choose a file" : "Выберите файл",
@@ -90,7 +89,7 @@ OC.L10N.register(
"Current OTP settings" : "Текущие настройки OPT",
"Issuer" : "Выпустил",
"Secret" : "Секрет",
- "Expiration date" : "Дата истечения",
+ "Expiration date" : "Срок действия",
"No expiration date set" : "Дата истечения не установлена",
"Renew interval" : "Интервал обновления",
"Disabled" : "Отключено",
@@ -124,13 +123,12 @@ OC.L10N.register(
"Version" : "Версия",
"Donate to support development" : "Пожертвовать на поддержку разработки",
"Bookmarklet" : "Приложение для панели закладок",
- "Save your passwords with 1 click!" : "Сохраняйте свои пароли за 1 клик!",
"Drag below button to your bookmark toolbar." : "Перетащите кнопку, находящуюся ниже, на вашу панель закладок.",
"Delete vault" : "Удалить хранилище",
"Vault password" : "Пароль хранилища",
"This process is irreversible" : "Эта операция необратима",
"Delete my precious passwords" : "Удалить мои драгоценные пароли",
- "Deleting {{password}}…" : "Удаляется {{password}}...",
+ "Deleting {{password}}…" : "Удаляется {{password}}…",
"Yes, delete my precious passwords" : "Да, удалить мои драгоценные пароли",
"Import type" : "Тип импорта",
"Import" : "Импорт",
@@ -142,20 +140,18 @@ OC.L10N.register(
"Save keys" : "Сохранить ключи",
"Generate sharing keys" : "Создать ключи общего доступа",
"Generating sharing keys" : "Ключи общего доступа создаются",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Инструмент паролей просканирует ваши пароли, вычислит среднее время для из взлома, и, если оно окажется ниже порогового значения, покажет их",
"Minimum password stength" : "Минимальная устойчивость пароля",
"Start scan" : "Запустить сканирование",
"Result" : "Результат",
"A total of {{scan_result}} weak credentials were found." : "Найдено записей со слабым паролем: {{scan_result}} .",
"Score" : "Баллов",
"Action" : "Действие",
- "Search users or groups…" : "Поиск пользователя или групп...",
+ "Search users…" : "Поиск пользователей…",
"Missing users? Only users that have vaults are shown." : "Пользователи отсутствуют? Показаны только имеющие хранилища.",
"Cyphering" : "Вычисление",
"Uploading" : "Загрузка",
"User" : "Пользователь",
"Crypto time" : "Время шифрования",
- "Total time spent cyphering" : "Всего использовано времени на вычисление",
"Read" : "Прочитано",
"Write" : "Записано",
"Files" : "Файлов",
@@ -164,7 +160,6 @@ OC.L10N.register(
"Enable link sharing" : "Разрешить обмен ссылками",
"Share until date" : "Поделиться до даты",
"Expire after views" : "Истекает после просмотров",
- "Click Share first" : "Сначала нажмите на «поделиться»",
"Show files" : "Показать файлы",
"Details" : "Подробно",
"Hide details" : "Скрыть подробности",
@@ -224,7 +219,6 @@ OC.L10N.register(
"Use regex" : "Использовать регулярные выражения",
"You have incoming share requests." : "У вас входящий запрос на общий доступ.",
"If you want to put the credential in another vault," : "Если Вы хотите поместить записи в другое хранилище,",
- "log out of this vault and log in to the vault you want the shared credential in." : "выйдите из этого хранилища и войдите в хранилище с которым вы хотите поделиться.",
"Permissions" : "Права доступа",
"Received from" : "Получено от",
"Date" : "Дата",
@@ -238,7 +232,6 @@ OC.L10N.register(
"Password strength must be at least: {{strength}}" : "Устойчивать пароля должна быть не ниже: {{strength}}",
"Please give your new vault a name." : "Укажите имя нового хранилища.",
"Repeat vault password" : "Повторите пароль хранилища",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Общий ключ будет иметь устойчивость 1024 бита, позже вы можете изменить её в настройках.",
"Create vault" : "Создать хранилище",
"Go back to vaults" : "Вернуться в хранилище",
"Please input the password for" : "Введите пароль для",
@@ -258,14 +251,13 @@ OC.L10N.register(
"Request removed" : "Запрос удалён",
"Destruction request pending" : "Запрос на удаление в ожидании",
"Warning! Adding credentials over HTTP is insecure!" : "Предупреждение! Добавление записей по HTTP небезопасно!",
- "Logged in to {{vault_name}}" : "Вошли в {{vault_name}}",
"Change vault" : "Изменить хранилище",
"Deleted credentials" : "Удалённые реквизиты",
"Logout" : "Выйти",
"Donate" : "Пожертвовать",
"Someone has shared a credential with you." : "Кто-то поделился с вами записью.",
"Click here to request it" : "Нажмите здесь для их получения.",
- "Loading…" : "Загрузка...",
+ "Loading…" : "Загрузка…",
"Awwhh… credential not found. Maybe it expired" : "Запись не найдена. Возможно, закончился срок её действия.",
"Error while saving field" : "Ошибка при сохранении поля",
"A Passman item has been created, modified or deleted" : "Элемент Passman был создан, изменён или удалён",
@@ -297,6 +289,8 @@ OC.L10N.register(
"%s has declined your share request for \"%s\"." : "%s отклонил ваш запрос на предоставление общего доступа к «%s».",
"%s has accepted your share request for \"%s\"." : "%s принял ваш запрос на предоставление общего доступа к «%s».",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman - это полнофункциональный менеджер паролей.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman - это полнофункциональный менеджер паролей.\nОсобенности:\n- Кошелек паролей\n- Ключ Кошелька паролей никогда не отправляется на сервер\n- Расширение для браузера для легкого доступа к паролям\n- Android-приложение для доступа в дороге\n- Учетные данные на стороне клиента зашифрованы с помощью 256-битного AES ключа\n- Учетные данные на стороне сервера зашифрованы с помощью 256-битного AES ключа\n- Возможность добавления настраиваемых полей в учетные данные\n- Встроенный генератор OTP (одноразовых паролей)\n- Анализатор паролей\n- Совместное использование паролей внутри и через ссылку безопасным способом.\n- Импорт из различных менеджеров паролей (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nДля демонстрации этого приложения посетите [https://demo.passman.cc] (https://demo.passman.cc)",
"Unable to get version info" : "Невозможно получить информацию о версии",
"Passman Settings" : "Настройки Passman",
"GitHub version:" : "Версия GitHub:",
@@ -318,9 +312,11 @@ OC.L10N.register(
"Request ID" : "ID запроса",
"Requested by" : "Запрошено",
"Reason" : "Причина",
+ "Click here to request\n\t\t\t\t\tit" : "Нажмите здесь для их получения.",
+ "Loading&hellip;" : "Загрузка&hellip;",
"Connection to server lost" : "Подключение к серверу потеряно",
"Problem loading page, reloading in 5 seconds" : "Проблема при загрузке страницы, перезагрузка через 5 сек.",
- "Saving..." : "Сохранение...",
+ "Saving..." : "Сохранение…",
"Dismiss" : "Закрыть",
"seconds ago" : "несколько секунд назад"
},
diff --git a/l10n/ru.json b/l10n/ru.json
index ad25e9a1..b1c45228 100644
--- a/l10n/ru.json
+++ b/l10n/ru.json
@@ -1,6 +1,6 @@
{ "translations": {
"Passwords" : "Пароли",
- "Generating sharing keys ( %step / 2)" : "Создаются ключи общего доступа ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Создаются ключи общего доступа (%s/ 2)",
"Incorrect vault password!" : "Неверный пароль хранилища!",
"Passwords do not match" : "Пароли не совпадают",
"General" : "Основные",
@@ -14,14 +14,11 @@
"Credential updated" : "Запись обновлена",
"Credential recovered" : "Запись восстановлена",
"Credential destroyed" : "Учетные данные уничтожены",
- "Error downloading file, you probably don't have sufficient permissions" : "Ошибка загрузки файла, возможно у вас не достаточно прав доступа",
"Invalid QR code" : "Неверный QR код",
"Starting export" : "Начинается экспорт",
"Decrypting credentials" : "Расшифровка записей",
"Done" : "Готово",
- "File read successfully." : "Файл успешно прочитан.",
"Proceed with the following steps to import your file" : "Для импорта файла выполните следующее",
- "Credential has no label, skipping" : "У записи нет названия, пропускается",
"Adding {{credential}}" : "Добавляется {{credential}}",
"Added {{credential}}" : "Добавлено {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Запись пропускается, отсутствует метка на строке {{line}}",
@@ -48,7 +45,6 @@
"Export credentials" : "Экспортировать записи",
"Sharing" : "Общий доступ",
"Are you sure you want to leave? This will destroy all your credentials" : "Действительно выйти? Это повредит все ваши записи",
- "Your old password is incorrect!" : "Старый пароль неверен!",
"New password does not match!" : "Новые пароли не совпадают!",
"Please log in with your new vault password" : "Войдите в систему используя новый пароль хранилища",
"Share with users and groups" : "Поделиться с пользователями и группами",
@@ -71,6 +67,9 @@
"Username" : "Имя пользователя",
"Repeat password" : "Повторите пароль",
"Add tag" : "Добавить метку",
+ "Pick an icon" : "Выбрать значок",
+ "Use this icon" : "Использовать этот значок",
+ "Selected icon" : "Выбранный значок",
"Field label" : "Название поля",
"Field value" : "Значение поля",
"Choose a file" : "Выберите файл",
@@ -88,7 +87,7 @@
"Current OTP settings" : "Текущие настройки OPT",
"Issuer" : "Выпустил",
"Secret" : "Секрет",
- "Expiration date" : "Дата истечения",
+ "Expiration date" : "Срок действия",
"No expiration date set" : "Дата истечения не установлена",
"Renew interval" : "Интервал обновления",
"Disabled" : "Отключено",
@@ -122,13 +121,12 @@
"Version" : "Версия",
"Donate to support development" : "Пожертвовать на поддержку разработки",
"Bookmarklet" : "Приложение для панели закладок",
- "Save your passwords with 1 click!" : "Сохраняйте свои пароли за 1 клик!",
"Drag below button to your bookmark toolbar." : "Перетащите кнопку, находящуюся ниже, на вашу панель закладок.",
"Delete vault" : "Удалить хранилище",
"Vault password" : "Пароль хранилища",
"This process is irreversible" : "Эта операция необратима",
"Delete my precious passwords" : "Удалить мои драгоценные пароли",
- "Deleting {{password}}…" : "Удаляется {{password}}...",
+ "Deleting {{password}}…" : "Удаляется {{password}}…",
"Yes, delete my precious passwords" : "Да, удалить мои драгоценные пароли",
"Import type" : "Тип импорта",
"Import" : "Импорт",
@@ -140,20 +138,18 @@
"Save keys" : "Сохранить ключи",
"Generate sharing keys" : "Создать ключи общего доступа",
"Generating sharing keys" : "Ключи общего доступа создаются",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Инструмент паролей просканирует ваши пароли, вычислит среднее время для из взлома, и, если оно окажется ниже порогового значения, покажет их",
"Minimum password stength" : "Минимальная устойчивость пароля",
"Start scan" : "Запустить сканирование",
"Result" : "Результат",
"A total of {{scan_result}} weak credentials were found." : "Найдено записей со слабым паролем: {{scan_result}} .",
"Score" : "Баллов",
"Action" : "Действие",
- "Search users or groups…" : "Поиск пользователя или групп...",
+ "Search users…" : "Поиск пользователей…",
"Missing users? Only users that have vaults are shown." : "Пользователи отсутствуют? Показаны только имеющие хранилища.",
"Cyphering" : "Вычисление",
"Uploading" : "Загрузка",
"User" : "Пользователь",
"Crypto time" : "Время шифрования",
- "Total time spent cyphering" : "Всего использовано времени на вычисление",
"Read" : "Прочитано",
"Write" : "Записано",
"Files" : "Файлов",
@@ -162,7 +158,6 @@
"Enable link sharing" : "Разрешить обмен ссылками",
"Share until date" : "Поделиться до даты",
"Expire after views" : "Истекает после просмотров",
- "Click Share first" : "Сначала нажмите на «поделиться»",
"Show files" : "Показать файлы",
"Details" : "Подробно",
"Hide details" : "Скрыть подробности",
@@ -222,7 +217,6 @@
"Use regex" : "Использовать регулярные выражения",
"You have incoming share requests." : "У вас входящий запрос на общий доступ.",
"If you want to put the credential in another vault," : "Если Вы хотите поместить записи в другое хранилище,",
- "log out of this vault and log in to the vault you want the shared credential in." : "выйдите из этого хранилища и войдите в хранилище с которым вы хотите поделиться.",
"Permissions" : "Права доступа",
"Received from" : "Получено от",
"Date" : "Дата",
@@ -236,7 +230,6 @@
"Password strength must be at least: {{strength}}" : "Устойчивать пароля должна быть не ниже: {{strength}}",
"Please give your new vault a name." : "Укажите имя нового хранилища.",
"Repeat vault password" : "Повторите пароль хранилища",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Общий ключ будет иметь устойчивость 1024 бита, позже вы можете изменить её в настройках.",
"Create vault" : "Создать хранилище",
"Go back to vaults" : "Вернуться в хранилище",
"Please input the password for" : "Введите пароль для",
@@ -256,14 +249,13 @@
"Request removed" : "Запрос удалён",
"Destruction request pending" : "Запрос на удаление в ожидании",
"Warning! Adding credentials over HTTP is insecure!" : "Предупреждение! Добавление записей по HTTP небезопасно!",
- "Logged in to {{vault_name}}" : "Вошли в {{vault_name}}",
"Change vault" : "Изменить хранилище",
"Deleted credentials" : "Удалённые реквизиты",
"Logout" : "Выйти",
"Donate" : "Пожертвовать",
"Someone has shared a credential with you." : "Кто-то поделился с вами записью.",
"Click here to request it" : "Нажмите здесь для их получения.",
- "Loading…" : "Загрузка...",
+ "Loading…" : "Загрузка…",
"Awwhh… credential not found. Maybe it expired" : "Запись не найдена. Возможно, закончился срок её действия.",
"Error while saving field" : "Ошибка при сохранении поля",
"A Passman item has been created, modified or deleted" : "Элемент Passman был создан, изменён или удалён",
@@ -295,6 +287,8 @@
"%s has declined your share request for \"%s\"." : "%s отклонил ваш запрос на предоставление общего доступа к «%s».",
"%s has accepted your share request for \"%s\"." : "%s принял ваш запрос на предоставление общего доступа к «%s».",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman - это полнофункциональный менеджер паролей.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman - это полнофункциональный менеджер паролей.\nОсобенности:\n- Кошелек паролей\n- Ключ Кошелька паролей никогда не отправляется на сервер\n- Расширение для браузера для легкого доступа к паролям\n- Android-приложение для доступа в дороге\n- Учетные данные на стороне клиента зашифрованы с помощью 256-битного AES ключа\n- Учетные данные на стороне сервера зашифрованы с помощью 256-битного AES ключа\n- Возможность добавления настраиваемых полей в учетные данные\n- Встроенный генератор OTP (одноразовых паролей)\n- Анализатор паролей\n- Совместное использование паролей внутри и через ссылку безопасным способом.\n- Импорт из различных менеджеров паролей (KeePass, LastPass, DashLane, ZOHO, Clipperz.is)\nДля демонстрации этого приложения посетите [https://demo.passman.cc] (https://demo.passman.cc)",
"Unable to get version info" : "Невозможно получить информацию о версии",
"Passman Settings" : "Настройки Passman",
"GitHub version:" : "Версия GitHub:",
@@ -316,9 +310,11 @@
"Request ID" : "ID запроса",
"Requested by" : "Запрошено",
"Reason" : "Причина",
+ "Click here to request\n\t\t\t\t\tit" : "Нажмите здесь для их получения.",
+ "Loading&hellip;" : "Загрузка&hellip;",
"Connection to server lost" : "Подключение к серверу потеряно",
"Problem loading page, reloading in 5 seconds" : "Проблема при загрузке страницы, перезагрузка через 5 сек.",
- "Saving..." : "Сохранение...",
+ "Saving..." : "Сохранение…",
"Dismiss" : "Закрыть",
"seconds ago" : "несколько секунд назад"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
diff --git a/l10n/sk.js b/l10n/sk.js
index b51330fd..48972d3c 100644
--- a/l10n/sk.js
+++ b/l10n/sk.js
@@ -2,12 +2,15 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Heslá",
- "Generating sharing keys ( %step / 2)" : "Generovanie kľúčov pre sprístupnenie ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Generovanie kľúčov pre sprístupnenie ( %s / 2)",
"Incorrect vault password!" : "Nesprávne heslo trezora!",
"Passwords do not match" : "Heslá sa nezhodujú",
"General" : "Všeobecné",
"Custom Fields" : "Vlastné polia",
+ "Please fill in a label." : "Zadajte prosím názov.",
+ "Please fill in a value." : "Zadajte prosím hodnotu.",
"Error loading file" : "Chyba pri načítaní súboru",
+ "An error occurred during decryption" : "Pri dešifrovaní sa stala chyba",
"Credential created!" : "Prihlasovací údaj bol vytvorený!",
"Credential deleted" : "Prihlasovací údaj bol zmazaný",
"Credential updated" : "Prihlasovací údaj bol aktualizovaný",
@@ -17,21 +20,38 @@ OC.L10N.register(
"Starting export" : "Začína sa exportovať",
"Decrypting credentials" : "Dešifrovanie prihlasovacích údajov",
"Done" : "Hotovo",
- "Credential has no label, skipping" : "Prihlasovacie údaje nemajú názov, preskakujem",
+ "Proceed with the following steps to import your file" : "Pre importovanie vášho súboru použite nasledujúce kroky",
"Adding {{credential}}" : "Pridávam {{credential}}",
"Added {{credential}}" : "Pridaných {{credential}}",
+ "Skipping credential, missing label on line {{line}}" : "Preskakujem prihlasovací údaj, chýba štítok na riadku {{line}}",
"Parsed {{num}} credentials, starting to import" : "Analyzovaných {{num}} prihlasovacích údajov, začína sa importovať",
+ "Importing" : "Importuje sa",
+ "Start import" : "Začať import",
+ "Select CSV file" : "Vyberte CSV súbor",
+ "Parsed {{rows}} lines from CSV file" : "{{rows}} riadkov načítaných zo súboru CSV",
+ "Skip first row" : "Preskočiť prvý riadok",
+ "You need to assign the label field before you can start the import." : "Je potrebné priradiť štítok pred začatím importu.",
+ "The first 5 lines of the CSV are shown." : "Zobrazuje sa prvých 5 riadkov CSV súboru",
+ "Assign the proper fields to each column." : "Priraď správne polia každému stĺpcu.",
+ "Example of imported credential" : "Príklad importovaných prihlasovacích údajov",
+ "Missing an importer? Try it with the generic CSV importer." : "Chýba Vám importer? Skúste generický CSV importer.",
+ "Go back to importers." : "Späť k importerom.",
"Revision deleted" : "Revízia zmazaná",
"Revision restored" : "Revízia obnovená",
+ "Save in Passman" : "Uložiť do Passman",
"Settings saved" : "Nastavenia uložené",
"General settings" : "Všeobecné nastavenia",
+ "Password audit" : "Audit hesla",
"Password settings" : "Nastavenia hesla",
"Import credentials" : "Importovať prihlasovacie údaje",
"Export credentials" : "Exportovať prihlasovacie údaje",
"Sharing" : "Sprístupnenie",
- "Your old password is incorrect!" : "Vaše staré heslo nie je správne!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Ste si istý, že chcete opustiť stránku? Všetky prístupy budú zahodené.",
+ "New password does not match!" : "Nové heslo nesedí!",
+ "Please log in with your new vault password" : "Prihláste sa prosím s vaším novým heslom do trezora",
"Share with users and groups" : "Sprístupniť používateľom a skupinám",
"Share link" : "Sprístupniť odkaz",
+ "Are you sure you want to leave? This will corrupt this credential" : "Ste si istý, že chcete opustiť stránku? Znehodnotí sa tým prihlasovací údaj",
"Credential unshared" : "Zrušené sprístupnenie prihlasovacích údajov",
"Credential shared" : "Prihlasovacie údaje sprístupnené",
"Saved!" : "Uložené!",
@@ -48,6 +68,10 @@ OC.L10N.register(
"Complete" : "Dokončené",
"Username" : "Meno používateľa",
"Repeat password" : "Zopakujte heslo",
+ "Add tag" : "Pridať štítok",
+ "Pick an icon" : "Vybrať ikonu",
+ "Use this icon" : "Použiť túto ikonu",
+ "Selected icon" : "Vybraná ikona",
"Field label" : "Názov poľa",
"Field value" : "Hodnota poľa",
"Choose a file" : "Vyberte súbor",
@@ -61,10 +85,18 @@ OC.L10N.register(
"Filename" : "Názov súboru",
"Upload date" : "Dátum nahratia",
"Size" : "Veľkosť",
+ "Upload or enter your OTP secret" : "Nahrajte alebo vložte Váš OTP kód",
"Current OTP settings" : "Aktuálne OTP nastavenia",
"Issuer" : "Vydavateľ",
+ "Secret" : "Tajný kľúč",
+ "Expiration date" : "Dátum expirácie",
+ "No expiration date set" : "Nezadaný dátum expirácie",
"Renew interval" : "Interval obnovenia",
"Disabled" : "Zakázaný",
+ "Day(s)" : "Deň (dni)",
+ "Week(s)" : "Týždeň (týždne)",
+ "Month(s)" : "Mesiac(ov)",
+ "Year(s)" : "Rok(y)",
"Password generation settings" : "Nastavenia vytvorenia hesla",
"Password length" : "Dĺžka hesla",
"Minimum amount of digits" : "Minimálny počet číselných znakov",
@@ -83,14 +115,21 @@ OC.L10N.register(
"Change vault key" : "Zmena kľúča do trezora",
"Old vault password" : "Staré heslo do trezora",
"New vault password" : "Nové heslo do trezora",
+ "Repeat new vault password" : "Zadajte nové heslo trezora znovu",
"Please wait your vault is being updated, do not leave this page." : "Počkajte prosím kým sa trezor aktualizuje, neopúšťajte túto stránku.",
"Processing" : "Spracovávam",
"Total progress" : "Celkový priebeh",
+ "About Passman" : "O Passman",
"Version" : "Verzia",
"Donate to support development" : "Prispejte a podporte vývoj",
+ "Bookmarklet" : "Chytrá záložka",
+ "Drag below button to your bookmark toolbar." : "Potiahnite spodné tlačidlo na Váš panel záložiek.",
"Delete vault" : "Zmazať trezor",
"Vault password" : "Heslo trezora",
"This process is irreversible" : "Tento proces je nezvratný",
+ "Delete my precious passwords" : "Vymaž moje vzácne heslá",
+ "Deleting {{password}}…" : "Vymazáva sa {{password}}…",
+ "Yes, delete my precious passwords" : "Áno, vymaž moje vzácne heslá",
"Import type" : "Typ importu",
"Import" : "Import",
"Read progress" : "Priebeh načítania",
@@ -99,12 +138,174 @@ OC.L10N.register(
"Public key" : "Verejný kľúč",
"Key size" : "Veľkosť klľúča",
"Save keys" : "Uložiť kľúče",
+ "Generate sharing keys" : "Vytvor zdieľaný kľúč",
+ "Generating sharing keys" : "Vytvárajú sa zdieľané kľúče",
"Minimum password stength" : "Minimálna sila hesla",
+ "Start scan" : "Začnite skenovanie",
+ "Result" : "Výsledok",
+ "A total of {{scan_result}} weak credentials were found." : "Našlo sa spolu {{scan_result}} slabých hesiel.",
"Score" : "Skóre",
"Action" : "Akcia",
+ "Search users…" : "Vyhľadať používateľov...",
+ "Missing users? Only users that have vaults are shown." : "Chýbajú používatelia? Zobrazení sú iba používatelia, ktorí majú trezor.",
"Cyphering" : "Šifrovanie",
"Uploading" : "Nahrávanie",
"User" : "Používateľ",
- "Label" : "Názov"
+ "Crypto time" : "Šifrovanie",
+ "Read" : "Čítať",
+ "Write" : "Písať",
+ "Files" : "Súbory",
+ "Revisions" : "Revízie",
+ "Pending" : "Prebieha",
+ "Enable link sharing" : "Povoliť zdieľanie odkazov",
+ "Share until date" : "Zdieľať do dátumu",
+ "Show files" : "Zobraziť súbory",
+ "Details" : "Detaily",
+ "Hide details" : "Skryť detaily",
+ "Password score" : "Skóre hesla",
+ "Cracking times" : "Časy prelomenia hesla",
+ "100 / hour" : "100 / hodina",
+ "10 / second" : "10 / sekunda",
+ "10k / second" : "10k / sekunda",
+ "10B / second" : "10B / sekunda",
+ "Pattern" : "Vzor",
+ "Matched word" : "Zodpovedajúce slovo",
+ "Dictionary name" : "Názov slovníka",
+ "Rank" : "Hodnosť",
+ "Reversed" : "Opačný",
+ "Guesses" : "Odhady",
+ "Base guesses" : "Základné odhady",
+ "Showing revisions of" : "Zobrazujú sa revízie",
+ "Revision of" : "Revízia",
+ "by" : "od",
+ "No revisions found." : "Nenašli sa žiadne revízie.",
+ "Label" : "Názov",
+ "Restore revision" : "Obnoviť revíziu",
+ "Delete revision" : "Zmazať revíziu",
+ "Edit credential" : "Úprava prístupového údaju",
+ "Create new credential" : "Vytvor nový prihlasovací údaj",
+ "Save" : "Uložiť",
+ "Cancel" : "Zrušiť",
+ "Settings" : "Nastavenia",
+ "Share credential {{credential}}" : "Sprístupnenie prístupového údaju {{credential}}",
+ "Unshare" : "Zneprístupniť",
+ "Beginning" : "Začiatok",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Zobrazuje sa {{number_filtered}} z {{credential_number}} prístupových údajov",
+ "Search for credential…" : "Vyhľadať prístupové údaje...",
+ "Account" : "Účet",
+ "Password" : "Heslo",
+ "OTP" : "jednorazové heslo (OTP)",
+ "E-mail" : "E-mail",
+ "URL" : "URL",
+ "Notes" : "Poznámky",
+ "Expiry time" : "Dátum vypršania",
+ "Changed" : "Zmenené",
+ "Created" : "Vytvorené",
+ "Edit" : "Upraviť",
+ "Delete" : "Zmazať",
+ "Share" : "Zdieľať",
+ "Recover" : "Obnoviť",
+ "Destroy" : "Zničiť",
+ "Use regex" : "Použi regulárny výraz",
+ "You have incoming share requests." : "Máte prichádzajúce požiadavky na zdieľanie",
+ "If you want to put the credential in another vault," : "Ak chete premiestniť prihlasovací údaj do iného trezora,",
+ "Permissions" : "Oprávnenia",
+ "Received from" : "Prijaté od",
+ "Date" : "Dátum",
+ "Accept" : "Schváliť",
+ "Decline" : "Odmietnuť",
+ "You have {{session_time}} left before logout." : "Máte {{session_time}} do odhlásenia",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Váš trezor bol uzamknutý po dobu {{time}} z dôvodu {{tries}} neúspešných pokusov!",
+ "Last accessed" : "Posledný prístup",
+ "Never" : "Nikdy",
+ "No vaults found, why not create one?" : "Žiadne trezory, prečo jeden nevytvoriť?",
+ "Password strength must be at least: {{strength}}" : "Sila hesla musí byť aspoň: {{strength}}",
+ "Please give your new vault a name." : "Dajte svojmu novému trezoru meno, prosím.",
+ "Repeat vault password" : "Zopakujte heslo trezora",
+ "Create vault" : "Vytvoriť trezor",
+ "Go back to vaults" : "Späť k trezorom",
+ "Please input the password for" : "Prosím zadajte heslo k",
+ "Set this vault as the default." : "Nastav túto hodnotu ako predvolenú.",
+ "Log into this vault automatically." : "Prihlás sa do tohto trezoru automaticky.",
+ "Log out of this vault automatically after: " : "Odhlás sa z tohto trezoru automaticky po:",
+ "Decrypt vault" : "Odšifrovať trezor",
+ "Seems you lost the vault password and you're unable to log in." : "Zdá sa že ste stratili heslo od trezoru a nemôžete sa prihlásiť.",
+ "If you want this vault to be removed you can request that here." : "Ak chcete odstrániť tento trezor, môžete zadať požiadavku tu.",
+ "An admin then accepts or declines the request" : "Administrátor potom príjme alebo zamietne požiadavku",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Po tom čo administrátor zmaže trezor, všetky v ňom uložené prihlasovacie údaje budú stratené",
+ "Reason for requesting deletion (optional):" : "Príčina požiadavky na zmazanie (nepovinné):",
+ "Request vault destruction" : "Požiadať o zničenie trezora",
+ "Yes, request an admin to destroy this vault" : "Áno, požiadať admina o zničenie tohto trezora",
+ "Cancel destruction request" : "Zrušiť požiadavku na zničenie",
+ "Vault destruction requested" : "Zničenie trezora požadované",
+ "Request removed" : "Požiadavka odstránená",
+ "Destruction request pending" : "Čakajúce požiadavky na zničenie",
+ "Warning! Adding credentials over HTTP is insecure!" : "Varovanie! Pridávanie prihlasovacích údajov cez HTTP je nebezpečné!",
+ "Change vault" : "Zmeniť trezor",
+ "Deleted credentials" : "Prihlasovacie údaje vymazané",
+ "Logout" : "Odhlásiť",
+ "Donate" : "Darovať",
+ "Someone has shared a credential with you." : "Niekto vám sprístupnil prihlasovací údaj.",
+ "Click here to request it" : "Kliknite sem pre vytvorenie požiadavky",
+ "Loading…" : "Načítavam...",
+ "Awwhh… credential not found. Maybe it expired" : "Prihlasovací údaj nenájdený. Je možné že mu skončila platnosť.",
+ "Error while saving field" : "Chyba počas ukladania poľa",
+ "A Passman item has been created, modified or deleted" : "Položka v Passman bola vytvorená, modifikovaná alebo vymazaná",
+ "A Passman item has expired" : "Položke v Passman skončila platnosť",
+ "A Passman item has been shared" : "Položka v Passman bola zdieľaná",
+ "A Passman item has been renamed" : "Položka v Passman bola premenovaná",
+ "%1$s has been created by %2$s" : "%2$s vytvoril %1$s",
+ "You created %1$s" : "Vytvorili ste %1$s",
+ "%1$s has been updated by %2$s" : "%2$s aktualizoval %1$s",
+ "You updated %1$s" : "Aktualizovali ste %1$s",
+ "You reverted %1$s back to the revision of %3$s" : "Vrátili ste späť %1$s na revíziu %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s premenoval %1$s na %2$s",
+ "You renamed %1$s to %2$s" : "Premenovali ste %1$s na %2$s",
+ "%1$s has been deleted by %2$s" : "%2$s vymazal %1$s",
+ "You deleted %1$s" : "Zmazali ste %1$s",
+ "%1$s has been recovered by %2$s" : "%2$s obnovil %1$s",
+ "You recovered %1$s" : "Obnovili ste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%2$s vymazal %1$s natrvalo",
+ "You permanently deleted %1$s" : "Permanentne ste zmazali %1$s",
+ "The password of %1$s has expired, renew it now." : "Heslu %1$s skončila platnosť, obnovte ho teraz.",
+ "%1$s has been shared with %2$s" : "%1$s bol sprístupnený %2$s",
+ "You received a share request for %1$s from %2$s" : "Obdržali ste požiadavku na sprístupnenie %1$s od %2$s",
+ "%s has been shared with a link" : "%s bol sprístupnený prostredníctvom odkazu",
+ "Your credential \"%s\" expired, click here to update the credential." : "Vášmu prístupovému údaju \"%s\" skončila platnosť, kliknite sem pre aktualizáciu.",
+ "Remind me later" : "Pripomenúť neskôr",
+ "Ignore" : "Ignorovať",
+ "%s shared \"%s\" with you. Click here to accept" : "%s Vám sprístupnil \"%s\". Kliknite sem pre potvrdenie",
+ "%s has declined your share request for \"%s\"." : "%s zamietol požiadavku na sprístupnenie \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s akceptoval požiadavku na sprístupnenie \"%s\".",
+ "Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman je plnohodnotný manažér hesiel.",
+ "Unable to get version info" : "Nepodarilo sa určiť verziu",
+ "Passman Settings" : "Passman nastavenia",
+ "GitHub version:" : "GitHub verzia:",
+ "A newer version of Passman is available" : "Je dostupná nová verzia Passman",
+ "Password sharing" : "Sprístupňovanie hesiel",
+ "Credential mover" : "Presúvač prihlasovacích údajov",
+ "Vault destruction requests" : "Požiadavky na zničenie trezora",
+ "Check for new versions" : "Skontroluj dostupnosť nových verzií",
+ "Enable HTTPS check" : "Povoliť kontrolu HTTPS",
+ "Disable context menu" : "Zakázať kontextovú ponuku",
+ "Disable JavaScript debugger" : "Zakázať JavaScript debugger",
+ "Allow users on this server to share passwords with a link" : "Povoliť používateľom tohto servra sprístupňovať heslá pomocou odkazov",
+ "Allow users on this server to share passwords with other users" : "Povoliť používateľom tohto servra sprístupňovať heslá iným používateľom",
+ "Move credentials from one account to another" : "Presunúť prihlasovacie údaje z jedného používateľského účtu do iného",
+ "Source account" : "Zdrojový účet",
+ "Destination account" : "Cieľový účet",
+ "Credentials moved!" : "Prihlasovacie údaje presunuté!",
+ "Requests to destroy vault" : "Požiadavky na zničenie trezora",
+ "Request ID" : "ID požiadavky",
+ "Requested by" : "Požadované",
+ "Reason" : "Dôvod",
+ "Click here to request\n\t\t\t\t\tit" : "Kliknite sem pre vytvorenie požiadavky",
+ "Loading&hellip;" : "Načítavanie",
+ "Connection to server lost" : "Stratené spojenie so serverom",
+ "Problem loading page, reloading in 5 seconds" : "Nastal problém pri načítaní stránky, pokus sa zopakuje o 5 sekúnd",
+ "Saving..." : "Ukladám...",
+ "Dismiss" : "Odmietnuť",
+ "seconds ago" : "pred sekundami"
},
-"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
+"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/l10n/sk.json b/l10n/sk.json
index 21e90835..fbb324ed 100644
--- a/l10n/sk.json
+++ b/l10n/sk.json
@@ -1,11 +1,14 @@
{ "translations": {
"Passwords" : "Heslá",
- "Generating sharing keys ( %step / 2)" : "Generovanie kľúčov pre sprístupnenie ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Generovanie kľúčov pre sprístupnenie ( %s / 2)",
"Incorrect vault password!" : "Nesprávne heslo trezora!",
"Passwords do not match" : "Heslá sa nezhodujú",
"General" : "Všeobecné",
"Custom Fields" : "Vlastné polia",
+ "Please fill in a label." : "Zadajte prosím názov.",
+ "Please fill in a value." : "Zadajte prosím hodnotu.",
"Error loading file" : "Chyba pri načítaní súboru",
+ "An error occurred during decryption" : "Pri dešifrovaní sa stala chyba",
"Credential created!" : "Prihlasovací údaj bol vytvorený!",
"Credential deleted" : "Prihlasovací údaj bol zmazaný",
"Credential updated" : "Prihlasovací údaj bol aktualizovaný",
@@ -15,21 +18,38 @@
"Starting export" : "Začína sa exportovať",
"Decrypting credentials" : "Dešifrovanie prihlasovacích údajov",
"Done" : "Hotovo",
- "Credential has no label, skipping" : "Prihlasovacie údaje nemajú názov, preskakujem",
+ "Proceed with the following steps to import your file" : "Pre importovanie vášho súboru použite nasledujúce kroky",
"Adding {{credential}}" : "Pridávam {{credential}}",
"Added {{credential}}" : "Pridaných {{credential}}",
+ "Skipping credential, missing label on line {{line}}" : "Preskakujem prihlasovací údaj, chýba štítok na riadku {{line}}",
"Parsed {{num}} credentials, starting to import" : "Analyzovaných {{num}} prihlasovacích údajov, začína sa importovať",
+ "Importing" : "Importuje sa",
+ "Start import" : "Začať import",
+ "Select CSV file" : "Vyberte CSV súbor",
+ "Parsed {{rows}} lines from CSV file" : "{{rows}} riadkov načítaných zo súboru CSV",
+ "Skip first row" : "Preskočiť prvý riadok",
+ "You need to assign the label field before you can start the import." : "Je potrebné priradiť štítok pred začatím importu.",
+ "The first 5 lines of the CSV are shown." : "Zobrazuje sa prvých 5 riadkov CSV súboru",
+ "Assign the proper fields to each column." : "Priraď správne polia každému stĺpcu.",
+ "Example of imported credential" : "Príklad importovaných prihlasovacích údajov",
+ "Missing an importer? Try it with the generic CSV importer." : "Chýba Vám importer? Skúste generický CSV importer.",
+ "Go back to importers." : "Späť k importerom.",
"Revision deleted" : "Revízia zmazaná",
"Revision restored" : "Revízia obnovená",
+ "Save in Passman" : "Uložiť do Passman",
"Settings saved" : "Nastavenia uložené",
"General settings" : "Všeobecné nastavenia",
+ "Password audit" : "Audit hesla",
"Password settings" : "Nastavenia hesla",
"Import credentials" : "Importovať prihlasovacie údaje",
"Export credentials" : "Exportovať prihlasovacie údaje",
"Sharing" : "Sprístupnenie",
- "Your old password is incorrect!" : "Vaše staré heslo nie je správne!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Ste si istý, že chcete opustiť stránku? Všetky prístupy budú zahodené.",
+ "New password does not match!" : "Nové heslo nesedí!",
+ "Please log in with your new vault password" : "Prihláste sa prosím s vaším novým heslom do trezora",
"Share with users and groups" : "Sprístupniť používateľom a skupinám",
"Share link" : "Sprístupniť odkaz",
+ "Are you sure you want to leave? This will corrupt this credential" : "Ste si istý, že chcete opustiť stránku? Znehodnotí sa tým prihlasovací údaj",
"Credential unshared" : "Zrušené sprístupnenie prihlasovacích údajov",
"Credential shared" : "Prihlasovacie údaje sprístupnené",
"Saved!" : "Uložené!",
@@ -46,6 +66,10 @@
"Complete" : "Dokončené",
"Username" : "Meno používateľa",
"Repeat password" : "Zopakujte heslo",
+ "Add tag" : "Pridať štítok",
+ "Pick an icon" : "Vybrať ikonu",
+ "Use this icon" : "Použiť túto ikonu",
+ "Selected icon" : "Vybraná ikona",
"Field label" : "Názov poľa",
"Field value" : "Hodnota poľa",
"Choose a file" : "Vyberte súbor",
@@ -59,10 +83,18 @@
"Filename" : "Názov súboru",
"Upload date" : "Dátum nahratia",
"Size" : "Veľkosť",
+ "Upload or enter your OTP secret" : "Nahrajte alebo vložte Váš OTP kód",
"Current OTP settings" : "Aktuálne OTP nastavenia",
"Issuer" : "Vydavateľ",
+ "Secret" : "Tajný kľúč",
+ "Expiration date" : "Dátum expirácie",
+ "No expiration date set" : "Nezadaný dátum expirácie",
"Renew interval" : "Interval obnovenia",
"Disabled" : "Zakázaný",
+ "Day(s)" : "Deň (dni)",
+ "Week(s)" : "Týždeň (týždne)",
+ "Month(s)" : "Mesiac(ov)",
+ "Year(s)" : "Rok(y)",
"Password generation settings" : "Nastavenia vytvorenia hesla",
"Password length" : "Dĺžka hesla",
"Minimum amount of digits" : "Minimálny počet číselných znakov",
@@ -81,14 +113,21 @@
"Change vault key" : "Zmena kľúča do trezora",
"Old vault password" : "Staré heslo do trezora",
"New vault password" : "Nové heslo do trezora",
+ "Repeat new vault password" : "Zadajte nové heslo trezora znovu",
"Please wait your vault is being updated, do not leave this page." : "Počkajte prosím kým sa trezor aktualizuje, neopúšťajte túto stránku.",
"Processing" : "Spracovávam",
"Total progress" : "Celkový priebeh",
+ "About Passman" : "O Passman",
"Version" : "Verzia",
"Donate to support development" : "Prispejte a podporte vývoj",
+ "Bookmarklet" : "Chytrá záložka",
+ "Drag below button to your bookmark toolbar." : "Potiahnite spodné tlačidlo na Váš panel záložiek.",
"Delete vault" : "Zmazať trezor",
"Vault password" : "Heslo trezora",
"This process is irreversible" : "Tento proces je nezvratný",
+ "Delete my precious passwords" : "Vymaž moje vzácne heslá",
+ "Deleting {{password}}…" : "Vymazáva sa {{password}}…",
+ "Yes, delete my precious passwords" : "Áno, vymaž moje vzácne heslá",
"Import type" : "Typ importu",
"Import" : "Import",
"Read progress" : "Priebeh načítania",
@@ -97,12 +136,174 @@
"Public key" : "Verejný kľúč",
"Key size" : "Veľkosť klľúča",
"Save keys" : "Uložiť kľúče",
+ "Generate sharing keys" : "Vytvor zdieľaný kľúč",
+ "Generating sharing keys" : "Vytvárajú sa zdieľané kľúče",
"Minimum password stength" : "Minimálna sila hesla",
+ "Start scan" : "Začnite skenovanie",
+ "Result" : "Výsledok",
+ "A total of {{scan_result}} weak credentials were found." : "Našlo sa spolu {{scan_result}} slabých hesiel.",
"Score" : "Skóre",
"Action" : "Akcia",
+ "Search users…" : "Vyhľadať používateľov...",
+ "Missing users? Only users that have vaults are shown." : "Chýbajú používatelia? Zobrazení sú iba používatelia, ktorí majú trezor.",
"Cyphering" : "Šifrovanie",
"Uploading" : "Nahrávanie",
"User" : "Používateľ",
- "Label" : "Názov"
-},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
+ "Crypto time" : "Šifrovanie",
+ "Read" : "Čítať",
+ "Write" : "Písať",
+ "Files" : "Súbory",
+ "Revisions" : "Revízie",
+ "Pending" : "Prebieha",
+ "Enable link sharing" : "Povoliť zdieľanie odkazov",
+ "Share until date" : "Zdieľať do dátumu",
+ "Show files" : "Zobraziť súbory",
+ "Details" : "Detaily",
+ "Hide details" : "Skryť detaily",
+ "Password score" : "Skóre hesla",
+ "Cracking times" : "Časy prelomenia hesla",
+ "100 / hour" : "100 / hodina",
+ "10 / second" : "10 / sekunda",
+ "10k / second" : "10k / sekunda",
+ "10B / second" : "10B / sekunda",
+ "Pattern" : "Vzor",
+ "Matched word" : "Zodpovedajúce slovo",
+ "Dictionary name" : "Názov slovníka",
+ "Rank" : "Hodnosť",
+ "Reversed" : "Opačný",
+ "Guesses" : "Odhady",
+ "Base guesses" : "Základné odhady",
+ "Showing revisions of" : "Zobrazujú sa revízie",
+ "Revision of" : "Revízia",
+ "by" : "od",
+ "No revisions found." : "Nenašli sa žiadne revízie.",
+ "Label" : "Názov",
+ "Restore revision" : "Obnoviť revíziu",
+ "Delete revision" : "Zmazať revíziu",
+ "Edit credential" : "Úprava prístupového údaju",
+ "Create new credential" : "Vytvor nový prihlasovací údaj",
+ "Save" : "Uložiť",
+ "Cancel" : "Zrušiť",
+ "Settings" : "Nastavenia",
+ "Share credential {{credential}}" : "Sprístupnenie prístupového údaju {{credential}}",
+ "Unshare" : "Zneprístupniť",
+ "Beginning" : "Začiatok",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Zobrazuje sa {{number_filtered}} z {{credential_number}} prístupových údajov",
+ "Search for credential…" : "Vyhľadať prístupové údaje...",
+ "Account" : "Účet",
+ "Password" : "Heslo",
+ "OTP" : "jednorazové heslo (OTP)",
+ "E-mail" : "E-mail",
+ "URL" : "URL",
+ "Notes" : "Poznámky",
+ "Expiry time" : "Dátum vypršania",
+ "Changed" : "Zmenené",
+ "Created" : "Vytvorené",
+ "Edit" : "Upraviť",
+ "Delete" : "Zmazať",
+ "Share" : "Zdieľať",
+ "Recover" : "Obnoviť",
+ "Destroy" : "Zničiť",
+ "Use regex" : "Použi regulárny výraz",
+ "You have incoming share requests." : "Máte prichádzajúce požiadavky na zdieľanie",
+ "If you want to put the credential in another vault," : "Ak chete premiestniť prihlasovací údaj do iného trezora,",
+ "Permissions" : "Oprávnenia",
+ "Received from" : "Prijaté od",
+ "Date" : "Dátum",
+ "Accept" : "Schváliť",
+ "Decline" : "Odmietnuť",
+ "You have {{session_time}} left before logout." : "Máte {{session_time}} do odhlásenia",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Váš trezor bol uzamknutý po dobu {{time}} z dôvodu {{tries}} neúspešných pokusov!",
+ "Last accessed" : "Posledný prístup",
+ "Never" : "Nikdy",
+ "No vaults found, why not create one?" : "Žiadne trezory, prečo jeden nevytvoriť?",
+ "Password strength must be at least: {{strength}}" : "Sila hesla musí byť aspoň: {{strength}}",
+ "Please give your new vault a name." : "Dajte svojmu novému trezoru meno, prosím.",
+ "Repeat vault password" : "Zopakujte heslo trezora",
+ "Create vault" : "Vytvoriť trezor",
+ "Go back to vaults" : "Späť k trezorom",
+ "Please input the password for" : "Prosím zadajte heslo k",
+ "Set this vault as the default." : "Nastav túto hodnotu ako predvolenú.",
+ "Log into this vault automatically." : "Prihlás sa do tohto trezoru automaticky.",
+ "Log out of this vault automatically after: " : "Odhlás sa z tohto trezoru automaticky po:",
+ "Decrypt vault" : "Odšifrovať trezor",
+ "Seems you lost the vault password and you're unable to log in." : "Zdá sa že ste stratili heslo od trezoru a nemôžete sa prihlásiť.",
+ "If you want this vault to be removed you can request that here." : "Ak chcete odstrániť tento trezor, môžete zadať požiadavku tu.",
+ "An admin then accepts or declines the request" : "Administrátor potom príjme alebo zamietne požiadavku",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Po tom čo administrátor zmaže trezor, všetky v ňom uložené prihlasovacie údaje budú stratené",
+ "Reason for requesting deletion (optional):" : "Príčina požiadavky na zmazanie (nepovinné):",
+ "Request vault destruction" : "Požiadať o zničenie trezora",
+ "Yes, request an admin to destroy this vault" : "Áno, požiadať admina o zničenie tohto trezora",
+ "Cancel destruction request" : "Zrušiť požiadavku na zničenie",
+ "Vault destruction requested" : "Zničenie trezora požadované",
+ "Request removed" : "Požiadavka odstránená",
+ "Destruction request pending" : "Čakajúce požiadavky na zničenie",
+ "Warning! Adding credentials over HTTP is insecure!" : "Varovanie! Pridávanie prihlasovacích údajov cez HTTP je nebezpečné!",
+ "Change vault" : "Zmeniť trezor",
+ "Deleted credentials" : "Prihlasovacie údaje vymazané",
+ "Logout" : "Odhlásiť",
+ "Donate" : "Darovať",
+ "Someone has shared a credential with you." : "Niekto vám sprístupnil prihlasovací údaj.",
+ "Click here to request it" : "Kliknite sem pre vytvorenie požiadavky",
+ "Loading…" : "Načítavam...",
+ "Awwhh… credential not found. Maybe it expired" : "Prihlasovací údaj nenájdený. Je možné že mu skončila platnosť.",
+ "Error while saving field" : "Chyba počas ukladania poľa",
+ "A Passman item has been created, modified or deleted" : "Položka v Passman bola vytvorená, modifikovaná alebo vymazaná",
+ "A Passman item has expired" : "Položke v Passman skončila platnosť",
+ "A Passman item has been shared" : "Položka v Passman bola zdieľaná",
+ "A Passman item has been renamed" : "Položka v Passman bola premenovaná",
+ "%1$s has been created by %2$s" : "%2$s vytvoril %1$s",
+ "You created %1$s" : "Vytvorili ste %1$s",
+ "%1$s has been updated by %2$s" : "%2$s aktualizoval %1$s",
+ "You updated %1$s" : "Aktualizovali ste %1$s",
+ "You reverted %1$s back to the revision of %3$s" : "Vrátili ste späť %1$s na revíziu %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s premenoval %1$s na %2$s",
+ "You renamed %1$s to %2$s" : "Premenovali ste %1$s na %2$s",
+ "%1$s has been deleted by %2$s" : "%2$s vymazal %1$s",
+ "You deleted %1$s" : "Zmazali ste %1$s",
+ "%1$s has been recovered by %2$s" : "%2$s obnovil %1$s",
+ "You recovered %1$s" : "Obnovili ste %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%2$s vymazal %1$s natrvalo",
+ "You permanently deleted %1$s" : "Permanentne ste zmazali %1$s",
+ "The password of %1$s has expired, renew it now." : "Heslu %1$s skončila platnosť, obnovte ho teraz.",
+ "%1$s has been shared with %2$s" : "%1$s bol sprístupnený %2$s",
+ "You received a share request for %1$s from %2$s" : "Obdržali ste požiadavku na sprístupnenie %1$s od %2$s",
+ "%s has been shared with a link" : "%s bol sprístupnený prostredníctvom odkazu",
+ "Your credential \"%s\" expired, click here to update the credential." : "Vášmu prístupovému údaju \"%s\" skončila platnosť, kliknite sem pre aktualizáciu.",
+ "Remind me later" : "Pripomenúť neskôr",
+ "Ignore" : "Ignorovať",
+ "%s shared \"%s\" with you. Click here to accept" : "%s Vám sprístupnil \"%s\". Kliknite sem pre potvrdenie",
+ "%s has declined your share request for \"%s\"." : "%s zamietol požiadavku na sprístupnenie \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s akceptoval požiadavku na sprístupnenie \"%s\".",
+ "Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman je plnohodnotný manažér hesiel.",
+ "Unable to get version info" : "Nepodarilo sa určiť verziu",
+ "Passman Settings" : "Passman nastavenia",
+ "GitHub version:" : "GitHub verzia:",
+ "A newer version of Passman is available" : "Je dostupná nová verzia Passman",
+ "Password sharing" : "Sprístupňovanie hesiel",
+ "Credential mover" : "Presúvač prihlasovacích údajov",
+ "Vault destruction requests" : "Požiadavky na zničenie trezora",
+ "Check for new versions" : "Skontroluj dostupnosť nových verzií",
+ "Enable HTTPS check" : "Povoliť kontrolu HTTPS",
+ "Disable context menu" : "Zakázať kontextovú ponuku",
+ "Disable JavaScript debugger" : "Zakázať JavaScript debugger",
+ "Allow users on this server to share passwords with a link" : "Povoliť používateľom tohto servra sprístupňovať heslá pomocou odkazov",
+ "Allow users on this server to share passwords with other users" : "Povoliť používateľom tohto servra sprístupňovať heslá iným používateľom",
+ "Move credentials from one account to another" : "Presunúť prihlasovacie údaje z jedného používateľského účtu do iného",
+ "Source account" : "Zdrojový účet",
+ "Destination account" : "Cieľový účet",
+ "Credentials moved!" : "Prihlasovacie údaje presunuté!",
+ "Requests to destroy vault" : "Požiadavky na zničenie trezora",
+ "Request ID" : "ID požiadavky",
+ "Requested by" : "Požadované",
+ "Reason" : "Dôvod",
+ "Click here to request\n\t\t\t\t\tit" : "Kliknite sem pre vytvorenie požiadavky",
+ "Loading&hellip;" : "Načítavanie",
+ "Connection to server lost" : "Stratené spojenie so serverom",
+ "Problem loading page, reloading in 5 seconds" : "Nastal problém pri načítaní stránky, pokus sa zopakuje o 5 sekúnd",
+ "Saving..." : "Ukladám...",
+ "Dismiss" : "Odmietnuť",
+ "seconds ago" : "pred sekundami"
+},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/l10n/sq.js b/l10n/sq.js
index f0dda857..defdb846 100644
--- a/l10n/sq.js
+++ b/l10n/sq.js
@@ -2,7 +2,6 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Fjalëkalimet",
- "Generating sharing keys ( %step / 2)" : "Gjenerimi ndarjes çelësat ( %step / 2)",
"Incorrect vault password!" : "Fjalëkalimi i kasafortës është i pasakt!",
"Passwords do not match" : "Fjalëkalimet nuk përputhen",
"General" : "I Përgjithshëm",
@@ -16,14 +15,11 @@ OC.L10N.register(
"Credential updated" : "Kredenciali u përditësua",
"Credential recovered" : "Kredenciali u rimor",
"Credential destroyed" : "Kredencial i shkatërruar",
- "Error downloading file, you probably don't have sufficient permissions" : "Gabim gjatë shkarkimit të skedarit, ndoshta nuk keni leje të mjaftueshme",
"Invalid QR code" : "Kod QR i pavlefshëm",
"Starting export" : "Duke filluar eksportimin",
"Decrypting credentials" : "Duke shifruar kredencialet",
"Done" : "U bë",
- "File read successfully." : "Leximi i skedarit me sukses.",
"Proceed with the following steps to import your file" : "Vazhdonime hapat e mëposhtëm për të importuar skedarin tuaj",
- "Credential has no label, skipping" : "Kredencialet nuk kan etiketë, anashkalohet",
"Adding {{credential}}" : "Duke shtuar {{credential}}",
"Added {{credential}}" : "Shtuar {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Duke kaluar kredencialin, etiketa që mungon në linjë {{line}}",
@@ -50,7 +46,6 @@ OC.L10N.register(
"Export credentials" : "Eksporto kredencialin",
"Sharing" : "Shperndaj",
"Are you sure you want to leave? This will destroy all your credentials" : "A jeni i sigurt që doni të largoheni? Kjo do të shkatërrojë të gjitha kredencialet tuaja",
- "Your old password is incorrect!" : "Fjalëkalimi juaj i vjetër është i pasakt!",
"New password does not match!" : "Fjalëkalimi i ri nuk përputhet!",
"Please log in with your new vault password" : "Ju lutem hyni me fjalëkalimin tuaj të ri të kasafortës",
"Share with users and groups" : "Ndaj me përdoruesit dhe grupet",
@@ -124,7 +119,6 @@ OC.L10N.register(
"Version" : "Version",
"Donate to support development" : "Dhuroni që të mbështesni Zhvillimin",
"Bookmarklet" : "Libër Shënues",
- "Save your passwords with 1 click!" : "Ruani fjalëkalimin tuaj me 1 të shtypur!",
"Drag below button to your bookmark toolbar." : "Rrëshqit butonin e mëposhtëm tek rreshti i veglave të punës",
"Delete vault" : "Kasafortë e parazgjedhur",
"Vault password" : "Fjalëkalim i kasafortës",
@@ -142,20 +136,17 @@ OC.L10N.register(
"Save keys" : "Ruaj Çelësat",
"Generate sharing keys" : "Gjenero Çelësat e Shpërndarjes",
"Generating sharing keys" : "Çelësat e Shpërndarjes po Gjenerohen",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Mjeti i fjalëkalimit do të skanojë fjalëkalimin tuaj, do të llogarisë kohën mesatare të plasaritjes dhe do të listojë ato që janë nën prag",
"Minimum password stength" : "Fuqia Minimale e Fjalëkalimit",
"Start scan" : "Fillo skanimin",
"Result" : "Rezultatet",
"A total of {{scan_result}} weak credentials were found." : "Një total i {{scan_result}} kredencialeve të dobët u gjet.",
"Score" : "Rezultat",
"Action" : "Veprim",
- "Search users or groups…" : "Kërko përdorues ose grup...",
"Missing users? Only users that have vaults are shown." : "Po mungojnë përdorues? Vetëm përdorues që kanë kasafortë janë shfaqur.",
"Cyphering" : "Duke u shifruar",
"Uploading" : "Duke u ngarkuar",
"User" : "Përdorues",
"Crypto time" : "Koha Shifrimit",
- "Total time spent cyphering" : "Koha Totale e harxhuar mbi shifrim",
"Read" : "Lexo",
"Write" : "Shkruaj",
"Files" : "Skedar",
@@ -164,7 +155,6 @@ OC.L10N.register(
"Enable link sharing" : "Aktivizo shpërndarjen e lidhjes ",
"Share until date" : "Shpërndaj deri në këtë Datë",
"Expire after views" : "Skadon pas shikime",
- "Click Share first" : "Kliko Ndaje së pari",
"Show files" : "Shfaq skedarët",
"Details" : "Detaje",
"Hide details" : "Fsheh detajet",
@@ -194,7 +184,7 @@ OC.L10N.register(
"by" : "nga",
"No revisions found." : "Asnjë rishikim nuk u gjet.",
"Label" : "Etiketë",
- "Restore revision" : "Rivendosni rishikimin",
+ "Restore revision" : "Rivendos rishikimin",
"Delete revision" : "Fshij rishikimin",
"Edit credential" : "Ndrysho kredenciale",
"Create new credential" : "Krijo një kredencial të ri",
@@ -224,7 +214,6 @@ OC.L10N.register(
"Use regex" : "Përdor shprehje të rregullt",
"You have incoming share requests." : "Ju keni kërkesa hyrëse për shpërndarje",
"If you want to put the credential in another vault," : "Në qoftë se doni të vendosni kredencialin në një kasafortë tjetër,",
- "log out of this vault and log in to the vault you want the shared credential in." : "dil nga kjo kasafortë dhe hy në kasafortën në të cilën ju doni kredecialin e përbashkët.",
"Permissions" : "Lejet",
"Received from" : "Marrë nga",
"Date" : "Data",
@@ -238,7 +227,6 @@ OC.L10N.register(
"Password strength must be at least: {{strength}}" : "Fuqia e fjalëkalimit duhet të jetë të paktën: {{fuqi}}",
"Please give your new vault a name." : "Ju lutemi jepini kasafortës suaj një emër",
"Repeat vault password" : "Përsërit fjalëkalimin e kasafortës",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Çelësi juaj i ndarjes do të kenë një forcë prej 1024 bitësh, të cilët mund ta ndryshoni në Konfigurimet më vonë.",
"Create vault" : "Krijo kasafortë",
"Go back to vaults" : "Shko prapa tek kasafortët",
"Please input the password for" : "Ju lutemi fusni fjalëkalimet për",
@@ -258,7 +246,6 @@ OC.L10N.register(
"Request removed" : "Kërkesa u hoq",
"Destruction request pending" : "Kërkesa për shkatërrim në pritje",
"Warning! Adding credentials over HTTP is insecure!" : "Paralajmërim! Shtimi i kredencialeve me HTTP është i pasigurtë!",
- "Logged in to {{vault_name}}" : "Hyrë ne {{emri_kasafortës}}",
"Change vault" : "Ndrysho kasafortë",
"Deleted credentials" : "Kredencialet e fshira",
"Logout" : "Dil",
@@ -291,7 +278,7 @@ OC.L10N.register(
"You received a share request for %1$s from %2$s" : "Ju morët një kërkesë për ndarje për %1$snga %2$s",
"%s has been shared with a link" : "%sështë ndar me një link",
"Your credential \"%s\" expired, click here to update the credential." : "Kredenciali juaj \"%s\" skadoi, klikoni këtu për të përditësuar kredencialin.",
- "Remind me later" : "Kujtomë më vonë",
+ "Remind me later" : "Më kujto më vonë",
"Ignore" : "Injoro",
"%s shared \"%s\" with you. Click here to accept" : "%s ndau\"%s\" me ju. Kliko këtu pë ta pranuar",
"%s has declined your share request for \"%s\"." : "%s ka refuzuar të ndaj kërkesën për \"%s\".",
diff --git a/l10n/sq.json b/l10n/sq.json
index d950f3b2..39166702 100644
--- a/l10n/sq.json
+++ b/l10n/sq.json
@@ -1,6 +1,5 @@
{ "translations": {
"Passwords" : "Fjalëkalimet",
- "Generating sharing keys ( %step / 2)" : "Gjenerimi ndarjes çelësat ( %step / 2)",
"Incorrect vault password!" : "Fjalëkalimi i kasafortës është i pasakt!",
"Passwords do not match" : "Fjalëkalimet nuk përputhen",
"General" : "I Përgjithshëm",
@@ -14,14 +13,11 @@
"Credential updated" : "Kredenciali u përditësua",
"Credential recovered" : "Kredenciali u rimor",
"Credential destroyed" : "Kredencial i shkatërruar",
- "Error downloading file, you probably don't have sufficient permissions" : "Gabim gjatë shkarkimit të skedarit, ndoshta nuk keni leje të mjaftueshme",
"Invalid QR code" : "Kod QR i pavlefshëm",
"Starting export" : "Duke filluar eksportimin",
"Decrypting credentials" : "Duke shifruar kredencialet",
"Done" : "U bë",
- "File read successfully." : "Leximi i skedarit me sukses.",
"Proceed with the following steps to import your file" : "Vazhdonime hapat e mëposhtëm për të importuar skedarin tuaj",
- "Credential has no label, skipping" : "Kredencialet nuk kan etiketë, anashkalohet",
"Adding {{credential}}" : "Duke shtuar {{credential}}",
"Added {{credential}}" : "Shtuar {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Duke kaluar kredencialin, etiketa që mungon në linjë {{line}}",
@@ -48,7 +44,6 @@
"Export credentials" : "Eksporto kredencialin",
"Sharing" : "Shperndaj",
"Are you sure you want to leave? This will destroy all your credentials" : "A jeni i sigurt që doni të largoheni? Kjo do të shkatërrojë të gjitha kredencialet tuaja",
- "Your old password is incorrect!" : "Fjalëkalimi juaj i vjetër është i pasakt!",
"New password does not match!" : "Fjalëkalimi i ri nuk përputhet!",
"Please log in with your new vault password" : "Ju lutem hyni me fjalëkalimin tuaj të ri të kasafortës",
"Share with users and groups" : "Ndaj me përdoruesit dhe grupet",
@@ -122,7 +117,6 @@
"Version" : "Version",
"Donate to support development" : "Dhuroni që të mbështesni Zhvillimin",
"Bookmarklet" : "Libër Shënues",
- "Save your passwords with 1 click!" : "Ruani fjalëkalimin tuaj me 1 të shtypur!",
"Drag below button to your bookmark toolbar." : "Rrëshqit butonin e mëposhtëm tek rreshti i veglave të punës",
"Delete vault" : "Kasafortë e parazgjedhur",
"Vault password" : "Fjalëkalim i kasafortës",
@@ -140,20 +134,17 @@
"Save keys" : "Ruaj Çelësat",
"Generate sharing keys" : "Gjenero Çelësat e Shpërndarjes",
"Generating sharing keys" : "Çelësat e Shpërndarjes po Gjenerohen",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Mjeti i fjalëkalimit do të skanojë fjalëkalimin tuaj, do të llogarisë kohën mesatare të plasaritjes dhe do të listojë ato që janë nën prag",
"Minimum password stength" : "Fuqia Minimale e Fjalëkalimit",
"Start scan" : "Fillo skanimin",
"Result" : "Rezultatet",
"A total of {{scan_result}} weak credentials were found." : "Një total i {{scan_result}} kredencialeve të dobët u gjet.",
"Score" : "Rezultat",
"Action" : "Veprim",
- "Search users or groups…" : "Kërko përdorues ose grup...",
"Missing users? Only users that have vaults are shown." : "Po mungojnë përdorues? Vetëm përdorues që kanë kasafortë janë shfaqur.",
"Cyphering" : "Duke u shifruar",
"Uploading" : "Duke u ngarkuar",
"User" : "Përdorues",
"Crypto time" : "Koha Shifrimit",
- "Total time spent cyphering" : "Koha Totale e harxhuar mbi shifrim",
"Read" : "Lexo",
"Write" : "Shkruaj",
"Files" : "Skedar",
@@ -162,7 +153,6 @@
"Enable link sharing" : "Aktivizo shpërndarjen e lidhjes ",
"Share until date" : "Shpërndaj deri në këtë Datë",
"Expire after views" : "Skadon pas shikime",
- "Click Share first" : "Kliko Ndaje së pari",
"Show files" : "Shfaq skedarët",
"Details" : "Detaje",
"Hide details" : "Fsheh detajet",
@@ -192,7 +182,7 @@
"by" : "nga",
"No revisions found." : "Asnjë rishikim nuk u gjet.",
"Label" : "Etiketë",
- "Restore revision" : "Rivendosni rishikimin",
+ "Restore revision" : "Rivendos rishikimin",
"Delete revision" : "Fshij rishikimin",
"Edit credential" : "Ndrysho kredenciale",
"Create new credential" : "Krijo një kredencial të ri",
@@ -222,7 +212,6 @@
"Use regex" : "Përdor shprehje të rregullt",
"You have incoming share requests." : "Ju keni kërkesa hyrëse për shpërndarje",
"If you want to put the credential in another vault," : "Në qoftë se doni të vendosni kredencialin në një kasafortë tjetër,",
- "log out of this vault and log in to the vault you want the shared credential in." : "dil nga kjo kasafortë dhe hy në kasafortën në të cilën ju doni kredecialin e përbashkët.",
"Permissions" : "Lejet",
"Received from" : "Marrë nga",
"Date" : "Data",
@@ -236,7 +225,6 @@
"Password strength must be at least: {{strength}}" : "Fuqia e fjalëkalimit duhet të jetë të paktën: {{fuqi}}",
"Please give your new vault a name." : "Ju lutemi jepini kasafortës suaj një emër",
"Repeat vault password" : "Përsërit fjalëkalimin e kasafortës",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Çelësi juaj i ndarjes do të kenë një forcë prej 1024 bitësh, të cilët mund ta ndryshoni në Konfigurimet më vonë.",
"Create vault" : "Krijo kasafortë",
"Go back to vaults" : "Shko prapa tek kasafortët",
"Please input the password for" : "Ju lutemi fusni fjalëkalimet për",
@@ -256,7 +244,6 @@
"Request removed" : "Kërkesa u hoq",
"Destruction request pending" : "Kërkesa për shkatërrim në pritje",
"Warning! Adding credentials over HTTP is insecure!" : "Paralajmërim! Shtimi i kredencialeve me HTTP është i pasigurtë!",
- "Logged in to {{vault_name}}" : "Hyrë ne {{emri_kasafortës}}",
"Change vault" : "Ndrysho kasafortë",
"Deleted credentials" : "Kredencialet e fshira",
"Logout" : "Dil",
@@ -289,7 +276,7 @@
"You received a share request for %1$s from %2$s" : "Ju morët një kërkesë për ndarje për %1$snga %2$s",
"%s has been shared with a link" : "%sështë ndar me një link",
"Your credential \"%s\" expired, click here to update the credential." : "Kredenciali juaj \"%s\" skadoi, klikoni këtu për të përditësuar kredencialin.",
- "Remind me later" : "Kujtomë më vonë",
+ "Remind me later" : "Më kujto më vonë",
"Ignore" : "Injoro",
"%s shared \"%s\" with you. Click here to accept" : "%s ndau\"%s\" me ju. Kliko këtu pë ta pranuar",
"%s has declined your share request for \"%s\"." : "%s ka refuzuar të ndaj kërkesën për \"%s\".",
diff --git a/l10n/sr.js b/l10n/sr.js
new file mode 100644
index 00000000..5b74755c
--- /dev/null
+++ b/l10n/sr.js
@@ -0,0 +1,336 @@
+OC.L10N.register(
+ "passman",
+ {
+ "Passwords" : "Лозинке",
+ "Generating sharing keys ( %s / 2)" : "Генеришем дељене кључеве (%s/2)",
+ "Incorrect vault password!" : "Неисправна лозинка за сеф!",
+ "Passwords do not match" : "Лозинке се не поклапају",
+ "General" : "Опште",
+ "Custom Fields" : "Произвољна поља",
+ "Please fill in a label." : "Унесите ознаку.",
+ "Please fill in a value." : "Унесите вредност.",
+ "Error loading file" : "Грешка при учитавању фајла",
+ "An error occurred during decryption" : "Десила се грешка приликом дешифровања",
+ "Credential created!" : "Направљени акредитиви!",
+ "Credential deleted" : "Акредитиви обрисани",
+ "Credential updated" : "Акредитиви освежени",
+ "Credential recovered" : "Акредитиви опорављени",
+ "Credential destroyed" : "Акредитиви уништени",
+ "Error downloading file, you probably have insufficient permissions" : "Грешка приликом скидања фајла, вероватно немате довољно привилегија",
+ "Invalid QR code" : "Неисправан QR код",
+ "Starting export" : "Почињем извожење",
+ "Decrypting credentials" : "Дешифрујем акредитиве",
+ "Done" : "Готово",
+ "File read." : "Фајл прочитан.",
+ "Proceed with the following steps to import your file" : "Наставите са следећим корацима да увезете фајл",
+ "Skipping unlabeled credential" : "Прескачем неозначене акредитиве",
+ "Adding {{credential}}" : "Додајем {{credential}}",
+ "Added {{credential}}" : "{{credential}} додат",
+ "Skipping credential, missing label on line {{line}}" : "Прескачем акредитив, недостаје ознака на линији {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "Испарсирано {{num}} акредитива, почињем увоз",
+ "Importing" : "Увожење",
+ "Start import" : "Почни увоз",
+ "Select CSV file" : "Одабери CSV фајл",
+ "Parsed {{rows}} lines from CSV file" : "Парсирано {{rows}} линија из CSV фајла",
+ "Skip first row" : "Прескочи први ред",
+ "You need to assign the label field before you can start the import." : "Морате да додалите поље ознаке пре него што започнете увоз.",
+ "The first 5 lines of the CSV are shown." : "Приказано је првих 5 линија CSV фајла.",
+ "Assign the proper fields to each column." : "Доделите исправна поља свакој колони.",
+ "Example of imported credential" : "Пример увезеног акредитива",
+ "Missing an importer? Try it with the generic CSV importer." : "Фали вам увозник? Пробајте генерички CSV увозник.",
+ "Go back to importers." : "Назад на увознике.",
+ "Revision deleted" : "Ревизија избрисана",
+ "Revision restored" : "Ревизија повраћена",
+ "Save in Passman" : "Сачувај у Менаџеру Лозинки",
+ "Settings saved" : "Поставке сачуване",
+ "General settings" : "Опште поставке",
+ "Password audit" : "Надзор лозинки",
+ "Password settings" : "Поставке лозинки",
+ "Import credentials" : "Увези акредитиве",
+ "Export credentials" : "Извези акредитиве",
+ "Sharing" : "Дељење",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Да ли ставрно желите да изађете? Овим ћете уништити све Ваше акредитиве",
+ "Old password field incorrect!" : "Поље старе лозинке је неисправно!",
+ "New password does not match!" : "Нова лозинка се не поклапа!",
+ "Please log in with your new vault password" : "Улогујте се са Вашом новом лозинком за сеф",
+ "Share with users and groups" : "Дели са корисницима и групама",
+ "Share link" : "Веза дељења",
+ "Are you sure you want to leave? This will corrupt this credential" : "Да ли ставрно желите да изађете? Овим ћете оштетити овај акредитив",
+ "Credential unshared" : "Акредитив није више дељен",
+ "Credential shared" : "Акредитив подељен",
+ "Saved!" : "Сачувано!",
+ "Poor" : "Лоша",
+ "Weak" : "Слаба",
+ "Good" : "Добра",
+ "Strong" : "Јака",
+ "Toggle visibility" : "Укључи/искључи видљивост",
+ "Copy to clipboard" : "Копирај у оставу",
+ "Copied to clipboard!" : "Копирано у оставу!",
+ "Generate password" : "Генериши лозинку",
+ "Copy password to clipboard" : "Копирај лозинку у оставу",
+ "Password copied to clipboard!" : "Лозинка копирана у оставу!",
+ "Complete" : "Завршено",
+ "Username" : "Корисничко име",
+ "Repeat password" : "Поновите лозинку",
+ "Add tag" : "Додајте ознаку",
+ "Pick an icon" : "Одаберите икону",
+ "Use this icon" : "Користи ову икону",
+ "Selected icon" : "Одабрана икона",
+ "Field label" : "Поље ознаке",
+ "Field value" : "Поље вредности",
+ "Choose a file" : "Одаберите фајл",
+ "Text" : "Текст",
+ "File" : "Фајл",
+ "Add" : "Додај",
+ "Value" : "Вредност",
+ "Type" : "Тип",
+ "Actions" : "Радње",
+ "Empty" : "Празно",
+ "Filename" : "Име фајла",
+ "Upload date" : "Датум отпремања",
+ "Size" : "Величина",
+ "Upload or enter your OTP secret" : "Отпремите или унесите Вашу OTP тајну",
+ "Current OTP settings" : "Тренутне OTP поставке",
+ "Issuer" : "Издавач",
+ "Secret" : "Тајна",
+ "Expiration date" : "Датум истицања",
+ "No expiration date set" : "Није постављен датум истека",
+ "Renew interval" : "Интервал обнављања",
+ "Disabled" : "Искључено",
+ "Day(s)" : "Дан(и)",
+ "Week(s)" : "Недеља(е)",
+ "Month(s)" : "Месец(и)",
+ "Year(s)" : "Година(е)",
+ "Password generation settings" : "Поставке генерисања лозинки",
+ "Password length" : "Дужина лозинке",
+ "Minimum amount of digits" : "Минимални број цифара",
+ "Use uppercase letters" : "Користи велика слова",
+ "Use lowercase letters" : "Користи мала слова",
+ "Use numbers" : "Користи бројеве",
+ "Use special characters" : "Користи специјалне карактере",
+ "Avoid ambiguous characters" : "Избегавај двосмислене карактере",
+ "Require every character type" : "Захтевај све типове карактера",
+ "Export type" : "Тип извоза",
+ "Export" : "Извези",
+ "Enter vault password to confirm export." : "Унесите лозинку за сеф да потврдите извоз.",
+ "Rename vault" : "Преименуј сеф",
+ "New vault name" : "Ново име сефа",
+ "Change" : "Измени",
+ "Change vault key" : "Измени кључ сефа",
+ "Old vault password" : "Стара лозинка сефа",
+ "New vault password" : "Нова лозинка сефа",
+ "Repeat new vault password" : "Поновите нову лозинку сефа",
+ "Please wait your vault is being updated, do not leave this page." : "Сачекајте док се сеф ажурира, не напуштајте ову страну.",
+ "Processing" : "Обрађујем",
+ "Total progress" : "Укупни напредак",
+ "About Passman" : "О Менаџеру Лозинки",
+ "Version" : "Верзија",
+ "Donate to support development" : "Донирајте да подржите развој",
+ "Bookmarklet" : "Забелешка",
+ "Save your passwords with one click." : "Сачувајте Ваше лозинке са једним кликом.",
+ "Drag below button to your bookmark toolbar." : "Одвуците дугме испод у Вашу траку са забелешкама у веб читачу.",
+ "Delete vault" : "Избриши сеф",
+ "Vault password" : "Лозинка сефа",
+ "This process is irreversible" : "Овај процес је неповратан",
+ "Delete my precious passwords" : "Избриши моје драгоцене лозинке",
+ "Deleting {{password}}…" : "Бришем {{password}}…",
+ "Yes, delete my precious passwords" : "Да, избриши моје драгоцене лозинке",
+ "Import type" : "Тип увоза",
+ "Import" : "Увоз",
+ "Read progress" : "Напредак читања",
+ "Upload progress" : "Напредак отпремања",
+ "Private Key" : "Тајни кључ",
+ "Public key" : "Јавни кључ",
+ "Key size" : "Величина кључа",
+ "Save keys" : "Сними кључеве",
+ "Generate sharing keys" : "Генериши кључеве за дељење",
+ "Generating sharing keys" : "Генеришем кључеве за дељење",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Алат за лозинке скенира Ваше лозинке, израчунава просечно време да буду проваљене и приказује оне које су испод доње границе",
+ "Minimum password stength" : "Минимална јачина лозинке",
+ "Start scan" : "Почни скенирање",
+ "Result" : "Резултат",
+ "A total of {{scan_result}} weak credentials were found." : "Укупно {{scan_result}} слабих акредитива нађено.",
+ "Score" : "Резултат",
+ "Action" : "Радња",
+ "Search users…" : "Претражи кориснике…",
+ "Missing users? Only users that have vaults are shown." : "Недостаје неки корисник? Само корисници који имају сефове су приказани.",
+ "Cyphering" : "Шифрујем",
+ "Uploading" : "Отпремам",
+ "User" : "Корисник",
+ "Crypto time" : "Време шифровања",
+ "Total time spent encrypting" : "Укупно време проведено у шифровању",
+ "Read" : "Читање",
+ "Write" : "Писање",
+ "Files" : "Фајлови",
+ "Revisions" : "Ревизије",
+ "Pending" : "На чекању",
+ "Enable link sharing" : "Укључи дељење веза",
+ "Share until date" : "Дели до датума",
+ "Expire after views" : "Истиче након прегледа",
+ "Click \\\"Share\\\" first" : "Прво кликните „Дељење“",
+ "Show files" : "Прикажи фајлове",
+ "Details" : "Детаљи",
+ "Hide details" : "Сакриј детаље",
+ "Password score" : "Резултат лозинке",
+ "Cracking times" : "Време проваљивања",
+ "100 / hour" : "100/сат",
+ "Throttled online attack" : "Онлајн напад са задршкама",
+ "10 / second" : "10/секунду",
+ "Unthrottled online attack" : "Онлајн напад без задршки",
+ "10k / second" : "10k/секунду",
+ "Offline attack, slow hash, many cores" : "Напад ван везе, споро хеширање, много језгара",
+ "10B / second" : "10 милијарди/секунду",
+ "Offline attack, fast hash, many cores" : "Напад ван везе, брзо хеширање, много језгара",
+ "Match sequence" : "Поклапа се са секвенцом",
+ "See match sequence" : "Погледај секвенцу која се поклапа",
+ "Pattern" : "Узорак",
+ "Matched word" : "Поклопљена реч",
+ "Dictionary name" : "Име речника",
+ "Rank" : "Ранг",
+ "Reversed" : "Обрнуто",
+ "Guesses" : "Погађања",
+ "Base guesses" : "Основна погађања",
+ "Uppercase variations" : "Варијације са великим словима",
+ "l33t-variations" : "х4к3рск33 варијације",
+ "Showing revisions of" : "Приказујем ревизије од",
+ "Revision of" : "Ревизија од",
+ "by" : "од",
+ "No revisions found." : "Није пронађена ниједна ревизија.",
+ "Label" : "Ознака",
+ "Restore revision" : "Поврати ревизију",
+ "Delete revision" : "Обриши ревизију",
+ "Edit credential" : "Измени акредитив",
+ "Create new credential" : "Направи нови акредитив",
+ "Save" : "Сачувај",
+ "Cancel" : "Одустани",
+ "Settings" : "Поставке",
+ "Share credential {{credential}}" : "Подели акредитив {{credential}}",
+ "Unshare" : "Склони дељење",
+ "Showing deleted since" : "Приказујем обрисане од",
+ "Beginning" : "Почетка",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Приказујем {{number_filtered}} од {{credential_number}} акредитива",
+ "Search for credential…" : "Претражујем акредитиве…",
+ "Account" : "Налог",
+ "Password" : "Лозинка",
+ "OTP" : "OTP",
+ "E-mail" : "Адреса е-поште",
+ "URL" : "URL адреса",
+ "Notes" : "Белешке",
+ "Expiry time" : "Време истицања",
+ "Changed" : "Измењено",
+ "Created" : "Направљено",
+ "Edit" : "Измени",
+ "Delete" : "Обриши",
+ "Share" : "Подели",
+ "Recover" : "Опорави",
+ "Destroy" : "Уништи",
+ "Use regex" : "Користи регуларне изразе",
+ "You have incoming share requests." : "Имате захтев за дељење.",
+ "If you want to put the credential in another vault," : "Ако желите да ставите акредитиве у други сеф,",
+ "log out of this vault and log into the vault you want the shared credential in." : "одјавите се са овог сефа и пријавите се на сеф где желите да примите дељене акредитиве",
+ "Permissions" : "Дозволе",
+ "Received from" : "Примљено од",
+ "Date" : "Датум",
+ "Accept" : "Прихвати",
+ "Decline" : "Одбиј",
+ "You have {{session_time}} left before logout." : "Имате {{session_time}} пре него што будете одјављени.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Сеф је закључан на {{time}} зато што имате {{tries}} неуспешна покушаја!",
+ "Last accessed" : "Последње приступано",
+ "Never" : "Никад",
+ "No vaults found, why not create one?" : "Нема ниједан сеф, зашто да не направите један?",
+ "Password strength must be at least: {{strength}}" : "Јачина лозинке мора бити бар: {{strength}}",
+ "Please give your new vault a name." : "Дајте Вашем новом сефу име.",
+ "Repeat vault password" : "Поновите лозинку за сеф",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Ваши дељени кључеви ће имати јачину од 1024 бита, што можете променити касније у „Поставкама“.",
+ "Create vault" : "Направи сеф",
+ "Go back to vaults" : "Назад на сефове",
+ "Please input the password for" : "Унесите лозинку за",
+ "Set this vault as the default." : "Постави овај сеф као подразумевани.",
+ "Log into this vault automatically." : "Пријавите се на овај сеф аутоматски.",
+ "Log out of this vault automatically after: " : "Одјавите се са овог сефа аутоматски након:",
+ "Decrypt vault" : "Дешифруј сеф",
+ "Seems you lost the vault password and you're unable to log in." : "Изгледа да сте изгубили лозинку за сеф и не можете да се пријавите.",
+ "If you want this vault to be removed you can request that here." : "Ако желите да овај сеф буде уклоњен, можете то затражити овде.",
+ "An admin then accepts or declines the request" : "Администратор може да прихвати или одбије овај захтев",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Пошто администратор уништи овај сеф, сви акредитиви ће бити изгубљени",
+ "Reason for requesting deletion (optional):" : "Разлог за тражење брисања (опционо):",
+ "Request vault destruction" : "Захтевај уништење сефа",
+ "Yes, request an admin to destroy this vault" : "Да, захтевам од администратора да уништи овај сеф",
+ "Cancel destruction request" : "Одустани од захтева за уништењем",
+ "Vault destruction requested" : "Затражено уништење сефа",
+ "Request removed" : "Захтев уклоњен",
+ "Destruction request pending" : "Захтев за уништењем на чекању",
+ "Warning! Adding credentials over HTTP is insecure!" : "Упозорење! Додавање акредитива преко HTTP везе је несигурно!",
+ "Logged into {{vault_name}}" : "Пријављени на сеф {{vault_name}}",
+ "Change vault" : "Промени сеф",
+ "Deleted credentials" : "Обрисани акредитиви",
+ "Logout" : "Одјава",
+ "Donate" : "Донирајте",
+ "Someone has shared a credential with you." : "Неко је поделио акредитиве са Вама.",
+ "Click here to request it" : "Кликните овде да их захтевате",
+ "Loading…" : "Учитавање…",
+ "Awwhh… credential not found. Maybe it expired" : "Аргхх… акредитиви нису нађени. Можда су истекли",
+ "Error while saving field" : "Грешка приликом чувања поља",
+ "A Passman item has been created, modified or deleted" : "Ставка Менаџера Лозинки је направљена, измењена или обрисана",
+ "A Passman item has expired" : "Ставка Менаџера Лозинки је истекла",
+ "A Passman item has been shared" : "Ставка Менаџера Лозинки је подељена",
+ "A Passman item has been renamed" : "Ставка Менаџера Лозинки је преименована",
+ "%1$s has been created by %2$s" : "%2$s је направио %1$s",
+ "You created %1$s" : "Направили сте %1$s",
+ "%1$s has been updated by %2$s" : "%2$s је ажурирао %1$s",
+ "You updated %1$s" : "Ажурирали сте %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s је ревидирао %1$s на ревизију %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Вратили сте %1$s назад на ревизију %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s је преименовао %1$s на %2$s",
+ "You renamed %1$s to %2$s" : "Преименовали сте %1$s на %2$s",
+ "%1$s has been deleted by %2$s" : "%2$s је обрисао %1$s",
+ "You deleted %1$s" : "Обрисали сте %1$s",
+ "%1$s has been recovered by %2$s" : "%2$s је опоравио %1$s",
+ "You recovered %1$s" : "Опоравили сте %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%2$s је неповратно обрисао %1$s",
+ "You permanently deleted %1$s" : "Неповратно сте обрисали %1$s",
+ "The password of %1$s has expired, renew it now." : "Лозинка за %1$s је истекла, обновите је сада.",
+ "%1$s has been shared with %2$s" : "%1$s је подељено са %2$s",
+ "You received a share request for %1$s from %2$s" : "Примили сте захтев за дељење %1$s са %2$s",
+ "%s has been shared with a link" : "%s је подељено везом",
+ "Your credential \"%s\" expired, click here to update the credential." : "Ваш акредитив \"%s\" је истекао, кликните овде да ажурирате акредитив.",
+ "Remind me later" : "Подсети ме касније",
+ "Ignore" : "Игнориши",
+ "%s shared \"%s\" with you. Click here to accept" : "%s је поделио \"%s\" са Вама. Кликните овде да прихватите",
+ "%s has declined your share request for \"%s\"." : "%s је одбио Ваш захтев за дељење \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s је прихватио Ваш захтев за дељење \"%s\".",
+ "Passman" : "Менаџер Лозинки",
+ "Passman is a full featured password manager." : "Passman је менаџер лозинки са заокруженим функционалностима.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman је менаџер лозинку са заокруженим скупом функционалности.\nФункционалности:\n- Сефови\n- Кључ од сефа се никад не шаље на сервер\n- Додатак веб читачу за лакше приступање лозинкама\n- Андроид апликација за мобилни приступ\n- Акредитиви су шифровани на клијенту са 256битним AES-ом\n- Акредитиви су шифровани на серверу са 256битном AES-ом\n- Могућност додавања произвољних поља у акредитиве\n- Уграђен генератор једнократне шифре (OTP)\n- Анализатор лозинке\n- Дељење лозинки интерно или преко везе на безбедни начин\n- Увоз из разних других менаџера лозинки (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nЗа демо апликације, посетите [https://demo.passman.cc](https://demo.passman.cc)",
+ "Unable to get version info" : "Не могу да дохватим информације о верзији",
+ "Passman Settings" : "Поставке Менаџера Лозинки",
+ "GitHub version:" : "GitHub vерзија:",
+ "A newer version of Passman is available" : "Доступна је нова верзија Менаџера Лозинки",
+ "Password sharing" : "Дељење лозинки",
+ "Credential mover" : "Селидба акредитива",
+ "Vault destruction requests" : "Захтеви за уништењем сефа",
+ "Check for new versions" : "Провери да ли има нових верзија",
+ "Enable HTTPS check" : "Укључи провери за HTTPS везом",
+ "Disable context menu" : "Искључи контекстни мени",
+ "Disable JavaScript debugger" : "Искључи ЈаваСкрипт дебагер",
+ "Allow users on this server to share passwords with a link" : "Дозвољава корисницима овог сервера да деле лозинке преко везе",
+ "Allow users on this server to share passwords with other users" : "Дозвољава корисницима овог сервера да деле лозинке са осталим корисницима",
+ "Move credentials from one account to another" : "Пресели акредитиве са једног налога на други",
+ "Source account" : "Изворни налог",
+ "Destination account" : "Одредишни налог",
+ "Credentials moved!" : "Акредитиви пресељени!",
+ "Requests to destroy vault" : "Захтеви за уништење сефа",
+ "Request ID" : "Идентификација захтева",
+ "Requested by" : "Захтевао",
+ "Reason" : "Разлог",
+ "Click here to request\n\t\t\t\t\tit" : "Кликните овде да их\n\t\t\t\t\tзахтевате",
+ "Loading&hellip;" : "Учитавам&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Аргхх… акредитиви нису нађени. Можда су истекли?",
+ "Expires:" : "Истиче:",
+ "Connection to server lost" : "Веза са сервером изгубљена",
+ "Problem loading page, reloading in 5 seconds" : "Грешка приликом учитавања стране, покушавам поново за 5 секунди",
+ "Saving..." : "Чувам...",
+ "Dismiss" : "Одбаци",
+ "seconds ago" : "пре пар секунди"
+},
+"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/l10n/sr.json b/l10n/sr.json
new file mode 100644
index 00000000..c2c175ba
--- /dev/null
+++ b/l10n/sr.json
@@ -0,0 +1,334 @@
+{ "translations": {
+ "Passwords" : "Лозинке",
+ "Generating sharing keys ( %s / 2)" : "Генеришем дељене кључеве (%s/2)",
+ "Incorrect vault password!" : "Неисправна лозинка за сеф!",
+ "Passwords do not match" : "Лозинке се не поклапају",
+ "General" : "Опште",
+ "Custom Fields" : "Произвољна поља",
+ "Please fill in a label." : "Унесите ознаку.",
+ "Please fill in a value." : "Унесите вредност.",
+ "Error loading file" : "Грешка при учитавању фајла",
+ "An error occurred during decryption" : "Десила се грешка приликом дешифровања",
+ "Credential created!" : "Направљени акредитиви!",
+ "Credential deleted" : "Акредитиви обрисани",
+ "Credential updated" : "Акредитиви освежени",
+ "Credential recovered" : "Акредитиви опорављени",
+ "Credential destroyed" : "Акредитиви уништени",
+ "Error downloading file, you probably have insufficient permissions" : "Грешка приликом скидања фајла, вероватно немате довољно привилегија",
+ "Invalid QR code" : "Неисправан QR код",
+ "Starting export" : "Почињем извожење",
+ "Decrypting credentials" : "Дешифрујем акредитиве",
+ "Done" : "Готово",
+ "File read." : "Фајл прочитан.",
+ "Proceed with the following steps to import your file" : "Наставите са следећим корацима да увезете фајл",
+ "Skipping unlabeled credential" : "Прескачем неозначене акредитиве",
+ "Adding {{credential}}" : "Додајем {{credential}}",
+ "Added {{credential}}" : "{{credential}} додат",
+ "Skipping credential, missing label on line {{line}}" : "Прескачем акредитив, недостаје ознака на линији {{line}}",
+ "Parsed {{num}} credentials, starting to import" : "Испарсирано {{num}} акредитива, почињем увоз",
+ "Importing" : "Увожење",
+ "Start import" : "Почни увоз",
+ "Select CSV file" : "Одабери CSV фајл",
+ "Parsed {{rows}} lines from CSV file" : "Парсирано {{rows}} линија из CSV фајла",
+ "Skip first row" : "Прескочи први ред",
+ "You need to assign the label field before you can start the import." : "Морате да додалите поље ознаке пре него што започнете увоз.",
+ "The first 5 lines of the CSV are shown." : "Приказано је првих 5 линија CSV фајла.",
+ "Assign the proper fields to each column." : "Доделите исправна поља свакој колони.",
+ "Example of imported credential" : "Пример увезеног акредитива",
+ "Missing an importer? Try it with the generic CSV importer." : "Фали вам увозник? Пробајте генерички CSV увозник.",
+ "Go back to importers." : "Назад на увознике.",
+ "Revision deleted" : "Ревизија избрисана",
+ "Revision restored" : "Ревизија повраћена",
+ "Save in Passman" : "Сачувај у Менаџеру Лозинки",
+ "Settings saved" : "Поставке сачуване",
+ "General settings" : "Опште поставке",
+ "Password audit" : "Надзор лозинки",
+ "Password settings" : "Поставке лозинки",
+ "Import credentials" : "Увези акредитиве",
+ "Export credentials" : "Извези акредитиве",
+ "Sharing" : "Дељење",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Да ли ставрно желите да изађете? Овим ћете уништити све Ваше акредитиве",
+ "Old password field incorrect!" : "Поље старе лозинке је неисправно!",
+ "New password does not match!" : "Нова лозинка се не поклапа!",
+ "Please log in with your new vault password" : "Улогујте се са Вашом новом лозинком за сеф",
+ "Share with users and groups" : "Дели са корисницима и групама",
+ "Share link" : "Веза дељења",
+ "Are you sure you want to leave? This will corrupt this credential" : "Да ли ставрно желите да изађете? Овим ћете оштетити овај акредитив",
+ "Credential unshared" : "Акредитив није више дељен",
+ "Credential shared" : "Акредитив подељен",
+ "Saved!" : "Сачувано!",
+ "Poor" : "Лоша",
+ "Weak" : "Слаба",
+ "Good" : "Добра",
+ "Strong" : "Јака",
+ "Toggle visibility" : "Укључи/искључи видљивост",
+ "Copy to clipboard" : "Копирај у оставу",
+ "Copied to clipboard!" : "Копирано у оставу!",
+ "Generate password" : "Генериши лозинку",
+ "Copy password to clipboard" : "Копирај лозинку у оставу",
+ "Password copied to clipboard!" : "Лозинка копирана у оставу!",
+ "Complete" : "Завршено",
+ "Username" : "Корисничко име",
+ "Repeat password" : "Поновите лозинку",
+ "Add tag" : "Додајте ознаку",
+ "Pick an icon" : "Одаберите икону",
+ "Use this icon" : "Користи ову икону",
+ "Selected icon" : "Одабрана икона",
+ "Field label" : "Поље ознаке",
+ "Field value" : "Поље вредности",
+ "Choose a file" : "Одаберите фајл",
+ "Text" : "Текст",
+ "File" : "Фајл",
+ "Add" : "Додај",
+ "Value" : "Вредност",
+ "Type" : "Тип",
+ "Actions" : "Радње",
+ "Empty" : "Празно",
+ "Filename" : "Име фајла",
+ "Upload date" : "Датум отпремања",
+ "Size" : "Величина",
+ "Upload or enter your OTP secret" : "Отпремите или унесите Вашу OTP тајну",
+ "Current OTP settings" : "Тренутне OTP поставке",
+ "Issuer" : "Издавач",
+ "Secret" : "Тајна",
+ "Expiration date" : "Датум истицања",
+ "No expiration date set" : "Није постављен датум истека",
+ "Renew interval" : "Интервал обнављања",
+ "Disabled" : "Искључено",
+ "Day(s)" : "Дан(и)",
+ "Week(s)" : "Недеља(е)",
+ "Month(s)" : "Месец(и)",
+ "Year(s)" : "Година(е)",
+ "Password generation settings" : "Поставке генерисања лозинки",
+ "Password length" : "Дужина лозинке",
+ "Minimum amount of digits" : "Минимални број цифара",
+ "Use uppercase letters" : "Користи велика слова",
+ "Use lowercase letters" : "Користи мала слова",
+ "Use numbers" : "Користи бројеве",
+ "Use special characters" : "Користи специјалне карактере",
+ "Avoid ambiguous characters" : "Избегавај двосмислене карактере",
+ "Require every character type" : "Захтевај све типове карактера",
+ "Export type" : "Тип извоза",
+ "Export" : "Извези",
+ "Enter vault password to confirm export." : "Унесите лозинку за сеф да потврдите извоз.",
+ "Rename vault" : "Преименуј сеф",
+ "New vault name" : "Ново име сефа",
+ "Change" : "Измени",
+ "Change vault key" : "Измени кључ сефа",
+ "Old vault password" : "Стара лозинка сефа",
+ "New vault password" : "Нова лозинка сефа",
+ "Repeat new vault password" : "Поновите нову лозинку сефа",
+ "Please wait your vault is being updated, do not leave this page." : "Сачекајте док се сеф ажурира, не напуштајте ову страну.",
+ "Processing" : "Обрађујем",
+ "Total progress" : "Укупни напредак",
+ "About Passman" : "О Менаџеру Лозинки",
+ "Version" : "Верзија",
+ "Donate to support development" : "Донирајте да подржите развој",
+ "Bookmarklet" : "Забелешка",
+ "Save your passwords with one click." : "Сачувајте Ваше лозинке са једним кликом.",
+ "Drag below button to your bookmark toolbar." : "Одвуците дугме испод у Вашу траку са забелешкама у веб читачу.",
+ "Delete vault" : "Избриши сеф",
+ "Vault password" : "Лозинка сефа",
+ "This process is irreversible" : "Овај процес је неповратан",
+ "Delete my precious passwords" : "Избриши моје драгоцене лозинке",
+ "Deleting {{password}}…" : "Бришем {{password}}…",
+ "Yes, delete my precious passwords" : "Да, избриши моје драгоцене лозинке",
+ "Import type" : "Тип увоза",
+ "Import" : "Увоз",
+ "Read progress" : "Напредак читања",
+ "Upload progress" : "Напредак отпремања",
+ "Private Key" : "Тајни кључ",
+ "Public key" : "Јавни кључ",
+ "Key size" : "Величина кључа",
+ "Save keys" : "Сними кључеве",
+ "Generate sharing keys" : "Генериши кључеве за дељење",
+ "Generating sharing keys" : "Генеришем кључеве за дељење",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Алат за лозинке скенира Ваше лозинке, израчунава просечно време да буду проваљене и приказује оне које су испод доње границе",
+ "Minimum password stength" : "Минимална јачина лозинке",
+ "Start scan" : "Почни скенирање",
+ "Result" : "Резултат",
+ "A total of {{scan_result}} weak credentials were found." : "Укупно {{scan_result}} слабих акредитива нађено.",
+ "Score" : "Резултат",
+ "Action" : "Радња",
+ "Search users…" : "Претражи кориснике…",
+ "Missing users? Only users that have vaults are shown." : "Недостаје неки корисник? Само корисници који имају сефове су приказани.",
+ "Cyphering" : "Шифрујем",
+ "Uploading" : "Отпремам",
+ "User" : "Корисник",
+ "Crypto time" : "Време шифровања",
+ "Total time spent encrypting" : "Укупно време проведено у шифровању",
+ "Read" : "Читање",
+ "Write" : "Писање",
+ "Files" : "Фајлови",
+ "Revisions" : "Ревизије",
+ "Pending" : "На чекању",
+ "Enable link sharing" : "Укључи дељење веза",
+ "Share until date" : "Дели до датума",
+ "Expire after views" : "Истиче након прегледа",
+ "Click \\\"Share\\\" first" : "Прво кликните „Дељење“",
+ "Show files" : "Прикажи фајлове",
+ "Details" : "Детаљи",
+ "Hide details" : "Сакриј детаље",
+ "Password score" : "Резултат лозинке",
+ "Cracking times" : "Време проваљивања",
+ "100 / hour" : "100/сат",
+ "Throttled online attack" : "Онлајн напад са задршкама",
+ "10 / second" : "10/секунду",
+ "Unthrottled online attack" : "Онлајн напад без задршки",
+ "10k / second" : "10k/секунду",
+ "Offline attack, slow hash, many cores" : "Напад ван везе, споро хеширање, много језгара",
+ "10B / second" : "10 милијарди/секунду",
+ "Offline attack, fast hash, many cores" : "Напад ван везе, брзо хеширање, много језгара",
+ "Match sequence" : "Поклапа се са секвенцом",
+ "See match sequence" : "Погледај секвенцу која се поклапа",
+ "Pattern" : "Узорак",
+ "Matched word" : "Поклопљена реч",
+ "Dictionary name" : "Име речника",
+ "Rank" : "Ранг",
+ "Reversed" : "Обрнуто",
+ "Guesses" : "Погађања",
+ "Base guesses" : "Основна погађања",
+ "Uppercase variations" : "Варијације са великим словима",
+ "l33t-variations" : "х4к3рск33 варијације",
+ "Showing revisions of" : "Приказујем ревизије од",
+ "Revision of" : "Ревизија од",
+ "by" : "од",
+ "No revisions found." : "Није пронађена ниједна ревизија.",
+ "Label" : "Ознака",
+ "Restore revision" : "Поврати ревизију",
+ "Delete revision" : "Обриши ревизију",
+ "Edit credential" : "Измени акредитив",
+ "Create new credential" : "Направи нови акредитив",
+ "Save" : "Сачувај",
+ "Cancel" : "Одустани",
+ "Settings" : "Поставке",
+ "Share credential {{credential}}" : "Подели акредитив {{credential}}",
+ "Unshare" : "Склони дељење",
+ "Showing deleted since" : "Приказујем обрисане од",
+ "Beginning" : "Почетка",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "Приказујем {{number_filtered}} од {{credential_number}} акредитива",
+ "Search for credential…" : "Претражујем акредитиве…",
+ "Account" : "Налог",
+ "Password" : "Лозинка",
+ "OTP" : "OTP",
+ "E-mail" : "Адреса е-поште",
+ "URL" : "URL адреса",
+ "Notes" : "Белешке",
+ "Expiry time" : "Време истицања",
+ "Changed" : "Измењено",
+ "Created" : "Направљено",
+ "Edit" : "Измени",
+ "Delete" : "Обриши",
+ "Share" : "Подели",
+ "Recover" : "Опорави",
+ "Destroy" : "Уништи",
+ "Use regex" : "Користи регуларне изразе",
+ "You have incoming share requests." : "Имате захтев за дељење.",
+ "If you want to put the credential in another vault," : "Ако желите да ставите акредитиве у други сеф,",
+ "log out of this vault and log into the vault you want the shared credential in." : "одјавите се са овог сефа и пријавите се на сеф где желите да примите дељене акредитиве",
+ "Permissions" : "Дозволе",
+ "Received from" : "Примљено од",
+ "Date" : "Датум",
+ "Accept" : "Прихвати",
+ "Decline" : "Одбиј",
+ "You have {{session_time}} left before logout." : "Имате {{session_time}} пре него што будете одјављени.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "Сеф је закључан на {{time}} зато што имате {{tries}} неуспешна покушаја!",
+ "Last accessed" : "Последње приступано",
+ "Never" : "Никад",
+ "No vaults found, why not create one?" : "Нема ниједан сеф, зашто да не направите један?",
+ "Password strength must be at least: {{strength}}" : "Јачина лозинке мора бити бар: {{strength}}",
+ "Please give your new vault a name." : "Дајте Вашем новом сефу име.",
+ "Repeat vault password" : "Поновите лозинку за сеф",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Ваши дељени кључеви ће имати јачину од 1024 бита, што можете променити касније у „Поставкама“.",
+ "Create vault" : "Направи сеф",
+ "Go back to vaults" : "Назад на сефове",
+ "Please input the password for" : "Унесите лозинку за",
+ "Set this vault as the default." : "Постави овај сеф као подразумевани.",
+ "Log into this vault automatically." : "Пријавите се на овај сеф аутоматски.",
+ "Log out of this vault automatically after: " : "Одјавите се са овог сефа аутоматски након:",
+ "Decrypt vault" : "Дешифруј сеф",
+ "Seems you lost the vault password and you're unable to log in." : "Изгледа да сте изгубили лозинку за сеф и не можете да се пријавите.",
+ "If you want this vault to be removed you can request that here." : "Ако желите да овај сеф буде уклоњен, можете то затражити овде.",
+ "An admin then accepts or declines the request" : "Администратор може да прихвати или одбије овај захтев",
+ "After an admin destroys this vault, all credentials in it will be lost" : "Пошто администратор уништи овај сеф, сви акредитиви ће бити изгубљени",
+ "Reason for requesting deletion (optional):" : "Разлог за тражење брисања (опционо):",
+ "Request vault destruction" : "Захтевај уништење сефа",
+ "Yes, request an admin to destroy this vault" : "Да, захтевам од администратора да уништи овај сеф",
+ "Cancel destruction request" : "Одустани од захтева за уништењем",
+ "Vault destruction requested" : "Затражено уништење сефа",
+ "Request removed" : "Захтев уклоњен",
+ "Destruction request pending" : "Захтев за уништењем на чекању",
+ "Warning! Adding credentials over HTTP is insecure!" : "Упозорење! Додавање акредитива преко HTTP везе је несигурно!",
+ "Logged into {{vault_name}}" : "Пријављени на сеф {{vault_name}}",
+ "Change vault" : "Промени сеф",
+ "Deleted credentials" : "Обрисани акредитиви",
+ "Logout" : "Одјава",
+ "Donate" : "Донирајте",
+ "Someone has shared a credential with you." : "Неко је поделио акредитиве са Вама.",
+ "Click here to request it" : "Кликните овде да их захтевате",
+ "Loading…" : "Учитавање…",
+ "Awwhh… credential not found. Maybe it expired" : "Аргхх… акредитиви нису нађени. Можда су истекли",
+ "Error while saving field" : "Грешка приликом чувања поља",
+ "A Passman item has been created, modified or deleted" : "Ставка Менаџера Лозинки је направљена, измењена или обрисана",
+ "A Passman item has expired" : "Ставка Менаџера Лозинки је истекла",
+ "A Passman item has been shared" : "Ставка Менаџера Лозинки је подељена",
+ "A Passman item has been renamed" : "Ставка Менаџера Лозинки је преименована",
+ "%1$s has been created by %2$s" : "%2$s је направио %1$s",
+ "You created %1$s" : "Направили сте %1$s",
+ "%1$s has been updated by %2$s" : "%2$s је ажурирао %1$s",
+ "You updated %1$s" : "Ажурирали сте %1$s",
+ "%2$s has revised %1$s to the revision of %3$s" : "%2$s је ревидирао %1$s на ревизију %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "Вратили сте %1$s назад на ревизију %3$s",
+ "%3$s has renamed %1$s to %2$s" : "%3$s је преименовао %1$s на %2$s",
+ "You renamed %1$s to %2$s" : "Преименовали сте %1$s на %2$s",
+ "%1$s has been deleted by %2$s" : "%2$s је обрисао %1$s",
+ "You deleted %1$s" : "Обрисали сте %1$s",
+ "%1$s has been recovered by %2$s" : "%2$s је опоравио %1$s",
+ "You recovered %1$s" : "Опоравили сте %1$s",
+ "%1$s has been permanently deleted by %2$s" : "%2$s је неповратно обрисао %1$s",
+ "You permanently deleted %1$s" : "Неповратно сте обрисали %1$s",
+ "The password of %1$s has expired, renew it now." : "Лозинка за %1$s је истекла, обновите је сада.",
+ "%1$s has been shared with %2$s" : "%1$s је подељено са %2$s",
+ "You received a share request for %1$s from %2$s" : "Примили сте захтев за дељење %1$s са %2$s",
+ "%s has been shared with a link" : "%s је подељено везом",
+ "Your credential \"%s\" expired, click here to update the credential." : "Ваш акредитив \"%s\" је истекао, кликните овде да ажурирате акредитив.",
+ "Remind me later" : "Подсети ме касније",
+ "Ignore" : "Игнориши",
+ "%s shared \"%s\" with you. Click here to accept" : "%s је поделио \"%s\" са Вама. Кликните овде да прихватите",
+ "%s has declined your share request for \"%s\"." : "%s је одбио Ваш захтев за дељење \"%s\".",
+ "%s has accepted your share request for \"%s\"." : "%s је прихватио Ваш захтев за дељење \"%s\".",
+ "Passman" : "Менаџер Лозинки",
+ "Passman is a full featured password manager." : "Passman је менаџер лозинки са заокруженим функционалностима.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman је менаџер лозинку са заокруженим скупом функционалности.\nФункционалности:\n- Сефови\n- Кључ од сефа се никад не шаље на сервер\n- Додатак веб читачу за лакше приступање лозинкама\n- Андроид апликација за мобилни приступ\n- Акредитиви су шифровани на клијенту са 256битним AES-ом\n- Акредитиви су шифровани на серверу са 256битном AES-ом\n- Могућност додавања произвољних поља у акредитиве\n- Уграђен генератор једнократне шифре (OTP)\n- Анализатор лозинке\n- Дељење лозинки интерно или преко везе на безбедни начин\n- Увоз из разних других менаџера лозинки (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nЗа демо апликације, посетите [https://demo.passman.cc](https://demo.passman.cc)",
+ "Unable to get version info" : "Не могу да дохватим информације о верзији",
+ "Passman Settings" : "Поставке Менаџера Лозинки",
+ "GitHub version:" : "GitHub vерзија:",
+ "A newer version of Passman is available" : "Доступна је нова верзија Менаџера Лозинки",
+ "Password sharing" : "Дељење лозинки",
+ "Credential mover" : "Селидба акредитива",
+ "Vault destruction requests" : "Захтеви за уништењем сефа",
+ "Check for new versions" : "Провери да ли има нових верзија",
+ "Enable HTTPS check" : "Укључи провери за HTTPS везом",
+ "Disable context menu" : "Искључи контекстни мени",
+ "Disable JavaScript debugger" : "Искључи ЈаваСкрипт дебагер",
+ "Allow users on this server to share passwords with a link" : "Дозвољава корисницима овог сервера да деле лозинке преко везе",
+ "Allow users on this server to share passwords with other users" : "Дозвољава корисницима овог сервера да деле лозинке са осталим корисницима",
+ "Move credentials from one account to another" : "Пресели акредитиве са једног налога на други",
+ "Source account" : "Изворни налог",
+ "Destination account" : "Одредишни налог",
+ "Credentials moved!" : "Акредитиви пресељени!",
+ "Requests to destroy vault" : "Захтеви за уништење сефа",
+ "Request ID" : "Идентификација захтева",
+ "Requested by" : "Захтевао",
+ "Reason" : "Разлог",
+ "Click here to request\n\t\t\t\t\tit" : "Кликните овде да их\n\t\t\t\t\tзахтевате",
+ "Loading&hellip;" : "Учитавам&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Аргхх… акредитиви нису нађени. Можда су истекли?",
+ "Expires:" : "Истиче:",
+ "Connection to server lost" : "Веза са сервером изгубљена",
+ "Problem loading page, reloading in 5 seconds" : "Грешка приликом учитавања стране, покушавам поново за 5 секунди",
+ "Saving..." : "Чувам...",
+ "Dismiss" : "Одбаци",
+ "seconds ago" : "пре пар секунди"
+},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
+} \ No newline at end of file
diff --git a/l10n/sv.js b/l10n/sv.js
index 1f38d2fa..fdb1dfc8 100644
--- a/l10n/sv.js
+++ b/l10n/sv.js
@@ -2,22 +2,25 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Lösenord",
- "Generating sharing keys ( %step / 2)" : "Genererar delningsnycklar ( %step / 2)",
- "Incorrect vault password!" : "Felaktigt valv-lösenord!",
+ "Generating sharing keys ( %s / 2)" : "Genererar delningsnycklar ( %s / 2)",
+ "Incorrect vault password!" : "Felaktigt valvlösenord!",
"Passwords do not match" : "Lösenorden matchar inte",
"General" : "Allmänt",
"Custom Fields" : "Anpassade Fält",
+ "Please fill in a label." : "Var god fyll i en etikett.",
+ "Please fill in a value." : "Var god fyll i ett värde.",
"Error loading file" : "Fel vid inläsning av fil",
+ "An error occurred during decryption" : "Ett fel inträffade under krypteringen",
"Credential created!" : "Uppgifter skapade!",
"Credential deleted" : "Uppgifterna borttagna",
"Credential updated" : "Uppgifterna uppdaterade",
- "Credential recovered" : "Uppgifterna åtställda",
+ "Credential recovered" : "Uppgifterna återställda",
"Credential destroyed" : "Uppgifterna förstörda",
"Invalid QR code" : "Ogiltig QR-kod",
"Starting export" : "Påbörjar exportering",
"Decrypting credentials" : "Dekrypterar uppgifterna",
"Done" : "Klar",
- "Credential has no label, skipping" : "Uppgifterna saknar etikett, skippar",
+ "Proceed with the following steps to import your file" : "Utför följande steg för att importera din fil",
"Adding {{credential}}" : "Lägger till {{credential}}",
"Added {{credential}}" : "La till {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Hoppar över uppgifterna, etikett saknas på rad {{line}}",
@@ -25,19 +28,27 @@ OC.L10N.register(
"Importing" : "Importerar",
"Start import" : "Påbörja importering",
"Select CSV file" : "Välj CSV-fil",
+ "Parsed {{rows}} lines from CSV file" : "Tolkade {{rows}} rader från CSV-fil",
"Skip first row" : "Hoppa över första raden",
"You need to assign the label field before you can start the import." : "Du måste fylla i namnfältet innan du kan importera",
- "Assign the proper fields to each column." : "Ange rätt fält till varje kolumm.",
+ "The first 5 lines of the CSV are shown." : "De första 5 raderna av CSV'n visas.",
+ "Assign the proper fields to each column." : "Ange rätt fält till varje kolumn.",
+ "Example of imported credential" : "Exempel av importerade uppgifter",
+ "Missing an importer? Try it with the generic CSV importer." : "Saknas en importerare? Testa med den generella CSV-importeraren.",
"Go back to importers." : "Gå tillbaka till importering.",
"Revision deleted" : "Granskning raderad",
"Revision restored" : "Granskning återställd",
+ "Save in Passman" : "Spara i Passman",
"Settings saved" : "Inställningar sparade",
"General settings" : "Allmänna inställningar",
+ "Password audit" : "Lösenordsgranskning",
"Password settings" : "Lösenordsinställningar",
"Import credentials" : "Importera uppgifter",
"Export credentials" : "Exportera uppgifter",
"Sharing" : "Delar",
- "Your old password is incorrect!" : "Ditt gamla lösenord är fel!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Är du säker på att du vill lämna? Detta kommer förstöra alla dina uppgifter",
+ "New password does not match!" : "Nytt lösenord matchar inte!",
+ "Please log in with your new vault password" : "Var god logga in med ditt nya valvlösenord",
"Share with users and groups" : "Dela med användare och grupper",
"Share link" : "Dela länk",
"Are you sure you want to leave? This will corrupt this credential" : "Är du säker att du vill lämna? Detta kommer att fördärva uppgifterna",
@@ -57,6 +68,10 @@ OC.L10N.register(
"Complete" : "Färdigt",
"Username" : "Användarnamn",
"Repeat password" : "Repetera lösenord",
+ "Add tag" : "Lägg till tagg",
+ "Pick an icon" : "Välj en ikon",
+ "Use this icon" : "Använd denna ikon",
+ "Selected icon" : "Vald ikon",
"Field label" : "Fältetikett",
"Field value" : "Fältvärde",
"Choose a file" : "Välj en fil",
@@ -71,9 +86,11 @@ OC.L10N.register(
"Upload date" : "Uppladdningsdatum",
"Size" : "Storlek",
"Upload or enter your OTP secret" : "Ladda upp eller ange din OTP-hemlighet",
- "Current OTP settings" : "Nuvarande OTP-inställningar",
+ "Current OTP settings" : "Nuvarande inställningar för engångslösenord",
"Issuer" : "Utfärdare",
"Secret" : "Hemlighet",
+ "Expiration date" : "Utgångsdatum",
+ "No expiration date set" : "Inget utgångsdatum satt",
"Renew interval" : "Förnya intervall",
"Disabled" : "Inaktiverad",
"Day(s)" : "Dag(ar)",
@@ -95,9 +112,10 @@ OC.L10N.register(
"Rename vault" : "Döp om valvet",
"New vault name" : "Nytt namn på valvet",
"Change" : "Ändra",
- "Change vault key" : "Ändra valv-nyckel",
- "Old vault password" : "Gammalt valv-lösenord",
- "New vault password" : "Nytt valv-lösenord",
+ "Change vault key" : "Ändra valvnyckel",
+ "Old vault password" : "Gammalt valvlösenord",
+ "New vault password" : "Nytt valvlösenord",
+ "Repeat new vault password" : "Repetera nytt valvlösenord",
"Please wait your vault is being updated, do not leave this page." : "Vänligen vänta, ditt valv håller på att uppdateras. Lämna inte denna sida!",
"Processing" : "Bearbetar",
"Total progress" : "Total framgång",
@@ -105,12 +123,12 @@ OC.L10N.register(
"Version" : "Version",
"Donate to support development" : "Donera för att stödja utvecklingen",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Spara dina lösenord med 1 klick!",
"Drag below button to your bookmark toolbar." : "Dra knappen nedan till dina bokmärken",
"Delete vault" : "Radera valv",
- "Vault password" : "Valv-lösenord",
+ "Vault password" : "Valvlösenord",
"This process is irreversible" : "Denna process kan inte återkallas",
"Delete my precious passwords" : "Radera mina lösenord",
+ "Deleting {{password}}…" : "Tar bort {{password}}…",
"Yes, delete my precious passwords" : "Ja, radera mina lösenord",
"Import type" : "Importeringstyp",
"Import" : "Importera",
@@ -122,19 +140,18 @@ OC.L10N.register(
"Save keys" : "Spara nycklar",
"Generate sharing keys" : "Generera delningsnycklar",
"Generating sharing keys" : "Genererar delningsnycklar",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Lösenordsverktyget kommer att skanna ditt lösenord, räkna ut genomsnittstiden för att knäcka det och lista de som är under tröskeln",
"Minimum password stength" : "Minsta lösenordsstyrka",
"Start scan" : "Påbörja skanning",
"Result" : "Resultat",
"A total of {{scan_result}} weak credentials were found." : "Totalt {{scan_result}} svaga lösenord hittades.",
"Score" : "Poäng",
"Action" : "Action",
+ "Search users…" : "Sök användare...",
"Missing users? Only users that have vaults are shown." : "Saknas användare? Endast användare med valv visas.",
"Cyphering" : "Cyphering",
"Uploading" : "Laddar upp",
"User" : "Användare",
"Crypto time" : "Krypteringstid",
- "Total time spent cyphering" : "Total tid för cyphering",
"Read" : "Läs",
"Write" : "Skriv",
"Files" : "Filer",
@@ -164,7 +181,7 @@ OC.L10N.register(
"Rank" : "Rang",
"Reversed" : "Reserverad",
"Guesses" : "Gissningar",
- "Base guesses" : "Huvudgissningar",
+ "Base guesses" : "Standardgissningar",
"Uppercase variations" : "Stor bokstavsvariationer",
"l33t-variations" : "l33t-variationer",
"Showing revisions of" : "Visar granskningar av",
@@ -182,13 +199,16 @@ OC.L10N.register(
"Share credential {{credential}}" : "Dela uppgifter {{credential}}",
"Unshare" : "Ta bort delning",
"Showing deleted since" : "Visa raderade sedan",
+ "Beginning" : "Påbörjar",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Visar {{number_filtered}} av {{credential_number}} uppgifter",
+ "Search for credential…" : "Söker efter uppgifter...",
"Account" : "Konto",
"Password" : "Lösenord",
"OTP" : "Engångslösenord",
"E-mail" : "E-post",
"URL" : "URL",
"Notes" : "Anteckningar",
+ "Expiry time" : "Utgångstid",
"Changed" : "Ändrat",
"Created" : "Skapat",
"Edit" : "Redigera",
@@ -198,6 +218,7 @@ OC.L10N.register(
"Destroy" : "Förstör",
"Use regex" : "Använd reguljära uttryck",
"You have incoming share requests." : "Du har inkommande delningsförfrågningar",
+ "If you want to put the credential in another vault," : "Om du vill lägga uppgifterna i ett annat valv,",
"Permissions" : "Behörigheter",
"Received from" : "Mottaget från",
"Date" : "Datum",
@@ -208,28 +229,36 @@ OC.L10N.register(
"Last accessed" : "Senast öppnad",
"Never" : "Aldrig",
"No vaults found, why not create one?" : "Inga valv hittades, varför inte skapa ett?",
- "Password strength must be at least: {{strength}}" : "Lösenordslängden måste vara minst: {{strength}}",
+ "Password strength must be at least: {{strength}}" : "Lösenordsstyrkan måste vara minst: {{strength}}",
"Please give your new vault a name." : "Ge ditt nya valv ett namn",
- "Repeat vault password" : "Repetera valv-lösenord",
+ "Repeat vault password" : "Repetera valvlösenord",
"Create vault" : "Skapa valv",
"Go back to vaults" : "Gå tillbaka till valv",
"Please input the password for" : "Vänligen ange lösenordet för",
+ "Set this vault as the default." : "Sätt detta valv som standard.",
"Log into this vault automatically." : "Logga in i detta valv automatiskt.",
+ "Log out of this vault automatically after: " : "Logga ut från detta valv automatiskt efteråt:",
"Decrypt vault" : "Dekryptera valv",
+ "Seems you lost the vault password and you're unable to log in." : "Verkar som du tappat bort ditt valvlösenord och inte kan logga in.",
"If you want this vault to be removed you can request that here." : "Om du vill att detta valv ska tas bort så kan du skicka en begäran om borttagning här.",
+ "An admin then accepts or declines the request" : "En administratör antingen accepterar eller avböjer begäran",
+ "After an admin destroys this vault, all credentials in it will be lost" : "När en administratör förstör detta valv kommer alla uppgifter i det förloras",
+ "Reason for requesting deletion (optional):" : "Anledning för efterfrågan av borttagning (frivillig):",
"Request vault destruction" : "Begär borttagning av valv",
"Yes, request an admin to destroy this vault" : "Ja, begär borttagning av detta valv",
"Cancel destruction request" : "Avbryt begäran om borttagning av valv",
"Vault destruction requested" : "Ny begäran om borttagning av valv",
"Request removed" : "Förfrågan borttagen",
"Destruction request pending" : "Begäran om borttagning av valv väntar på svar",
- "Logged in to {{vault_name}}" : "Inloggad på {{vault_name}}",
+ "Warning! Adding credentials over HTTP is insecure!" : "Varning! Att lägga till uppgifter över HTTP är osäkert!",
"Change vault" : "Byt valv",
"Deleted credentials" : "Radera uppgifter",
"Logout" : "Logga ut",
"Donate" : "Donera",
"Someone has shared a credential with you." : "Någon delade uppgifter med dig",
"Click here to request it" : "Klicka här för att begära det",
+ "Loading…" : "Laddar...",
+ "Awwhh… credential not found. Maybe it expired" : "Oops... uppgifter hittades inte. Kanske har de gått ut",
"Error while saving field" : "Fel vid sparande av fält",
"A Passman item has been created, modified or deleted" : "Ett Passman-objekt har skapats, ändrats eller raderats",
"A Passman item has expired" : "Ett Passman-objekt har utgått",
@@ -261,7 +290,8 @@ OC.L10N.register(
"%s has accepted your share request for \"%s\"." : "%s har accepterad din delningsförfrågan av \"%s\".",
"Passman" : "Passman",
"Unable to get version info" : "Det gick inte att hitta information om version",
- "Passman Settings" : "Passman Inställningar",
+ "Passman Settings" : "Passman-inställningar",
+ "GitHub version:" : "GitHub-version:",
"A newer version of Passman is available" : "Ny nyare version av Passman finns tillgänglig",
"Password sharing" : "Lösenordsdelning",
"Credential mover" : "Förflyttning av uppgifter",
@@ -269,6 +299,7 @@ OC.L10N.register(
"Check for new versions" : "Sök efter ny version",
"Enable HTTPS check" : "Aktivera HTTPS-kontroll",
"Disable context menu" : "Inaktivera snabbmenyn",
+ "Disable JavaScript debugger" : "Inaktivera JavaScript debugger",
"Allow users on this server to share passwords with a link" : "Tillåt användare på denna server att dela lösenord som en länk",
"Allow users on this server to share passwords with other users" : "Tillåt användare på denna server att dela lösenord med andra användare",
"Move credentials from one account to another" : "Flytta uppgifter från ett konto till ett annat",
@@ -279,6 +310,7 @@ OC.L10N.register(
"Request ID" : "Begär ID",
"Requested by" : "Begärd av",
"Reason" : "Anledning",
+ "Click here to request\n\t\t\t\t\tit" : "Klicka här för att efterfråga\n\t\t\t\t\tit",
"Connection to server lost" : "Anslutning till servern förlorad",
"Problem loading page, reloading in 5 seconds" : "Problem att ladda sidan, provar igen om 5 sekunder",
"Saving..." : "Sparar...",
diff --git a/l10n/sv.json b/l10n/sv.json
index 2ae04dcf..8be1dc8e 100644
--- a/l10n/sv.json
+++ b/l10n/sv.json
@@ -1,21 +1,24 @@
{ "translations": {
"Passwords" : "Lösenord",
- "Generating sharing keys ( %step / 2)" : "Genererar delningsnycklar ( %step / 2)",
- "Incorrect vault password!" : "Felaktigt valv-lösenord!",
+ "Generating sharing keys ( %s / 2)" : "Genererar delningsnycklar ( %s / 2)",
+ "Incorrect vault password!" : "Felaktigt valvlösenord!",
"Passwords do not match" : "Lösenorden matchar inte",
"General" : "Allmänt",
"Custom Fields" : "Anpassade Fält",
+ "Please fill in a label." : "Var god fyll i en etikett.",
+ "Please fill in a value." : "Var god fyll i ett värde.",
"Error loading file" : "Fel vid inläsning av fil",
+ "An error occurred during decryption" : "Ett fel inträffade under krypteringen",
"Credential created!" : "Uppgifter skapade!",
"Credential deleted" : "Uppgifterna borttagna",
"Credential updated" : "Uppgifterna uppdaterade",
- "Credential recovered" : "Uppgifterna åtställda",
+ "Credential recovered" : "Uppgifterna återställda",
"Credential destroyed" : "Uppgifterna förstörda",
"Invalid QR code" : "Ogiltig QR-kod",
"Starting export" : "Påbörjar exportering",
"Decrypting credentials" : "Dekrypterar uppgifterna",
"Done" : "Klar",
- "Credential has no label, skipping" : "Uppgifterna saknar etikett, skippar",
+ "Proceed with the following steps to import your file" : "Utför följande steg för att importera din fil",
"Adding {{credential}}" : "Lägger till {{credential}}",
"Added {{credential}}" : "La till {{credential}}",
"Skipping credential, missing label on line {{line}}" : "Hoppar över uppgifterna, etikett saknas på rad {{line}}",
@@ -23,19 +26,27 @@
"Importing" : "Importerar",
"Start import" : "Påbörja importering",
"Select CSV file" : "Välj CSV-fil",
+ "Parsed {{rows}} lines from CSV file" : "Tolkade {{rows}} rader från CSV-fil",
"Skip first row" : "Hoppa över första raden",
"You need to assign the label field before you can start the import." : "Du måste fylla i namnfältet innan du kan importera",
- "Assign the proper fields to each column." : "Ange rätt fält till varje kolumm.",
+ "The first 5 lines of the CSV are shown." : "De första 5 raderna av CSV'n visas.",
+ "Assign the proper fields to each column." : "Ange rätt fält till varje kolumn.",
+ "Example of imported credential" : "Exempel av importerade uppgifter",
+ "Missing an importer? Try it with the generic CSV importer." : "Saknas en importerare? Testa med den generella CSV-importeraren.",
"Go back to importers." : "Gå tillbaka till importering.",
"Revision deleted" : "Granskning raderad",
"Revision restored" : "Granskning återställd",
+ "Save in Passman" : "Spara i Passman",
"Settings saved" : "Inställningar sparade",
"General settings" : "Allmänna inställningar",
+ "Password audit" : "Lösenordsgranskning",
"Password settings" : "Lösenordsinställningar",
"Import credentials" : "Importera uppgifter",
"Export credentials" : "Exportera uppgifter",
"Sharing" : "Delar",
- "Your old password is incorrect!" : "Ditt gamla lösenord är fel!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "Är du säker på att du vill lämna? Detta kommer förstöra alla dina uppgifter",
+ "New password does not match!" : "Nytt lösenord matchar inte!",
+ "Please log in with your new vault password" : "Var god logga in med ditt nya valvlösenord",
"Share with users and groups" : "Dela med användare och grupper",
"Share link" : "Dela länk",
"Are you sure you want to leave? This will corrupt this credential" : "Är du säker att du vill lämna? Detta kommer att fördärva uppgifterna",
@@ -55,6 +66,10 @@
"Complete" : "Färdigt",
"Username" : "Användarnamn",
"Repeat password" : "Repetera lösenord",
+ "Add tag" : "Lägg till tagg",
+ "Pick an icon" : "Välj en ikon",
+ "Use this icon" : "Använd denna ikon",
+ "Selected icon" : "Vald ikon",
"Field label" : "Fältetikett",
"Field value" : "Fältvärde",
"Choose a file" : "Välj en fil",
@@ -69,9 +84,11 @@
"Upload date" : "Uppladdningsdatum",
"Size" : "Storlek",
"Upload or enter your OTP secret" : "Ladda upp eller ange din OTP-hemlighet",
- "Current OTP settings" : "Nuvarande OTP-inställningar",
+ "Current OTP settings" : "Nuvarande inställningar för engångslösenord",
"Issuer" : "Utfärdare",
"Secret" : "Hemlighet",
+ "Expiration date" : "Utgångsdatum",
+ "No expiration date set" : "Inget utgångsdatum satt",
"Renew interval" : "Förnya intervall",
"Disabled" : "Inaktiverad",
"Day(s)" : "Dag(ar)",
@@ -93,9 +110,10 @@
"Rename vault" : "Döp om valvet",
"New vault name" : "Nytt namn på valvet",
"Change" : "Ändra",
- "Change vault key" : "Ändra valv-nyckel",
- "Old vault password" : "Gammalt valv-lösenord",
- "New vault password" : "Nytt valv-lösenord",
+ "Change vault key" : "Ändra valvnyckel",
+ "Old vault password" : "Gammalt valvlösenord",
+ "New vault password" : "Nytt valvlösenord",
+ "Repeat new vault password" : "Repetera nytt valvlösenord",
"Please wait your vault is being updated, do not leave this page." : "Vänligen vänta, ditt valv håller på att uppdateras. Lämna inte denna sida!",
"Processing" : "Bearbetar",
"Total progress" : "Total framgång",
@@ -103,12 +121,12 @@
"Version" : "Version",
"Donate to support development" : "Donera för att stödja utvecklingen",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Spara dina lösenord med 1 klick!",
"Drag below button to your bookmark toolbar." : "Dra knappen nedan till dina bokmärken",
"Delete vault" : "Radera valv",
- "Vault password" : "Valv-lösenord",
+ "Vault password" : "Valvlösenord",
"This process is irreversible" : "Denna process kan inte återkallas",
"Delete my precious passwords" : "Radera mina lösenord",
+ "Deleting {{password}}…" : "Tar bort {{password}}…",
"Yes, delete my precious passwords" : "Ja, radera mina lösenord",
"Import type" : "Importeringstyp",
"Import" : "Importera",
@@ -120,19 +138,18 @@
"Save keys" : "Spara nycklar",
"Generate sharing keys" : "Generera delningsnycklar",
"Generating sharing keys" : "Genererar delningsnycklar",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Lösenordsverktyget kommer att skanna ditt lösenord, räkna ut genomsnittstiden för att knäcka det och lista de som är under tröskeln",
"Minimum password stength" : "Minsta lösenordsstyrka",
"Start scan" : "Påbörja skanning",
"Result" : "Resultat",
"A total of {{scan_result}} weak credentials were found." : "Totalt {{scan_result}} svaga lösenord hittades.",
"Score" : "Poäng",
"Action" : "Action",
+ "Search users…" : "Sök användare...",
"Missing users? Only users that have vaults are shown." : "Saknas användare? Endast användare med valv visas.",
"Cyphering" : "Cyphering",
"Uploading" : "Laddar upp",
"User" : "Användare",
"Crypto time" : "Krypteringstid",
- "Total time spent cyphering" : "Total tid för cyphering",
"Read" : "Läs",
"Write" : "Skriv",
"Files" : "Filer",
@@ -162,7 +179,7 @@
"Rank" : "Rang",
"Reversed" : "Reserverad",
"Guesses" : "Gissningar",
- "Base guesses" : "Huvudgissningar",
+ "Base guesses" : "Standardgissningar",
"Uppercase variations" : "Stor bokstavsvariationer",
"l33t-variations" : "l33t-variationer",
"Showing revisions of" : "Visar granskningar av",
@@ -180,13 +197,16 @@
"Share credential {{credential}}" : "Dela uppgifter {{credential}}",
"Unshare" : "Ta bort delning",
"Showing deleted since" : "Visa raderade sedan",
+ "Beginning" : "Påbörjar",
"Showing {{number_filtered}} of {{credential_number}} credentials" : "Visar {{number_filtered}} av {{credential_number}} uppgifter",
+ "Search for credential…" : "Söker efter uppgifter...",
"Account" : "Konto",
"Password" : "Lösenord",
"OTP" : "Engångslösenord",
"E-mail" : "E-post",
"URL" : "URL",
"Notes" : "Anteckningar",
+ "Expiry time" : "Utgångstid",
"Changed" : "Ändrat",
"Created" : "Skapat",
"Edit" : "Redigera",
@@ -196,6 +216,7 @@
"Destroy" : "Förstör",
"Use regex" : "Använd reguljära uttryck",
"You have incoming share requests." : "Du har inkommande delningsförfrågningar",
+ "If you want to put the credential in another vault," : "Om du vill lägga uppgifterna i ett annat valv,",
"Permissions" : "Behörigheter",
"Received from" : "Mottaget från",
"Date" : "Datum",
@@ -206,28 +227,36 @@
"Last accessed" : "Senast öppnad",
"Never" : "Aldrig",
"No vaults found, why not create one?" : "Inga valv hittades, varför inte skapa ett?",
- "Password strength must be at least: {{strength}}" : "Lösenordslängden måste vara minst: {{strength}}",
+ "Password strength must be at least: {{strength}}" : "Lösenordsstyrkan måste vara minst: {{strength}}",
"Please give your new vault a name." : "Ge ditt nya valv ett namn",
- "Repeat vault password" : "Repetera valv-lösenord",
+ "Repeat vault password" : "Repetera valvlösenord",
"Create vault" : "Skapa valv",
"Go back to vaults" : "Gå tillbaka till valv",
"Please input the password for" : "Vänligen ange lösenordet för",
+ "Set this vault as the default." : "Sätt detta valv som standard.",
"Log into this vault automatically." : "Logga in i detta valv automatiskt.",
+ "Log out of this vault automatically after: " : "Logga ut från detta valv automatiskt efteråt:",
"Decrypt vault" : "Dekryptera valv",
+ "Seems you lost the vault password and you're unable to log in." : "Verkar som du tappat bort ditt valvlösenord och inte kan logga in.",
"If you want this vault to be removed you can request that here." : "Om du vill att detta valv ska tas bort så kan du skicka en begäran om borttagning här.",
+ "An admin then accepts or declines the request" : "En administratör antingen accepterar eller avböjer begäran",
+ "After an admin destroys this vault, all credentials in it will be lost" : "När en administratör förstör detta valv kommer alla uppgifter i det förloras",
+ "Reason for requesting deletion (optional):" : "Anledning för efterfrågan av borttagning (frivillig):",
"Request vault destruction" : "Begär borttagning av valv",
"Yes, request an admin to destroy this vault" : "Ja, begär borttagning av detta valv",
"Cancel destruction request" : "Avbryt begäran om borttagning av valv",
"Vault destruction requested" : "Ny begäran om borttagning av valv",
"Request removed" : "Förfrågan borttagen",
"Destruction request pending" : "Begäran om borttagning av valv väntar på svar",
- "Logged in to {{vault_name}}" : "Inloggad på {{vault_name}}",
+ "Warning! Adding credentials over HTTP is insecure!" : "Varning! Att lägga till uppgifter över HTTP är osäkert!",
"Change vault" : "Byt valv",
"Deleted credentials" : "Radera uppgifter",
"Logout" : "Logga ut",
"Donate" : "Donera",
"Someone has shared a credential with you." : "Någon delade uppgifter med dig",
"Click here to request it" : "Klicka här för att begära det",
+ "Loading…" : "Laddar...",
+ "Awwhh… credential not found. Maybe it expired" : "Oops... uppgifter hittades inte. Kanske har de gått ut",
"Error while saving field" : "Fel vid sparande av fält",
"A Passman item has been created, modified or deleted" : "Ett Passman-objekt har skapats, ändrats eller raderats",
"A Passman item has expired" : "Ett Passman-objekt har utgått",
@@ -259,7 +288,8 @@
"%s has accepted your share request for \"%s\"." : "%s har accepterad din delningsförfrågan av \"%s\".",
"Passman" : "Passman",
"Unable to get version info" : "Det gick inte att hitta information om version",
- "Passman Settings" : "Passman Inställningar",
+ "Passman Settings" : "Passman-inställningar",
+ "GitHub version:" : "GitHub-version:",
"A newer version of Passman is available" : "Ny nyare version av Passman finns tillgänglig",
"Password sharing" : "Lösenordsdelning",
"Credential mover" : "Förflyttning av uppgifter",
@@ -267,6 +297,7 @@
"Check for new versions" : "Sök efter ny version",
"Enable HTTPS check" : "Aktivera HTTPS-kontroll",
"Disable context menu" : "Inaktivera snabbmenyn",
+ "Disable JavaScript debugger" : "Inaktivera JavaScript debugger",
"Allow users on this server to share passwords with a link" : "Tillåt användare på denna server att dela lösenord som en länk",
"Allow users on this server to share passwords with other users" : "Tillåt användare på denna server att dela lösenord med andra användare",
"Move credentials from one account to another" : "Flytta uppgifter från ett konto till ett annat",
@@ -277,6 +308,7 @@
"Request ID" : "Begär ID",
"Requested by" : "Begärd av",
"Reason" : "Anledning",
+ "Click here to request\n\t\t\t\t\tit" : "Klicka här för att efterfråga\n\t\t\t\t\tit",
"Connection to server lost" : "Anslutning till servern förlorad",
"Problem loading page, reloading in 5 seconds" : "Problem att ladda sidan, provar igen om 5 sekunder",
"Saving..." : "Sparar...",
diff --git a/l10n/tr.js b/l10n/tr.js
index 935b2089..c50fd6df 100644
--- a/l10n/tr.js
+++ b/l10n/tr.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"passman",
{
"Passwords" : "Parolalar",
- "Generating sharing keys ( %step / 2)" : "Paylaşım anahtarları oluşturuluyor ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Paylaşım anahtarları üretiliyor ( %s / 2)",
"Incorrect vault password!" : "Kasa parolası yanlış!",
"Passwords do not match" : "Parola ile onayı aynı değil",
"General" : "Genel",
@@ -16,14 +16,14 @@ OC.L10N.register(
"Credential updated" : "Kimlik doğrulama bilgileri güncellendi",
"Credential recovered" : "Kimlik doğrulama bilgileri kurtarıldı",
"Credential destroyed" : "Kimlik doğrulama bilgileri yok edildi",
- "Error downloading file, you probably don't have sufficient permissions" : "Dosya indirilirken sorun çıktı. Büyük olasılıkla yeterli izniniz yok",
+ "Error downloading file, you probably have insufficient permissions" : "Dosya indirilirken sorun çıktı. Büyük olasılıkla izinleriniz yeterli değil",
"Invalid QR code" : "QR Kodu geçersiz",
"Starting export" : "Dışa aktarma işlemi başlatılıyor",
"Decrypting credentials" : "Kimlik doğrulama bilgilerinin şifresi çözülüyor",
"Done" : "Tamam",
- "File read successfully." : "Dosya okundu.",
+ "File read." : "Dosya okuma.",
"Proceed with the following steps to import your file" : "Dosyanızı içe aktarmak için şu adımları izleyin",
- "Credential has no label, skipping" : "Kimlik doğrulama bilgilerinin etiketi olmadığından atlanıyor",
+ "Skipping unlabeled credential" : "Etiketsiz kimlik doğrulama bilgileri atlanıyor",
"Adding {{credential}}" : "{{credential}} ekleniyor",
"Added {{credential}}" : "{{credential}} eklendi",
"Skipping credential, missing label on line {{line}}" : "{{line}} satırındaki etiket eksik olduğundan, kimlik doğrulama bilgileri atlanıyor",
@@ -50,7 +50,7 @@ OC.L10N.register(
"Export credentials" : "Kimlik doğrulama bilgilerini dışa aktar",
"Sharing" : "Paylaşım",
"Are you sure you want to leave? This will destroy all your credentials" : "Ayrılmak istediğinize emin misiniz? Tüm kimlik doğrulama bilgileriniz bozulacak.",
- "Your old password is incorrect!" : "Eski parolanız doğru değil!",
+ "Old password field incorrect!" : "Eski parola alanındaki bilgi doğru değil!",
"New password does not match!" : "Yeni parola ile onayı aynı değil!",
"Please log in with your new vault password" : "Lütfen yeni kasa parolanız ile oturum açın",
"Share with users and groups" : "Kullanıcı ve gruplarla paylaş",
@@ -73,6 +73,9 @@ OC.L10N.register(
"Username" : "Kullanıcı Adı",
"Repeat password" : "Parola Onayı",
"Add tag" : "Etiket ekle",
+ "Pick an icon" : "Bir simge seçin",
+ "Use this icon" : "Bu simge kullanılsın",
+ "Selected icon" : "Seçilmiş simge",
"Field label" : "Alan Etiketi",
"Field value" : "Alan Değeri",
"Choose a file" : "Bir dosya seçin",
@@ -124,7 +127,7 @@ OC.L10N.register(
"Version" : "Sürüm",
"Donate to support development" : "Bağış yaparak geliştirmeyi destekleyin",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Parolalarınızı 1 tıkla kaydedin!",
+ "Save your passwords with one click." : "Parolalarınızı tek tıkla kaydedin!",
"Drag below button to your bookmark toolbar." : "Aşağıdaki düğmeyi yer imi araç çubuğunuza sürükleyin.",
"Delete vault" : "Kasayı sil",
"Vault password" : "Kasa parolası",
@@ -142,20 +145,20 @@ OC.L10N.register(
"Save keys" : "Anahtarları kaydet",
"Generate sharing keys" : "Paylaşım anahtarlarını üret",
"Generating sharing keys" : "Paylaşım anahtarları üretiliyor",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Parola aracı parolanızı tarayarak, ortalama kırılma süresini hesaplar. Eşik değerinin altındaysa görüntülenir",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Parola aracı parolanızı tarayarak, ortalama kırılma süresini hesaplar ve bu süre eşik değerinin altındaysa aşağıda görüntülenir",
"Minimum password stength" : "Paroladaki en az karakter sayısı",
"Start scan" : "Taramayı Başlat",
"Result" : "Sonuç",
"A total of {{scan_result}} weak credentials were found." : "Toplam {{scan_result}} zayıf parola bulundu.",
"Score" : "Değerlendirme",
"Action" : "İşlem",
- "Search users or groups…" : "Kullanıcı ya da grup ara...",
+ "Search users…" : "Kullanıcı arama…",
"Missing users? Only users that have vaults are shown." : "Kullanıcılar eksik mi? Yalnız kasası olan kullanıcılar görüntüleniyor.",
"Cyphering" : "Şifreleme",
"Uploading" : "Yükleniyor",
"User" : "Kullanıcı",
"Crypto time" : "Şifreleme süresi",
- "Total time spent cyphering" : "Şifreleme için harcanan toplam süre",
+ "Total time spent encrypting" : "Şifreleme için harcanan toplam süre",
"Read" : "Okuma",
"Write" : "Yazma",
"Files" : "Dosyalar",
@@ -164,7 +167,7 @@ OC.L10N.register(
"Enable link sharing" : "Bağlantı paylaşılabilsin",
"Share until date" : "Paylaşım bitiş tarihi",
"Expire after views" : "Şu kadar bakıldıktan sonra",
- "Click Share first" : "Önce Paylaş üzerine tıklayın",
+ "Click \\\"Share\\\" first" : "Önce \\\"Paylaş\\\" üzerine tıklayın",
"Show files" : "Dosyaları görüntüle",
"Details" : "Ayrıntılar",
"Hide details" : "Ayrıntıları gizle",
@@ -197,7 +200,7 @@ OC.L10N.register(
"Restore revision" : "Sürümü geri yükle",
"Delete revision" : "Sürümü sil",
"Edit credential" : "Kimlik doğrulama bilgilerini düzenle",
- "Create new credential" : "Yeni kimlik doğrulama bilgileri ekle",
+ "Create new credential" : "Kimlik doğrulama bilgileri ekle",
"Save" : "Kaydet",
"Cancel" : "İptal",
"Settings" : "Ayarlar",
@@ -224,7 +227,7 @@ OC.L10N.register(
"Use regex" : "Kurallı ifade kullan",
"You have incoming share requests." : "Size gönderilmiş paylaşım istekleri var.",
"If you want to put the credential in another vault," : "Kimlik doğrulama bilgilerini başka bir kasaya koymak istiyorsanız,",
- "log out of this vault and log in to the vault you want the shared credential in." : "bu kasadaki oturumunuzu kapatın ve kimlik doğrulama bilgilerini taşımak istediğiniz diğer kasada oturum açın .",
+ "log out of this vault and log into the vault you want the shared credential in." : "bu kasadaki oturumunuzu kapatın ve kimlik doğrulama bilgilerini taşımak istediğiniz diğer kasada oturum açın.",
"Permissions" : "İzinler",
"Received from" : "Gönderen",
"Date" : "Tarih",
@@ -238,7 +241,7 @@ OC.L10N.register(
"Password strength must be at least: {{strength}}" : "Parola gücü en az {{strength}} olmalıdır",
"Please give your new vault a name." : "Lütfen yeni kasanıza bir ad verin.",
"Repeat vault password" : "Kasa parolası onayı",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Paylaşım anahtarlarınız 1024 bit gücünde olacak. Bu değeri daha sonra Ayarlar bölümünden değiştirebilirsiniz.",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Paylaşılan anahtarlar 1024 bit gücünde olur. Bu değer daha sonra \\\"Ayarlar\\\" bölümünden değiştirilebilir.",
"Create vault" : "Kasa oluştur",
"Go back to vaults" : "Kasalara geri dön",
"Please input the password for" : "Lütfen şu kasanın parolasını yazın",
@@ -258,7 +261,7 @@ OC.L10N.register(
"Request removed" : "İstek iptal edildi",
"Destruction request pending" : "Bekleyen silme isteği var",
"Warning! Adding credentials over HTTP is insecure!" : "Uyarı! HTTP üzerinden kimlik doğrulama bilgileri eklemek güvenli değildir!",
- "Logged in to {{vault_name}}" : "{{vault_name}} kasasına oturum açıldı",
+ "Logged into {{vault_name}}" : "{{vault_name}} kasasına oturum açıldı",
"Change vault" : "Kasayı değiştir",
"Deleted credentials" : "Silinmiş kimlik doğrulama bilgileri",
"Logout" : "Oturumu Kapat",
@@ -297,6 +300,8 @@ OC.L10N.register(
"%s has declined your share request for \"%s\"." : "%s, \"%s\" ögesini paylaşma isteğinizi reddetti.",
"%s has accepted your share request for \"%s\"." : "%s, \"%s\" ögesini paylaşma isteğinizi onayladı.",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman uygulaması tam özellikli bir parola yönetimi sağlar.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman tam özellikli bir parola yönetimi uygulamasıdır.\nÖzellikleri:\n- Kasalar\n- Kasa anahtarı asla sunucuya gönderilmez\n- Parolalara kolay erişim için web tarayıcı eklentisi\n- Yolda erişim için Android uygulaması\n- Kimlik doğrulama bilgileri istemci tarafında 256bit AES ile şifrelenir\n- Kimlik doğrulama bilgileri sunucu tarafında 256bit AES ile şifrelenir\n- Kimlik doğrulama bilgilerine özel alanlar ekleyebilme\n- İç OTP üreteci (Tek Kullanımlık Parola)\n- Parola inceleyici\n- İçeride ve bağlantı ile güvenli parola paylaşımı\n- Çeşitli parola yönetimi uygulamalarından içe veri aktarma (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nBu uygulamanın örneğini görmek için [https://demo.passman.cc](https://demo.passman.cc) adresine bakabilirsiniz.",
"Unable to get version info" : "Sürüm bilgileri alınamadı",
"Passman Settings" : "Passman Ayarları",
"GitHub version:" : "GitHub sürümü:",
@@ -318,10 +323,14 @@ OC.L10N.register(
"Request ID" : "İstek kodu",
"Requested by" : "İsteyen",
"Reason" : "Neden",
+ "Click here to request\n\t\t\t\t\tit" : "Buraya tıklayarak \n\t\t\t\t\tisteyin",
+ "Loading&hellip;" : "Yükleniyor&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Kimlik doğrulama bilgileri bulunamadı. Süresi geçmiş olabilir",
+ "Expires:" : "Sona Erme:",
"Connection to server lost" : "Sunucu bağlantısı kesildi",
"Problem loading page, reloading in 5 seconds" : "Sayfa yüklenirken sorun çıktı, 5 saniye içinde yeniden yüklenecek",
"Saving..." : "Kaydediliyor...",
"Dismiss" : "Yeniden Hatırlatma",
- "seconds ago" : "saniye önce"
+ "seconds ago" : "saniyeler önce"
},
"nplurals=2; plural=(n > 1);");
diff --git a/l10n/tr.json b/l10n/tr.json
index 844b8956..901cbb57 100644
--- a/l10n/tr.json
+++ b/l10n/tr.json
@@ -1,6 +1,6 @@
{ "translations": {
"Passwords" : "Parolalar",
- "Generating sharing keys ( %step / 2)" : "Paylaşım anahtarları oluşturuluyor ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "Paylaşım anahtarları üretiliyor ( %s / 2)",
"Incorrect vault password!" : "Kasa parolası yanlış!",
"Passwords do not match" : "Parola ile onayı aynı değil",
"General" : "Genel",
@@ -14,14 +14,14 @@
"Credential updated" : "Kimlik doğrulama bilgileri güncellendi",
"Credential recovered" : "Kimlik doğrulama bilgileri kurtarıldı",
"Credential destroyed" : "Kimlik doğrulama bilgileri yok edildi",
- "Error downloading file, you probably don't have sufficient permissions" : "Dosya indirilirken sorun çıktı. Büyük olasılıkla yeterli izniniz yok",
+ "Error downloading file, you probably have insufficient permissions" : "Dosya indirilirken sorun çıktı. Büyük olasılıkla izinleriniz yeterli değil",
"Invalid QR code" : "QR Kodu geçersiz",
"Starting export" : "Dışa aktarma işlemi başlatılıyor",
"Decrypting credentials" : "Kimlik doğrulama bilgilerinin şifresi çözülüyor",
"Done" : "Tamam",
- "File read successfully." : "Dosya okundu.",
+ "File read." : "Dosya okuma.",
"Proceed with the following steps to import your file" : "Dosyanızı içe aktarmak için şu adımları izleyin",
- "Credential has no label, skipping" : "Kimlik doğrulama bilgilerinin etiketi olmadığından atlanıyor",
+ "Skipping unlabeled credential" : "Etiketsiz kimlik doğrulama bilgileri atlanıyor",
"Adding {{credential}}" : "{{credential}} ekleniyor",
"Added {{credential}}" : "{{credential}} eklendi",
"Skipping credential, missing label on line {{line}}" : "{{line}} satırındaki etiket eksik olduğundan, kimlik doğrulama bilgileri atlanıyor",
@@ -48,7 +48,7 @@
"Export credentials" : "Kimlik doğrulama bilgilerini dışa aktar",
"Sharing" : "Paylaşım",
"Are you sure you want to leave? This will destroy all your credentials" : "Ayrılmak istediğinize emin misiniz? Tüm kimlik doğrulama bilgileriniz bozulacak.",
- "Your old password is incorrect!" : "Eski parolanız doğru değil!",
+ "Old password field incorrect!" : "Eski parola alanındaki bilgi doğru değil!",
"New password does not match!" : "Yeni parola ile onayı aynı değil!",
"Please log in with your new vault password" : "Lütfen yeni kasa parolanız ile oturum açın",
"Share with users and groups" : "Kullanıcı ve gruplarla paylaş",
@@ -71,6 +71,9 @@
"Username" : "Kullanıcı Adı",
"Repeat password" : "Parola Onayı",
"Add tag" : "Etiket ekle",
+ "Pick an icon" : "Bir simge seçin",
+ "Use this icon" : "Bu simge kullanılsın",
+ "Selected icon" : "Seçilmiş simge",
"Field label" : "Alan Etiketi",
"Field value" : "Alan Değeri",
"Choose a file" : "Bir dosya seçin",
@@ -122,7 +125,7 @@
"Version" : "Sürüm",
"Donate to support development" : "Bağış yaparak geliştirmeyi destekleyin",
"Bookmarklet" : "Bookmarklet",
- "Save your passwords with 1 click!" : "Parolalarınızı 1 tıkla kaydedin!",
+ "Save your passwords with one click." : "Parolalarınızı tek tıkla kaydedin!",
"Drag below button to your bookmark toolbar." : "Aşağıdaki düğmeyi yer imi araç çubuğunuza sürükleyin.",
"Delete vault" : "Kasayı sil",
"Vault password" : "Kasa parolası",
@@ -140,20 +143,20 @@
"Save keys" : "Anahtarları kaydet",
"Generate sharing keys" : "Paylaşım anahtarlarını üret",
"Generating sharing keys" : "Paylaşım anahtarları üretiliyor",
- "The password tool will scan your password, calculate the average crack time and list those which are below the threshold" : "Parola aracı parolanızı tarayarak, ortalama kırılma süresini hesaplar. Eşik değerinin altındaysa görüntülenir",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "Parola aracı parolanızı tarayarak, ortalama kırılma süresini hesaplar ve bu süre eşik değerinin altındaysa aşağıda görüntülenir",
"Minimum password stength" : "Paroladaki en az karakter sayısı",
"Start scan" : "Taramayı Başlat",
"Result" : "Sonuç",
"A total of {{scan_result}} weak credentials were found." : "Toplam {{scan_result}} zayıf parola bulundu.",
"Score" : "Değerlendirme",
"Action" : "İşlem",
- "Search users or groups…" : "Kullanıcı ya da grup ara...",
+ "Search users…" : "Kullanıcı arama…",
"Missing users? Only users that have vaults are shown." : "Kullanıcılar eksik mi? Yalnız kasası olan kullanıcılar görüntüleniyor.",
"Cyphering" : "Şifreleme",
"Uploading" : "Yükleniyor",
"User" : "Kullanıcı",
"Crypto time" : "Şifreleme süresi",
- "Total time spent cyphering" : "Şifreleme için harcanan toplam süre",
+ "Total time spent encrypting" : "Şifreleme için harcanan toplam süre",
"Read" : "Okuma",
"Write" : "Yazma",
"Files" : "Dosyalar",
@@ -162,7 +165,7 @@
"Enable link sharing" : "Bağlantı paylaşılabilsin",
"Share until date" : "Paylaşım bitiş tarihi",
"Expire after views" : "Şu kadar bakıldıktan sonra",
- "Click Share first" : "Önce Paylaş üzerine tıklayın",
+ "Click \\\"Share\\\" first" : "Önce \\\"Paylaş\\\" üzerine tıklayın",
"Show files" : "Dosyaları görüntüle",
"Details" : "Ayrıntılar",
"Hide details" : "Ayrıntıları gizle",
@@ -195,7 +198,7 @@
"Restore revision" : "Sürümü geri yükle",
"Delete revision" : "Sürümü sil",
"Edit credential" : "Kimlik doğrulama bilgilerini düzenle",
- "Create new credential" : "Yeni kimlik doğrulama bilgileri ekle",
+ "Create new credential" : "Kimlik doğrulama bilgileri ekle",
"Save" : "Kaydet",
"Cancel" : "İptal",
"Settings" : "Ayarlar",
@@ -222,7 +225,7 @@
"Use regex" : "Kurallı ifade kullan",
"You have incoming share requests." : "Size gönderilmiş paylaşım istekleri var.",
"If you want to put the credential in another vault," : "Kimlik doğrulama bilgilerini başka bir kasaya koymak istiyorsanız,",
- "log out of this vault and log in to the vault you want the shared credential in." : "bu kasadaki oturumunuzu kapatın ve kimlik doğrulama bilgilerini taşımak istediğiniz diğer kasada oturum açın .",
+ "log out of this vault and log into the vault you want the shared credential in." : "bu kasadaki oturumunuzu kapatın ve kimlik doğrulama bilgilerini taşımak istediğiniz diğer kasada oturum açın.",
"Permissions" : "İzinler",
"Received from" : "Gönderen",
"Date" : "Tarih",
@@ -236,7 +239,7 @@
"Password strength must be at least: {{strength}}" : "Parola gücü en az {{strength}} olmalıdır",
"Please give your new vault a name." : "Lütfen yeni kasanıza bir ad verin.",
"Repeat vault password" : "Kasa parolası onayı",
- "Your sharing key's will have a strength of 1024 bit, which you can change in Settings later ." : "Paylaşım anahtarlarınız 1024 bit gücünde olacak. Bu değeri daha sonra Ayarlar bölümünden değiştirebilirsiniz.",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "Paylaşılan anahtarlar 1024 bit gücünde olur. Bu değer daha sonra \\\"Ayarlar\\\" bölümünden değiştirilebilir.",
"Create vault" : "Kasa oluştur",
"Go back to vaults" : "Kasalara geri dön",
"Please input the password for" : "Lütfen şu kasanın parolasını yazın",
@@ -256,7 +259,7 @@
"Request removed" : "İstek iptal edildi",
"Destruction request pending" : "Bekleyen silme isteği var",
"Warning! Adding credentials over HTTP is insecure!" : "Uyarı! HTTP üzerinden kimlik doğrulama bilgileri eklemek güvenli değildir!",
- "Logged in to {{vault_name}}" : "{{vault_name}} kasasına oturum açıldı",
+ "Logged into {{vault_name}}" : "{{vault_name}} kasasına oturum açıldı",
"Change vault" : "Kasayı değiştir",
"Deleted credentials" : "Silinmiş kimlik doğrulama bilgileri",
"Logout" : "Oturumu Kapat",
@@ -295,6 +298,8 @@
"%s has declined your share request for \"%s\"." : "%s, \"%s\" ögesini paylaşma isteğinizi reddetti.",
"%s has accepted your share request for \"%s\"." : "%s, \"%s\" ögesini paylaşma isteğinizi onayladı.",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman uygulaması tam özellikli bir parola yönetimi sağlar.",
+ "Passman is a full featured password manager.\nFeatures:\n- Vaults\n- Vault key is never sent to the server\n- Browser extension for easy access to passwords\n- Android app for on the road access\n- Credentials are client side encrypted with 256bit AES\n- Credentials are server side encrypted with 256bit AES\n- Ability to add custom fields to credentials\n- Built-in OTP (One Time Password) generator\n- Password analyzer\n- Share passwords internally and via link in a secure manner.\n- Import from various password managers (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nFor an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)" : "Passman tam özellikli bir parola yönetimi uygulamasıdır.\nÖzellikleri:\n- Kasalar\n- Kasa anahtarı asla sunucuya gönderilmez\n- Parolalara kolay erişim için web tarayıcı eklentisi\n- Yolda erişim için Android uygulaması\n- Kimlik doğrulama bilgileri istemci tarafında 256bit AES ile şifrelenir\n- Kimlik doğrulama bilgileri sunucu tarafında 256bit AES ile şifrelenir\n- Kimlik doğrulama bilgilerine özel alanlar ekleyebilme\n- İç OTP üreteci (Tek Kullanımlık Parola)\n- Parola inceleyici\n- İçeride ve bağlantı ile güvenli parola paylaşımı\n- Çeşitli parola yönetimi uygulamalarından içe veri aktarma (KeePass, LastPass, DashLane, ZOHO, Clipperz.is )\nBu uygulamanın örneğini görmek için [https://demo.passman.cc](https://demo.passman.cc) adresine bakabilirsiniz.",
"Unable to get version info" : "Sürüm bilgileri alınamadı",
"Passman Settings" : "Passman Ayarları",
"GitHub version:" : "GitHub sürümü:",
@@ -316,10 +321,14 @@
"Request ID" : "İstek kodu",
"Requested by" : "İsteyen",
"Reason" : "Neden",
+ "Click here to request\n\t\t\t\t\tit" : "Buraya tıklayarak \n\t\t\t\t\tisteyin",
+ "Loading&hellip;" : "Yükleniyor&hellip;",
+ "Awwhh… could not find the credential. Maybe it expired?" : "Kimlik doğrulama bilgileri bulunamadı. Süresi geçmiş olabilir",
+ "Expires:" : "Sona Erme:",
"Connection to server lost" : "Sunucu bağlantısı kesildi",
"Problem loading page, reloading in 5 seconds" : "Sayfa yüklenirken sorun çıktı, 5 saniye içinde yeniden yüklenecek",
"Saving..." : "Kaydediliyor...",
"Dismiss" : "Yeniden Hatırlatma",
- "seconds ago" : "saniye önce"
+ "seconds ago" : "saniyeler önce"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/l10n/zh_CN.js b/l10n/zh_CN.js
index a4dc8e3a..a7d6eec1 100644
--- a/l10n/zh_CN.js
+++ b/l10n/zh_CN.js
@@ -2,44 +2,62 @@ OC.L10N.register(
"passman",
{
"Passwords" : "密码",
- "Generating sharing keys ( %step / 2)" : "生成共享秘钥 ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "生成共享秘钥(%s / 2)",
"Incorrect vault password!" : "错误的密码!",
"Passwords do not match" : "密码不匹配",
"General" : "一般",
"Custom Fields" : "自定义字段",
+ "Please fill in a label." : "请填写一个标签。",
+ "Please fill in a value." : "请填写一个值",
"Error loading file" : "加载文件错误 ",
+ "An error occurred during decryption" : "解密时发生一个错误",
"Credential created!" : "创建凭证",
"Credential deleted" : "凭证删除",
"Credential updated" : "凭证更新",
"Credential recovered" : "凭证回收",
"Credential destroyed" : "凭证销毁",
+ "Error downloading file, you probably have insufficient permissions" : "下载文件时发生错误,你可能没有足够的权限",
"Invalid QR code" : "无效的 QR 代码",
"Starting export" : "正在开始导出",
"Decrypting credentials" : "凭证解密",
"Done" : "完成",
- "Credential has no label, skipping" : "凭证没有标签,跳过",
+ "File read." : "文件读取。",
+ "Proceed with the following steps to import your file" : "按以下步骤处理以导入你的文件",
+ "Skipping unlabeled credential" : "跳过无标签的凭据",
"Adding {{credential}}" : "添加 {{credential}}",
"Added {{credential}}" : "已添加 {{credential}}",
+ "Skipping credential, missing label on line {{line}}" : "跳过凭证,缺少标签{{line}}",
"Parsed {{num}} credentials, starting to import" : "解析 {{num}} 个凭据,开始导入",
"Importing" : "正在导入",
"Start import" : "开始导入",
"Select CSV file" : "选择 CSV 文件",
+ "Parsed {{rows}} lines from CSV file" : "从 CSV 文件解析了 {{rows}} 行",
"Skip first row" : "跳转到第一行",
+ "You need to assign the label field before you can start the import." : "开始导入之前需要先关联标签字段。",
+ "The first 5 lines of the CSV are shown." : "显示 CSV 的前 5 行。",
+ "Assign the proper fields to each column." : "为每一列关联恰当的字段。",
+ "Example of imported credential" : "导入的凭证示例",
+ "Missing an importer? Try it with the generic CSV importer." : "没有导入器?尝试使用通用的 CSV 导入器。",
"Go back to importers." : "返回导入器。",
"Revision deleted" : "修订已删除",
"Revision restored" : "修订已恢复",
+ "Save in Passman" : "保存到 Passman",
"Settings saved" : "设置已保存",
"General settings" : "常规设置",
+ "Password audit" : "密码审计",
"Password settings" : "密码设置",
"Import credentials" : "导入凭据",
"Export credentials" : "导出凭据",
"Sharing" : "正在共享",
- "Your old password is incorrect!" : "您的旧密码不正确!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "是否要离开?这将销毁你所有的凭证",
+ "Old password field incorrect!" : "旧密码错误!",
+ "New password does not match!" : "新密码不匹配!",
+ "Please log in with your new vault password" : "请使用你的新保险箱密码登录",
"Share with users and groups" : "与用户和组共享",
- "Share link" : "分享链接",
+ "Share link" : "共享链接",
"Are you sure you want to leave? This will corrupt this credential" : "您确认要离开吗?这将销毁这个凭证",
- "Credential unshared" : "凭证未分享",
- "Credential shared" : "凭证已分享",
+ "Credential unshared" : "凭证未共享",
+ "Credential shared" : "凭证已共享",
"Saved!" : "已保存",
"Poor" : "差 ",
"Weak" : "弱",
@@ -55,6 +73,9 @@ OC.L10N.register(
"Username" : "用户名",
"Repeat password" : "重复密码",
"Add tag" : "添加标签",
+ "Pick an icon" : "选择一个图标",
+ "Use this icon" : "使用这个图标",
+ "Selected icon" : "选定的图标",
"Field label" : "字段标签",
"Field value" : "字段值",
"Choose a file" : "选择一个文件",
@@ -72,6 +93,8 @@ OC.L10N.register(
"Current OTP settings" : "目前OTP设置 ",
"Issuer" : "发行者 ",
"Secret" : "密钥",
+ "Expiration date" : "有效期",
+ "No expiration date set" : "未设置有效期",
"Renew interval" : "更新间隔",
"Disabled" : "禁用",
"Day(s)" : "天(s)",
@@ -89,12 +112,14 @@ OC.L10N.register(
"Require every character type" : "要求所用字符类型",
"Export type" : "导出类型",
"Export" : "导出",
+ "Enter vault password to confirm export." : "输入保险库密码以确认导出。",
"Rename vault" : "重命名文件库",
"New vault name" : "新文件库名称",
"Change" : "变更",
"Change vault key" : "更高保险箱密钥",
"Old vault password" : "旧的保险箱密码",
"New vault password" : "新的保险箱密码",
+ "Repeat new vault password" : "重复新的保管库密码",
"Please wait your vault is being updated, do not leave this page." : "请耐心等待,您的保险箱正在更新,请不要离开此页面。",
"Processing" : "正在处理",
"Total progress" : "全部进度",
@@ -102,12 +127,13 @@ OC.L10N.register(
"Version" : "版本",
"Donate to support development" : "捐赠支持开发",
"Bookmarklet" : "书签小工具",
- "Save your passwords with 1 click!" : "1 键保存密码!",
+ "Save your passwords with one click." : "一键保存密码",
"Drag below button to your bookmark toolbar." : "将下面的按钮拖拽到您的书签工具栏。",
"Delete vault" : "删除保险箱",
"Vault password" : "保险箱密码",
"This process is irreversible" : "操作不可逆",
"Delete my precious passwords" : "删除我的宝贵密码",
+ "Deleting {{password}}…" : "正在删除 {{password}}…",
"Yes, delete my precious passwords" : "是的,删除我的宝贵密码 ",
"Import type" : "导入类型",
"Import" : "导入",
@@ -117,26 +143,31 @@ OC.L10N.register(
"Public key" : "公钥",
"Key size" : "密钥尺寸",
"Save keys" : "保存密码",
- "Generate sharing keys" : "生成分享密码",
- "Generating sharing keys" : "生成分享密码中",
+ "Generate sharing keys" : "生成共享密码",
+ "Generating sharing keys" : "生成共享密码中",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "密码工具会扫描您的密码,计算平均破解时间,列出低于阈值的密码",
"Minimum password stength" : "最小密码长度",
"Start scan" : "开始扫描",
"Result" : "结果",
+ "A total of {{scan_result}} weak credentials were found." : "共发现{{scan_result}}弱凭证。",
"Score" : "评分",
"Action" : "操作",
+ "Search users…" : "搜索用户...",
+ "Missing users? Only users that have vaults are shown." : "缺少用户? 只显示具有保管库的用户。",
"Cyphering" : "计算中",
"Uploading" : "正在上传...",
"User" : "用户",
"Crypto time" : "加密时间",
- "Total time spent cyphering" : "加密所花费的总时间",
+ "Total time spent encrypting" : "加密总耗时",
"Read" : "读取",
"Write" : "写入",
"Files" : "文件",
"Revisions" : "修订",
"Pending" : "等待",
- "Enable link sharing" : "启用链接分享",
- "Share until date" : "分享截止日期",
+ "Enable link sharing" : "启用链接共享",
+ "Share until date" : "共享截止日期",
"Expire after views" : "过期浏览次数",
+ "Click \\\"Share\\\" first" : "先点击\\\"共享\\\"",
"Show files" : "显示文件",
"Details" : "详细信息",
"Hide details" : "隐藏详细信息",
@@ -169,19 +200,23 @@ OC.L10N.register(
"Restore revision" : "恢复修订版本",
"Delete revision" : "删除修订版本",
"Edit credential" : "编辑凭据",
- "Create new credential" : "创建新凭据",
+ "Create new credential" : "新建凭据",
"Save" : "保存",
"Cancel" : "取消",
"Settings" : "设置",
- "Share credential {{credential}}" : "分享凭证 {{credential}}",
+ "Share credential {{credential}}" : "共享凭证 {{credential}}",
"Unshare" : "取消共享",
"Showing deleted since" : "显示自从删除以来",
+ "Beginning" : "开始",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "显示{{credential_number}}凭据的{{number_filtered}}",
+ "Search for credential…" : "搜索凭证...",
"Account" : "账户",
"Password" : "密码",
"OTP" : "OTP",
"E-mail" : "E-mail",
"URL" : "URL",
"Notes" : "说明",
+ "Expiry time" : "过期时间",
"Changed" : "已更改",
"Created" : "已创建",
"Edit" : "编辑",
@@ -191,28 +226,61 @@ OC.L10N.register(
"Destroy" : " 销毁",
"Use regex" : "使用正则表达式",
"You have incoming share requests." : "您接收到共享请求.",
+ "If you want to put the credential in another vault," : "如果你想将证书放在另一个保险库中,",
+ "log out of this vault and log into the vault you want the shared credential in." : "退出此保管库并登录到您要共享证书的保管库。",
"Permissions" : "权限",
"Received from" : "接受自",
"Date" : "日期",
"Accept" : "接受",
"Decline" : "拒绝",
"You have {{session_time}} left before logout." : "你剩 {{session_time}} 在注销前.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "由于{{试图}}尝试已失败,您的保管库已锁定{{time}}",
"Last accessed" : "上次访问",
"Never" : "从不",
+ "No vaults found, why not create one?" : "没有找到保险库,为什么不创建一个?",
+ "Password strength must be at least: {{strength}}" : "密码强度必须至少为{{strength}}",
+ "Please give your new vault a name." : "请给你的新保险库一个名字。",
+ "Repeat vault password" : "重复保管库密码",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "您的共享密钥将具有1024位的强度,您可以稍后在“设置”中进行更改。 ",
"Create vault" : "创建保险箱",
+ "Go back to vaults" : "回到保管库",
"Please input the password for" : "请输入密码为",
+ "Set this vault as the default." : "将此保管库设置为默认值。",
"Log into this vault automatically." : "自动登入保险箱",
+ "Log out of this vault automatically after: " : "之后自动退出此保管库:",
"Decrypt vault" : "加密保险箱",
- "Logged in to {{vault_name}}" : "计入日志到 {{vault_name}}",
+ "Seems you lost the vault password and you're unable to log in." : "似乎丢失了保管库密码,您无法登录。",
+ "If you want this vault to be removed you can request that here." : "如果你想要这个保管库被删除,你可以在这里要求。",
+ "An admin then accepts or declines the request" : "然后,管理员接受或拒绝该请求",
+ "After an admin destroys this vault, all credentials in it will be lost" : "管理员销毁此保管库后,其中的所有凭据将丢失",
+ "Reason for requesting deletion (optional):" : "请求删除的原因(可选):",
+ "Request vault destruction" : "请求保险库销毁",
+ "Yes, request an admin to destroy this vault" : "是的,请求管理员销毁此保管库",
+ "Cancel destruction request" : "取消销毁请求",
+ "Vault destruction requested" : "要求保管库销毁",
+ "Request removed" : "请求已移除",
+ "Destruction request pending" : "销毁请求待处理",
+ "Warning! Adding credentials over HTTP is insecure!" : "警告! 通过HTTP添加凭证是不安全的!",
+ "Logged into {{vault_name}}" : "计入日志到 {{vault_name}} ",
"Change vault" : "更改保险箱",
"Deleted credentials" : "删除凭据",
"Logout" : "注销",
"Donate" : "捐助",
+ "Someone has shared a credential with you." : "有人与你共享了一个证书。",
+ "Click here to request it" : "点击这里请求",
+ "Loading…" : "加载中",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh ...没有找到证书。 也许它过期了",
"Error while saving field" : "保存域错误",
+ "A Passman item has been created, modified or deleted" : "Passman项目已创建,修改或已删除",
+ "A Passman item has expired" : "Passman项目已过期",
+ "A Passman item has been shared" : "Passman项目已被共享",
+ "A Passman item has been renamed" : "Passman项目已重命名",
"%1$s has been created by %2$s" : "%1$s 已经被创建通过 %2$s",
"You created %1$s" : "已创建 %1$s",
+ "%1$s has been updated by %2$s" : "%1$s已更新%2$s",
"You updated %1$s" : "已更新 %1$s",
"%2$s has revised %1$s to the revision of %3$s" : "%2$s 已修订 %1$s 到版本 %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "您将%1$s还原到%3$s的修订版本",
"%3$s has renamed %1$s to %2$s" : "%3$s 已重命名 %1$s 为 %2$s",
"You renamed %1$s to %2$s" : "已重命名 %1$s 为 %2$s",
"%1$s has been deleted by %2$s" : "%1$s 已被删除由 %2$s",
@@ -225,18 +293,37 @@ OC.L10N.register(
"%1$s has been shared with %2$s" : "%1$s 已经共享被 %2$s",
"You received a share request for %1$s from %2$s" : "您收到 %2$s 的共享 %1$s 请求 ",
"%s has been shared with a link" : "%s 已被共享通过链接",
+ "Your credential \"%s\" expired, click here to update the credential." : "您的凭据%s已过期,请点击此处更新凭证。",
"Remind me later" : "以后提醒我 ",
"Ignore" : "忽略",
+ "%s shared \"%s\" with you. Click here to accept" : "%s已共享\"%s\"和你. 点击这里接受",
+ "%s has declined your share request for \"%s\"." : "%s已拒绝您的共享请求\"%s\"",
+ "%s has accepted your share request for \"%s\"." : "%s已接受您的共享请求\"%s\"",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman 是一个全能的密码管理器。",
"Unable to get version info" : "无法获取版本信息 ",
"Passman Settings" : "Passman 设置",
+ "GitHub version:" : "GitHub版本",
+ "A newer version of Passman is available" : "较新版本的Passman可用",
+ "Password sharing" : "密码共享中",
+ "Credential mover" : "凭证移动者",
+ "Vault destruction requests" : "存储库销毁请求",
"Check for new versions" : "检查新版本",
"Enable HTTPS check" : "启用HTTPS检查",
"Disable context menu" : "禁用上下文菜单 ",
+ "Disable JavaScript debugger" : "禁用JavaScript调试器",
"Allow users on this server to share passwords with a link" : "允许此服务器上的用户通过链接共享密码 ",
"Allow users on this server to share passwords with other users" : "允许此服务器上的用户与其他用户共享密码 ",
+ "Move credentials from one account to another" : "将凭据从一个帐户移动到另一个",
+ "Source account" : "资源账户",
+ "Destination account" : "终点账户",
+ "Credentials moved!" : "证书已移动了!",
+ "Requests to destroy vault" : "要求销毁存储库",
"Request ID" : "请求 ID",
+ "Requested by" : "被要求",
"Reason" : "原因",
+ "Click here to request\n\t\t\t\t\tit" : "点击这里请求\n\t\t\t\t\t",
+ "Loading&hellip;" : "加载中&hellip;",
"Connection to server lost" : "与服务器的连接断开",
"Problem loading page, reloading in 5 seconds" : "加载页面出现问题, 在 5 秒内重新加载",
"Saving..." : "保存中...",
diff --git a/l10n/zh_CN.json b/l10n/zh_CN.json
index 9bfe863d..8313348d 100644
--- a/l10n/zh_CN.json
+++ b/l10n/zh_CN.json
@@ -1,43 +1,61 @@
{ "translations": {
"Passwords" : "密码",
- "Generating sharing keys ( %step / 2)" : "生成共享秘钥 ( %step / 2)",
+ "Generating sharing keys ( %s / 2)" : "生成共享秘钥(%s / 2)",
"Incorrect vault password!" : "错误的密码!",
"Passwords do not match" : "密码不匹配",
"General" : "一般",
"Custom Fields" : "自定义字段",
+ "Please fill in a label." : "请填写一个标签。",
+ "Please fill in a value." : "请填写一个值",
"Error loading file" : "加载文件错误 ",
+ "An error occurred during decryption" : "解密时发生一个错误",
"Credential created!" : "创建凭证",
"Credential deleted" : "凭证删除",
"Credential updated" : "凭证更新",
"Credential recovered" : "凭证回收",
"Credential destroyed" : "凭证销毁",
+ "Error downloading file, you probably have insufficient permissions" : "下载文件时发生错误,你可能没有足够的权限",
"Invalid QR code" : "无效的 QR 代码",
"Starting export" : "正在开始导出",
"Decrypting credentials" : "凭证解密",
"Done" : "完成",
- "Credential has no label, skipping" : "凭证没有标签,跳过",
+ "File read." : "文件读取。",
+ "Proceed with the following steps to import your file" : "按以下步骤处理以导入你的文件",
+ "Skipping unlabeled credential" : "跳过无标签的凭据",
"Adding {{credential}}" : "添加 {{credential}}",
"Added {{credential}}" : "已添加 {{credential}}",
+ "Skipping credential, missing label on line {{line}}" : "跳过凭证,缺少标签{{line}}",
"Parsed {{num}} credentials, starting to import" : "解析 {{num}} 个凭据,开始导入",
"Importing" : "正在导入",
"Start import" : "开始导入",
"Select CSV file" : "选择 CSV 文件",
+ "Parsed {{rows}} lines from CSV file" : "从 CSV 文件解析了 {{rows}} 行",
"Skip first row" : "跳转到第一行",
+ "You need to assign the label field before you can start the import." : "开始导入之前需要先关联标签字段。",
+ "The first 5 lines of the CSV are shown." : "显示 CSV 的前 5 行。",
+ "Assign the proper fields to each column." : "为每一列关联恰当的字段。",
+ "Example of imported credential" : "导入的凭证示例",
+ "Missing an importer? Try it with the generic CSV importer." : "没有导入器?尝试使用通用的 CSV 导入器。",
"Go back to importers." : "返回导入器。",
"Revision deleted" : "修订已删除",
"Revision restored" : "修订已恢复",
+ "Save in Passman" : "保存到 Passman",
"Settings saved" : "设置已保存",
"General settings" : "常规设置",
+ "Password audit" : "密码审计",
"Password settings" : "密码设置",
"Import credentials" : "导入凭据",
"Export credentials" : "导出凭据",
"Sharing" : "正在共享",
- "Your old password is incorrect!" : "您的旧密码不正确!",
+ "Are you sure you want to leave? This will destroy all your credentials" : "是否要离开?这将销毁你所有的凭证",
+ "Old password field incorrect!" : "旧密码错误!",
+ "New password does not match!" : "新密码不匹配!",
+ "Please log in with your new vault password" : "请使用你的新保险箱密码登录",
"Share with users and groups" : "与用户和组共享",
- "Share link" : "分享链接",
+ "Share link" : "共享链接",
"Are you sure you want to leave? This will corrupt this credential" : "您确认要离开吗?这将销毁这个凭证",
- "Credential unshared" : "凭证未分享",
- "Credential shared" : "凭证已分享",
+ "Credential unshared" : "凭证未共享",
+ "Credential shared" : "凭证已共享",
"Saved!" : "已保存",
"Poor" : "差 ",
"Weak" : "弱",
@@ -53,6 +71,9 @@
"Username" : "用户名",
"Repeat password" : "重复密码",
"Add tag" : "添加标签",
+ "Pick an icon" : "选择一个图标",
+ "Use this icon" : "使用这个图标",
+ "Selected icon" : "选定的图标",
"Field label" : "字段标签",
"Field value" : "字段值",
"Choose a file" : "选择一个文件",
@@ -70,6 +91,8 @@
"Current OTP settings" : "目前OTP设置 ",
"Issuer" : "发行者 ",
"Secret" : "密钥",
+ "Expiration date" : "有效期",
+ "No expiration date set" : "未设置有效期",
"Renew interval" : "更新间隔",
"Disabled" : "禁用",
"Day(s)" : "天(s)",
@@ -87,12 +110,14 @@
"Require every character type" : "要求所用字符类型",
"Export type" : "导出类型",
"Export" : "导出",
+ "Enter vault password to confirm export." : "输入保险库密码以确认导出。",
"Rename vault" : "重命名文件库",
"New vault name" : "新文件库名称",
"Change" : "变更",
"Change vault key" : "更高保险箱密钥",
"Old vault password" : "旧的保险箱密码",
"New vault password" : "新的保险箱密码",
+ "Repeat new vault password" : "重复新的保管库密码",
"Please wait your vault is being updated, do not leave this page." : "请耐心等待,您的保险箱正在更新,请不要离开此页面。",
"Processing" : "正在处理",
"Total progress" : "全部进度",
@@ -100,12 +125,13 @@
"Version" : "版本",
"Donate to support development" : "捐赠支持开发",
"Bookmarklet" : "书签小工具",
- "Save your passwords with 1 click!" : "1 键保存密码!",
+ "Save your passwords with one click." : "一键保存密码",
"Drag below button to your bookmark toolbar." : "将下面的按钮拖拽到您的书签工具栏。",
"Delete vault" : "删除保险箱",
"Vault password" : "保险箱密码",
"This process is irreversible" : "操作不可逆",
"Delete my precious passwords" : "删除我的宝贵密码",
+ "Deleting {{password}}…" : "正在删除 {{password}}…",
"Yes, delete my precious passwords" : "是的,删除我的宝贵密码 ",
"Import type" : "导入类型",
"Import" : "导入",
@@ -115,26 +141,31 @@
"Public key" : "公钥",
"Key size" : "密钥尺寸",
"Save keys" : "保存密码",
- "Generate sharing keys" : "生成分享密码",
- "Generating sharing keys" : "生成分享密码中",
+ "Generate sharing keys" : "生成共享密码",
+ "Generating sharing keys" : "生成共享密码中",
+ "The password tool scans your password, calculates average cracking time, listing those below the threshold" : "密码工具会扫描您的密码,计算平均破解时间,列出低于阈值的密码",
"Minimum password stength" : "最小密码长度",
"Start scan" : "开始扫描",
"Result" : "结果",
+ "A total of {{scan_result}} weak credentials were found." : "共发现{{scan_result}}弱凭证。",
"Score" : "评分",
"Action" : "操作",
+ "Search users…" : "搜索用户...",
+ "Missing users? Only users that have vaults are shown." : "缺少用户? 只显示具有保管库的用户。",
"Cyphering" : "计算中",
"Uploading" : "正在上传...",
"User" : "用户",
"Crypto time" : "加密时间",
- "Total time spent cyphering" : "加密所花费的总时间",
+ "Total time spent encrypting" : "加密总耗时",
"Read" : "读取",
"Write" : "写入",
"Files" : "文件",
"Revisions" : "修订",
"Pending" : "等待",
- "Enable link sharing" : "启用链接分享",
- "Share until date" : "分享截止日期",
+ "Enable link sharing" : "启用链接共享",
+ "Share until date" : "共享截止日期",
"Expire after views" : "过期浏览次数",
+ "Click \\\"Share\\\" first" : "先点击\\\"共享\\\"",
"Show files" : "显示文件",
"Details" : "详细信息",
"Hide details" : "隐藏详细信息",
@@ -167,19 +198,23 @@
"Restore revision" : "恢复修订版本",
"Delete revision" : "删除修订版本",
"Edit credential" : "编辑凭据",
- "Create new credential" : "创建新凭据",
+ "Create new credential" : "新建凭据",
"Save" : "保存",
"Cancel" : "取消",
"Settings" : "设置",
- "Share credential {{credential}}" : "分享凭证 {{credential}}",
+ "Share credential {{credential}}" : "共享凭证 {{credential}}",
"Unshare" : "取消共享",
"Showing deleted since" : "显示自从删除以来",
+ "Beginning" : "开始",
+ "Showing {{number_filtered}} of {{credential_number}} credentials" : "显示{{credential_number}}凭据的{{number_filtered}}",
+ "Search for credential…" : "搜索凭证...",
"Account" : "账户",
"Password" : "密码",
"OTP" : "OTP",
"E-mail" : "E-mail",
"URL" : "URL",
"Notes" : "说明",
+ "Expiry time" : "过期时间",
"Changed" : "已更改",
"Created" : "已创建",
"Edit" : "编辑",
@@ -189,28 +224,61 @@
"Destroy" : " 销毁",
"Use regex" : "使用正则表达式",
"You have incoming share requests." : "您接收到共享请求.",
+ "If you want to put the credential in another vault," : "如果你想将证书放在另一个保险库中,",
+ "log out of this vault and log into the vault you want the shared credential in." : "退出此保管库并登录到您要共享证书的保管库。",
"Permissions" : "权限",
"Received from" : "接受自",
"Date" : "日期",
"Accept" : "接受",
"Decline" : "拒绝",
"You have {{session_time}} left before logout." : "你剩 {{session_time}} 在注销前.",
+ "Your vault has been locked for {{time}} because of {{tries}} failed attempts!" : "由于{{试图}}尝试已失败,您的保管库已锁定{{time}}",
"Last accessed" : "上次访问",
"Never" : "从不",
+ "No vaults found, why not create one?" : "没有找到保险库,为什么不创建一个?",
+ "Password strength must be at least: {{strength}}" : "密码强度必须至少为{{strength}}",
+ "Please give your new vault a name." : "请给你的新保险库一个名字。",
+ "Repeat vault password" : "重复保管库密码",
+ "Your sharing keys will have a strength of 1024 bit, which you can change in \\\"Settings\\\" later ." : "您的共享密钥将具有1024位的强度,您可以稍后在“设置”中进行更改。 ",
"Create vault" : "创建保险箱",
+ "Go back to vaults" : "回到保管库",
"Please input the password for" : "请输入密码为",
+ "Set this vault as the default." : "将此保管库设置为默认值。",
"Log into this vault automatically." : "自动登入保险箱",
+ "Log out of this vault automatically after: " : "之后自动退出此保管库:",
"Decrypt vault" : "加密保险箱",
- "Logged in to {{vault_name}}" : "计入日志到 {{vault_name}}",
+ "Seems you lost the vault password and you're unable to log in." : "似乎丢失了保管库密码,您无法登录。",
+ "If you want this vault to be removed you can request that here." : "如果你想要这个保管库被删除,你可以在这里要求。",
+ "An admin then accepts or declines the request" : "然后,管理员接受或拒绝该请求",
+ "After an admin destroys this vault, all credentials in it will be lost" : "管理员销毁此保管库后,其中的所有凭据将丢失",
+ "Reason for requesting deletion (optional):" : "请求删除的原因(可选):",
+ "Request vault destruction" : "请求保险库销毁",
+ "Yes, request an admin to destroy this vault" : "是的,请求管理员销毁此保管库",
+ "Cancel destruction request" : "取消销毁请求",
+ "Vault destruction requested" : "要求保管库销毁",
+ "Request removed" : "请求已移除",
+ "Destruction request pending" : "销毁请求待处理",
+ "Warning! Adding credentials over HTTP is insecure!" : "警告! 通过HTTP添加凭证是不安全的!",
+ "Logged into {{vault_name}}" : "计入日志到 {{vault_name}} ",
"Change vault" : "更改保险箱",
"Deleted credentials" : "删除凭据",
"Logout" : "注销",
"Donate" : "捐助",
+ "Someone has shared a credential with you." : "有人与你共享了一个证书。",
+ "Click here to request it" : "点击这里请求",
+ "Loading…" : "加载中",
+ "Awwhh… credential not found. Maybe it expired" : "Awwhh ...没有找到证书。 也许它过期了",
"Error while saving field" : "保存域错误",
+ "A Passman item has been created, modified or deleted" : "Passman项目已创建,修改或已删除",
+ "A Passman item has expired" : "Passman项目已过期",
+ "A Passman item has been shared" : "Passman项目已被共享",
+ "A Passman item has been renamed" : "Passman项目已重命名",
"%1$s has been created by %2$s" : "%1$s 已经被创建通过 %2$s",
"You created %1$s" : "已创建 %1$s",
+ "%1$s has been updated by %2$s" : "%1$s已更新%2$s",
"You updated %1$s" : "已更新 %1$s",
"%2$s has revised %1$s to the revision of %3$s" : "%2$s 已修订 %1$s 到版本 %3$s",
+ "You reverted %1$s back to the revision of %3$s" : "您将%1$s还原到%3$s的修订版本",
"%3$s has renamed %1$s to %2$s" : "%3$s 已重命名 %1$s 为 %2$s",
"You renamed %1$s to %2$s" : "已重命名 %1$s 为 %2$s",
"%1$s has been deleted by %2$s" : "%1$s 已被删除由 %2$s",
@@ -223,18 +291,37 @@
"%1$s has been shared with %2$s" : "%1$s 已经共享被 %2$s",
"You received a share request for %1$s from %2$s" : "您收到 %2$s 的共享 %1$s 请求 ",
"%s has been shared with a link" : "%s 已被共享通过链接",
+ "Your credential \"%s\" expired, click here to update the credential." : "您的凭据%s已过期,请点击此处更新凭证。",
"Remind me later" : "以后提醒我 ",
"Ignore" : "忽略",
+ "%s shared \"%s\" with you. Click here to accept" : "%s已共享\"%s\"和你. 点击这里接受",
+ "%s has declined your share request for \"%s\"." : "%s已拒绝您的共享请求\"%s\"",
+ "%s has accepted your share request for \"%s\"." : "%s已接受您的共享请求\"%s\"",
"Passman" : "Passman",
+ "Passman is a full featured password manager." : "Passman 是一个全能的密码管理器。",
"Unable to get version info" : "无法获取版本信息 ",
"Passman Settings" : "Passman 设置",
+ "GitHub version:" : "GitHub版本",
+ "A newer version of Passman is available" : "较新版本的Passman可用",
+ "Password sharing" : "密码共享中",
+ "Credential mover" : "凭证移动者",
+ "Vault destruction requests" : "存储库销毁请求",
"Check for new versions" : "检查新版本",
"Enable HTTPS check" : "启用HTTPS检查",
"Disable context menu" : "禁用上下文菜单 ",
+ "Disable JavaScript debugger" : "禁用JavaScript调试器",
"Allow users on this server to share passwords with a link" : "允许此服务器上的用户通过链接共享密码 ",
"Allow users on this server to share passwords with other users" : "允许此服务器上的用户与其他用户共享密码 ",
+ "Move credentials from one account to another" : "将凭据从一个帐户移动到另一个",
+ "Source account" : "资源账户",
+ "Destination account" : "终点账户",
+ "Credentials moved!" : "证书已移动了!",
+ "Requests to destroy vault" : "要求销毁存储库",
"Request ID" : "请求 ID",
+ "Requested by" : "被要求",
"Reason" : "原因",
+ "Click here to request\n\t\t\t\t\tit" : "点击这里请求\n\t\t\t\t\t",
+ "Loading&hellip;" : "加载中&hellip;",
"Connection to server lost" : "与服务器的连接断开",
"Problem loading page, reloading in 5 seconds" : "加载页面出现问题, 在 5 秒内重新加载",
"Saving..." : "保存中...",
diff --git a/lib/Db/Credential.php b/lib/Db/Credential.php
index d58db8bb..02187e0b 100644
--- a/lib/Db/Credential.php
+++ b/lib/Db/Credential.php
@@ -52,8 +52,8 @@ use \OCP\AppFramework\Db\Entity;
* @method string getPassword()
* @method void setUrl(string $value)
* @method string getUrl()
- * @method void setFavicon(string $value)
- * @method string getFavicon()
+ * @method void setIcon(string $value)
+ * @method string getIcon()
* @method void setRenewInterval(integer $value)
* @method integer getRenewInterval()
* @method void setExpireTime(integer $value)
@@ -92,7 +92,7 @@ class Credential extends Entity implements \JsonSerializable{
protected $username;
protected $password;
protected $url;
- protected $favicon;
+ protected $icon;
protected $renewInterval;
protected $expireTime;
protected $deleteTime;
@@ -133,7 +133,7 @@ class Credential extends Entity implements \JsonSerializable{
'username' => $this->getUsername(),
'password' => $this->getPassword(),
'url' => $this->getUrl(),
- 'favicon' => $this->getFavicon(),
+ 'icon' => json_decode($this->getIcon()),
'renew_interval' => $this->getRenewInterval(),
'expire_time' => $this->getExpireTime(),
'delete_time' => $this->getDeleteTime(),
diff --git a/lib/Db/CredentialMapper.php b/lib/Db/CredentialMapper.php
index dfd58f75..46cbe073 100644
--- a/lib/Db/CredentialMapper.php
+++ b/lib/Db/CredentialMapper.php
@@ -130,7 +130,7 @@ class CredentialMapper extends Mapper {
$credential->setUsername($raw_credential['username']);
$credential->setPassword($raw_credential['password']);
$credential->setUrl($raw_credential['url']);
- $credential->setFavicon($raw_credential['favicon']);
+ $credential->setIcon($raw_credential['favicon']);
$credential->setRenewInterval($raw_credential['renew_interval']);
$credential->setExpireTime($raw_credential['expire_time']);
$credential->setDeleteTime($raw_credential['delete_time']);
@@ -169,7 +169,7 @@ class CredentialMapper extends Mapper {
$credential->setUsername($raw_credential['username']);
$credential->setPassword($raw_credential['password']);
$credential->setUrl($raw_credential['url']);
- $credential->setFavicon($raw_credential['favicon']);
+ $credential->setIcon($raw_credential['icon']);
$credential->setRenewInterval($raw_credential['renew_interval']);
$credential->setExpireTime($raw_credential['expire_time']);
$credential->setFiles($raw_credential['files']);
diff --git a/lib/Service/CredentialService.php b/lib/Service/CredentialService.php
index 17b2fd0f..7bd45917 100644
--- a/lib/Service/CredentialService.php
+++ b/lib/Service/CredentialService.php
@@ -146,7 +146,7 @@ class CredentialService {
public function getCredentialById($credential_id, $user_id) {
$credential = $this->credentialMapper->getCredentialById($credential_id);
if ($credential->getUserId() === $user_id) {
- return $credential;
+ return $this->encryptService->decryptCredential($credential);
} else {
$acl = $this->sharingACL->getItemACL($user_id, $credential->getGuid());
if ($acl->hasPermission(SharingACL::READ)) {
diff --git a/lib/Service/EncryptService.php b/lib/Service/EncryptService.php
index 31cc3448..64284c4f 100644
--- a/lib/Service/EncryptService.php
+++ b/lib/Service/EncryptService.php
@@ -67,7 +67,7 @@ class EncryptService {
// The fields of a credential which are encrypted
public $encrypted_credential_fields = array(
- 'description', 'username', 'password', 'files', 'custom_fields', 'otp', 'email', 'tags', 'url'
+ 'description', 'username', 'password', 'files', 'custom_fields', 'otp', 'email', 'tags', 'url', 'icon'
);
// Contains the server key
diff --git a/lib/Service/IconService.php b/lib/Service/IconService.php
new file mode 100644
index 00000000..77346524
--- /dev/null
+++ b/lib/Service/IconService.php
@@ -0,0 +1,434 @@
+<?php
+/**
+ * Nextcloud - passman
+ *
+ * @copyright Copyright (c) 2016, Sander Brand (brantje@gmail.com)
+ * @copyright Copyright (c) 2016, Marcos Zuriaga Miguel (wolfi@wolfi.es)
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Passman\Service;
+
+
+class IconService {
+ // URL types
+ const URL_TYPE_ABSOLUTE = 1;
+ const URL_TYPE_ABSOLUTE_SCHEME = 2;
+ const URL_TYPE_ABSOLUTE_PATH = 3;
+ const URL_TYPE_RELATIVE = 4;
+ const URL_TYPE_EMBED_BASE64 = 5;
+
+ /**
+ * @var string Page URL
+ */
+ public $url;
+
+ /**
+ * @var string Page URL, after prospective redirects
+ */
+ public $pageUrl;
+
+ /**
+ * @var string Site root URL (homepage), based on $pageUrl
+ */
+ public $siteUrl;
+
+ /**
+ * @var string full URI to favicon
+ */
+ public $icoUrl;
+
+ /**
+ * @var string favicon type (file extension, ex: ico|gif|png)
+ */
+ public $icoType;
+
+ /**
+ * @var string favicon url determination method (default /favicon.ico or found in head>link tag)
+ */
+ public $findMethod;
+
+ /**
+ * @var string details, in case of failure
+ */
+ public $error;
+
+ /**
+ * @var bool tell if the favicon exists (set after calling IconService)
+ */
+ public $icoExists;
+
+ /**
+ * @var string md5 of $icoData
+ */
+ public $icoMd5;
+
+ /**
+ * @var string favicon binary data
+ */
+ public $icoData;
+
+ /**
+ * @var array Additional debug info
+ */
+ public $debugInfo;
+
+ /**
+ * @var string HTTP proxy (ex: localhost:8888)
+ */
+ protected $httpProxy;
+
+ /**
+ * @var bool SSL verify peer (default: true)
+ */
+ protected $sslVerify;
+
+ /**
+ * Create a new IconService object, search & download favicon if $auto is true
+ *
+ * @param string $url Page URL
+ * @param array $options Optional settings
+ * @param bool $auto Search & download favicon on instantiation
+ */
+ public function __construct($url, $options = null, $auto = true) {
+ if (!$url) {
+ throw new \InvalidArgumentException("url is empty");
+ }
+ if (self::urlType($url) != self::URL_TYPE_ABSOLUTE) {
+ throw new \InvalidArgumentException("'" . $url . "' is not an absolute url");
+ }
+ $this->url = $url;
+ $this->httpProxy = isset($options['httpProxy']) ? $options['httpProxy'] : null;
+ $this->sslVerify = isset($options['sslVerify']) && $options['sslVerify'] === false ? false : true;
+ if ($auto) {
+ $this->getFaviconUrl();
+ $this->downloadFavicon();
+ }
+ }
+
+ /**
+ * Download page and search html to find favicon URL. Returns favicon URL.
+ * HTML parsing is achieved using regular expressions (http://blog.codinghorror.com/parsing-html-the-cthulhu-way/)
+ * to get it work on all kinds of web documents (including non w3c compliance), which an XML parser can't do.
+ */
+ public function getFaviconUrl() {
+ // If already executed, don't need to search again
+ if (!empty($this->icoUrl)) {
+ return $this->icoUrl;
+ }
+
+ // Check URL to search
+ if (empty($this->url)) {
+ throw new \Exception("url is empty");
+ }
+
+ // Removing fragment (hash) from URL
+ $url = $this->url;
+ $urlInfo = parse_url($this->url);
+ if (isset($urlInfo['fragment'])) {
+ $url = str_replace('#' . $urlInfo['fragment'], '', $url);
+ }
+
+ // Downloading the page
+ $info = [];
+ $html = $this->downloadAs($url, $info);
+ if ($info['curl_errno'] !== CURLE_OK) {
+ $this->error = $info['curl_error'];
+ $this->debugInfo['document_curl_errno'] = $info['curl_errno'];
+ return false;
+ }
+
+ // Saving final URL (after prospective redirects) and get root URL
+ $this->pageUrl = $info['effective_url'];
+ $pageUrlInfo = parse_url($this->pageUrl);
+ if (!empty($pageUrlInfo['scheme']) && !empty($pageUrlInfo['host'])) {
+ $this->siteUrl = $pageUrlInfo['scheme'] . '://' . $pageUrlInfo['host'] . '/';
+ }
+
+ // Default favicon URL
+ $this->icoUrl = $this->siteUrl . 'favicon.ico';
+ $this->findMethod = 'default';
+
+ // HTML <head> tag extraction
+ preg_match('#^(.*)<\s*body#isU', $html, $matches);
+ $htmlHead = isset($matches[1]) ? $matches[1] : $html;
+
+ // HTML <base> tag href extraction
+ $base_href = null;
+ if (preg_match('#<base[^>]+href=(["\'])([^>]+)\1#i', $htmlHead, $matches)) {
+ $base_href = rtrim($matches[2], '/') . '/';
+ $this->debugInfo['base_href'] = $base_href;
+ }
+
+ // HTML <link> icon tag analysis
+ $this->parseLinkElement($htmlHead, $pageUrlInfo, $base_href);
+
+ return $this->icoUrl;
+ }
+
+
+ private function parseLinkElement($htmlHead, $pageUrlInfo, $base_href){
+ if (preg_match('#<\s*link[^>]*(rel=(["\'])[^>\2]*icon[^>\2]*\2)[^>]*>#i', $htmlHead, $matches)) {
+ $link_tag = $matches[0];
+ $this->debugInfo['link_tag'] = $link_tag;
+
+ // HTML <link> icon tag href analysis
+ if (preg_match('#href\s*=\s*(["\'])(.*?)\1#i', $link_tag, $matches)) {
+ $ico_href = trim($matches[2]);
+ $this->debugInfo['ico_href'] = $ico_href;
+ $this->findMethod = 'head';
+
+ // Building full absolute URL
+ $urlType = self::urlType($ico_href);
+ switch ($urlType) {
+ case self::URL_TYPE_ABSOLUTE:
+ $this->findMethod .= ' absolute';
+ $this->icoUrl = $ico_href;
+ $this->icoType = self::getExtension($this->icoUrl);
+ break;
+ case self::URL_TYPE_ABSOLUTE_SCHEME:
+ $this->findMethod .= ' absolute_scheme';
+ $this->icoUrl = $pageUrlInfo['scheme'] . ':' . $ico_href;
+ $this->icoType = self::getExtension($this->icoUrl);
+ break;
+ case self::URL_TYPE_ABSOLUTE_PATH:
+ $this->findMethod .= ' absolute_path';
+ $this->icoUrl = rtrim($this->siteUrl, '/') . '/' . ltrim($ico_href, '/');
+ $this->findMethod .= ' without base href';
+ if (isset($base_href)) {
+ $baseHrefType = self::urlType($base_href);
+ if ($baseHrefType != self::URL_TYPE_ABSOLUTE) {
+ throw new \Exception("Base href is not an absolute URL");
+ }
+ $baseUrlInfo = parse_url($base_href);
+ $this->icoUrl = $baseUrlInfo['scheme'] . '://' . $baseUrlInfo['host'] . $ico_href;
+ $this->findMethod .= ' with base href';
+ }
+ $this->icoType = self::getExtension($this->icoUrl);
+ break;
+ case self::URL_TYPE_RELATIVE:
+ $this->findMethod .= ' relative';
+ $path = preg_replace('#/[^/]+?$#i', '/', $pageUrlInfo['path']);
+ $this->icoUrl = $pageUrlInfo['scheme'] . '://' . $pageUrlInfo['host'] . $path . $ico_href;
+ $this->findMethod .= ' without base href';
+ if (isset($base_href)) {
+ $this->icoUrl = $base_href . $ico_href;
+ $this->findMethod .= ' with base href';
+ }
+ $this->icoType = self::getExtension($this->icoUrl);
+ break;
+ case self::URL_TYPE_EMBED_BASE64:
+ $this->findMethod .= ' base64';
+ $this->icoUrl = $ico_href;
+ break;
+ }
+ }
+ }
+ }
+
+ /**
+ * Download the favicon if available
+ */
+ public function downloadFavicon() {
+ // Check params
+ if (empty($this->icoUrl)) {
+ return false;
+ }
+
+ // Prevent useless re-download
+ if (!empty($this->icoData)) {
+ return false;
+ }
+
+ // Base64 embed favicon
+ if (preg_match('/^\s*data:(.*?);base64,(.*)/i', $this->icoUrl, $matches)) {
+ $content = base64_decode($matches[2]);
+ if ($content === false) {
+ $this->error = "base64 decode error";
+ return false;
+ }
+ $this->icoData = $content;
+ $this->icoMd5 = md5($content);
+ $this->icoExists = true;
+ $this->icoType = self::getExtensionFromMimeType($matches[1]);
+ return true;
+ }
+
+ // Download favicon
+ $info = [];
+ $content = $this->downloadAs($this->icoUrl, $info);
+ $this->debugInfo['favicon_download_metadata'] = $info;
+
+ // Failover : if getting a 404 with favicon URL found in HTML source, trying with the default favicon URL
+ $doFailover = $content === false
+ && $info['http_code'] == 404
+ && $this->findMethod != 'default'
+ && !isset($this->debugInfo['failover']);
+ if ($doFailover) {
+ $this->debugInfo['failoverBefore_icoUrl'] = $this->icoUrl;
+ $this->debugInfo['failoverBefore_findMethod'] = $this->findMethod;
+ $this->icoUrl = $this->siteUrl . 'favicon.ico';
+ $this->findMethod = 'default';
+ $this->icoType = self::getExtension($this->icoUrl);
+ $this->debugInfo['failover'] = true;
+ return $this->downloadFavicon();
+ }
+
+ // Download error
+ if ($content === false) {
+ $this->error = 'Favicon download error (HTTP ' . $info['http_code'] . ')';
+ return false;
+ }
+
+ // Check favicon content
+ if (strlen($content) == 0) {
+ $this->error = "Empty content";
+ return false;
+ }
+ $textTypes = array('text/html', 'text/plain');
+ if (in_array($info['content_type'], $textTypes) || preg_match('#(</html>|</b>)#i', $content)) {
+ $this->error = "Seems to be a text document";
+ return false;
+ }
+
+ // All right baby !
+ $this->icoData = $content;
+ $this->icoMd5 = md5($content);
+ $this->icoExists = true;
+ return true;
+ }
+
+ /**
+ * Download URL as Firefox with cURL
+ * Details available in $info if provided
+ *
+ * @param string $url URL to download
+ * @param array $info Download metadata
+ * @return bool|mixed
+ */
+ public function downloadAs($url, &$info = null) {
+ $ch = curl_init($url);
+ curl_setopt($ch, CURLOPT_HEADER, false);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
+ curl_setopt($ch, CURLOPT_MAXREDIRS, 20);
+ curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0');
+ curl_setopt($ch, CURLOPT_TIMEOUT, 3);
+ // Don't check SSL certificate to allow autosigned certificate
+ if ($this->sslVerify === false) {
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+ }
+
+ // Set HTTP proxy
+ if ($this->httpProxy) {
+ curl_setopt($ch, CURLOPT_PROXY, $this->httpProxy);
+ }
+
+ $content = curl_exec($ch);
+ $info['curl_errno'] = curl_errno($ch);
+ $info['curl_error'] = curl_error($ch);
+ $info['http_code'] = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+ $info['effective_url'] = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
+ $info['redirect_count'] = curl_getinfo($ch, CURLINFO_REDIRECT_COUNT);
+ $info['content_type'] = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
+ curl_close($ch);
+
+ if ($info['curl_errno'] !== CURLE_OK || in_array($info['http_code'], array(403, 404, 500, 503))) {
+ return false;
+ }
+ return $content;
+ }
+
+ /**
+ * Return file extension from an URL or a file path
+ *
+ * @param string $url
+ * @return string
+ */
+ public static function getExtension($url) {
+ if (preg_match('#^(https?|ftp)#i', $url)) {
+ $purl = parse_url($url);
+ $url = $purl['path'];
+ }
+ $info = pathinfo($url);
+ return $info['extension'];
+ }
+
+ /**
+ * Return file extension from MIME type
+ *
+ * @param string $mimeType
+ * @return string
+ */
+ public static function getExtensionFromMimeType($mimeType) {
+ $typeMapping = array(
+ 'ico' => '#image/(x-icon|ico)#i',
+ 'png' => '#image/png#i',
+ 'gif' => '#image/gif#i',
+ 'jpg' => '#image/jpe?g#i',
+ );
+ foreach ($typeMapping as $key => $val) {
+ if (preg_match($val, $mimeType)) {
+ return $key;
+ }
+ }
+ return 'ico';
+ }
+
+ /**
+ * Return URL type, either :
+ * - URL_TYPE_ABSOLUTE ex: http://www.domain.com/images/fav.ico
+ * - URL_TYPE_ABSOLUTE_SCHEME ex: //www.domain.com/images/fav.ico
+ * - URL_TYPE_ABSOLUTE_PATH ex: /images/fav.ico
+ * - URL_TYPE_RELATIVE ex: ../images/fav.ico
+ * - URL_TYPE_EMBED_BASE64 ex: data:image/x-icon;base64,AAABAA...
+ *
+ * @return int
+ */
+ public static function urlType($url) {
+ if (empty($url)) {
+ return false;
+ }
+ $urlInfo = parse_url($url);
+ if (!empty($urlInfo['scheme'])) {
+ return $urlInfo['scheme'] === 'data' ? self::URL_TYPE_EMBED_BASE64 : self::URL_TYPE_ABSOLUTE;
+ } elseif (preg_match('#^//#i', $url)) {
+ return self::URL_TYPE_ABSOLUTE_SCHEME;
+ } elseif (preg_match('#^/[^/]#i', $url)) {
+ return self::URL_TYPE_ABSOLUTE_PATH;
+ }
+ return self::URL_TYPE_RELATIVE;
+ }
+
+ /**
+ * Show object printable properties, or return it if $return is true
+ *
+ * @param boolean $return
+ * @return IconService
+ */
+ public function debug($return = false) {
+ $dump = clone $this;
+ if (!empty($dump->icoData) && is_string($dump->icoData)) {
+ $dump->icoData = substr(bin2hex($dump->icoData), 0, 16) . ' ...';
+ }
+ if ($return) {
+ return $dump;
+ }
+ print_r($dump);
+ }
+} \ No newline at end of file
diff --git a/lib/Utility/Utils.php b/lib/Utility/Utils.php
index 011bd7dd..095d6ac6 100644
--- a/lib/Utility/Utils.php
+++ b/lib/Utility/Utils.php
@@ -60,4 +60,19 @@ class Utils {
$u = $um->get($uid);
return $u->getDisplayName();
}
+
+ public static function getDirContents($dir, &$results = array()){
+ $files = scandir($dir);
+
+ foreach($files as $value){
+ $path = realpath($dir.DIRECTORY_SEPARATOR.$value);
+ if(!is_dir($path)) {
+ $results[] = $path;
+ } else if($value != "." && $value != "..") {
+ Utils::getDirContents($path, $results);
+ $results[] = $path;
+ }
+ }
+ return $results;
+ }
} \ No newline at end of file
diff --git a/personal.php b/personal.php
index c9ce2ae9..b3d9bbc7 100644
--- a/personal.php
+++ b/personal.php
@@ -1 +1 @@
-<!-- Placeholder file --> \ No newline at end of file
+<?php
diff --git a/templates/main.php b/templates/main.php
index 85e78887..2d1528cf 100644
--- a/templates/main.php
+++ b/templates/main.php
@@ -12,60 +12,121 @@ style('passman', 'passman.min');
?>
<div id="app" ng-app="passmanApp" ng-controller="MainCtrl">
- <div id="logoutTimer"> </div>
- <div class="warning_bar" ng-if="using_http && http_warning_hidden == false">
- {{ 'http.warning' | translate }}
- <i class="fa fa-times fa-2x" alt="Close" ng-click="setHttpWarning(true);"></i>
- </div>
+ <div id="logoutTimer"></div>
+ <div id="warning_bar" class="warning_bar template-hidden" ng-if="using_http && http_warning_hidden == false" ng-init="removeHiddenStyles()">
+ {{ 'http.warning' | translate }}
+ <i class="fa fa-times fa-2x" alt="Close" ng-click="setHttpWarning(true);"></i>
+ </div>
- <div id="app-navigation" ng-show="selectedVault" ng-controller="MenuCtrl">
- <ul>
- <li class="taginput">
- <a class="taginput">
- <tags-input ng-model="selectedTags" replace-spaces-with-dashes="false">
- <auto-complete source="getTags($query)" min-length="0"></auto-complete>
- </tags-input>
- </a>
- </li>
+ <div id="app-navigation" class="template-hidden" ng-if="selectedVault" ng-controller="MenuCtrl" ng-init="removeHiddenStyles()">
+ <ul class="with-icon" ng-class="{ 'hidden-list': !legacyNavbar }" >
- <li ng-repeat="tag in available_tags | orderBy:'text'" ng-if="selectedTags.indexOf(tag) == -1">
- <a ng-click="tagClicked(tag)">{{tag.text}}</a>
- </li>
- <li data-id="trashbin" class="nav-trashbin">
- <a ng-click="toggleDeleteTime()"
- ng-class="{'active': delete_time > 0}">
- <i href="#" class="fa fa-trash"></i>
- {{ 'deleted.credentials' | translate }}
- </a>
- </li>
- </ul>
+ <li>
+ <a ng-class="{selected: clickedNavigationItem=='all'}" class="icon-toggle svg" ng-click="filterCredentialBySpecial('all')">{{ 'navigation.show.all' | translate }}</a>
+ </li>
+ <li class="collapsible" ng-class="tagCollapsibleState()">
+ <button class="collapse" ng-click="tagCollapsibleClicked()"></button>
+ <a href="" class="icon-tag" ng-click="tagCollapsibleClicked()">{{ 'navigation.tags' | translate }}</a>
+ <ul>
+ <li class="taginput">
+ <a class="icon-search taginput">
+ <form ng-submit="tagClickedString(taginput); clearForm();">
+ <input id="tagsearch" list="tags" ng-model="taginput" placeholder="{{ 'navigation.tags.search' | translate }}" />
+ <datalist id="tags">
+ <option ng-repeat="qtag in getTags($query)" value="{{qtag.text}}">
+ </datalist>
+ </form>
+ </a>
+ </li>
- <div id="app-settings" ng-init="settingsShown = false;">
- <div id="app-settings-header">
- <button class="settings-button"
- ng-click="settingsShown = !settingsShown"
- >{{ 'settings' | translate }}
- </button>
- </div>
- <div id="app-settings-content" ng-show="settingsShown">
- <!-- Your settings in here -->
- <div class="settings-container">
- <div><a class="link" ng-href="#/vault/{{active_vault.guid}}/settings">{{ 'settings' | translate }}</a></div>
- <div><span class="link" ng-click="logout()">{{'logout' | translate }}</span></div>
- <div><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6YS8F97PETVU2" target="_blank" class="link">{{ 'donate' | translate }}</a></div>
- <div ng-show="session_time_left">
- <small>{{'session.time.left' | translate:translationData}}</small>
- </div>
- </div>
- </div>
- </div>
- </div>
+ <li ng-repeat="tag in available_tags | orderBy:'text'">
+ <div ng-if="tagSelected(tag)"
+ class="app-navigation-entry-bullet app-navigation-entry-bullet-color"></div>
+ <a class="icon-tag svg" ng-click="tagClicked(tag)">{{tag.text}}</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <div class="app-navigation-entry-bullet bullet-color-red"></div>
+ <a ng-class="{selected: clickedNavigationItem=='strength_low'}" ng-click="filterCredentialBySpecial('strength_low')">{{ 'navigation.strength.bad' | translate }}</a>
+ </li>
+ <li>
+ <div class="app-navigation-entry-bullet bullet-color-yellow"></div>
+ <a ng-class="{selected: clickedNavigationItem=='strength_medium'}" ng-click="filterCredentialBySpecial('strength_medium')">{{ 'navigation.strength.medium' | translate }}</a>
+ </li>
+ <li>
+ <div class="app-navigation-entry-bullet bullet-color-green"></div>
+ <a ng-class="{selected: clickedNavigationItem=='strength_good'}" ng-click="filterCredentialBySpecial('strength_good')">{{ 'navigation.strength.good' | translate }}</a>
+ </li>
+ <li>
+ <a ng-class="{selected: clickedNavigationItem=='expired'}" class="icon-expired svg" ng-click="filterCredentialBySpecial('expired')">{{ 'navigation.expired' | translate }}</a>
+ </li>
+ <li data-id="trashbin" class="nav-trashbin pinned first-pinned">
+ <a ng-click="toggleDeleteTime()" ng-class="{'active': delete_time > 0}" class="icon-delete svg">
+ {{ 'deleted.credentials' | translate }}
+ </a>
+ </li>
+ </ul >
+ <ul class="with-icon hidden-list" ng-class="{ 'hidden-list': legacyNavbar }">
+ <li class="taginput">
+ <a class="taginput icon-search">
+ <tags-input id="tags-input-outer" ng-model="selectedTags" replace-spaces-with-dashes="false" ng-init="initPlaceholder()">
+ <auto-complete source="getTags($query)" min-length="0"></auto-complete>
+ </tags-input>
+ </a>
+ </li>
+ <li ng-repeat="tag in available_tags | orderBy:'text'" ng-if="selectedTags.indexOf(tag) == -1">
+ <a class="icon-tag svg" ng-click="tagClicked(tag)">{{tag.text}}</a>
+ </li>
+ <li data-id="trashbin" class="nav-trashbin pinned first-pinned">
+ <a ng-click="toggleDeleteTime()" ng-class="{'active': delete_time > 0}" class="icon-delete svg">
+ {{ 'deleted.credentials' | translate }}
+ </a>
+ </li>
+ </ul>
- <div id="app-content">
- <div id="app-content-wrapper">
- <div id="content" ng-view="">
+ <div id="app-settings" ng-init="settingsShown = false;">
+ <div id="app-settings-header">
+ <button class="settings-button"
+ ng-click="settingsShown = !settingsShown"
+ >{{ 'settings' | translate }}
+ </button>
+ </div>
+ <div id="app-settings-content" class="hide-animation" ng-hide="!settingsShown">
- </div>
- </div>
- </div>
+ <div class="settings-container-label">
+ <input class="checkbox" id="navbarLegacyMode" type="checkbox" ng-model="legacyNavbar">
+ <label for="navbarLegacyMode">{{'navigation.advanced.checkbox' | translate }}</label>
+ </div>
+
+ <div class="settings-container">
+ <a ng-href="#/vault/{{active_vault.guid}}/settings" class="link" ng-click="settingsShown = false;">
+ <button>{{ 'settings' | translate }}</button>
+ </a>
+ </div>
+ <div class="settings-container">
+ <button ng-click="logout()"><span class="link">{{'logout' | translate }}</span></button>
+ </div>
+ <div class="donation-container settings-container">
+ <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6YS8F97PETVU2"
+ target="_blank" class="link" ng-click="settingsShown = false;">
+ <button class="donation-container">{{ 'donate' | translate }}</button>
+ </a>
+ </div>
+ <div class="settings-container">
+ <div ng-show="session_time_left">
+ <small>{{'session.time.left' | translate:translationData}}</small>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div id="app-content" ng-class="{'vaultlist_sidebar_hidden': !selectedVault}">
+ <div id="app-content-wrapper">
+ <div id="content" ng-view="">
+
+ </div>
+ </div>
+ </div>
</div>
diff --git a/templates/public_share.php b/templates/public_share.php
index 1a4c68e6..bcdbe510 100644
--- a/templates/public_share.php
+++ b/templates/public_share.php
@@ -11,28 +11,29 @@ style('passman', 'passman.min');
style('passman', 'public-page');
?>
-<div ng-app="passmanApp" ng-controller="PublicSharedCredential">
- <div class="row">
+<div class="share-controller" ng-app="passmanApp" ng-controller="PublicSharedCredential">
+ <div class="share-container">
+ <div class="row">
<div class="col-xs-8 col-xs-push-2 col-xs-pull-2 credential_container">
<h2>Passman</h2>
<div ng-if="!shared_credential && !expired">
- <span class="text">Someone has shared a credential with you.</span>
+ <span class="text"><?php p($l->t("Someone has shared a credential with you.")); ?></span>
<button class="button-geen" ng-if="!loading"
- ng-click="loadSharedCredential()">Click here to request
- it
+ ng-click="loadSharedCredential()"><?php p($l->t("Click here to request
+ it")); ?>
</button>
<button class="button-geen" ng-if="loading"><i
- class="fa fa-spinner fa-spin"></i>Loading...
+ class="fa fa-spinner fa-spin"></i><?php p($l->t("Loading&hellip;")); ?>
</button>
</div>
<div ng-if="expired">
- Awwhh.... credential not found. Maybe it expired
+ <?php p($l->t("Awwhh… could not find the credential. Maybe it expired?")); ?>
</div>
<div ng-if="shared_credential">
<table class="table">
<tr ng-show="shared_credential.label">
<td>
- Label
+ <?php p($l->t("Label")); ?>
</td>
<td>
{{shared_credential.label}}
@@ -40,7 +41,7 @@ style('passman', 'public-page');
</tr>
<tr ng-show="shared_credential.username">
<td>
- Account
+ <?php p($l->t("Account")); ?>
</td>
<td>
<span credential-field
@@ -49,7 +50,7 @@ style('passman', 'public-page');
</tr>
<tr ng-show="shared_credential.password">
<td>
- Password
+ <?php p($l->t("Password")); ?>
</td>
<td>
<span credential-field value="shared_credential.password"
@@ -58,7 +59,7 @@ style('passman', 'public-page');
</tr>
<tr ng-show="shared_credential.otp.secret">
<td>
- OTP
+ <?php p($l->t("OTP")); ?>
</td>
<td>
<span otp-generator
@@ -67,7 +68,7 @@ style('passman', 'public-page');
</tr>
<tr ng-show="shared_credential.email">
<td>
- E-mail
+ <?php p($l->t("E-mail")); ?>
</td>
<td>
<span credential-field
@@ -76,7 +77,7 @@ style('passman', 'public-page');
</tr>
<tr ng-show="shared_credential.url">
<td>
- URL
+ <?php p($l->t("URL")); ?>
</td>
<td>
<span credential-field
@@ -85,7 +86,7 @@ style('passman', 'public-page');
</tr>
<tr ng-show="shared_credential.files.length > 0">
<td>
- Files
+ <?php p($l->t("Files")); ?>
</td>
<td>
<div ng-repeat="file in shared_credential.files"
@@ -106,7 +107,7 @@ style('passman', 'public-page');
</tr>
<tr ng-show="shared_credential.expire_time > 0">
<td>
- Expire time
+ <?php p($l->t("Expires:")); ?>
</td>
<td>
{{shared_credential.expire_time * 1000 |
@@ -115,7 +116,7 @@ style('passman', 'public-page');
</tr>
<tr ng-show="shared_credential.changed">
<td>
- Changed
+ <?php p($l->t("Changed")); ?>
</td>
<td>
{{shared_credential.changed * 1000 |
@@ -124,7 +125,7 @@ style('passman', 'public-page');
</tr>
<tr ng-show="shared_credential.created">
<td>
- Created
+ <?php p($l->t("Created")); ?>
</td>
<td>
{{shared_credential.created * 1000 |
@@ -141,7 +142,7 @@ style('passman', 'public-page');
</div>
<div class="footer">
<a href="https://github.com/nextcloud/passman" target="_blank"
- class="link">Github</a> | <a
+ class="link">GitHub</a> | <a
href="https://github.com/nextcloud/passman/wiki"
target="_blank" class="link">Wiki</a> | <a
href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6YS8F97PETVU2"
@@ -149,4 +150,5 @@ style('passman', 'public-page');
</div>
</div>
</div>
-</div> \ No newline at end of file
+ </div>
+</div>