summaryrefslogtreecommitdiffstats
path: root/wiki
diff options
context:
space:
mode:
authorintrigeri <intrigeri@boum.org>2015-11-22 11:57:25 +0000
committerintrigeri <intrigeri@boum.org>2015-11-22 11:57:25 +0000
commita4d8d196958dfaa376d2f333066d1e363caf3d17 (patch)
tree1f45f3ec7f7e93792cbbf0e066ed7b7c84e0be1f /wiki
parentbe1851ff6e13021165deec704c8ca205b4eb2792 (diff)
parent3af516b0bf813f3da4bb3801b9cb36fbda5e5f76 (diff)
Merge remote-tracking branch 'origin/master' into italian
Diffstat (limited to 'wiki')
-rw-r--r--wiki/src/about.de.po125
-rw-r--r--wiki/src/about.fr.po125
-rw-r--r--wiki/src/about.mdwn38
-rw-r--r--wiki/src/about.pt.po109
-rw-r--r--wiki/src/blueprint/Debian_Stretch.mdwn76
-rw-r--r--wiki/src/blueprint/GNotification.mdwn1
-rw-r--r--wiki/src/blueprint/Git_sub-repositories.mdwn2
-rw-r--r--wiki/src/blueprint/HTTP_mirror_pool.mdwn151
-rw-r--r--wiki/src/blueprint/Return_of_Icedove__63__.mdwn7
-rw-r--r--wiki/src/blueprint/SponsorS/reports/2015_01-07.mdwn374
-rw-r--r--wiki/src/blueprint/SponsorS/reports/2015_09.mdwn296
-rw-r--r--wiki/src/blueprint/SponsorS/reports/2015_10.mdwn276
-rw-r--r--wiki/src/blueprint/SponsorS/reports/2015_11.mdwn2
-rw-r--r--wiki/src/blueprint/SponsorS/reports/2015_12.mdwn2
-rw-r--r--wiki/src/blueprint/SponsorS/reports/2016_01.mdwn2
-rw-r--r--wiki/src/blueprint/SponsorS/reports/2016_02.mdwn2
-rw-r--r--wiki/src/blueprint/SponsorS/reports/2016_03.mdwn2
-rw-r--r--wiki/src/blueprint/SponsorS/reports/2016_04.mdwn2
-rw-r--r--wiki/src/blueprint/SponsorS/reports/2016_05.mdwn2
-rw-r--r--wiki/src/blueprint/SponsorS/reports/2016_06.mdwn2
-rw-r--r--wiki/src/blueprint/SponsorS/reports/2016_07.mdwn2
-rw-r--r--wiki/src/blueprint/automated_builds_and_tests/automated_tests_specs.mdwn25
-rw-r--r--wiki/src/blueprint/automated_builds_and_tests/jenkins.mdwn298
-rw-r--r--wiki/src/blueprint/automated_builds_and_tests/resources.mdwn140
-rw-r--r--wiki/src/blueprint/bootstrapping/assistant/infography/2nd_iteration/infography-sajolida-20150327.svg1095
-rw-r--r--wiki/src/blueprint/bootstrapping/assistant/mac.mdwn40
-rw-r--r--wiki/src/blueprint/bootstrapping/assistant/overview/2nd_iteration/overview-20150324.odgbin99337 -> 0 bytes
-rw-r--r--wiki/src/blueprint/bootstrapping/assistant/tails_installer.pngbin30026 -> 0 bytes
-rw-r--r--wiki/src/blueprint/bootstrapping/assistant/windows.mdwn436
-rw-r--r--wiki/src/blueprint/bootstrapping/extension.mdwn13
-rw-r--r--wiki/src/blueprint/bootstrapping/extension/prototype.mdwn233
-rw-r--r--wiki/src/blueprint/derivatives.mdwn44
-rw-r--r--wiki/src/blueprint/desktop_notifications.mdwn147
-rw-r--r--wiki/src/blueprint/detect_captive_portals.mdwn6
-rw-r--r--wiki/src/blueprint/evaluate_Docker.mdwn1
-rw-r--r--wiki/src/blueprint/freezable_APT_repository.mdwn787
-rw-r--r--wiki/src/blueprint/greeter_revamp_UI/design_rationale_phase1.mdwn170
-rw-r--r--wiki/src/blueprint/l10n_Italian.mdwn105
-rw-r--r--wiki/src/blueprint/lizard_failover.mdwn60
-rw-r--r--wiki/src/blueprint/monitor_servers.mdwn14
-rw-r--r--wiki/src/blueprint/monthly_meeting.mdwn1
-rw-r--r--wiki/src/blueprint/network_connection.mdwn75
-rw-r--r--wiki/src/blueprint/non-discriminatory_language.mdwn72
-rw-r--r--wiki/src/blueprint/replace_vagrant.mdwn5
-rw-r--r--wiki/src/blueprint/report_2015_08.mdwn80
-rw-r--r--wiki/src/blueprint/report_2015_09.mdwn31
-rw-r--r--wiki/src/blueprint/report_2015_10.mdwn4
-rw-r--r--wiki/src/blueprint/reproducible_builds.mdwn5
-rw-r--r--wiki/src/bootstrap.css6592
-rw-r--r--wiki/src/contribute.de.po18
-rw-r--r--wiki/src/contribute.fr.po4
-rw-r--r--wiki/src/contribute.mdwn2
-rw-r--r--wiki/src/contribute.pt.po18
-rw-r--r--wiki/src/contribute/APT_repository.mdwn2
-rw-r--r--wiki/src/contribute/build.mdwn2
-rw-r--r--wiki/src/contribute/build/website.mdwn86
-rw-r--r--wiki/src/contribute/build/website/languages.inline.mdwn5
-rw-r--r--wiki/src/contribute/build/website/src.inline.mdwn4
-rw-r--r--wiki/src/contribute/calendar.mdwn15
-rw-r--r--wiki/src/contribute/design.mdwn11
-rw-r--r--wiki/src/contribute/design/I2P.mdwn2
-rw-r--r--wiki/src/contribute/design/Tor_enforcement/DNS.mdwn6
-rw-r--r--wiki/src/contribute/design/Tor_enforcement/Network_filter.mdwn6
-rw-r--r--wiki/src/contribute/design/application_isolation.mdwn1
-rw-r--r--wiki/src/contribute/git.mdwn2
-rw-r--r--wiki/src/contribute/how/code.mdwn2
-rw-r--r--wiki/src/contribute/how/documentation.mdwn13
-rwxr-xr-xwiki/src/contribute/how/documentation/compress-image.sh2
-rw-r--r--wiki/src/contribute/how/donate.de.po8
-rw-r--r--wiki/src/contribute/how/donate.fr.po8
-rw-r--r--wiki/src/contribute/how/donate.mdwn2
-rw-r--r--wiki/src/contribute/how/donate.pt.po8
-rw-r--r--wiki/src/contribute/how/translate/team/fr.mdwn8
-rw-r--r--wiki/src/contribute/how/translate/with_Git.mdwn99
-rw-r--r--wiki/src/contribute/l10n_tricks.mdwn8
-rw-r--r--wiki/src/contribute/meetings.mdwn2
-rw-r--r--wiki/src/contribute/meetings/201510.mdwn42
-rw-r--r--wiki/src/contribute/meetings/201511.mdwn52
-rw-r--r--wiki/src/contribute/release_process.mdwn49
-rw-r--r--wiki/src/contribute/release_process/liveusb-creator.mdwn108
-rw-r--r--wiki/src/contribute/release_process/liveusb-creator/topic_branch.mdwn20
-rw-r--r--wiki/src/contribute/release_process/tails-installer.mdwn227
-rw-r--r--wiki/src/contribute/release_process/tails-installer/topic_branch.mdwn53
-rw-r--r--wiki/src/contribute/release_process/test.mdwn90
-rw-r--r--wiki/src/contribute/release_process/test/automated_tests.mdwn116
-rw-r--r--wiki/src/contribute/release_process/test/setup.mdwn16
-rw-r--r--wiki/src/contribute/release_process/test/usage.mdwn23
-rw-r--r--wiki/src/contribute/release_process/tor.mdwn5
-rw-r--r--wiki/src/contribute/working_together/roles/front_desk.mdwn2
-rw-r--r--wiki/src/contribute/working_together/roles/sysadmins.mdwn3
-rw-r--r--wiki/src/doc/about/acknowledgments_and_similar_projects.de.po41
-rw-r--r--wiki/src/doc/about/acknowledgments_and_similar_projects.fr.po69
-rw-r--r--wiki/src/doc/about/acknowledgments_and_similar_projects.mdwn2
-rw-r--r--wiki/src/doc/about/acknowledgments_and_similar_projects.pt.po51
-rw-r--r--wiki/src/doc/about/features.de.po42
-rw-r--r--wiki/src/doc/about/features.fr.po42
-rw-r--r--wiki/src/doc/about/features.mdwn7
-rw-r--r--wiki/src/doc/about/features.pt.po11
-rw-r--r--wiki/src/doc/about/fingerprint.fr.po19
-rw-r--r--wiki/src/doc/about/license.de.po30
-rw-r--r--wiki/src/doc/about/license.fr.po16
-rw-r--r--wiki/src/doc/about/license.mdwn10
-rw-r--r--wiki/src/doc/about/license.pt.po26
-rw-r--r--wiki/src/doc/about/openpgp_keys.de.po22
-rw-r--r--wiki/src/doc/about/openpgp_keys.fr.po16
-rw-r--r--wiki/src/doc/about/openpgp_keys.mdwn4
-rw-r--r--wiki/src/doc/about/openpgp_keys.pt.po16
-rw-r--r--wiki/src/doc/about/requirements.de.po16
-rw-r--r--wiki/src/doc/about/requirements.fr.po12
-rw-r--r--wiki/src/doc/about/tor.fr.po29
-rw-r--r--wiki/src/doc/about/trust.de.po87
-rw-r--r--wiki/src/doc/about/trust.fr.po87
-rw-r--r--wiki/src/doc/about/trust.mdwn22
-rw-r--r--wiki/src/doc/about/trust.pt.po87
-rw-r--r--wiki/src/doc/about/warning.de.po309
-rw-r--r--wiki/src/doc/about/warning.fr.po248
-rw-r--r--wiki/src/doc/about/warning.mdwn84
-rw-r--r--wiki/src/doc/about/warning.pt.po240
-rw-r--r--wiki/src/doc/advanced_topics.index.fr.po11
-rw-r--r--wiki/src/doc/advanced_topics/lan.fr.po93
-rw-r--r--wiki/src/doc/advanced_topics/paperkey.fr.po7
-rw-r--r--wiki/src/doc/advanced_topics/virtualization.fr.po15
-rw-r--r--wiki/src/doc/advanced_topics/wireless_devices.de.po31
-rw-r--r--wiki/src/doc/advanced_topics/wireless_devices.fr.po37
-rw-r--r--wiki/src/doc/advanced_topics/wireless_devices.mdwn16
-rw-r--r--wiki/src/doc/advanced_topics/wireless_devices.pt.po31
-rw-r--r--wiki/src/doc/anonymous_internet.index.de.po20
-rw-r--r--wiki/src/doc/anonymous_internet.index.fr.po34
-rw-r--r--wiki/src/doc/anonymous_internet.index.mdwn2
-rw-r--r--wiki/src/doc/anonymous_internet.index.pt.po42
-rw-r--r--wiki/src/doc/anonymous_internet/Tor_Browser.de.po211
-rw-r--r--wiki/src/doc/anonymous_internet/Tor_Browser.fr.po47
-rw-r--r--wiki/src/doc/anonymous_internet/claws_mail/persistence.bug.de.po62
-rw-r--r--wiki/src/doc/anonymous_internet/claws_mail/persistence.bug.fr.po26
-rw-r--r--wiki/src/doc/anonymous_internet/claws_mail_to_icedove.de.po498
-rw-r--r--wiki/src/doc/anonymous_internet/claws_mail_to_icedove.fr.po498
-rw-r--r--wiki/src/doc/anonymous_internet/claws_mail_to_icedove.mdwn238
-rw-r--r--wiki/src/doc/anonymous_internet/claws_mail_to_icedove.pt.po498
-rw-r--r--wiki/src/doc/anonymous_internet/claws_mail_to_icedove/single_mh.pngbin0 -> 8799 bytes
-rw-r--r--wiki/src/doc/anonymous_internet/electrum.de.po4
-rw-r--r--wiki/src/doc/anonymous_internet/electrum.fr.po12
-rw-r--r--wiki/src/doc/anonymous_internet/electrum.mdwn2
-rw-r--r--wiki/src/doc/anonymous_internet/electrum.pt.po4
-rw-r--r--wiki/src/doc/anonymous_internet/i2p.de.po24
-rw-r--r--wiki/src/doc/anonymous_internet/i2p.fr.po24
-rw-r--r--wiki/src/doc/anonymous_internet/i2p.mdwn4
-rw-r--r--wiki/src/doc/anonymous_internet/i2p.pt.po17
-rw-r--r--wiki/src/doc/anonymous_internet/icedove.de.po197
-rw-r--r--wiki/src/doc/anonymous_internet/icedove.fr.po197
-rw-r--r--wiki/src/doc/anonymous_internet/icedove.mdwn88
-rw-r--r--wiki/src/doc/anonymous_internet/icedove.pt.po197
-rw-r--r--wiki/src/doc/anonymous_internet/icedove/account_creation.inline.de.po121
-rw-r--r--wiki/src/doc/anonymous_internet/icedove/account_creation.inline.fr.po121
-rw-r--r--wiki/src/doc/anonymous_internet/icedove/account_creation.inline.mdwn57
-rw-r--r--wiki/src/doc/anonymous_internet/icedove/account_creation.inline.pt.po121
-rw-r--r--wiki/src/doc/anonymous_internet/icedove/assistant.pngbin0 -> 22904 bytes
-rw-r--r--wiki/src/doc/anonymous_internet/icedove/menu.pngbin0 -> 329 bytes
-rw-r--r--wiki/src/doc/anonymous_internet/icedove/name.inline.de.po38
-rw-r--r--wiki/src/doc/anonymous_internet/icedove/name.inline.fr.po38
-rw-r--r--wiki/src/doc/anonymous_internet/icedove/name.inline.mdwn8
-rw-r--r--wiki/src/doc/anonymous_internet/icedove/name.inline.pt.po38
-rw-r--r--wiki/src/doc/anonymous_internet/networkmanager.fr.po10
-rw-r--r--wiki/src/doc/anonymous_internet/pidgin.de.po30
-rw-r--r--wiki/src/doc/anonymous_internet/pidgin.fr.po50
-rw-r--r--wiki/src/doc/anonymous_internet/pidgin.mdwn19
-rw-r--r--wiki/src/doc/anonymous_internet/pidgin.pt.po43
-rw-r--r--wiki/src/doc/anonymous_internet/thunderbird.de.po83
-rw-r--r--wiki/src/doc/anonymous_internet/thunderbird.fr.po118
-rw-r--r--wiki/src/doc/anonymous_internet/thunderbird.mdwn42
-rw-r--r--wiki/src/doc/anonymous_internet/thunderbird.pt.po65
-rw-r--r--wiki/src/doc/anonymous_internet/unsafe_browser.de.po59
-rw-r--r--wiki/src/doc/anonymous_internet/unsafe_browser.fr.po21
-rw-r--r--wiki/src/doc/anonymous_internet/unsafe_browser/chroot.inline.de.po4
-rw-r--r--wiki/src/doc/anonymous_internet/unsafe_browser/chroot.inline.fr.po2
-rw-r--r--wiki/src/doc/anonymous_internet/vidalia.de.po120
-rw-r--r--wiki/src/doc/anonymous_internet/vidalia.fr.po15
-rw-r--r--wiki/src/doc/anonymous_internet/vidalia.mdwn2
-rw-r--r--wiki/src/doc/anonymous_internet/vidalia.pt.po8
-rw-r--r--wiki/src/doc/encryption_and_privacy/encrypted_volumes.de.po14
-rw-r--r--wiki/src/doc/encryption_and_privacy/encrypted_volumes.fr.po41
-rw-r--r--wiki/src/doc/encryption_and_privacy/encrypted_volumes.mdwn12
-rw-r--r--wiki/src/doc/encryption_and_privacy/encrypted_volumes.pt.po14
-rw-r--r--wiki/src/doc/encryption_and_privacy/gpgapplet.warning.fr.po5
-rw-r--r--wiki/src/doc/encryption_and_privacy/gpgapplet/decrypt_verify.fr.po4
-rw-r--r--wiki/src/doc/encryption_and_privacy/gpgapplet/passphrase_encryption.fr.po6
-rw-r--r--wiki/src/doc/encryption_and_privacy/gpgapplet/public-key_cryptography.fr.po8
-rw-r--r--wiki/src/doc/encryption_and_privacy/keyringer.fr.po21
-rw-r--r--wiki/src/doc/encryption_and_privacy/secure_deletion.de.po6
-rw-r--r--wiki/src/doc/encryption_and_privacy/secure_deletion.fr.po18
-rw-r--r--wiki/src/doc/encryption_and_privacy/secure_deletion.mdwn4
-rw-r--r--wiki/src/doc/encryption_and_privacy/secure_deletion.pt.po6
-rw-r--r--wiki/src/doc/encryption_and_privacy/virtual_keyboard.fr.po4
-rw-r--r--wiki/src/doc/encryption_and_privacy/your_data_wont_be_saved_unless_explicitly_asked.de.po2
-rw-r--r--wiki/src/doc/encryption_and_privacy/your_data_wont_be_saved_unless_explicitly_asked.fr.po4
-rw-r--r--wiki/src/doc/encryption_and_privacy/your_data_wont_be_saved_unless_explicitly_asked.mdwn2
-rw-r--r--wiki/src/doc/encryption_and_privacy/your_data_wont_be_saved_unless_explicitly_asked.pt.po2
-rw-r--r--wiki/src/doc/first_steps.index.de.po3
-rw-r--r--wiki/src/doc/first_steps.index.fr.po19
-rw-r--r--wiki/src/doc/first_steps.index.mdwn1
-rw-r--r--wiki/src/doc/first_steps.index.pt.po3
-rw-r--r--wiki/src/doc/first_steps/accessibility.fr.po28
-rw-r--r--wiki/src/doc/first_steps/bug_reporting.de.po17
-rw-r--r--wiki/src/doc/first_steps/bug_reporting.fr.po20
-rw-r--r--wiki/src/doc/first_steps/bug_reporting.mdwn2
-rw-r--r--wiki/src/doc/first_steps/bug_reporting.pt.po13
-rw-r--r--wiki/src/doc/first_steps/bug_reporting/tails_does_not_start.de.po87
-rw-r--r--wiki/src/doc/first_steps/bug_reporting/tails_does_not_start.fr.po19
-rw-r--r--wiki/src/doc/first_steps/installation.de.po10
-rw-r--r--wiki/src/doc/first_steps/installation.fr.po10
-rw-r--r--wiki/src/doc/first_steps/installation.mdwn4
-rw-r--r--wiki/src/doc/first_steps/installation.pt.po10
-rw-r--r--wiki/src/doc/first_steps/installation/manual.de.po20
-rw-r--r--wiki/src/doc/first_steps/installation/manual.intro.de.po19
-rw-r--r--wiki/src/doc/first_steps/installation/manual/linux.de.po108
-rw-r--r--wiki/src/doc/first_steps/installation/manual/mac.de.po149
-rw-r--r--wiki/src/doc/first_steps/installation/manual/mac.fr.po24
-rw-r--r--wiki/src/doc/first_steps/installation/manual/windows.de.po64
-rw-r--r--wiki/src/doc/first_steps/installation/manual/windows.fr.po14
-rw-r--r--wiki/src/doc/first_steps/introduction_to_gnome_and_the_tails_desktop.de.po271
-rw-r--r--wiki/src/doc/first_steps/introduction_to_gnome_and_the_tails_desktop.fr.po15
-rw-r--r--wiki/src/doc/first_steps/persistence/change_passphrase.fr.po20
-rw-r--r--wiki/src/doc/first_steps/persistence/check_file_system.de.po39
-rw-r--r--wiki/src/doc/first_steps/persistence/configure.de.po460
-rw-r--r--wiki/src/doc/first_steps/persistence/configure.fr.po262
-rw-r--r--wiki/src/doc/first_steps/persistence/configure.mdwn81
-rw-r--r--wiki/src/doc/first_steps/persistence/configure.pt.po224
-rw-r--r--wiki/src/doc/first_steps/persistence/copy.de.po155
-rw-r--r--wiki/src/doc/first_steps/persistence/copy.fr.po61
-rw-r--r--wiki/src/doc/first_steps/persistence/copy.mdwn10
-rw-r--r--wiki/src/doc/first_steps/persistence/copy.pt.po46
-rw-r--r--wiki/src/doc/first_steps/persistence/delete.de.po43
-rw-r--r--wiki/src/doc/first_steps/persistence/delete.fr.po12
-rw-r--r--wiki/src/doc/first_steps/persistence/icedove.pngbin0 -> 4985 bytes
-rw-r--r--wiki/src/doc/first_steps/persistence/recover_insecure.fr.po14
-rw-r--r--wiki/src/doc/first_steps/persistence/use.de.po45
-rw-r--r--wiki/src/doc/first_steps/persistence/warnings.de.po75
-rw-r--r--wiki/src/doc/first_steps/reset.de.po10
-rw-r--r--wiki/src/doc/first_steps/reset.fr.po10
-rw-r--r--wiki/src/doc/first_steps/reset.mdwn3
-rw-r--r--wiki/src/doc/first_steps/reset.pt.po12
-rw-r--r--wiki/src/doc/first_steps/reset/linux.de.po6
-rw-r--r--wiki/src/doc/first_steps/reset/linux.fr.po19
-rw-r--r--wiki/src/doc/first_steps/reset/linux.mdwn2
-rw-r--r--wiki/src/doc/first_steps/reset/linux.pt.po6
-rw-r--r--wiki/src/doc/first_steps/reset/mac.de.po58
-rw-r--r--wiki/src/doc/first_steps/reset/mac.fr.po57
-rw-r--r--wiki/src/doc/first_steps/reset/mac.mdwn2
-rw-r--r--wiki/src/doc/first_steps/reset/mac.pt.po18
-rw-r--r--wiki/src/doc/first_steps/reset/windows.de.po6
-rw-r--r--wiki/src/doc/first_steps/reset/windows.fr.po21
-rw-r--r--wiki/src/doc/first_steps/reset/windows.mdwn2
-rw-r--r--wiki/src/doc/first_steps/reset/windows.pt.po6
-rw-r--r--wiki/src/doc/first_steps/shutdown.fr.po16
-rw-r--r--wiki/src/doc/first_steps/start_tails.de.po129
-rw-r--r--wiki/src/doc/first_steps/start_tails.fr.po127
-rw-r--r--wiki/src/doc/first_steps/start_tails.mdwn2
-rw-r--r--wiki/src/doc/first_steps/start_tails.pt.po4
-rw-r--r--wiki/src/doc/first_steps/startup_options.de.po14
-rw-r--r--wiki/src/doc/first_steps/startup_options.fr.po9
-rw-r--r--wiki/src/doc/first_steps/startup_options.mdwn1
-rw-r--r--wiki/src/doc/first_steps/startup_options.pt.po3
-rw-r--r--wiki/src/doc/first_steps/startup_options/bridge_mode.de.po60
-rw-r--r--wiki/src/doc/first_steps/startup_options/bridge_mode.fr.po60
-rw-r--r--wiki/src/doc/first_steps/startup_options/bridge_mode.mdwn14
-rw-r--r--wiki/src/doc/first_steps/startup_options/bridge_mode.pt.po60
-rw-r--r--wiki/src/doc/first_steps/startup_options/network_configuration.de.po49
-rw-r--r--wiki/src/doc/first_steps/startup_options/network_configuration.fr.po23
-rw-r--r--wiki/src/doc/first_steps/startup_options/network_configuration.mdwn7
-rw-r--r--wiki/src/doc/first_steps/startup_options/network_configuration.pt.po19
-rw-r--r--wiki/src/doc/first_steps/startup_options/offline_mode.de.po58
-rw-r--r--wiki/src/doc/first_steps/startup_options/offline_mode.fr.po48
-rw-r--r--wiki/src/doc/first_steps/startup_options/offline_mode.mdwn15
-rw-r--r--wiki/src/doc/first_steps/startup_options/offline_mode.pt.po48
-rw-r--r--wiki/src/doc/first_steps/upgrade.de.po56
-rw-r--r--wiki/src/doc/first_steps/upgrade.fr.po68
-rw-r--r--wiki/src/doc/first_steps/upgrade.mdwn18
-rw-r--r--wiki/src/doc/first_steps/upgrade.pt.po54
-rw-r--r--wiki/src/doc/first_steps/upgrade.release_notes.de.po39
-rw-r--r--wiki/src/doc/first_steps/upgrade.release_notes.fr.po39
-rw-r--r--wiki/src/doc/first_steps/upgrade.release_notes.html11
-rw-r--r--wiki/src/doc/first_steps/upgrade.release_notes.pt.po38
-rw-r--r--wiki/src/doc/get/signing_key_transition.inline.de.po21
-rw-r--r--wiki/src/doc/get/signing_key_transition.inline.fr.po3
-rw-r--r--wiki/src/doc/get/trusting_tails_signing_key.de.po193
-rw-r--r--wiki/src/doc/get/trusting_tails_signing_key.fr.po15
-rw-r--r--wiki/src/doc/get/verify_the_iso_image_using_gnome.de.po87
-rw-r--r--wiki/src/doc/get/verify_the_iso_image_using_other_operating_systems.de.po63
-rw-r--r--wiki/src/doc/get/verify_the_iso_image_using_the_command_line.de.po111
-rw-r--r--wiki/src/doc/get/verify_the_iso_image_using_the_command_line.fr.po8
-rw-r--r--wiki/src/doc/get/verify_the_iso_image_using_the_command_line.html4
-rw-r--r--wiki/src/doc/get/verify_the_iso_image_using_the_command_line.pt.po30
-rw-r--r--wiki/src/download.de.po46
-rw-r--r--wiki/src/download.fr.po46
-rw-r--r--wiki/src/download.html10
-rw-r--r--wiki/src/download.inline.de.po277
-rw-r--r--wiki/src/download.inline.fr.po277
-rw-r--r--wiki/src/download.inline.mdwn193
-rw-r--r--wiki/src/download.inline.pt.po277
-rw-r--r--wiki/src/download.pt.po46
-rw-r--r--wiki/src/inc/release_notes/1.6.de.po70
-rw-r--r--wiki/src/inc/release_notes/1.6.fr.po55
-rw-r--r--wiki/src/inc/release_notes/1.6.mdwn19
-rw-r--r--wiki/src/inc/release_notes/1.6.pt.po55
-rw-r--r--wiki/src/inc/release_notes/1.7.de.po146
-rw-r--r--wiki/src/inc/release_notes/1.7.fr.po111
-rw-r--r--wiki/src/inc/release_notes/1.7.mdwn49
-rw-r--r--wiki/src/inc/release_notes/1.7.pt.po111
-rw-r--r--wiki/src/inc/stable_i386_date.de.po4
-rw-r--r--wiki/src/inc/stable_i386_date.fr.po9
-rw-r--r--wiki/src/inc/stable_i386_date.html2
-rw-r--r--wiki/src/inc/stable_i386_date.pt.po4
-rw-r--r--wiki/src/inc/stable_i386_gpg_signature_output.html6
-rw-r--r--wiki/src/inc/stable_i386_gpg_verify.html2
-rw-r--r--wiki/src/inc/stable_i386_hash.html2
-rw-r--r--wiki/src/inc/stable_i386_iso_sig_url.html2
-rw-r--r--wiki/src/inc/stable_i386_iso_size.html2
-rw-r--r--wiki/src/inc/stable_i386_iso_size_mb.mdwn1
-rw-r--r--wiki/src/inc/stable_i386_iso_size_mb_unit.mdwn1
-rw-r--r--wiki/src/inc/stable_i386_iso_size_mib.html1
-rw-r--r--wiki/src/inc/stable_i386_iso_size_mib.mdwn1
-rw-r--r--wiki/src/inc/stable_i386_iso_size_mib_unit.fr.po21
-rw-r--r--wiki/src/inc/stable_i386_iso_size_mib_unit.mdwn1
-rw-r--r--wiki/src/inc/stable_i386_iso_size_mib_unit.pt.po21
-rw-r--r--wiki/src/inc/stable_i386_iso_url.html2
-rw-r--r--wiki/src/inc/stable_i386_release_notes.de.po8
-rw-r--r--wiki/src/inc/stable_i386_release_notes.fr.po6
-rw-r--r--wiki/src/inc/stable_i386_release_notes.html4
-rw-r--r--wiki/src/inc/stable_i386_release_notes.pt.po8
-rw-r--r--wiki/src/inc/stable_i386_torrent_sig_url.html2
-rw-r--r--wiki/src/inc/stable_i386_torrent_url.html2
-rw-r--r--wiki/src/inc/stable_i386_version.html2
-rw-r--r--wiki/src/inc/trace2
-rw-r--r--wiki/src/install.de.po64
-rw-r--r--wiki/src/install.fr.po64
-rw-r--r--wiki/src/install.html26
-rw-r--r--wiki/src/install.pt.po64
-rw-r--r--wiki/src/install/clone.de.po87
-rw-r--r--wiki/src/install/clone.fr.po87
-rw-r--r--wiki/src/install/clone.mdwn22
-rw-r--r--wiki/src/install/clone.pt.po87
-rw-r--r--wiki/src/install/debian.de.po154
-rw-r--r--wiki/src/install/debian.fr.po154
-rw-r--r--wiki/src/install/debian.mdwn63
-rw-r--r--wiki/src/install/debian.pt.po154
-rw-r--r--wiki/src/install/debian/clone/overview.de.po44
-rw-r--r--wiki/src/install/debian/clone/overview.fr.po44
-rw-r--r--wiki/src/install/debian/clone/overview.html26
-rw-r--r--wiki/src/install/debian/clone/overview.pt.po44
-rw-r--r--wiki/src/install/debian/dvd.de.po35
-rw-r--r--wiki/src/install/debian/dvd.fr.po35
-rw-r--r--wiki/src/install/debian/dvd.mdwn6
-rw-r--r--wiki/src/install/debian/dvd.pt.po35
-rw-r--r--wiki/src/install/debian/usb.de.po97
-rw-r--r--wiki/src/install/debian/usb.fr.po97
-rw-r--r--wiki/src/install/debian/usb.mdwn24
-rw-r--r--wiki/src/install/debian/usb.pt.po97
-rw-r--r--wiki/src/install/debian/usb/overview.de.po45
-rw-r--r--wiki/src/install/debian/usb/overview.fr.po45
-rw-r--r--wiki/src/install/debian/usb/overview.html26
-rw-r--r--wiki/src/install/debian/usb/overview.pt.po45
-rw-r--r--wiki/src/install/debian/vm.de.po36
-rw-r--r--wiki/src/install/debian/vm.fr.po36
-rw-r--r--wiki/src/install/debian/vm.mdwn6
-rw-r--r--wiki/src/install/debian/vm.pt.po36
-rw-r--r--wiki/src/install/download.de.po52
-rw-r--r--wiki/src/install/download.fr.po52
-rw-r--r--wiki/src/install/download.mdwn8
-rw-r--r--wiki/src/install/download.pt.po52
-rw-r--r--wiki/src/install/expert/dvd.de.po35
-rw-r--r--wiki/src/install/expert/dvd.fr.po35
-rw-r--r--wiki/src/install/expert/dvd.mdwn6
-rw-r--r--wiki/src/install/expert/dvd.pt.po35
-rw-r--r--wiki/src/install/expert/usb.de.po313
-rw-r--r--wiki/src/install/expert/usb.fr.po313
-rw-r--r--wiki/src/install/expert/usb.mdwn133
-rw-r--r--wiki/src/install/expert/usb.pt.po313
-rw-r--r--wiki/src/install/expert/usb/overview.de.po49
-rw-r--r--wiki/src/install/expert/usb/overview.fr.po49
-rw-r--r--wiki/src/install/expert/usb/overview.html26
-rw-r--r--wiki/src/install/expert/usb/overview.pt.po49
-rw-r--r--wiki/src/install/inc/icons/1-dvd.pngbin0 -> 3694 bytes
-rw-r--r--wiki/src/install/inc/icons/1-usb.pngbin0 -> 1235 bytes
-rw-r--r--wiki/src/install/inc/icons/2-usb.pngbin0 -> 1552 bytes
-rw-r--r--wiki/src/install/inc/icons/clock.pngbin0 -> 2465 bytes
-rw-r--r--wiki/src/install/inc/icons/pc.pngbin0 -> 1485 bytes
-rw-r--r--wiki/src/install/inc/icons/restart.pngbin0 -> 919 bytes
-rw-r--r--wiki/src/install/inc/icons/screens.pngbin0 -> 2189 bytes
-rw-r--r--wiki/src/install/inc/infography/clone-dvd.pngbin0 -> 3699 bytes
-rw-r--r--wiki/src/install/inc/infography/clone-temporary-tails.pngbin0 -> 4181 bytes
-rw-r--r--wiki/src/install/inc/infography/create-persistence.pngbin0 -> 3329 bytes
-rw-r--r--wiki/src/install/inc/infography/download-and-verify-in-tails.pngbin0 -> 2859 bytes
-rw-r--r--wiki/src/install/inc/infography/download-and-verify.pngbin0 -> 2724 bytes
-rw-r--r--wiki/src/install/inc/infography/final-tails-with-persistence.pngbin0 -> 6504 bytes
-rw-r--r--wiki/src/install/inc/infography/final-tails.pngbin0 -> 6661 bytes
-rw-r--r--wiki/src/install/inc/infography/insert-dvd.pngbin0 -> 2201 bytes
-rw-r--r--wiki/src/install/inc/infography/install-tails.pngbin0 -> 3531 bytes
-rw-r--r--wiki/src/install/inc/infography/install-temporary-tails.pngbin0 -> 3619 bytes
-rw-r--r--wiki/src/install/inc/infography/install-upgrade-usb.pngbin0 -> 3581 bytes
-rw-r--r--wiki/src/install/inc/infography/new-tails.pngbin0 -> 3615 bytes
-rw-r--r--wiki/src/install/inc/infography/plug-first-usb.pngbin0 -> 3683 bytes
-rw-r--r--wiki/src/install/inc/infography/plug-other-usb.pngbin0 -> 2767 bytes
-rw-r--r--wiki/src/install/inc/infography/plug-second-usb.pngbin0 -> 4398 bytes
-rw-r--r--wiki/src/install/inc/infography/plug-source-usb.pngbin0 -> 3093 bytes
-rw-r--r--wiki/src/install/inc/infography/plug-tails-usb.pngbin0 -> 3570 bytes
-rw-r--r--wiki/src/install/inc/infography/plug-upgrade-usb.pngbin0 -> 3468 bytes
-rw-r--r--wiki/src/install/inc/infography/plug-upgraded-usb.pngbin0 -> 3536 bytes
-rw-r--r--wiki/src/install/inc/infography/plug-usb.pngbin0 -> 3189 bytes
-rw-r--r--wiki/src/install/inc/infography/restart-on-dvd.pngbin0 -> 2572 bytes
-rw-r--r--wiki/src/install/inc/infography/restart-on-final-tails.pngbin0 -> 3929 bytes
-rw-r--r--wiki/src/install/inc/infography/restart-on-tails-usb.pngbin0 -> 3831 bytes
-rw-r--r--wiki/src/install/inc/infography/restart-on-tails.pngbin0 -> 3139 bytes
-rw-r--r--wiki/src/install/inc/infography/restart-on-temporary-tails.pngbin0 -> 3324 bytes
-rw-r--r--wiki/src/install/inc/infography/restart-on-upgrade-usb.pngbin0 -> 3970 bytes
-rw-r--r--wiki/src/install/inc/infography/switch-context.pngbin0 -> 3697 bytes
-rw-r--r--wiki/src/install/inc/infography/tails-usb-with-persistence.pngbin0 -> 7856 bytes
-rw-r--r--wiki/src/install/inc/infography/tails-usb.pngbin0 -> 2226 bytes
-rw-r--r--wiki/src/install/inc/infography/temporary-tails-on-dvd.pngbin0 -> 4435 bytes
-rw-r--r--wiki/src/install/inc/infography/temporary-tails.pngbin0 -> 5654 bytes
-rw-r--r--wiki/src/install/inc/infography/upgrade-upgrade-usb.pngbin0 -> 3692 bytes
-rw-r--r--wiki/src/install/inc/js/dave.js52
-rw-r--r--wiki/src/install/inc/overview.de.po206
-rw-r--r--wiki/src/install/inc/overview.fr.po206
-rw-r--r--wiki/src/install/inc/overview.html230
-rw-r--r--wiki/src/install/inc/overview.pt.po206
-rw-r--r--wiki/src/install/inc/overview/vm.de.po (renamed from wiki/src/inc/stable_i386_iso_size_mb_unit.pt.po)11
-rw-r--r--wiki/src/install/inc/overview/vm.fr.po26
-rw-r--r--wiki/src/install/inc/overview/vm.mdwn3
-rw-r--r--wiki/src/install/inc/overview/vm.pt.po26
-rw-r--r--wiki/src/install/inc/qrcodes/tails_boum_org_install_clone.pngbin0 -> 409 bytes
-rw-r--r--wiki/src/install/inc/qrcodes/tails_boum_org_install_debian_usb.pngbin0 -> 414 bytes
-rw-r--r--wiki/src/install/inc/qrcodes/tails_boum_org_install_expert_usb.pngbin0 -> 410 bytes
-rw-r--r--wiki/src/install/inc/qrcodes/tails_boum_org_install_linux_usb.pngbin0 -> 414 bytes
-rw-r--r--wiki/src/install/inc/qrcodes/tails_boum_org_install_mac_clone.pngbin0 -> 403 bytes
-rw-r--r--wiki/src/install/inc/qrcodes/tails_boum_org_install_mac_dvd.pngbin0 -> 408 bytes
-rw-r--r--wiki/src/install/inc/qrcodes/tails_boum_org_install_mac_usb.pngbin0 -> 414 bytes
-rw-r--r--wiki/src/install/inc/qrcodes/tails_boum_org_install_win_usb.pngbin0 -> 414 bytes
-rw-r--r--wiki/src/install/inc/qrcodes/tails_boum_org_upgrade_clone.pngbin0 -> 411 bytes
-rw-r--r--wiki/src/install/inc/qrcodes/tails_boum_org_upgrade_tails.pngbin0 -> 414 bytes
-rw-r--r--wiki/src/install/inc/router/clone.de.po53
-rw-r--r--wiki/src/install/inc/router/clone.fr.po53
-rw-r--r--wiki/src/install/inc/router/clone.mdwn20
-rw-r--r--wiki/src/install/inc/router/clone.pt.po53
-rw-r--r--wiki/src/install/inc/screenshots/bios_boot_menu.pngbin0 -> 1123 bytes
-rw-r--r--wiki/src/install/inc/screenshots/desktop.png (renamed from wiki/src/blueprint/bootstrapping/assistant/desktop.png)bin39652 -> 39652 bytes
-rw-r--r--wiki/src/install/inc/screenshots/gnome_disks.pngbin0 -> 49856 bytes
-rw-r--r--wiki/src/install/inc/screenshots/mac_startup_dvd.pngbin0 -> 42667 bytes
-rw-r--r--wiki/src/install/inc/screenshots/mac_startup_usb.pngbin0 -> 34587 bytes
-rw-r--r--wiki/src/install/inc/screenshots/tails_installer_in_debian.pngbin0 -> 23926 bytes
-rw-r--r--wiki/src/install/inc/screenshots/tails_installer_in_tails.pngbin0 -> 40392 bytes
-rw-r--r--wiki/src/install/inc/screenshots/uui.png (renamed from wiki/src/blueprint/bootstrapping/assistant/windows/uui.png)bin32355 -> 32336 bytes
-rw-r--r--wiki/src/install/inc/steps/create_persistence.inline.de.po312
-rw-r--r--wiki/src/install/inc/steps/create_persistence.inline.fr.po312
-rw-r--r--wiki/src/install/inc/steps/create_persistence.inline.mdwn155
-rw-r--r--wiki/src/install/inc/steps/create_persistence.inline.pt.po312
-rw-r--r--wiki/src/install/inc/steps/install_final.inline.de.po221
-rw-r--r--wiki/src/install/inc/steps/install_final.inline.fr.po221
-rw-r--r--wiki/src/install/inc/steps/install_final.inline.mdwn92
-rw-r--r--wiki/src/install/inc/steps/install_final.inline.pt.po221
-rw-r--r--wiki/src/install/inc/steps/install_tails_installer.inline.de.po104
-rw-r--r--wiki/src/install/inc/steps/install_tails_installer.inline.fr.po104
-rw-r--r--wiki/src/install/inc/steps/install_tails_installer.inline.mdwn40
-rw-r--r--wiki/src/install/inc/steps/install_tails_installer.inline.pt.po104
-rw-r--r--wiki/src/install/inc/steps/install_temporary_intro.inline.de.po61
-rw-r--r--wiki/src/install/inc/steps/install_temporary_intro.inline.fr.po61
-rw-r--r--wiki/src/install/inc/steps/install_temporary_intro.inline.mdwn23
-rw-r--r--wiki/src/install/inc/steps/install_temporary_intro.inline.pt.po61
-rw-r--r--wiki/src/install/inc/steps/install_temporary_outro.inline.de.po42
-rw-r--r--wiki/src/install/inc/steps/install_temporary_outro.inline.fr.po42
-rw-r--r--wiki/src/install/inc/steps/install_temporary_outro.inline.mdwn11
-rw-r--r--wiki/src/install/inc/steps/install_temporary_outro.inline.pt.po42
-rw-r--r--wiki/src/install/inc/steps/mac_startup_disks.inline.de.po37
-rw-r--r--wiki/src/install/inc/steps/mac_startup_disks.inline.fr.po37
-rw-r--r--wiki/src/install/inc/steps/mac_startup_disks.inline.mdwn8
-rw-r--r--wiki/src/install/inc/steps/mac_startup_disks.inline.pt.po37
-rw-r--r--wiki/src/install/inc/steps/not_at_all.inline.de.po218
-rw-r--r--wiki/src/install/inc/steps/not_at_all.inline.fr.po218
-rw-r--r--wiki/src/install/inc/steps/not_at_all.inline.mdwn102
-rw-r--r--wiki/src/install/inc/steps/not_at_all.inline.pt.po218
-rw-r--r--wiki/src/install/inc/steps/not_entirely.inline.de.po110
-rw-r--r--wiki/src/install/inc/steps/not_entirely.inline.fr.po110
-rw-r--r--wiki/src/install/inc/steps/not_entirely.inline.mdwn46
-rw-r--r--wiki/src/install/inc/steps/not_entirely.inline.pt.po110
-rw-r--r--wiki/src/install/inc/steps/restart_first_time.inline.de.po263
-rw-r--r--wiki/src/install/inc/steps/restart_first_time.inline.fr.po263
-rw-r--r--wiki/src/install/inc/steps/restart_first_time.inline.mdwn117
-rw-r--r--wiki/src/install/inc/steps/restart_first_time.inline.pt.po263
-rw-r--r--wiki/src/install/inc/steps/restart_second_time.inline.de.po122
-rw-r--r--wiki/src/install/inc/steps/restart_second_time.inline.fr.po122
-rw-r--r--wiki/src/install/inc/steps/restart_second_time.inline.mdwn49
-rw-r--r--wiki/src/install/inc/steps/restart_second_time.inline.pt.po122
-rw-r--r--wiki/src/install/inc/steps/switch.inline.de.po111
-rw-r--r--wiki/src/install/inc/steps/switch.inline.fr.po111
-rw-r--r--wiki/src/install/inc/steps/switch.inline.mdwn35
-rw-r--r--wiki/src/install/inc/steps/switch.inline.pt.po111
-rw-r--r--wiki/src/install/inc/steps/verify_up-to-date.inline.de.po66
-rw-r--r--wiki/src/install/inc/steps/verify_up-to-date.inline.fr.po66
-rw-r--r--wiki/src/install/inc/steps/verify_up-to-date.inline.mdwn28
-rw-r--r--wiki/src/install/inc/steps/verify_up-to-date.inline.pt.po66
-rw-r--r--wiki/src/install/inc/steps/you_are_done.inline.de.po70
-rw-r--r--wiki/src/install/inc/steps/you_are_done.inline.fr.po70
-rw-r--r--wiki/src/install/inc/steps/you_are_done.inline.mdwn22
-rw-r--r--wiki/src/install/inc/steps/you_are_done.inline.pt.po70
-rw-r--r--wiki/src/install/inc/stylesheets/assistant.css200
-rw-r--r--wiki/src/install/inc/stylesheets/clone.css9
-rw-r--r--wiki/src/install/inc/stylesheets/dave.css303
-rw-r--r--wiki/src/install/inc/stylesheets/debian-usb.css15
-rw-r--r--wiki/src/install/inc/stylesheets/debian.css9
-rw-r--r--wiki/src/install/inc/stylesheets/dvd.css9
-rw-r--r--wiki/src/install/inc/stylesheets/expert-usb.css19
-rw-r--r--wiki/src/install/inc/stylesheets/expert.css30
-rw-r--r--wiki/src/install/inc/stylesheets/install-clone.css14
-rw-r--r--wiki/src/install/inc/stylesheets/linux-usb.css15
-rw-r--r--wiki/src/install/inc/stylesheets/linux.css9
-rw-r--r--wiki/src/install/inc/stylesheets/mac-clone.css15
-rw-r--r--wiki/src/install/inc/stylesheets/mac-dvd.css15
-rw-r--r--wiki/src/install/inc/stylesheets/mac-usb.css15
-rw-r--r--wiki/src/install/inc/stylesheets/mac.css9
-rw-r--r--wiki/src/install/inc/stylesheets/overview.css77
-rw-r--r--wiki/src/install/inc/stylesheets/router-debian.css3
-rw-r--r--wiki/src/install/inc/stylesheets/router-install.css6
-rw-r--r--wiki/src/install/inc/stylesheets/router-mac.css35
-rw-r--r--wiki/src/install/inc/stylesheets/scenarios.css12
-rw-r--r--wiki/src/install/inc/stylesheets/steps.css121
-rw-r--r--wiki/src/install/inc/stylesheets/upgrade-clone.css15
-rw-r--r--wiki/src/install/inc/stylesheets/upgrade-tails.css14
-rw-r--r--wiki/src/install/inc/stylesheets/upgrade.css9
-rw-r--r--wiki/src/install/inc/stylesheets/usb.css9
-rw-r--r--wiki/src/install/inc/stylesheets/windows-usb.css15
-rw-r--r--wiki/src/install/inc/stylesheets/windows.css9
-rw-r--r--wiki/src/install/inc/tails-installation-assistant.inline.de.po (renamed from wiki/src/inc/stable_i386_iso_size_mb_unit.fr.po)7
-rw-r--r--wiki/src/install/inc/tails-installation-assistant.inline.fr.po (renamed from wiki/src/inc/stable_i386_iso_size_mib_unit.de.po)7
-rw-r--r--wiki/src/install/inc/tails-installation-assistant.inline.mdwn1
-rw-r--r--wiki/src/install/inc/tails-installation-assistant.inline.pt.po (renamed from wiki/src/inc/stable_i386_iso_size_mb_unit.de.po)7
-rw-r--r--wiki/src/install/linux.de.po136
-rw-r--r--wiki/src/install/linux.fr.po136
-rw-r--r--wiki/src/install/linux.mdwn53
-rw-r--r--wiki/src/install/linux.pt.po136
-rw-r--r--wiki/src/install/linux/clone/overview.de.po44
-rw-r--r--wiki/src/install/linux/clone/overview.fr.po44
-rw-r--r--wiki/src/install/linux/clone/overview.html26
-rw-r--r--wiki/src/install/linux/clone/overview.pt.po44
-rw-r--r--wiki/src/install/linux/dvd.de.po35
-rw-r--r--wiki/src/install/linux/dvd.fr.po35
-rw-r--r--wiki/src/install/linux/dvd.mdwn6
-rw-r--r--wiki/src/install/linux/dvd.pt.po35
-rw-r--r--wiki/src/install/linux/usb.de.po179
-rw-r--r--wiki/src/install/linux/usb.fr.po179
-rw-r--r--wiki/src/install/linux/usb.mdwn62
-rw-r--r--wiki/src/install/linux/usb.pt.po179
-rw-r--r--wiki/src/install/linux/usb/overview.de.po45
-rw-r--r--wiki/src/install/linux/usb/overview.fr.po45
-rw-r--r--wiki/src/install/linux/usb/overview.html24
-rw-r--r--wiki/src/install/linux/usb/overview.pt.po45
-rw-r--r--wiki/src/install/linux/vm.de.po36
-rw-r--r--wiki/src/install/linux/vm.fr.po36
-rw-r--r--wiki/src/install/linux/vm.mdwn6
-rw-r--r--wiki/src/install/linux/vm.pt.po36
-rw-r--r--wiki/src/install/mac.de.po224
-rw-r--r--wiki/src/install/mac.fr.po224
-rw-r--r--wiki/src/install/mac.mdwn102
-rw-r--r--wiki/src/install/mac.pt.po224
-rw-r--r--wiki/src/install/mac/clone.de.po97
-rw-r--r--wiki/src/install/mac/clone.fr.po97
-rw-r--r--wiki/src/install/mac/clone.mdwn24
-rw-r--r--wiki/src/install/mac/clone.pt.po97
-rw-r--r--wiki/src/install/mac/clone/overview.de.po44
-rw-r--r--wiki/src/install/mac/clone/overview.fr.po44
-rw-r--r--wiki/src/install/mac/clone/overview.html24
-rw-r--r--wiki/src/install/mac/clone/overview.pt.po44
-rw-r--r--wiki/src/install/mac/dvd.de.po177
-rw-r--r--wiki/src/install/mac/dvd.fr.po177
-rw-r--r--wiki/src/install/mac/dvd.mdwn67
-rw-r--r--wiki/src/install/mac/dvd.pt.po177
-rw-r--r--wiki/src/install/mac/dvd/overview.de.po45
-rw-r--r--wiki/src/install/mac/dvd/overview.fr.po45
-rw-r--r--wiki/src/install/mac/dvd/overview.html27
-rw-r--r--wiki/src/install/mac/dvd/overview.pt.po45
-rw-r--r--wiki/src/install/mac/usb.de.po292
-rw-r--r--wiki/src/install/mac/usb.fr.po292
-rw-r--r--wiki/src/install/mac/usb.mdwn126
-rw-r--r--wiki/src/install/mac/usb.pt.po292
-rw-r--r--wiki/src/install/mac/usb/overview.de.po48
-rw-r--r--wiki/src/install/mac/usb/overview.fr.po48
-rw-r--r--wiki/src/install/mac/usb/overview.html24
-rw-r--r--wiki/src/install/mac/usb/overview.pt.po48
-rw-r--r--wiki/src/install/mac/vm.de.po36
-rw-r--r--wiki/src/install/mac/vm.fr.po36
-rw-r--r--wiki/src/install/mac/vm.mdwn6
-rw-r--r--wiki/src/install/mac/vm.pt.po36
-rw-r--r--wiki/src/install/os.de.po105
-rw-r--r--wiki/src/install/os.fr.po105
-rw-r--r--wiki/src/install/os.mdwn50
-rw-r--r--wiki/src/install/os.pt.po105
-rw-r--r--wiki/src/install/v1/Tails/i386/stable/1.7.yml9
-rw-r--r--wiki/src/install/v1/Tails/i386/stable/latest.yml9
-rw-r--r--wiki/src/install/win.de.po136
-rw-r--r--wiki/src/install/win.fr.po136
-rw-r--r--wiki/src/install/win.mdwn53
-rw-r--r--wiki/src/install/win.pt.po136
-rw-r--r--wiki/src/install/win/clone/overview.de.po44
-rw-r--r--wiki/src/install/win/clone/overview.fr.po44
-rw-r--r--wiki/src/install/win/clone/overview.html26
-rw-r--r--wiki/src/install/win/clone/overview.pt.po44
-rw-r--r--wiki/src/install/win/dvd.de.po35
-rw-r--r--wiki/src/install/win/dvd.fr.po35
-rw-r--r--wiki/src/install/win/dvd.mdwn6
-rw-r--r--wiki/src/install/win/dvd.pt.po35
-rw-r--r--wiki/src/install/win/usb.de.po197
-rw-r--r--wiki/src/install/win/usb.fr.po197
-rw-r--r--wiki/src/install/win/usb.mdwn69
-rw-r--r--wiki/src/install/win/usb.pt.po197
-rw-r--r--wiki/src/install/win/usb/overview.de.po45
-rw-r--r--wiki/src/install/win/usb/overview.fr.po45
-rw-r--r--wiki/src/install/win/usb/overview.html24
-rw-r--r--wiki/src/install/win/usb/overview.pt.po45
-rw-r--r--wiki/src/install/win/vm.de.po36
-rw-r--r--wiki/src/install/win/vm.fr.po36
-rw-r--r--wiki/src/install/win/vm.mdwn6
-rw-r--r--wiki/src/install/win/vm.pt.po36
-rw-r--r--wiki/src/lib/SourceCodePro-Regular.ttfbin0 -> 120548 bytes
-rw-r--r--wiki/src/lib/download_stable_i386_iso_sig.de.html4
-rw-r--r--wiki/src/lib/download_tails_signing_key.de.html4
-rw-r--r--wiki/src/lib/emblem-system.pngbin0 -> 343 bytes
-rw-r--r--wiki/src/lib/media-eject.pngbin0 -> 243 bytes
-rw-r--r--wiki/src/lib/trophy-gold.pngbin0 -> 3359 bytes
-rw-r--r--wiki/src/local.css38
-rw-r--r--wiki/src/misc/claws_to_icedove.sh104
-rw-r--r--wiki/src/misc/unsafe_browser_warning.de.po37
-rw-r--r--wiki/src/news/signing_key_transition.fr.po3
-rw-r--r--wiki/src/news/test_1.7-rc1.de.po219
-rw-r--r--wiki/src/news/test_1.7-rc1.fr.po287
-rw-r--r--wiki/src/news/test_1.7-rc1.mdwn111
-rw-r--r--wiki/src/news/test_1.7-rc1.pt.po219
-rw-r--r--wiki/src/news/version_0.2.fr.po23
-rw-r--r--wiki/src/news/version_0.3.fr.po25
-rw-r--r--wiki/src/news/version_0.4.1.fr.po60
-rw-r--r--wiki/src/news/version_1.6.de.po122
-rw-r--r--wiki/src/news/version_1.6.fr.po119
-rw-r--r--wiki/src/news/version_1.6.mdwn39
-rw-r--r--wiki/src/news/version_1.6.pt.po104
-rw-r--r--wiki/src/news/version_1.7.de.po116
-rw-r--r--wiki/src/news/version_1.7.fr.po99
-rw-r--r--wiki/src/news/version_1.7.mdwn36
-rw-r--r--wiki/src/news/version_1.7.pt.po99
-rw-r--r--wiki/src/press.de.po12
-rw-r--r--wiki/src/press.fr.po12
-rw-r--r--wiki/src/press.mdwn6
-rw-r--r--wiki/src/press.pt.po12
-rw-r--r--wiki/src/press/media_appearances_2011.fr.po29
-rw-r--r--wiki/src/press/media_appearances_2015.de.po9
-rw-r--r--wiki/src/press/media_appearances_2015.fr.po9
-rw-r--r--wiki/src/press/media_appearances_2015.mdwn2
-rw-r--r--wiki/src/press/media_appearances_2015.pt.po9
-rw-r--r--wiki/src/security/Numerous_security_holes_in_1.5.1.de.po87
-rw-r--r--wiki/src/security/Numerous_security_holes_in_1.5.1.fr.po87
-rw-r--r--wiki/src/security/Numerous_security_holes_in_1.5.1.mdwn23
-rw-r--r--wiki/src/security/Numerous_security_holes_in_1.5.1.pt.po80
-rw-r--r--wiki/src/security/Numerous_security_holes_in_1.6.de.po102
-rw-r--r--wiki/src/security/Numerous_security_holes_in_1.6.fr.po91
-rw-r--r--wiki/src/security/Numerous_security_holes_in_1.6.mdwn28
-rw-r--r--wiki/src/security/Numerous_security_holes_in_1.6.pt.po91
-rw-r--r--wiki/src/security/claws_mail_leaks_plaintext_to_imap.fr.po143
-rw-r--r--wiki/src/support.de.po19
-rw-r--r--wiki/src/support.fr.po7
-rw-r--r--wiki/src/support/faq.de.po41
-rw-r--r--wiki/src/support/faq.fr.po110
-rw-r--r--wiki/src/support/faq.mdwn20
-rw-r--r--wiki/src/support/faq.pt.po48
-rw-r--r--wiki/src/support/known_issues.de.po36
-rw-r--r--wiki/src/support/known_issues.fr.po156
-rw-r--r--wiki/src/support/known_issues.mdwn19
-rw-r--r--wiki/src/support/known_issues.pt.po36
-rw-r--r--wiki/src/support/learn.fr.po53
-rw-r--r--wiki/src/support/learn/intro.inline.de.po15
-rw-r--r--wiki/src/support/learn/intro.inline.fr.po12
-rw-r--r--wiki/src/support/talk.de.po6
-rw-r--r--wiki/src/support/talk.fr.po2
-rw-r--r--wiki/src/support/talk/languages.inline.de.po22
-rw-r--r--wiki/src/support/talk/languages.inline.fr.po20
-rw-r--r--wiki/src/tails-signing.key1407
-rw-r--r--wiki/src/torrents/files/tails-i386-1.5.1.iso.sig16
-rw-r--r--wiki/src/torrents/files/tails-i386-1.5.1.torrentbin75707 -> 0 bytes
-rw-r--r--wiki/src/torrents/files/tails-i386-1.5.1.torrent.sig16
-rw-r--r--wiki/src/torrents/files/tails-i386-1.7.iso.sig16
-rw-r--r--wiki/src/torrents/files/tails-i386-1.7.packages (renamed from wiki/src/torrents/files/tails-i386-1.5.1.packages)163
-rw-r--r--wiki/src/torrents/files/tails-i386-1.7.torrentbin0 -> 80714 bytes
-rw-r--r--wiki/src/torrents/files/tails-i386-1.7.torrent.sig16
-rw-r--r--wiki/src/upgrade.de.po164
-rw-r--r--wiki/src/upgrade.fr.po164
-rw-r--r--wiki/src/upgrade.mdwn71
-rw-r--r--wiki/src/upgrade.pt.po164
-rw-r--r--wiki/src/upgrade/clone.de.po72
-rw-r--r--wiki/src/upgrade/clone.fr.po72
-rw-r--r--wiki/src/upgrade/clone.mdwn16
-rw-r--r--wiki/src/upgrade/clone.pt.po72
-rw-r--r--wiki/src/upgrade/clone/overview.de.po46
-rw-r--r--wiki/src/upgrade/clone/overview.fr.po46
-rw-r--r--wiki/src/upgrade/clone/overview.html24
-rw-r--r--wiki/src/upgrade/clone/overview.pt.po46
-rw-r--r--wiki/src/upgrade/tails.de.po247
-rw-r--r--wiki/src/upgrade/tails.fr.po247
-rw-r--r--wiki/src/upgrade/tails.mdwn104
-rw-r--r--wiki/src/upgrade/tails.pt.po247
-rw-r--r--wiki/src/upgrade/tails/overview.de.po46
-rw-r--r--wiki/src/upgrade/tails/overview.fr.po46
-rw-r--r--wiki/src/upgrade/tails/overview.html24
-rw-r--r--wiki/src/upgrade/tails/overview.pt.po46
-rw-r--r--wiki/src/upgrade/v1/Tails/1.5.1/i386/alpha/upgrades.yml15
-rw-r--r--wiki/src/upgrade/v1/Tails/1.5.1/i386/alpha/upgrades.yml.pgp26
-rw-r--r--wiki/src/upgrade/v1/Tails/1.5.1/i386/stable/upgrades.yml15
-rw-r--r--wiki/src/upgrade/v1/Tails/1.5.1/i386/stable/upgrades.yml.pgp26
-rw-r--r--wiki/src/upgrade/v1/Tails/1.6/i386/alpha/upgrades.yml15
-rw-r--r--wiki/src/upgrade/v1/Tails/1.6/i386/alpha/upgrades.yml.pgp26
-rw-r--r--wiki/src/upgrade/v1/Tails/1.6/i386/stable/upgrades.yml15
-rw-r--r--wiki/src/upgrade/v1/Tails/1.6/i386/stable/upgrades.yml.pgp26
-rw-r--r--wiki/src/upgrade/v1/Tails/1.7~rc1/i386/stable/upgrades.yml15
-rw-r--r--wiki/src/upgrade/v1/Tails/1.7~rc1/i386/stable/upgrades.yml.pgp26
-rw-r--r--wiki/src/upgrade/v1/Tails/1.8/i386/alpha/upgrades.yml5
-rw-r--r--wiki/src/upgrade/v1/Tails/1.8/i386/alpha/upgrades.yml.pgp16
-rw-r--r--wiki/src/upgrade/v1/Tails/1.8/i386/stable/upgrades.yml5
-rw-r--r--wiki/src/upgrade/v1/Tails/1.8/i386/stable/upgrades.yml.pgp16
-rw-r--r--wiki/src/upgrade/v1/Tails/1.9/i386/alpha/upgrades.yml5
-rw-r--r--wiki/src/upgrade/v1/Tails/1.9/i386/alpha/upgrades.yml.pgp16
-rw-r--r--wiki/src/upgrade/v1/Tails/1.9/i386/stable/upgrades.yml5
-rw-r--r--wiki/src/upgrade/v1/Tails/1.9/i386/stable/upgrades.yml.pgp16
-rw-r--r--wiki/src/upgrade/v1/Tails/1.9~rc1/i386/alpha/upgrades.yml5
-rw-r--r--wiki/src/upgrade/v1/Tails/1.9~rc1/i386/alpha/upgrades.yml.pgp16
-rw-r--r--wiki/src/upgrade/v1/Tails/1.9~rc1/i386/stable/upgrades.yml5
-rw-r--r--wiki/src/upgrade/v1/Tails/1.9~rc1/i386/stable/upgrades.yml.pgp16
-rw-r--r--wiki/src/upgrade/v1/Tails/2.0~beta1/i386/alpha/upgrades.yml5
-rw-r--r--wiki/src/upgrade/v1/Tails/2.0~beta1/i386/alpha/upgrades.yml.pgp16
-rw-r--r--wiki/src/upgrade/v1/Tails/2.0~beta1/i386/stable/upgrades.yml5
-rw-r--r--wiki/src/upgrade/v1/Tails/2.0~beta1/i386/stable/upgrades.yml.pgp16
733 files changed, 45489 insertions, 5971 deletions
diff --git a/wiki/src/about.de.po b/wiki/src/about.de.po
index c75afbc..f7ea50c 100644
--- a/wiki/src/about.de.po
+++ b/wiki/src/about.de.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Tails i10n Team\n"
-"POT-Creation-Date: 2015-03-13 16:25+0100\n"
+"POT-Creation-Date: 2015-10-30 11:35+0100\n"
"PO-Revision-Date: 2015-04-18 13:05+0100\n"
"Last-Translator: Tails translators <tails@boum.org>\n"
"Language-Team: Tails translators <tails-l10n@boum.org>\n"
@@ -121,11 +121,17 @@ msgstr ""
"wird die Verbindung zur Sicherheit automatisch geblockt."
#. type: Plain text
-msgid ""
-"Tor is free software and an open network that helps you defend against a "
-"form of network surveillance that threatens personal freedom and privacy, "
-"confidential business activities and relationships, and state security known "
-"as traffic analysis."
+#, fuzzy
+#| msgid ""
+#| "Tor is free software and an open network that helps you defend against a "
+#| "form of network surveillance that threatens personal freedom and privacy, "
+#| "confidential business activities and relationships, and state security "
+#| "known as traffic analysis."
+msgid ""
+"Tor is an open and distributed network that helps defend against traffic "
+"analysis, a form of network surveillance that threatens personal freedom and "
+"privacy, confidential business activities and relationships, and state "
+"security."
msgstr ""
"Tor ist Freie Software und ein offenes Netzwerk, das Ihnen dabei hilft, sich "
"gegen eine Form der Netzwerküberwachung zu wehren, die persönliche Freiheit "
@@ -133,12 +139,18 @@ msgstr ""
"Ländern gefährdet: die sogenannte »Verkehrsdatenanalyse«."
#. type: Plain text
-msgid ""
-"Tor protects you by bouncing your communications around a distributed "
-"network of relays run by volunteers all around the world: it prevents "
-"somebody watching your Internet connection from learning what sites you "
-"visit, and it prevents the sites you visit from learning your physical "
-"location."
+#, fuzzy
+#| msgid ""
+#| "Tor protects you by bouncing your communications around a distributed "
+#| "network of relays run by volunteers all around the world: it prevents "
+#| "somebody watching your Internet connection from learning what sites you "
+#| "visit, and it prevents the sites you visit from learning your physical "
+#| "location."
+msgid ""
+"Tor protects you by bouncing your communications around a network of relays "
+"run by volunteers all around the world: it prevents somebody watching your "
+"Internet connection from learning what sites you visit, and it prevents the "
+"sites you visit from learning your physical location."
msgstr ""
"Tor schützt Sie, indem es Ihre Kommunikation durch ein verteiltes Netzwerk "
"von Relais springen lässt, das von Freiwilligen aus aller Welt betrieben "
@@ -169,9 +181,13 @@ msgstr ""
"bridge_mode]] (Brücken in das Tor-Netzwerk)."
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "To learn more about Tor, see the official [Tor website](https://www."
+#| "torproject.org/):"
msgid ""
"To learn more about Tor, see the official [Tor website](https://www."
-"torproject.org/):"
+"torproject.org/), particularly the following pages:"
msgstr ""
"Mehr über Tor erfahren Sie auf der offiziellen [Webseite des Tor-Projekts]"
"(https://www.torproject.org):"
@@ -207,9 +223,13 @@ msgstr ""
"torproject.org/projects/tor/wiki/doc/TorALaymansGuide) (auf Englisch)"
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "To learn more about how the usage of Tor is enforced, see our [[design "
+#| "document|contribute/design/Tor_enforcement]]."
msgid ""
-"To learn more about how the usage of Tor is enforced, see our [[design "
-"document|contribute/design/Tor_enforcement]]."
+"To learn more about how Tails ensures all its network connections use Tor, "
+"see our [[design document|contribute/design/Tor_enforcement]]."
msgstr ""
"Um mehr darüber zu erfahren, wie der Gebrauch von Tor erzwungen wird, lesen "
"Sie unser [[Design-Dokument|contribute/design/Tor_enforcement]]."
@@ -258,11 +278,17 @@ msgid "Use anywhere but leave no trace\n"
msgstr "Überall nutzen, ohne Spuren zu hinterlassen\n"
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "Using Tails on a computer doesn't alter or depend on the operating system "
+#| "installed on it. So you can use it in the same way on your computer, a "
+#| "friend's or one at your local library. After shutting down Tails, the "
+#| "computer can start again on its usual operating system."
msgid ""
"Using Tails on a computer doesn't alter or depend on the operating system "
"installed on it. So you can use it in the same way on your computer, a "
-"friend's or one at your local library. After shutting down Tails, the "
-"computer can start again on its usual operating system."
+"friend's computer, or one at your local library. After shutting down Tails, "
+"the computer will start again with its usual operating system."
msgstr ""
"Die Benutzung von Tails auf einem Computer verändert weder das installierte "
"Betriebssystem, noch ist es von diesem abhängig. Es kann also gleichermaßen "
@@ -272,12 +298,19 @@ msgstr ""
"starten."
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "Tails is configured with special care to not use the computer's hard-"
+#| "disks, even if there is some swap space on them. The only storage space "
+#| "used by Tails is the RAM, which is automatically erased when the computer "
+#| "shuts down. So you won't leave any trace neither of the Tails system nor "
+#| "of what you did on the computer. That's why we call it \"amnesic\"."
msgid ""
"Tails is configured with special care to not use the computer's hard-disks, "
"even if there is some swap space on them. The only storage space used by "
-"Tails is the RAM, which is automatically erased when the computer shuts "
-"down. So you won't leave any trace neither of the Tails system nor of what "
-"you did on the computer. That's why we call it \"amnesic\"."
+"Tails is in RAM, which is automatically erased when the computer shuts down. "
+"So you won't leave any trace on the computer either of the Tails system "
+"itself or what you used it for. That's why we call Tails \"amnesic\"."
msgstr ""
"Tails ist mit großer Sorgfalt konfiguriert nicht die Festplatten des "
"Computers zu benutzen, auch nicht wenn Auslagerungsspeicher (swap space) zur "
@@ -288,11 +321,17 @@ msgstr ""
"\"amnestisch\" (engl.: amnesic)."
#. type: Plain text
-msgid ""
-"This allows you to work on sensitive documents on any computer and protect "
-"you from data recovery after shutdown. Of course, you can still explicitly "
-"save some documents to another USB or external hard-disk and take them away "
-"for future use."
+#, fuzzy
+#| msgid ""
+#| "This allows you to work on sensitive documents on any computer and "
+#| "protect you from data recovery after shutdown. Of course, you can still "
+#| "explicitly save some documents to another USB or external hard-disk and "
+#| "take them away for future use."
+msgid ""
+"This allows you to work with sensitive documents on any computer and "
+"protects you from data recovery after shutdown. Of course, you can still "
+"explicitly save specific documents to another USB stick or external hard-"
+"disk and take them away for future use."
msgstr ""
"Dies erlaubt Ihnen auf jedem Computer an sensiblen Dokumenten zu arbeiten, "
"und schützt Sie vor Datenwiederherstellung nach dem Herunterfahren. "
@@ -330,8 +369,14 @@ msgstr ""
"span>, dem Linux-Standardprogramm zur Festplattenverschlüsselung."
#. type: Bullet: ' - '
-msgid ""
-"Automatically encrypt with HTTPS all your communications to a number of "
+#, fuzzy
+#| msgid ""
+#| "Automatically encrypt with HTTPS all your communications to a number of "
+#| "major websites using [HTTPS Everywhere](https://www.eff.org/https-"
+#| "everywhere), a Firefox extension developed by the [Electronic Frontier "
+#| "Foundation](https://www.eff.org)."
+msgid ""
+"Automatically use HTTPS to encrypt all your communications to a number of "
"major websites using [HTTPS Everywhere](https://www.eff.org/https-"
"everywhere), a Firefox extension developed by the [Electronic Frontier "
"Foundation](https://www.eff.org)."
@@ -394,8 +439,12 @@ msgid "To continue discovering Tails, you can now read:"
msgstr "Um Tails weiter zu entdecken, können Sie folgende Seiten lesen:"
#. type: Bullet: ' - '
+#, fuzzy
+#| msgid ""
+#| "the [[warning page|doc/about/warning]] to understand better the security "
+#| "limitations of Tails and Tor,"
msgid ""
-"the [[warning page|doc/about/warning]] to understand better the security "
+"the [[warning page|doc/about/warning]] to better understand the security "
"limitations of Tails and Tor,"
msgstr ""
"die [[Warnungen|doc/about/warning]], um die Sicherheitsbeschränkungen von "
@@ -415,22 +464,32 @@ msgstr ""
"unsere [[Dokumentation|doc]], die die Benutzung von Tails im Detail erklärt,"
#. type: Bullet: ' - '
-msgid "some hints on why [[should you trust Tails|doc/about/trust]],"
+#, fuzzy
+#| msgid "some hints on why [[should you trust Tails|doc/about/trust]],"
+msgid "some hints on why [[you should trust Tails|doc/about/trust]],"
msgstr ""
"einige Denkanstöße, warum Sie [[Tails vertrauen sollten|doc/about/trust]],"
#. type: Bullet: ' - '
+#, fuzzy
+#| msgid ""
+#| "our [[design document|contribute/design]] about Tails specification, "
+#| "threat model and implementation,"
msgid ""
-"our [[design document|contribute/design]] about Tails specification, threat "
-"model and implementation,"
+"our [[design document|contribute/design]] laying out Tails specification, "
+"threat model and implementation,"
msgstr ""
"unser [[Design-Dokument|contribute/design]] zu Spezifikation, Gefahrenmodell "
"und Implementierung von Tails."
#. type: Bullet: ' - '
+#, fuzzy
+#| msgid ""
+#| "the [[calendar|contribute/calendar]] holds the release dates, meetings "
+#| "and other events."
msgid ""
-"the [[calendar|contribute/calendar]] holds the release dates, meetings and "
-"other events."
+"the [[calendar|contribute/calendar]] that holds our release dates, meetings "
+"and other events."
msgstr ""
"der [[Kalender|contribute/calendar]] beinhaltet die "
"Veröffentlichungstermine, Treffen und andere Ereignisse."
diff --git a/wiki/src/about.fr.po b/wiki/src/about.fr.po
index f0f35f8..a31ab3d 100644
--- a/wiki/src/about.fr.po
+++ b/wiki/src/about.fr.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: tails-about-fr\n"
-"POT-Creation-Date: 2015-07-07 16:34+0300\n"
+"POT-Creation-Date: 2015-10-30 11:35+0100\n"
"PO-Revision-Date: 2013-10-13 17:08-0000\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -121,11 +121,17 @@ msgstr ""
"connexion est automatiquement bloquée pour des raisons de sécurité."
#. type: Plain text
-msgid ""
-"Tor is free software and an open network that helps you defend against a "
-"form of network surveillance that threatens personal freedom and privacy, "
-"confidential business activities and relationships, and state security known "
-"as traffic analysis."
+#, fuzzy
+#| msgid ""
+#| "Tor is free software and an open network that helps you defend against a "
+#| "form of network surveillance that threatens personal freedom and privacy, "
+#| "confidential business activities and relationships, and state security "
+#| "known as traffic analysis."
+msgid ""
+"Tor is an open and distributed network that helps defend against traffic "
+"analysis, a form of network surveillance that threatens personal freedom and "
+"privacy, confidential business activities and relationships, and state "
+"security."
msgstr ""
"Tor est un logiciel libre et un réseau ouvert qui vous aide à vous défendre "
"contre une forme de surveillance qui menace les libertés individuelles et la "
@@ -133,12 +139,18 @@ msgstr ""
"la sécurité d'État connue sous le nom d'analyse de trafic"
#. type: Plain text
-msgid ""
-"Tor protects you by bouncing your communications around a distributed "
-"network of relays run by volunteers all around the world: it prevents "
-"somebody watching your Internet connection from learning what sites you "
-"visit, and it prevents the sites you visit from learning your physical "
-"location."
+#, fuzzy
+#| msgid ""
+#| "Tor protects you by bouncing your communications around a distributed "
+#| "network of relays run by volunteers all around the world: it prevents "
+#| "somebody watching your Internet connection from learning what sites you "
+#| "visit, and it prevents the sites you visit from learning your physical "
+#| "location."
+msgid ""
+"Tor protects you by bouncing your communications around a network of relays "
+"run by volunteers all around the world: it prevents somebody watching your "
+"Internet connection from learning what sites you visit, and it prevents the "
+"sites you visit from learning your physical location."
msgstr ""
"Tor vous protège en faisant transiter vos communications au sein d'un réseau "
"distribué de relais hébergés par des volontaires partout dans le monde : il "
@@ -168,9 +180,13 @@ msgstr ""
"startup_options/bridge_mode]]."
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "To learn more about Tor, see the official [Tor website](https://www."
+#| "torproject.org/):"
msgid ""
"To learn more about Tor, see the official [Tor website](https://www."
-"torproject.org/):"
+"torproject.org/), particularly the following pages:"
msgstr ""
"Pour en savoir plus sur Tor, visitez le [site officiel de Tor](https://www."
"torproject.org/):"
@@ -206,9 +222,13 @@ msgstr ""
"(https://trac.torproject.org/projects/tor/wiki/doc/TorALaymansGuide)"
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "To learn more about how the usage of Tor is enforced, see our [[design "
+#| "document|contribute/design/Tor_enforcement]]."
msgid ""
-"To learn more about how the usage of Tor is enforced, see our [[design "
-"document|contribute/design/Tor_enforcement]]."
+"To learn more about how Tails ensures all its network connections use Tor, "
+"see our [[design document|contribute/design/Tor_enforcement]]."
msgstr ""
"Pour en savoir plus sur comment l'utilisation de Tor est imposée, voir la\n"
"[[documentation de conception|contribute/design/Tor_enforcement]]."
@@ -255,11 +275,17 @@ msgid "Use anywhere but leave no trace\n"
msgstr "Utilisez le partout, ne laissez pas de traces\n"
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "Using Tails on a computer doesn't alter or depend on the operating system "
+#| "installed on it. So you can use it in the same way on your computer, a "
+#| "friend's or one at your local library. After shutting down Tails, the "
+#| "computer can start again on its usual operating system."
msgid ""
"Using Tails on a computer doesn't alter or depend on the operating system "
"installed on it. So you can use it in the same way on your computer, a "
-"friend's or one at your local library. After shutting down Tails, the "
-"computer can start again on its usual operating system."
+"friend's computer, or one at your local library. After shutting down Tails, "
+"the computer will start again with its usual operating system."
msgstr ""
"L'utilisation de Tails ne modifie pas le système d'exploitation installé sur "
"l'ordinateur. Vous pouvez donc l'utiliser que vous soyez chez vous, chez un "
@@ -268,12 +294,19 @@ msgstr ""
"d'exploitation habituel."
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "Tails is configured with special care to not use the computer's hard-"
+#| "disks, even if there is some swap space on them. The only storage space "
+#| "used by Tails is the RAM, which is automatically erased when the computer "
+#| "shuts down. So you won't leave any trace neither of the Tails system nor "
+#| "of what you did on the computer. That's why we call it \"amnesic\"."
msgid ""
"Tails is configured with special care to not use the computer's hard-disks, "
"even if there is some swap space on them. The only storage space used by "
-"Tails is the RAM, which is automatically erased when the computer shuts "
-"down. So you won't leave any trace neither of the Tails system nor of what "
-"you did on the computer. That's why we call it \"amnesic\"."
+"Tails is in RAM, which is automatically erased when the computer shuts down. "
+"So you won't leave any trace on the computer either of the Tails system "
+"itself or what you used it for. That's why we call Tails \"amnesic\"."
msgstr ""
"Tails est spécialement configuré pour ne pas utiliser le disque dur de "
"l'ordinateur, pas même l'espace swap. Le seul espace de stockage utilisé par "
@@ -283,11 +316,17 @@ msgstr ""
"qualifions d'\"amnésique\"."
#. type: Plain text
-msgid ""
-"This allows you to work on sensitive documents on any computer and protect "
-"you from data recovery after shutdown. Of course, you can still explicitly "
-"save some documents to another USB or external hard-disk and take them away "
-"for future use."
+#, fuzzy
+#| msgid ""
+#| "This allows you to work on sensitive documents on any computer and "
+#| "protect you from data recovery after shutdown. Of course, you can still "
+#| "explicitly save some documents to another USB or external hard-disk and "
+#| "take them away for future use."
+msgid ""
+"This allows you to work with sensitive documents on any computer and "
+"protects you from data recovery after shutdown. Of course, you can still "
+"explicitly save specific documents to another USB stick or external hard-"
+"disk and take them away for future use."
msgstr ""
"Cela vous permet de travailler sur un document sensible sur n'importe quel\n"
"ordinateur tout en empêchant la récupération de ces données une fois\n"
@@ -326,8 +365,14 @@ msgstr ""
"Linux en matière de chiffrement de volume."
#. type: Bullet: ' - '
-msgid ""
-"Automatically encrypt with HTTPS all your communications to a number of "
+#, fuzzy
+#| msgid ""
+#| "Automatically encrypt with HTTPS all your communications to a number of "
+#| "major websites using [HTTPS Everywhere](https://www.eff.org/https-"
+#| "everywhere), a Firefox extension developed by the [Electronic Frontier "
+#| "Foundation](https://www.eff.org)."
+msgid ""
+"Automatically use HTTPS to encrypt all your communications to a number of "
"major websites using [HTTPS Everywhere](https://www.eff.org/https-"
"everywhere), a Firefox extension developed by the [Electronic Frontier "
"Foundation](https://www.eff.org)."
@@ -387,8 +432,12 @@ msgstr ""
"Pour aller plus loin dans votre découverte de Tails, vous pouvez lire :"
#. type: Bullet: ' - '
+#, fuzzy
+#| msgid ""
+#| "the [[warning page|doc/about/warning]] to understand better the security "
+#| "limitations of Tails and Tor,"
msgid ""
-"the [[warning page|doc/about/warning]] to understand better the security "
+"the [[warning page|doc/about/warning]] to better understand the security "
"limitations of Tails and Tor,"
msgstr ""
"la [[page d'avertissements|doc/about/warning]] afin de mieux comprendre les "
@@ -408,21 +457,31 @@ msgstr ""
"notre [[documentation|doc]] qui explique en détails comment utiliser Tails,"
#. type: Bullet: ' - '
-msgid "some hints on why [[should you trust Tails|doc/about/trust]],"
+#, fuzzy
+#| msgid "some hints on why [[should you trust Tails|doc/about/trust]],"
+msgid "some hints on why [[you should trust Tails|doc/about/trust]],"
msgstr "pourquoi [[faire confiance à Tails ?|doc/about/trust]]"
#. type: Bullet: ' - '
+#, fuzzy
+#| msgid ""
+#| "our [[design document|contribute/design]] about Tails specification, "
+#| "threat model and implementation,"
msgid ""
-"our [[design document|contribute/design]] about Tails specification, threat "
-"model and implementation,"
+"our [[design document|contribute/design]] laying out Tails specification, "
+"threat model and implementation,"
msgstr ""
"notre [[page de conception|contribute/design]] à propos de Tails traite des "
"spécifications, modèle de menace et implémentation."
#. type: Bullet: ' - '
+#, fuzzy
+#| msgid ""
+#| "the [[calendar|contribute/calendar]] holds the release dates, meetings "
+#| "and other events."
msgid ""
-"the [[calendar|contribute/calendar]] holds the release dates, meetings and "
-"other events."
+"the [[calendar|contribute/calendar]] that holds our release dates, meetings "
+"and other events."
msgstr ""
"le [[calendrier|contribute/calendar]] contenant les dates des prochaines "
"versions, des réunions et autres événements."
diff --git a/wiki/src/about.mdwn b/wiki/src/about.mdwn
index a13d5cf..13280b6 100644
--- a/wiki/src/about.mdwn
+++ b/wiki/src/about.mdwn
@@ -35,12 +35,12 @@ online:
- if an application tries to connect to the Internet directly, the
connection is automatically blocked for security.
-Tor is free software and an open network that helps you defend against a form of
+Tor is an open and distributed network that helps defend
+against traffic analysis, a form of
network surveillance that threatens personal freedom and privacy, confidential
-business activities and relationships, and state security known as traffic
-analysis.
+business activities and relationships, and state security.
-Tor protects you by bouncing your communications around a distributed network of
+Tor protects you by bouncing your communications around a network of
relays run by volunteers all around the world: it prevents somebody watching
your Internet connection from learning what sites you visit, and it prevents the
sites you visit from learning your physical location.
@@ -53,7 +53,7 @@ Using Tor you can:
such as [[bridges|doc/first_steps/startup_options/bridge_mode]].
To learn more about Tor, see the official [Tor
-website](https://www.torproject.org/):
+website](https://www.torproject.org/), particularly the following pages:
- [Tor overview: Why we need
Tor](https://www.torproject.org/about/overview.html.en#whyweneedtor)
@@ -63,8 +63,8 @@ website](https://www.torproject.org/):
- [Understanding and Using Tor — An Introduction for the
Layman](https://trac.torproject.org/projects/tor/wiki/doc/TorALaymansGuide)
-To learn more about how the usage of Tor is enforced, see our [[design
-document|contribute/design/Tor_enforcement]].
+To learn more about how Tails ensures all its network connections use Tor,
+see our [[design document|contribute/design/Tor_enforcement]].
I2P
---
@@ -84,18 +84,18 @@ Use anywhere but leave no trace
Using Tails on a computer doesn't alter or depend on the operating system
installed on it. So you can use it in the same way on your computer, a
-friend's or one at your local library. After shutting down Tails,
-the computer can start again on its usual operating system.
+friend's computer, or one at your local library. After shutting down Tails,
+the computer will start again with its usual operating system.
Tails is configured with special care to not use the computer's hard-disks,
even if there is some swap space on them. The only storage space used by Tails is
-the RAM, which is automatically erased when the computer shuts down. So
-you won't leave any trace neither of the Tails system nor of what you did on
-the computer. That's why we call it "amnesic".
+in RAM, which is automatically erased when the computer shuts down. So
+you won't leave any trace on the computer either of the Tails system itself or
+what you used it for. That's why we call Tails "amnesic".
-This allows you to work on sensitive documents on any computer and protect you
+This allows you to work with sensitive documents on any computer and protects you
from data recovery after shutdown. Of course, you can still explicitly save
-some documents to another USB or external hard-disk and take them away for
+specific documents to another USB stick or external hard-disk and take them away for
future use.
<a id="cryptography"></a>
@@ -111,7 +111,7 @@ encryption:
class="definition">[[!wikipedia LUKS]]</span>, the Linux standard for
disk-encryption.
- - Automatically encrypt with HTTPS all your communications to a number of
+ - Automatically use HTTPS to encrypt all your communications to a number of
major websites using [HTTPS
Everywhere](https://www.eff.org/https-everywhere), a Firefox extension
developed by the [Electronic Frontier Foundation](https://www.eff.org).
@@ -136,12 +136,12 @@ What's next?
To continue discovering Tails, you can now read:
- - the [[warning page|doc/about/warning]] to understand better the security limitations of Tails and Tor,
+ - the [[warning page|doc/about/warning]] to better understand the security limitations of Tails and Tor,
- more details about the [[features and software|doc/about/features]] included in Tails,
- our [[documentation|doc]] explaining in detail how to use Tails,
- - some hints on why [[should you trust Tails|doc/about/trust]],
- - our [[design document|contribute/design]] about Tails specification, threat model and implementation,
- - the [[calendar|contribute/calendar]] holds the release dates, meetings and other events.
+ - some hints on why [[you should trust Tails|doc/about/trust]],
+ - our [[design document|contribute/design]] laying out Tails specification, threat model and implementation,
+ - the [[calendar|contribute/calendar]] that holds our release dates, meetings and other events.
Press and media
===============
diff --git a/wiki/src/about.pt.po b/wiki/src/about.pt.po
index da1dcf5..ad59094 100644
--- a/wiki/src/about.pt.po
+++ b/wiki/src/about.pt.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: 1\n"
-"POT-Creation-Date: 2015-03-13 16:25+0100\n"
+"POT-Creation-Date: 2015-10-30 11:35+0100\n"
"PO-Revision-Date: 2014-04-30 20:00-0300\n"
"Last-Translator: Tails Developers <amnesia@boum.org>\n"
"Language-Team: Portuguese <LL@li.org>\n"
@@ -125,11 +125,17 @@ msgstr ""
"automaticamente bloqueada por segurança."
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "Tor is free software and an open network that helps you defend against a "
+#| "form of network surveillance that threatens personal freedom and privacy, "
+#| "confidential business activities and relationships, and state security "
+#| "known as traffic analysis."
msgid ""
-"Tor is free software and an open network that helps you defend against a "
-"form of network surveillance that threatens personal freedom and privacy, "
-"confidential business activities and relationships, and state security known "
-"as traffic analysis."
+"Tor is an open and distributed network that helps defend against traffic "
+"analysis, a form of network surveillance that threatens personal freedom and "
+"privacy, confidential business activities and relationships, and state "
+"security."
msgstr ""
"Tor é um Software Livre e uma rede aberta que ajuda você a se defender "
"contra formas de vigilância na rede que ameaçam sua liberdade e privacidade, "
@@ -137,12 +143,18 @@ msgstr ""
"segurança estatais conhecidas como análise de tráfego."
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "Tor protects you by bouncing your communications around a distributed "
+#| "network of relays run by volunteers all around the world: it prevents "
+#| "somebody watching your Internet connection from learning what sites you "
+#| "visit, and it prevents the sites you visit from learning your physical "
+#| "location."
msgid ""
-"Tor protects you by bouncing your communications around a distributed "
-"network of relays run by volunteers all around the world: it prevents "
-"somebody watching your Internet connection from learning what sites you "
-"visit, and it prevents the sites you visit from learning your physical "
-"location."
+"Tor protects you by bouncing your communications around a network of relays "
+"run by volunteers all around the world: it prevents somebody watching your "
+"Internet connection from learning what sites you visit, and it prevents the "
+"sites you visit from learning your physical location."
msgstr ""
"Tor lhe protege redirecionando suas comunicações ao redor de uma rede "
"distribuída de repetidoras mantidas por voluntários/as ao redor do mundo: "
@@ -172,9 +184,13 @@ msgstr ""
"bridge_mode]]."
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "To learn more about Tor, see the official [Tor website](https://www."
+#| "torproject.org/):"
msgid ""
"To learn more about Tor, see the official [Tor website](https://www."
-"torproject.org/):"
+"torproject.org/), particularly the following pages:"
msgstr ""
"Para conhecer mais sobre o Tor, veja o [Sítio oficial do Tor](https://www."
"torproject.org/) (em inglês):"
@@ -210,9 +226,13 @@ msgstr ""
"torproject.org/projects/tor/wiki/doc/TorALaymansGuide) (em inglês)."
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "To learn more about how the usage of Tor is enforced, see our [[design "
+#| "document|contribute/design/Tor_enforcement]]."
msgid ""
-"To learn more about how the usage of Tor is enforced, see our [[design "
-"document|contribute/design/Tor_enforcement]]."
+"To learn more about how Tails ensures all its network connections use Tor, "
+"see our [[design document|contribute/design/Tor_enforcement]]."
msgstr ""
"Para saber mais sobre como o uso do Tor é imposto, veja nosso [[documento de "
"projeto|contribute/design/Tor_enforcement]]."
@@ -265,11 +285,17 @@ msgid "Use anywhere but leave no trace\n"
msgstr "Use em qualquer lugar sem deixar rastros\n"
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "Using Tails on a computer doesn't alter or depend on the operating system "
+#| "installed on it. So you can use it in the same way on your computer, a "
+#| "friend's or one at your local library. After shutting down Tails, the "
+#| "computer can start again on its usual operating system."
msgid ""
"Using Tails on a computer doesn't alter or depend on the operating system "
"installed on it. So you can use it in the same way on your computer, a "
-"friend's or one at your local library. After shutting down Tails, the "
-"computer can start again on its usual operating system."
+"friend's computer, or one at your local library. After shutting down Tails, "
+"the computer will start again with its usual operating system."
msgstr ""
"O uso do Tails em um computador não altera e nem depende do sistema "
"operacional atualmente instalado. Assim, você pode usá-lo da mesma maneira "
@@ -278,12 +304,19 @@ msgstr ""
"instalado."
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "Tails is configured with special care to not use the computer's hard-"
+#| "disks, even if there is some swap space on them. The only storage space "
+#| "used by Tails is the RAM, which is automatically erased when the computer "
+#| "shuts down. So you won't leave any trace neither of the Tails system nor "
+#| "of what you did on the computer. That's why we call it \"amnesic\"."
msgid ""
"Tails is configured with special care to not use the computer's hard-disks, "
"even if there is some swap space on them. The only storage space used by "
-"Tails is the RAM, which is automatically erased when the computer shuts "
-"down. So you won't leave any trace neither of the Tails system nor of what "
-"you did on the computer. That's why we call it \"amnesic\"."
+"Tails is in RAM, which is automatically erased when the computer shuts down. "
+"So you won't leave any trace on the computer either of the Tails system "
+"itself or what you used it for. That's why we call Tails \"amnesic\"."
msgstr ""
"Tails está configurado com especial cuidado para não usar o disco rígido do "
"computador, mesmo que haja um espaço swap (área de troca) nele. O único "
@@ -293,11 +326,17 @@ msgstr ""
"este motivo que costumamos chamá-lo de \"amnésico\"."
#. type: Plain text
+#, fuzzy
+#| msgid ""
+#| "This allows you to work on sensitive documents on any computer and "
+#| "protect you from data recovery after shutdown. Of course, you can still "
+#| "explicitly save some documents to another USB or external hard-disk and "
+#| "take them away for future use."
msgid ""
-"This allows you to work on sensitive documents on any computer and protect "
-"you from data recovery after shutdown. Of course, you can still explicitly "
-"save some documents to another USB or external hard-disk and take them away "
-"for future use."
+"This allows you to work with sensitive documents on any computer and "
+"protects you from data recovery after shutdown. Of course, you can still "
+"explicitly save specific documents to another USB stick or external hard-"
+"disk and take them away for future use."
msgstr ""
"Isso permite que você trabalhe em documentos sensíveis em qualquer "
"computador e te protege de tentativas de recuperação de dados após o "
@@ -335,8 +374,14 @@ msgstr ""
"de disco."
#. type: Bullet: ' - '
+#, fuzzy
+#| msgid ""
+#| "Automatically encrypt with HTTPS all your communications to a number of "
+#| "major websites using [HTTPS Everywhere](https://www.eff.org/https-"
+#| "everywhere), a Firefox extension developed by the [Electronic Frontier "
+#| "Foundation](https://www.eff.org)."
msgid ""
-"Automatically encrypt with HTTPS all your communications to a number of "
+"Automatically use HTTPS to encrypt all your communications to a number of "
"major websites using [HTTPS Everywhere](https://www.eff.org/https-"
"everywhere), a Firefox extension developed by the [Electronic Frontier "
"Foundation](https://www.eff.org)."
@@ -396,8 +441,12 @@ msgid "To continue discovering Tails, you can now read:"
msgstr "Para continuar descobrindo o Tails, você pode ler:"
#. type: Bullet: ' - '
+#, fuzzy
+#| msgid ""
+#| "the [[warning page|doc/about/warning]] to understand better the security "
+#| "limitations of Tails and Tor,"
msgid ""
-"the [[warning page|doc/about/warning]] to understand better the security "
+"the [[warning page|doc/about/warning]] to better understand the security "
"limitations of Tails and Tor,"
msgstr ""
"a [[página de advertência|doc/about/warning]] para entender melhor as "
@@ -416,7 +465,9 @@ msgid "our [[documentation|doc]] explaining in detail how to use Tails,"
msgstr "nossa [[documentação|doc]] explicando em detalhes como usar o Tails,"
#. type: Bullet: ' - '
-msgid "some hints on why [[should you trust Tails|doc/about/trust]],"
+#, fuzzy
+#| msgid "some hints on why [[should you trust Tails|doc/about/trust]],"
+msgid "some hints on why [[you should trust Tails|doc/about/trust]],"
msgstr ""
"alguns conselhos de por que [[você deveria confiar no Tails|doc/about/"
"trust]],"
@@ -427,16 +478,16 @@ msgstr ""
#| "our [[design document|contribute/design]] about Tails specification, "
#| "threat model and implementation."
msgid ""
-"our [[design document|contribute/design]] about Tails specification, threat "
-"model and implementation,"
+"our [[design document|contribute/design]] laying out Tails specification, "
+"threat model and implementation,"
msgstr ""
"nosso [[documento de projeto|contribute/design]] sobre as especificações do "
"Tails, modelo de ameaça e implementação."
#. type: Bullet: ' - '
msgid ""
-"the [[calendar|contribute/calendar]] holds the release dates, meetings and "
-"other events."
+"the [[calendar|contribute/calendar]] that holds our release dates, meetings "
+"and other events."
msgstr ""
#. type: Title =
diff --git a/wiki/src/blueprint/Debian_Stretch.mdwn b/wiki/src/blueprint/Debian_Stretch.mdwn
new file mode 100644
index 0000000..0e2e9af
--- /dev/null
+++ b/wiki/src/blueprint/Debian_Stretch.mdwn
@@ -0,0 +1,76 @@
+[[!meta title="Porting Tails to Debian Stretch"]]
+
+This is about the effort to create [Tails
+3.0](https://labs.riseup.net/code/projects/tails/issues?query_id=198),
+based on Debian Stretch.
+
+[[!toc levels=2]]
+
+# Big picture
+
+When porting to Wheezy, our main problem has been that we started the
+work too late, which made us discover Debian bugs too late (after the
+Debian Wheezy freeze, or even after its release), and in the end we
+had to workaround lots of problems on our side.
+
+So we started much earlier the porting work to Jessie, which indeed
+essentially avoided the aforementioned problem. But we didn't allocate
+enough focused resources to this effort, and as a result the total
+duration of the porting to Jessie work is lasting too much, and we're
+spending too much time just keeping our feature/jessie branch
+up-to-date wrt. the changes we were making in our Wheezy
+production branches.
+
+For Stretch we'd like to avoid both problems. We want to start early,
+in order to fix problems directly in Debian Stretch before it's
+released. And, we want the porting work to fit into a shorter time
+span, so as soon as we start we'll allocate more resources to it, and
+in a better organized, team-based and focused way.
+
+Additionally, we would like to use this process as an opportunity to
+evaluate the idea of basing Tails on snapshots of Debian testing.
+
+# Schedule
+
+* 2016Q1 — Tails 2.0 is out
+* April or May 2016 — start working on Tails 3.0 (1 week sprint with
+ all involved people) :intrigeri:anonym:kytv:
+ - get feature/stretch to build and boot
+ - update the automated test suite to test Tails/Stretch ISO images
+* May 2016 to April 2017 — have one dedicated half-time, 1-week sprint
+ every 6 weeks.
+ - Schedule these sprints in advance, announce them
+ publicly, and invite other contributors (e.g. doc writers).
+ - Most of these sprints will probably be attended remotely, but at
+ least some could happen face-to-face.
+ - At the beginning of each Stretch sprint, we import a new snapshot
+ of Debian testing into our freezable APT repository, so that:
+ * during the sprint we update our stuff as required by changes
+ that happened in Debian since the last sprint;
+ * our stuff is not broken by changes in Debian neither during
+ sprints, nor between them;
+ * we get a feeling of how "being based on snapshots of Debian
+ testing" would work.
+* December 5 2016 — Debian Stretch freeze starts
+* April 2017 (???) — Debian Stretch is released
+* April-June 2017 — Tails 3.0 is released
+
+# Let's go rolling
+
+Let's use this porting cycle to evaluate how being based on snapshots
+of Debian testing would feel like. During the entire cycle:
+
+* Keep the automated test suite up-to-date on feature/stretch :kytv:
+* Keep the documentation up-to-date on feature/stretch :doc_writer:
+* Take notes of issues we see from the perspective of "how would it go
+ if we were based on testing already?". E.g.:
+ - How to deal with ongoing transitions that block migration of
+ security updates from sid to testing?
+
+Note that during half of the cycle, we'll be based on a frozen Debian
+testing, so the changes rate coming from Debian won't be crazy.
+Of course there will be changes coming from our own porting efforts.
+
+And then, once Tails 3.0 is out: we're not lagging behind anymore, and
+are thus in a position to decide whether we want to base Tails on
+snapshots of Debian testing.
diff --git a/wiki/src/blueprint/GNotification.mdwn b/wiki/src/blueprint/GNotification.mdwn
new file mode 100644
index 0000000..96e3b49
--- /dev/null
+++ b/wiki/src/blueprint/GNotification.mdwn
@@ -0,0 +1 @@
+See [[blueprint/desktop_notifications]].
diff --git a/wiki/src/blueprint/Git_sub-repositories.mdwn b/wiki/src/blueprint/Git_sub-repositories.mdwn
index 4aa8661..a89c49c 100644
--- a/wiki/src/blueprint/Git_sub-repositories.mdwn
+++ b/wiki/src/blueprint/Git_sub-repositories.mdwn
@@ -59,6 +59,6 @@ meant to workaround these limitations.
* <http://ttboj.wordpress.com/2014/05/06/keeping-git-submodules-in-sync-with-your-branches/>
* <http://somethingsinistral.net/blog/git-submodules-are-probably-not-the-answer/>
+* <http://somethingsinistral.net/blog/scaling-puppet-environment-deployment/>
* <http://makingsoftware.wordpress.com/2013/02/16/using-git-subtrees-for-repository-separation/>
* <http://www.mos6581.org/git_subtree_alternative>
-
diff --git a/wiki/src/blueprint/HTTP_mirror_pool.mdwn b/wiki/src/blueprint/HTTP_mirror_pool.mdwn
index a63013c..6a5fafd 100644
--- a/wiki/src/blueprint/HTTP_mirror_pool.mdwn
+++ b/wiki/src/blueprint/HTTP_mirror_pool.mdwn
@@ -1,5 +1,38 @@
**Ticket**: [[!tails_ticket 7161]]
+[[!toc levels=3]]
+
+# The plan
+
+## Big picture
+
+We decided to implement a two-way strategy for this feature:
+
+* Use JavaScript to modify the link on the download page, so that each
+ user is pointed to random mirror.
+ - Vanilla JS (no frameworks)
+ - Store the JS code and its configuration file in two dedicated
+ ikiwiki overlays, for finer-grained access control possibilities
+ to it (e.g. we may want to let people who don't have commit access
+ to Git maintain the mirrors pool).
+ - Configuration for the JS is loaded from JSON file. It attaches
+ a weight to each mirror. Weight 0 means that the mirror is
+ currently disabled, and will never be redirected to. We're using
+ JSON and not YAML to avoid the need to use a third-party parser.
+
+* Keep using DNS to point to 3-5 fast and reliable mirrors. This will
+ be the fallback for people who do not use JS. So we still need a DNS
+ dynamic update system; we can simply re-purpose the one we already
+ have (`dl.amnesia.boum.org`).
+
+* The ISO verification extension also needs to use mirrors. So, we'll
+ be providing library code for it to do the same, internally, as
+ a web browser would do when visiting the Tails download page, that
+ is replacing the hostname, in a ISO download URL, with a suitable
+ mirror's hostname (using the JSON mirror pool configuration file).
+
+# Initial research
+
The idea I had was to let the server(s) send a reduced list of hosts. Not
only it would allow to work-around Tor DNS limitations, but also to have
some weighted round robin, in order to prioritize some high bandwidth
@@ -9,9 +42,7 @@ If I had to mention the ideal design goals for such changes, I would say
that the more straightforward would be the better for implementation and
also for maintainability.
-[[!toc levels=2]]
-
-# Using DNS
+## Using DNS
Using DNS seems to be an easy way to do some round robin in low level. It
allows some kind of transparency to the upper layers protocols and
@@ -24,7 +55,7 @@ The following ways are available to implement it:
* NS Hacks
* Modified DNS servers
-## CNAME Hacks
+### CNAME Hacks
As mention by ToBeFree something that can be done is to have different
pools of servers like:
@@ -55,7 +86,7 @@ that has not been ported to bind 9. Neither NSD nor PowerDNS seem to
support it, and their is no actual data about how resolvers would
handle this case, so I don't think it is the best option.
-## NS Hacks
+### NS Hacks
Following the same idea the dl amnesia.boum.org could be delegated to a
few different DNS servers, and those servers may have different versions
@@ -82,7 +113,7 @@ CNAME hacks, almost as the NS servers will not receive 50% of requests
because of [[!rfc 5452]]). However, I am not sure that playing with DNS
inconsistency will be a so good idea, for example for maintainability :)
-## Using modified DNS servers
+### Using modified DNS servers
Interestingly Tails is not the first project to be looking how to use DNS
for load distribution. People already wrote some DNS software designed to
@@ -102,7 +133,7 @@ Deploying such software would solve the problem in a more elegant way than
CNAME or NS hacks. It would require a bit of system administration that
maybe can be done using some puppet templates in a few Virtal Machines.
-# Using HTTP(s)
+## Using HTTP(s)
DNS is not the only way to do some load balancing. It is mostly used for
low level protocols that don't allow redirects (for example: NTP). As
@@ -147,13 +178,13 @@ Thus, if I may, I would like to recommend considering the HTTP(s) option,
even if it means that I have to write the PHP script by myself or to create
an easy task entry on the ticket tracker and follow it :)
-# Proof of concept: JavaScript + multiple DNS pools / named mirrors
+## Proof of concept: JavaScript + multiple DNS pools / named mirrors
This method can either be used with multiple DNS pools (dl1.amnesia.boum.org, dl2.amnesia.boum.org etc.) or with named mirrors (freiwuppertal.dl.amnesia.boum.org, othermirror.dl.amnesia.boum.org, ...). Using named mirrors allows you to use a huge, unlimited list of completely equally used mirrors; using multiple DNS pools leads to effects described under "CNAME hacks".
These POCs should be 1:1 usable on the Tails [[download]] page. All that would be needed is setting up the DNS pools and/or named mirrors, and telling the mirror owners to configure their servers to respond to \*.amnesia.boum.org (the wildcard is important).
-## JavaScript POC (multiple DNS pools)
+### JavaScript POC (multiple DNS pools)
<script src="//code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">//<![CDATA[
@@ -171,12 +202,12 @@ For this to work and to be flexible, mirrors need to respond to \*.amnesia.boum.
At least nginx is unable to use a wildcard like dl\*.amnesia.boum.org, so \*.amnesia.boum.org has to be used. This is more flexible anyway.
-### Example webpage (see the webpage source there too)
+#### Example webpage (see the webpage source there too)
<http://freiwuppertal.de/tails-mirror-example-dns.htm>
-## JavaScript POC (named mirrors)
+### JavaScript POC (named mirrors)
<script src="//code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">//<![CDATA[
@@ -192,16 +223,108 @@ At least nginx is unable to use a wildcard like dl\*.amnesia.boum.org, so \*.amn
For this to work and to be flexible, mirrors need to respond to \*.amnesia.boum.org. Just responding to a fixed name would make this an unflexible solution, so the wildcard is needed.
-### Example webpage (see the webpage source there too)
+#### Example webpage (see the webpage source there too)
<http://freiwuppertal.de/tails-mirror-example-named.htm>
-### Giving mirrors higher or lower weight
+#### Giving mirrors higher or lower weight
Using this approach, giving one mirror more weight than others is very easy: Simply add it's name multiple times to the array of mirrors. :D
+### Vanilla JavaScript POC and JSON
+
+ <a href="http://dl.amnesia.boum.org/tails/stable/tails-i386-1.6/tails-i386-1.6.iso" id="dllink">download link</a>
+
+ <script type="text/javascript">
+ function fetchJSONdata(path, callback) {
+ var xhr = new XMLHttpRequest();
+ xhr.onreadystatechange = function() {
+ if (xhr.readyState === 4) {
+ if (xhr.status === 200 || xhr.status === 0) {
+ var data = JSON.parse(xhr.responseText);
+ if (callback) callback(data);
+ } else {
+ console.log( "Error: " + xhr.statusText);
+ }
+ }
+ };
+ xhr.open('GET', path, true);
+ xhr.send();
+ }
+
+ function getRandomInt(min, max) {
+ return Math.floor(Math.random() * (max - min +1)) + min;
+ }
+
+ function isJSON(str) {
+ try {
+ JSON.parse(str);
+ } catch (e) {
+ return false;
+ }
+ return true;
+ }
+
+ function replaceDownloadURL(updatedURL) {
+ var URLMarker = "/tails/stable";
+ // todo check that url is a correct url
+ var linkDOMElem = document.getElementById('dllink');
+ var linkHREF = linkDOMElem.href.split( '//' );
+ var linkToISO = linkHREF[1].split( URLMarker );
+ // fixme http or https
+ linkDOMElem.href = '//' + updatedURL + URLMarker + linkToISO[1];
+ return true;
+ }
+
+ fetchJSONdata('./mirrors.json', function(data){
+ //console.log(data);
+ if( data == "undefined" ) {
+ console.log( "Error: mirror data not loaded.");
+ } else if( !isJSON( JSON.stringify(data) ) ) {
+ console.log( "Error: mirror data is not JSON.");
+ } else {
+ //console.log(data.mirrors);
+ // todo delete all mirrors with weight 0 before choosing one
+ if(data.mirrors.length > 0 ) {
+ var activeMirrors = new Array();
+ for ( i = 0; i < data.mirrors.length; i++ ) {
+ if ( data.mirrors[i].weight != 0 ) {
+ // add mirror as many times as its weight, max weight is 5
+ if ( parseInt(data.mirrors[i].weight ) > 5) {
+ var max_weight = 5;
+ } else {
+ var max_weight = parseInt( data.mirrors[i].weight );
+ }
+ for ( w = 0; w < max_weight; w++ ) {
+ activeMirrors.push( data.mirrors[i] );
+ }
+ }
+ }
+ console.log(activeMirrors);
+
+ var randomMirror = getRandomInt(0, activeMirrors.length-1);
+ //console.log(randomMirror);
+ //console.log(data.mirrors[randomMirror]);
+ replaceDownloadURL(activeMirrors[randomMirror].url);
+ }
+ }
+ });
+ </script>
+
+The mirrors.json file contains:
+<pre>
+ {
+ "mirrors": [
+ { "url": "1.dl.amnesia.boum.org", "weight": "10" },
+ { "url": "5.dl.amnesia.boum.org", "weight": "5" },
+ { "url": "6.dl.amnesia.boum.org", "weight": "6" },
+ { "url": "3.dl.amnesia.boum.org", "weight": "0" }
+ ]
+ }
+</pre>
+
-# PHP: first draft
+## PHP: first draft
// http://stackoverflow.com/questions/4233407/get-random-item-from-array
diff --git a/wiki/src/blueprint/Return_of_Icedove__63__.mdwn b/wiki/src/blueprint/Return_of_Icedove__63__.mdwn
index a55a4e5..5176e2c 100644
--- a/wiki/src/blueprint/Return_of_Icedove__63__.mdwn
+++ b/wiki/src/blueprint/Return_of_Icedove__63__.mdwn
@@ -26,7 +26,7 @@ Roadmap
1. List blockers (from the *Things to implement* list below).
1. Implement blockers.
1. Write design documentation.
-1. Adapt [[end-user documentation|doc/anonymous_internet/thunderbird]]
+1. Adapt end-user documentation
from Incognito.
Design decisions
@@ -117,19 +117,18 @@ Basic configuration & integration
* Don't display the "Adblock Plus installation complete" tab.
* Don't prompt whether one wants to report usage and performance
information to Mozilla.
-* Disable FoxyProxy.
* Enable "Only use secure protocols" by default (one may still
uncheck it when needed).
* Don't check updates for Add-ons.
* Add launcher to the GNOME panel.
-* More generally: have a look at our Iceweasel prefs and copy all
+* More generally: have a look at our Tor Browser prefs and copy all
those that exist and make sense for Icedove.
* The [[security/IP_address_leak_with_icedove]] can be fixed by
setting `mail.smtpserver.default.hello_argument` to "localhost".
See [this Tor wiki
entry](https://trac.torproject.org/projects/tor/wiki/TheOnionRouter/TorifyHOWTO/EMail#ExperimentalSuggestionsforpossiblymakingthunderbirdandorclawsstopleakinginfoExperimental)
for other goodies. By applying those configurations I think both
- claws and icedove comes to an equal level security-wise.
+ claws and icedove comes to an equal level security-wise. (Note: This will be set by TorBirdy)
* Disable by default the indexer from
`Preferences -> Advanced -> General -> Enable Global Search and Indexer`.
Otherwise pinentry dialogs can appear while checking email in the
diff --git a/wiki/src/blueprint/SponsorS/reports/2015_01-07.mdwn b/wiki/src/blueprint/SponsorS/reports/2015_01-07.mdwn
index e69de29..d6e55e4 100644
--- a/wiki/src/blueprint/SponsorS/reports/2015_01-07.mdwn
+++ b/wiki/src/blueprint/SponsorS/reports/2015_01-07.mdwn
@@ -0,0 +1,374 @@
+This reports covers the activity of Tails from February 2015 and until
+the end of July 2015, as no contract was signed before August.
+
+Everything in this report can be made public.
+
+A small number of these deliverables are late compared to the
+initially planned milestones, because without a contract and the
+guarantee that they would be paid, contractors have "only" done the
+vast majority of the work, but did not feel strictly bound to these
+deadlines yet.
+
+Note: the numbers preceded with a `#` correspond to tickets in our bug
+tracker which contains more technical details and timeline. For example,
+ticket #6938 can been seed on https://labs.riseup.net/code/issues/6938.
+
+A. Replace Claws Mail with Icedove
+==================================
+
+Due to an important security issue that we discovered in Claws Mails [1]
+we want to move faster on the migration to Icedove and try to have it in Tails
+1.7 (November 3) instead of Tails 1.9 (January 26). Icedove in Tails 1.7
+will fallback on the account wizard provided by TorBirdy, and Icedove in
+Tails 1.9 will have the usual Icedove wizard with additional security (for
+example with TLS enforced).
+
+[1]: https://tails.boum.org/security/claws_mail_leaks_plaintext_to_imap/
+
+B. Improve our quality assurance process
+========================================
+
+B.1. Automatically build ISO images for all the branches of our source
+code that are under active development
+----------------------------------------------------------------------
+
+Any active Tails development branch is now built automatically on our
+Jenkins server. Since this piece of infrastructure has been deployed,
+every day at least 20 branches have been built, which exceeds the goal
+(ten per day) that we had set. The latest builds can be found on
+<http://nightly.tails.boum.org/>.
+
+This is the first stage towards integrating our automated test suite
+at the core of our software development process, and to run it
+continuously on our development versions while they are
+being developed.
+
+The steps that lead to completion of this project where:
+
+- B.1.1. Improve the Puppet code of our ISO building server (based on
+ Jenkins) to be able to replicate our setup as needed: #6938 and #6056
+
+ Once this refactoring was completed, we successfully validated it by
+ replicating our Jenkins setup locally. This should for example help
+ new contributors participate in infrastructure improvements.
+
+- B.1.2. Have a mechanism to automatically update Jenkins jobs
+ when changes to their code are pushed through Git: #5898
+
+ This, along with the next few completed tasks, enabled us to have
+ the Jenkins build jobs dynamically generated based on activity that
+ happens in the main Tails code repository, in a fully automated way.
+
+- B.1.3. Decide what kind of branches qualify for automatic building:
+ #8655
+
+ After an initial design was proposed by our infrastructure team,
+ other Tails developers were involved in the discussion to make sure
+ that what we were going to set up was a good match for their needs.
+ It was a long process, but after a few iterations we were confident
+ that we had identified the most important issues and resolved them,
+ which proved to be correct once the whole system was deployed
+ later on.
+
+- B.1.4. Improve automatic cleanup of nightly built ISO images: #6439
+
+ The program that takes care of garbage collecting ISO images built
+ on our Jenkins infrastructure was previously buggy. Issues in the
+ algorithm were identified, a new algorithm was designed and
+ implemented, which resolved the issue. This will make it easier for
+ developers to debug regressions: they now have more data points
+ to compare.
+
+- B.1.5. Publish and upstream our improvements to the Jenkins Puppet
+ module to ease its maintenance: #9682
+
+ Tails has a policy of working hand-in-hand with upstream when
+ feasible, as a way to share our improvements with the outside world,
+ and more pragmatically as a way of keeping our project sustainable
+ on the long run. Here, we have worked with the upstream author of
+ the puppet-jenkins module and had our improvements merged upstream.
+ As a result, we now are back to using the upstream version of
+ this code.
+
+- B.1.6. Have topic branches built using the APT repository of their base branch
+ (stable, devel, etc.) and not devel by default as is currently the
+ case, merging them into their base branch. Adjust contributing
+ processes and documentation accordingly: #8654
+
+ We deemed it important, when building ISO images from development
+ branches, to make sure that they merge fine with the base branch
+ they should land into eventually, and in turn that they build fine
+ after this merge has been done. It proved to be seriously harder
+ than expected: we had to encode information, in our Git tree, about
+ which APT repositories should be used when building a Tails ISO
+ image from a given branch, and to adjust great parts of our
+ development & QA processes and infrastructure. Thankfully the result
+ works well and makes the daily work of Tails developers easier.
+
+- B.1.7. Write library code that implements the automatic build
+ criteria and parameters designed during the previous iteration: #8657
+- B.1.8. Write tools that generate a set of Jenkins jobs to build ISO
+ images based on the aforementioned library code: #8656
+
+ This is the implementation of the design we came up with previously
+ (B.1.3). The vast majority of the code was implemented as a library,
+ so that we can reuse it in the future for whatever may need it.
+
+- B.1.9. Deploy, refresh regularly our Jenkins jobs
+ and automatically clean obsolete ones: #8658
+
+ This was the final step, when we deployed live the entire piece of
+ infrastructure, crossed fingers, and happily saw it work flawlessly.
+
+B.2. Continuously run our entire test suite on all those ISO images
+once they are built
+-------------------------------------------------------------------
+
+- B.2.1. Adjust our infrastructure to run tests in parallel
+
+ This was not fully completed. Some initial work has been done,
+ though:
+
+ * We have started adjusting our server setup, Puppet modules and
+ maintenance procedures to cope with multiple test runners.
+ * We have starting deploying more virtual machines that will act as
+ test runners.
+
+- B.2.2. Decide what kind of ISO images qualify for testing
+ and when, how to process, advertise, and store the results
+
+ An initial draft design was written, posted on our development
+ mailing-list, and as a result the discussion has started but was not
+ completed yet.
+
+B.3. Extend the coverage of our test suite
+------------------------------------------
+
+### Refactoring to make room for improvements in the next iterations
+
+- B.3.1. Use libguestfs for better disk handling in the test suite:
+ #5294
+
+ Using libguestfs gave us some noticeable performance improvements
+ when running our automated test suite, and enables us more
+ flexibility when dealing with disk images.
+
+- B.3.2. Reorganize the test suite: #6543
+
+ After two years of active development, our test suite has seen
+ a well-deserved spring clean up and refactoring, which allows us to
+ add more tests in a maintainable way.
+
+### Writing more automated tests
+
+- B.3.3. Test "Report an error" launcher: #6904
+
+ This was completed, and got rid of one more manual test we
+ previously had to do at release time.
+
+- B.3.5. Write tests for I2P
+
+ Some initial work has been done, but it has not been completed yet.
+
+- A great number of additional tests were written over the reporting
+ period, as part of a project we have with another sponsor.
+
+### Make our test suite robust and faster
+
+During this iteration, this included:
+
+- B.3.4. Research how we can use background snapshots more efficiently
+ for speeding up the test suite. Report upstream any bug we discover
+ along the way, if any, in the hope that we can benefit more from
+ this feature later on: #6094
+
+ A proof-of-concept was created, and so far it is very convincing:
+ e.g. we've seen 20-30% test suite runtime decrease on various
+ hardware. We've been hit by a limitation in libvirt, and started
+ discussing it with upstream. Next steps are to polish our
+ proof-of-concept, merge it into our development branch, and report
+ a kernel bug to Linux upstream.
+
+- During the reporting period, lots of efforts were put into making
+ our test suite more robust, as part of a project we have with
+ another sponsor.
+
+C. Scale our infrastructure
+===========================
+
+C.2. Be able to detect within hours failures and malfunction on our
+services
+-------------------------------------------------------------------
+
+This section is about monitoring the most critical pieces of the
+infrastructure that supports Tails development. We have some early
+progress to report about, even though this deliverable is technically
+part of a milestone that is still many months in the future.
+
+- C.2.3. Do an inventory of the services that need monitoring and
+ prioritize: #8649
+
+ We did that, and while we were at it we wrote a detailed
+ specification for the upcoming monitoring system, which will help
+ choose software and hosting.
+
+- Some initial experiments and comparisons were made with several
+ monitoring systems. A dedicated virtual machine has been set up for
+ these experiments.
+
+C.3. Make it easier for new contributors to start working on Tails
+------------------------------------------------------------------
+
+Until a few months ago, cloning our main Git repository required
+downloading more than 300 MB of data. Most of this corresponded to
+files that were not useful anymore. This made it hard for new
+contributors to start working on Tails, so we had little choice but
+rewriting the history of this repository. This is what we did, and as
+a result our Git repository is now 75 MB large (the objective was:
+less than 150 MB).
+
+As expected, the implied migration process was a bit hard for the
+least technical of Tails existing contributors (e.g. translators), but
+given good documentation and support, everyone was able to go
+through it.
+
+We also made it so obsolete Git branches and APT repositories are now
+identified and cleaned up regularly.
+
+This covers deliverables C.3.1 to C.3.7.
+
+C.4. Maintain our already existing services
+-------------------------------------------
+
+This covers deliverables C.4.1 and C.4.2.
+
+Aside of the usual security updates and taking care of daily requests
+coming from the Tails development community, here are a few selected
+tasks we have completed:
+
+* completed the migration of our main server to new hardware;
+* moved the /promote/ website directory to a dedicated Git
+ repository so that it can grow without cluttering the main one;
+* upgraded almost all our systems to Debian Jessie and adjusted our
+ Puppet code accordingly;
+* set up an archive of the Tor Browser tarballs we need, which removes
+ one of the blockers so previous tags in our Git repository can still
+ be built in the future;
+* set up a Jenkins job to proactively check for upstream merge
+ conflicts in our Tor Browser AppArmor profile;
+* improved and distributed our backup processes;
+* made it so our APT repository's keyring, and the exported APT repo's
+ pubkey we publish, are automatically updated;
+* extended storage capacity on our main server;
+* set up the infrastructure that the automated test suite team
+ requested (SSH, sftp, shared secrets repository);
+* written a Puppet module to deploy systems able to run our
+ test suite.
+
+D. Migration to Debian Jessie
+=============================
+
+We did quite some work on this migration. For details about bits that
+are not covered by this OTF project, see
+<https://labs.riseup.net/code/projects/tails/issues?query_id=130>.
+
+D.2. Take advantage of systemd to improve the internals of Tails
+----------------------------------------------------------------
+
+- D.2.1. Convert at least 4 of our custom initscripts to native
+ systemd units
+
+ The 9 custom initscripts currently shipped in Tails (based on Debian
+ Wheezy) were converted to systemd unit files. Besides, while we were
+ at it, we converted most of our custom GNOME session initialization
+ scripts to systemd (9 more units in the end), as well as the MAC
+ address spoofing subsystem.
+
+- D.2.2. Replace our patches to initscripts from Debian with systemd drop-in overrides
+
+ This is work in progress: our Jessie branch still patches 13
+ initscripts. For the record, the goal we want to reach here is to go
+ down to 9.
+
+D.6. Upgrade Tails-specific tools to Debian Jessie technologies
+---------------------------------------------------------------
+
+- D.6.1 Port Tails-specific tools from udisks 1 to udisks 2: #8292
+
+ We have ported Tails Installer, Tails Upgrader, and the persistent
+ volume assistant to udisks 2. As a result, our Jessie branch does
+ not ship udisks 1 anymore, which forced us to port our automated
+ test suite (that still relied on it) as well.
+
+- D.6.2 Adjust the memory wipe on shutdown feature for Debian Jessie:
+ #7183, #8372 and #9032
+
+ This ended up being quite involved, but was successfully completed.
+
+ Besides, we have created a Debian package (codename: wiperam) that
+ takes over this subsystem of Tails. The idea is that other similar
+ projects could benefit from it, and once all the pre-requisites have
+ been implemented in Debian, we could even make it available to all
+ Debian and Ubuntu users.
+
+- D.6.3 Port WhisperBack, our integrated bug reporting tool, to Python 3
+
+ The initial port is done; it implied replacing some of the libraries
+ used by the Python 2 version, with others that support Python 3.
+ The last remaining step is to add native SOCKS proxy support to
+ this application, because for some reason the Python 3 version does
+ not start under torsocks: #9412.
+
+E. Release management
+=====================
+
+ - Tails 1.3 was released on 2015-02-24 [2]:
+
+ - Add Electrum bitcoin wallet.
+ - Sandbox Tor Browser using AppArmor.
+ - Add obfs4 pluggable transport.
+ - Add keyringer to manage and share secrets using OpenPGP and Git.
+ - Publish isohybrid images to simplify installation.
+ - Enable tap-to-click and two-finger scrolling.
+ - Add Ibus Vietnamese input method.
+ - Improve support for OpenPGP smartcards.
+
+ [2]: https://tails.boum.org/news/version_1.3/
+
+ - Tails 1.3.1 was released on 2015-03-23 [3]:
+
+ - We transitioned to a new signing key.
+ - Updated Tor Launcher.
+
+ [3]: https://tails.boum.org/news/version_1.3.1/
+
+ - Tails 1.4 was released on 2015-05-12 [4]:
+
+ - Update Tor Browser to include the security slider and better
+ protection against third-party tracking.
+ - Add a shortcut to gEdit in Tails OpenPGP Applet.
+ - Add paperkey to back up OpenPGP keys on paper.
+ - Better support for Vietnamese in LibreOffice.
+ - Disable security warnings when connecting to POP3 and IMAP.
+ - Add support for more printers.
+ - Upgrade Tor to 0.2.6.7.
+ - Remove the obsolete #i2p-help IRC channel.
+ - Remove the command line email client mutt and msmtp.
+ - Fix Unsafe and I2P browsers theme in Windows camouflage.
+ - Remove the Tor Network Settings... from the Torbutton menu.
+ - Upgrade syslinux for better hardware support.
+ - Fix the localization of Tails Upgrader.
+ - Fix the OpenPGP key servers configured in Seahorse.
+ - Prevent Tor Browser from crashing when Orca is enabled.
+
+ [4]: https://tails.boum.org/news/version_1.4/
+
+ - Tails 1.4.1 was released on 2015-07-03 [5]:
+
+ - Upgrade Tor Browser to 4.5.3.
+ - Upgrade Tor to 0.2.6.9-1~d70.wheezy+1+tails2.
+ - Upgrade Linux to 3.16.7-ckt11-1.
+ - Have AppArmor Deny Tor Browser access to the list of recently used files.
+ - Fix automatic upgrades in Windows camouflage.
+
+ [5]: https://tails.boum.org/news/version_1.4.1/
diff --git a/wiki/src/blueprint/SponsorS/reports/2015_09.mdwn b/wiki/src/blueprint/SponsorS/reports/2015_09.mdwn
index d47aecb..315503b 100644
--- a/wiki/src/blueprint/SponsorS/reports/2015_09.mdwn
+++ b/wiki/src/blueprint/SponsorS/reports/2015_09.mdwn
@@ -14,28 +14,308 @@ This reports covers the activity of Tails in September 2015.
Everything in this report can be made public.
Note: the numbers preceded with a `#` correspond to tickets in our bug
-tracker which contains more technical details and timeline. For example,
-ticket #6938 can been seed on https://labs.riseup.net/code/issues/6938.
+tracker which contain more technical details and timeline. For example,
+ticket #6938 can be seen on <https://labs.riseup.net/code/issues/6938>.
# A. Replace Claws Mail with Icedove
-## A.n. description of subsection
+- A.1.3. Integrate Icedove into Tails
-- A.n.m. description of deliverable: ticket numbers
+ We amended the strategy we had in mind initially and made it more
+ incremental. If time allows, a first stage will be to include
+ Icedove in Tails 1.7 (2015-11-03), but without the Icedove account
+ setup wizard. During this first stage, Torbirdy's own account setup
+ wizard will be used. And the second stage will be about securing
+ Icedove's wizard (#6154). If this works out as we hope, Tails users
+ will be able to start using Icedove two months earlier than what we
+ planned initially, and the transition period from Claws Mail will be
+ longer, and thus smoother, for users.
- status summary:
+ We started implementing this plan (#10285), set up team coordination
+ tools, and triaged what is a blocker for the first stage, from what is
+ not.
- * what was done
- * what is the outcome (how it makes Tails better)
- * what was not done, and why
+ Then we worked on the "Torbirdy uses Arabic as a default locale"
+ bug, submitted a pull request upstream, that was accepted (#9821).
+
+- A.1.4. Provide a migration path for our users from Claws Mail to Icedove
+
+ We decided how long to keep Claws Mails once we have Icedove
+ (#10010), and initiated work on the migration for users of Tails
+ persistence feature (#9498).
# B. Improve our quality assurance process
+## B.2. Continuously run our entire test suite on all those ISO images once they are built
+
+- B.2.1. Adjust our infrastructure to run tests in parallel
+
+ Great progress was made on this front, and more specifically on the
+ last remaining chunk of it: firing up a clean test runner virtual
+ machine before each test suite run. It was tricky to implement this in
+ a way that prevented race conditions, but we now have a working
+ prototype that we are confident fixes the issues we have seen earlier
+ (#9486, #10215). Along the way we encouraged a few Debian developers
+ to take care of a package we rely on (`jenkins-job-builder`), and one
+ of them promptly took it over and updated it to the version we need
+ (#9646).
+
+- B.2.2. Decide what kind of ISO images qualify for testing and when,
+ how to process, advertise, and store the results (#8667)
+
+ Early in September, we reached an agreement on all discussion topics
+ that were left pending in August, such as how to archive videos from
+ test suite runs. As can be seen in the "Help Jenkins integration"
+ section below, our test suite team promptly started adjusting their
+ code to match what we will need on the Jenkins deployment.
+
+ <https://tails.boum.org/blueprint/automated_builds_and_tests/automated_tests_specs/>
+
+- B.2.3. Research and design a solution to generate a set of Jenkins ISO test jobs
+
+ Some research and experiments were done for sending ISO images that
+ shall be tested to the test suite runner virtual machines (#9597), and
+ major blockers were removed in the underlying infrastructure. Some of
+ our Puppet code saw a nice refactoring in this process. On the same
+ topic, we reached a consensus regarding what "old" ISO image to use
+ for tests that require two images, such as upgrade tests (#10117). And
+ here as well, test suite developers promptly implemented what we
+ needed (#10147).
+
+ <https://tails.boum.org/blueprint/automated_builds_and_tests/jenkins/>
+
+## B.3 Extend the coverage of our test suite
+
+### General improvements
+
+- Filesystem shares are incompatible with QEMU snapshots: #5571
+
+ We have come up with a short-term strategy that will work well with
+ our current workflow. In addition we have our eyes on a long-term
+ technical solution that will require adding a small feature into
+ upstream QEMU. This is, however, out of the scope of this
+ deliverable.
+
+### Help Jenkins integration
+
+These changes, on the test suite side, were prompted by the ongoing
+work on "B.2. Continuously run our entire test suite on all those ISO
+images once they are built".
+
+It should be noted that many of the things mentioned here also greatly
+assist developers when debugging the automated test suite.
+
+- Leverage Cucumber's formatter system for debug logging: #9491
+
+ This makes it easier to have clean console logging while still
+ keeping the full debug log in a separate file. Consequently it will
+ be easier to get an overview of how a test is currently running.
+
+- Capture individual videos for failed scenarios only: #10148
+
+ This will both make these video artifacts more manageable and useful
+ for the developers (more focused, better granularity), and will save
+ a lot of disk space on our servers by excluding videos of tests that
+ succeeded and hence aren't very interesting.
+
+- Make the old Tails ISO default to the "new" ISO: #10147
+
+ This compromise will test 90% of what we want to test, and simplify
+ the Jenkins setup by eliminating the need to share multiple ISO
+ artifacts to the test suite context.
+
+### B.3.6. Fix newly identified issues to make our test suite more robust and faster
+
+#### Performance improvements
+
+- Snapshot improvements: #6094, #8008
+
+ The proof-of-concept that was written as part of B.3.4 has matured
+ into a reliable implementation and
+ it is basically done; only fine-tuning and style improvements
+ remain. It is expected to be ready for the Jenkins deployment in
+ Milestone III, and will allow us to run 33% more tests. It will add
+ less overhead for new tests using persistence in the future, and
+ thus complete "B.3.9. Optimize tests that need a persistent volume"
+ three months in advance.
+
+- Use the more efficient x264 encoding when capturing videos: #10001
+
+ This will reduce the CPU load on the host running the automated test
+ suite, as well as reduce its runtime with a few percent.
+
+- Optimize IRC test using waitAny: #9653
+
+ In case there are connection issues, this may save several minutes
+ per instance by waiting for both the failure and success condition
+ in parallel, instead of serially.
+
+#### Robustness improvements
+
+Some of what follows was part of a project we have with
+another sponsor.
+
+- Avoid nested FindFailed exceptions in waitAny()/findAny(): #9633
+
+ This works around a race condition due to a bug in Rjb that made
+ these helpers fail with some probability depending on the host
+ hardware.
+
+- Import logging module in otr-bot.py: #9375
+
+ Without this fix, the bot may occasionally fail due to it wanting to
+ use the logging facility when it is not in place.
+
+- Force new Tor circuit and reload web site on browser
+ timeouts: #10116
+
+ Given the inherent instability of Tor circuits, this will
+ drastically improve the robustness of all Tor Browser tests.
+
+- Pidgin's multi-window GUI sometimes causes unexpected behaviour
+ (e.g. one window covering the window we want to interact with):
+
+ * Focus Pidgin's buddy list before trying to access the tools
+ menu: #10217
+
+ * Wait for (and focus if necessary) Pidgin's Certificate windows: #10222
+
+- Develop a strategy for dealing with newly discovered fragile tests: #10288
+
+ By leveraging our Jenkins instance, following this strategy will
+ isolate individual robustness issues into individual branches while
+ keeping all other branches functional. Consequently it will be
+ easier to track and deal with future robustness issues.
+
+- Escape regexp used to match nick in CTCP replies: #10219
+
+ Due to how we randomize the nick name for the default Pidgin
+ accounts, there was a 10% chance to generate one with characters
+ that would have a special meaning when used inside regular
+ expressions, causing failures.
+
+### Writing more automated tests
+
+- B.3.8. Automatically test that udev-watchdog is monitoring the
+ right device: #9890.
+
+ This was completed and merged almost four months ahead of schedule.
# C. Scale our infrastructure
+## C.1. Change in depth the infrastructure of our pool of mirrors
+
+We started working on this project, and decided to handle the
+redirection on the client's side (for the record, the original plan
+was to do it server-side). We quickly put together a very rough
+proof-of-concept, and then moved on to update our plans for the next
+steps, accordingly to our new technological choice.
+
+The big picture is described on the corresponding blueprint:
+<https://tails.boum.org/blueprint/HTTP_mirror_pool/>
+
+- C.1.1. Specify a way of describing the pool of mirrors
+
+ We picked a serialization format (JSON) that matches our
+ implementation choices, and started researching what would be the
+ best naming scheme for mirrors, taking into account future HTTPS
+ hardening we have in mind, and support in various popular web
+ servers (#10294).
+
+- C.1.3. Design and implement the mirrors pool administration process and tools
+
+ We settled on ikiwiki overlays for integration into our website, and
+ on using Git and SSH to store and convey the configuration (#8637).
+
+- C.1.2. Write & audit the code that makes the redirection decision
+
+ We did some prototyping work (#8639), and then started refactoring
+ it so that the code can be reused by other components that will need
+ to implement the same redirection scheme client-side (#10284).
+
+## C.2. Be able to detect within hours failures and malfunction on our services
+
+This deliverable is technically due for January 15, but we kept on
+working on it.
+
+- C.2.1. Research and decide what monitoring solution to use: #8645
+
+ We completed experiments and comparisons between monitoring systems,
+ and settled on Icinga 2. We started looking for solutions regarding
+ the single requirement of ours that it does not satisfy.
+
+ <https://tails.boum.org/blueprint/monitor_servers/>
+
+- C.2.2. Set up the monitoring software and the underlying
+ infrastructure: #8646, #8647
+
+ We found hosting for our monitoring setup, got access to the
+ machine, and installed an operating system on it.
+
+## C.4. Maintain our already existing services
+
+This covers "C.4.3. Administer our services upto milestone III" until
+the end of September.
+
+Aside of the usual security updates and taking care of daily requests
+coming from the Tails development community, we did some resources
+planning, and updated the system requirements for the VM that will be
+used as a failover for our critical services (#10243) and looked for
+hosting that would meet our needs (#10244). We have an initial
+agreement with a hosting organization, and will follow-up on
+this shortly.
# D. Migration to Debian Jessie
+## D.1. Adjust to the change of desktop environment to GNOME Shell
+
+- D.1.1. Adjust to the change of desktop environment to GNOME Shell
+
+ We completed the work started on our "Shutdown helper" applet for
+ Jessie (#8302): visually impaired users can now use it, and we made
+ sure it is integrated with our translation system.
+
+ We cleaned up the desktop Applications menu (#8505).
+
+## D.6. Upgrade Tails-specific tools to Debian Jessie technologies
+
+- D.6.1. Port Tails-specific tools from udisks 1 to udisks 2
+
+ We followed up on the persistent volume assistant's porting to
+ udisks 2, and made sure it does not trigger spurious GNOME
+ notifications that could confuse users (#9280).
+
+- D.6.3. Port WhisperBack, our integrated bug reporting tool, to Python 3
+
+ Native SOCKS support was completed, which was the only missing piece
+ to make WhisperBack work great on Jessie and Python 3 (#9412).
+
+## Additional improvements that were not planned
+
+- When starting Tails in a virtual machine that runs with non-free
+ technology (and does not hide this fact), users are now warned about
+ the risks (#5315).
+
+- Simplify printers administration: it can now be done without having
+ to set an administration password, just like it was back when Tails
+ was based on Debian Squeeze (#8443). This removes a usability
+ pain-point, namely the need to restart Tails when one realizes too
+ late they need to print a document, and should have set an
+ administration password. In passing, we noticed that AppArmor
+ blocked adding a printer on Jessie, and fixed it (#10210).
# E. Release management
+
+- Tails 1.6 was released on 2015-09-22 [1]:
+
+ * Upgrade Tor Browser to version 5.0.3 (based on Firefox 38.3.0 ESR).
+ * Upgrade I2P to version 0.9.22 and enable its AppArmor profile.
+ * Fix several issues related to MAC address spoofing:
+ - If MAC address spoofing fails on a network interface and this
+ interface cannot be disabled, then all networking is now
+ completely disabled.
+ - A notification is displayed if MAC address spoofing causes
+ network issues, for example if a network only allows
+ connections from a list of authorized MAC addresses.
+
+ [1] <https://tails.boum.org/news/version_1.6/>
diff --git a/wiki/src/blueprint/SponsorS/reports/2015_10.mdwn b/wiki/src/blueprint/SponsorS/reports/2015_10.mdwn
index 00c9e5f..ae7a739 100644
--- a/wiki/src/blueprint/SponsorS/reports/2015_10.mdwn
+++ b/wiki/src/blueprint/SponsorS/reports/2015_10.mdwn
@@ -15,27 +15,287 @@ Everything in this report can be made public.
Note: the numbers preceded with a `#` correspond to tickets in our bug
tracker which contains more technical details and timeline. For example,
-ticket #6938 can been seed on https://labs.riseup.net/code/issues/6938.
+ticket #6938 can be seen on <https://labs.riseup.net/code/issues/6938>.
# A. Replace Claws Mail with Icedove
-## A.n. description of subsection
+ - A.1.3. Integrate Icedove into Tails
-- A.n.m. description of deliverable: ticket numbers
+ We configured Icedove in Tails to match our security goals (#6151),
+ as part of this we disabled:
- status summary:
+ - The remote email account feature (#10009)
+ - The automatic add-on updates (#10428)
- * what was done
- * what is the outcome (how it makes Tails better)
- * what was not done, and why
+ We adapted Torbirdy to suit our needs in Tails. (#10007)
+
+ During this work we discovered a bug in Torbirdy sometimes
+ choosing a wrong language, which we patched upstream. Once our
+ patch was merged, we updated the Torbirdy Debian package to a new
+ version which we could also include in Tails. (#9821)
+
+ - A.1.4. Provide a migration path for our users from Claws Mail to Icedove
+
+ We studied the most common Claws Mail persistence configuration
+ (#9494, #5663), then provided a script (#10453) to migrate POP
+ mailboxes to Icedove and wrote
+ [migration instructions](https://tails.boum.org/doc/anonymous_internet/claws_mail_to_icedove/)
+ (#9495) for users to migrate their mailboxes, email account
+ settings, and address books.
+
+ To make this migration easier to users, we enabled automatically the
+ Icedove persistence feature when the Claws Mail persistence was
+ enabled (#9498) and temporarily added the `nmh` package to Tails.
+
+ - A.1.5. Update Icedove documentation
+
+ The previous Thunderbird documentation was [completely
+ rewritten](https://tails.boum.org/doc/anonymous_internet/icedove/). (#7158)
+
+ - A.1.6. Release Icedove in Tails
+
+ Icedove has been added to Tails 1.7. (#10285)
+
+ It is advertised as a technology preview in our
+ [release notes](https://tails.boum.org/news/version_1.7/). We want
+ to have some more advanced users test our configuration and the
+ migration process before we make Icedove the default email client
+ and remove Claws Mail.
# B. Improve our quality assurance process
+## B.1. Automatically build ISO images for all the branches of our source code that are under active development
+
+We installed the GlobalBuildStat Jenkins plugin back in February, which helps
+us collect the number of ISO images successfully built automatically by our
+servers since the deployment of the automatic ISO builds:
+
+- 2015-07: 101
+- 2015-08: 195
+- 2015-09: 470
+- 2015-10: 935
+
+## B.2. Continuously run our entire test suite on all those ISO images once they are built
+
+- B.2.3. Research and design a solution to generate a set of Jenkins ISO test jobs
+
+ Early in October we finally settled to the best option we found to
+ reboot the VM between each run of the test suite in Jenkins (#9486).
+
+ We finished evaluating the solution set up last month to share
+ artifacts between the build jobs and the corresponding test jobs,
+ and concluded that it works correctly. (#9597)
+
+ We had to upgrade our jenkins-job-builder setup to the new 1.3.0 version,
+ which was required to configure some Jenkins plugins our test jobs need. (#9646)
+
+ We also pushed upstream a patch to handle the CucumberTestResult Jenkins
+ plugin, so that we can easily use it in our setup and have a nice display of
+ Cucumber reports. It has been merged and will be released with
+ jenkins-job-builder 1.4.0: <https://review.openstack.org/#/c/218668/>.
+
+ We worked together with the test suite team on getting video artifacts
+ for failing scenarios of a test job stored so that we could better debug. (#10154)
+
+ With all this, we were able to deploy automated tests of ISO builds
+ automatically for our main release branches at the end of the first week of
+ October, which helped us confirm our design was working. (#10117)
+
+ <https://tails.boum.org/blueprint/automated_builds_and_tests/jenkins/>
+
+- B.2.4. Deploy the best solution from this research
+
+ With this first initial and limited deployment, we corrected some tiny
+ configuration details we didn't catch during the design step. (#10215, #10417)
+
+ We stumbled upon a bug due to hardware or kernel troubles with nested
+ virtualization we had to workaround. (#10229)
+
+ It also helped us fix some issues in the integration of our test
+ in the Jenkins environment. (#10356, #10359)
+
+- B.2.5. Write library code that maps Jenkins jobs from building to testing
+
+ Now that we had a good example of how to manage a test job with our
+ jenkins-job-builder setup, triggered by its upstream build job, we
+ adapted our code that generates build jobs for active branches to
+ output their corresponding test jobs. We also ended up using the power
+ of a more recent jenkins-job-builder version to simplify
+ this code quite a lot. (#10118, #10119)
+
+ It was already clear that we wouldn't be able to notify the
+ committers on test suite failures at first, as the number of false
+ positives was too high, and we didn't want to train them to ignore
+ such notifications. So we planned a first iteration during which
+ only the test suite team would receive notifications upon failure,
+ so that they'll be able to work on the remaining tests being too
+ fragile. (#10287)
+
+ By October 15th, we had the automated test deployed live in Jenkins
+ for all active branches. However, we quickly understood that our Git
+ branches based on our maintenance one were too old to run the test
+ suite in Jenkins correctly. These topic branches were mainly
+ documentation ones so we could turn off their automated testing
+ temporarily (this could be reverted once Tails 1.7 was released).
+
+ According to the GlobalBuildStat Jenkins plugin, in the second half of
+ October, our Jenkins instance ran the test suite 240 times.
+
+ We're also discussing on our public mailing list whether it makes sense to
+ run our whole test suite on ISO images built from
+ documentation branches. (#10492)
+
+
+## B.3. Extend the coverage of our test suite
+
+ - B.3.5. Write tests for I2P
+
+ Basic I2P functionality and configuration that is important in the
+ context of Tails is now tested (#6306):
+
+ <https://git-tails.immerda.ch/tails/tree/features/i2p.feature?h=stable>
+
+ This was part of Milestone II (July 15, 2015).
+
+ - B.3.6. Fix newly identified issues to make our test suite more robust
+ and fast enough to be part of a continuous integration process
+
+ A plan was devised to leverage out automated testing
+ infrastructure for identifying robustness issues is our test suite, and isolating
+ them into separate branches, where they can be dealt with in
+ isolation. (#10288)
+
+ Other improvements:
+
+ * The new snapshot system improved robustness noticeably, and
+ reduced the amount of time needed for a full run with at least
+ 30%. (#6094)
+
+ * Restart Tor if bootstrapping stalls for too long.
+
+ This started out as a robustness improvement in the test suite,
+ since many tests failed randomly due to Tor. We then implemented
+ it as a feature in Tails, since it arguably should improve the
+ user experience too (#9516).
+
+ - B.3.9. Optimize tests that need a persistent volume
+
+ The new snapshot system was finished early (part of Milestone IV,
+ January 15, 2015). (#6094, #8008)
+
+ - B.3.13. Split the "various checks" feature
+
+ Started early, but not finished; so far only `mat.feature` and
+ `localization.feature` have been created from split out
+ scenarios. Thanks to #6094 the remainder of this work will be
+ trivial.
+
+ - Some other new tests that were written:
+
+ * Write initial Icedove tests. (#10332)
+
+ * Write a test for the fix of a symlink attack. It was added at
+ the same time as the fix, and this is the ideal workflow we hope
+ to be ready to adopt soon. (#10333)
+
+ - Some improvements for test suite developers:
+
+ * Organize automated test suite artifacts in per-run directories,
+ and improve the naming so that it's easier to see e.g. which video
+ belongs to which failed scenario. (#10151)
+
+ * Clean up automated test suite dependencies. (#10208)
+
+ * Force UTF-8 locale in automated test suite, to avoid implicitly
+ relying on the system locales configuration. (#10359)
+
+ * Run the automated test suite's VNC server forever. (#10345)
+
+ * Don't print test suite information to STDERR, but use the
+ Cucumber logging facilities so this information is included when
+ logging to file. (#10342)
+
+ - Bugs and regressions identified by our test suite
+
+ We just started taking notes of them, so these records are
+ probably not complete.
+
+ * "Restart Tor if bootstrapping stalls for too long", mentioned
+ above (#9516).
+ * In September, implementing the automated MAC spoofing tests led
+ us to notice that the MAC spoofing's panic mode was broken (#10160).
+
+## B.4. Freezable APT repository
+
+- B.4.1. Specify when we want to import foreign packages into which
+ APT suites (#9488),
+ B.4.4. Design freezable APT repository (#5926),
+ and B.4.5. Implement processes and tools for importing and freezing
+ those packages (#9487, #6295, #7427, #6906)
+
+ Some initial research and experiments were conducted.
+
+ The proposed design is described on a blueprint:
+ <https://tails.boum.org/blueprint/freezable_APT_repository/>.
+
+ A server-side implementation (#6296, #6299) has been drafted in the
+ `tails::reprepro::snapshots::*` Puppet classes in the
+ <https://git-tails.immerda.ch/puppet-tails/> module.
+
+- B.4.2. Implement a mechanism to save the list of packages used at
+ ISO build time (#6297)
+
+ We have found ways to implement this, and have a working
+ proof-of-concept, that now needs to be refined. This implied adding
+ functionality we need to `debootstrap` upstream, and uploading
+ a backport for Debian Jessie.
+
+- B.4.6. Adjust the rest of our ecosystem to the freezable APT repository
+
+ We adopted a documentation-driven approach, and started drafting
+ documentation for the tools we will need to write:
+ <https://git-tails.immerda.ch/tails/log/?h=feature/5926-freezable-APT-repository>.
# C. Scale our infrastructure
+## C.1. Change in depth the infrastructure of our pool of mirrors
+
+- C.1.2. Write & audit the code that makes the redirection decision
+
+ Our prototype code (#8639) has been refined and will be adapted to work
+ with our new installation assistant.
+
+## C.2. Be able to detect within hours failures and malfunction on our services
+
+- C.2.1. Research and decide what monitoring solution to use: #8645
+
+ A little bit more research was done to ensure that our current best
+ option will satisfy our needs.
+
+## C.4. Maintain our already existing services
+
+This covers "C.4.3. Administer our services upto milestone III" until
+the end of October.
+
+ * We kept on answering to the request from the community as well as taking
+ care of security updates.
+ * We had to reinstall one of our ISO builder VM that was failing too
+ often. (#10334)
+ * The OpenPGP key of our Debian repository was going to expire, so we had to
+ update it. (#10419)
+ * We thought a bit further how we could make our Jenkins instance public
+ (#6270) which probably means to update to the packages provided by
+ upstream. (#10068)
# D. Migration to Debian Jessie
+## D. Migration to Debian Jessie
+
+ - D.3.1 Update our test suite for Tails Jessie
+
+ * Fix memory erasure tests in Debian Jessie. (#8317, #9705)
+
+ * Work around screen blanking when testing Synaptic. (#10403)
-# E. Release management
+ * Fix a robustness issue with the "Applications" menu
+ handling. (#9706)
diff --git a/wiki/src/blueprint/SponsorS/reports/2015_11.mdwn b/wiki/src/blueprint/SponsorS/reports/2015_11.mdwn
index 0786212..641aea1 100644
--- a/wiki/src/blueprint/SponsorS/reports/2015_11.mdwn
+++ b/wiki/src/blueprint/SponsorS/reports/2015_11.mdwn
@@ -15,7 +15,7 @@ Everything in this report can be made public.
Note: the numbers preceded with a `#` correspond to tickets in our bug
tracker which contains more technical details and timeline. For example,
-ticket #6938 can been seed on https://labs.riseup.net/code/issues/6938.
+ticket #6938 can be seen on <https://labs.riseup.net/code/issues/6938>.
# A. Replace Claws Mail with Icedove
diff --git a/wiki/src/blueprint/SponsorS/reports/2015_12.mdwn b/wiki/src/blueprint/SponsorS/reports/2015_12.mdwn
index 78bc89a..2f0b005 100644
--- a/wiki/src/blueprint/SponsorS/reports/2015_12.mdwn
+++ b/wiki/src/blueprint/SponsorS/reports/2015_12.mdwn
@@ -15,7 +15,7 @@ Everything in this report can be made public.
Note: the numbers preceded with a `#` correspond to tickets in our bug
tracker which contains more technical details and timeline. For example,
-ticket #6938 can been seed on https://labs.riseup.net/code/issues/6938.
+ticket #6938 can be seen on <https://labs.riseup.net/code/issues/6938>.
# A. Replace Claws Mail with Icedove
diff --git a/wiki/src/blueprint/SponsorS/reports/2016_01.mdwn b/wiki/src/blueprint/SponsorS/reports/2016_01.mdwn
index 6f53f65..6ef80aa 100644
--- a/wiki/src/blueprint/SponsorS/reports/2016_01.mdwn
+++ b/wiki/src/blueprint/SponsorS/reports/2016_01.mdwn
@@ -15,7 +15,7 @@ Everything in this report can be made public.
Note: the numbers preceded with a `#` correspond to tickets in our bug
tracker which contains more technical details and timeline. For example,
-ticket #6938 can been seed on https://labs.riseup.net/code/issues/6938.
+ticket #6938 can be seen on <https://labs.riseup.net/code/issues/6938>.
# A. Replace Claws Mail with Icedove
diff --git a/wiki/src/blueprint/SponsorS/reports/2016_02.mdwn b/wiki/src/blueprint/SponsorS/reports/2016_02.mdwn
index 0f3a2f2..bae0400 100644
--- a/wiki/src/blueprint/SponsorS/reports/2016_02.mdwn
+++ b/wiki/src/blueprint/SponsorS/reports/2016_02.mdwn
@@ -15,7 +15,7 @@ Everything in this report can be made public.
Note: the numbers preceded with a `#` correspond to tickets in our bug
tracker which contains more technical details and timeline. For example,
-ticket #6938 can been seed on https://labs.riseup.net/code/issues/6938.
+ticket #6938 can be seen on <https://labs.riseup.net/code/issues/6938>.
# A. Replace Claws Mail with Icedove
diff --git a/wiki/src/blueprint/SponsorS/reports/2016_03.mdwn b/wiki/src/blueprint/SponsorS/reports/2016_03.mdwn
index 5ae6ea8..537075f 100644
--- a/wiki/src/blueprint/SponsorS/reports/2016_03.mdwn
+++ b/wiki/src/blueprint/SponsorS/reports/2016_03.mdwn
@@ -15,7 +15,7 @@ Everything in this report can be made public.
Note: the numbers preceded with a `#` correspond to tickets in our bug
tracker which contains more technical details and timeline. For example,
-ticket #6938 can been seed on https://labs.riseup.net/code/issues/6938.
+ticket #6938 can be seen on <https://labs.riseup.net/code/issues/6938>.
# A. Replace Claws Mail with Icedove
diff --git a/wiki/src/blueprint/SponsorS/reports/2016_04.mdwn b/wiki/src/blueprint/SponsorS/reports/2016_04.mdwn
index 6b576a0..cb781d7 100644
--- a/wiki/src/blueprint/SponsorS/reports/2016_04.mdwn
+++ b/wiki/src/blueprint/SponsorS/reports/2016_04.mdwn
@@ -15,7 +15,7 @@ Everything in this report can be made public.
Note: the numbers preceded with a `#` correspond to tickets in our bug
tracker which contains more technical details and timeline. For example,
-ticket #6938 can been seed on https://labs.riseup.net/code/issues/6938.
+ticket #6938 can be seen on <https://labs.riseup.net/code/issues/6938>.
# A. Replace Claws Mail with Icedove
diff --git a/wiki/src/blueprint/SponsorS/reports/2016_05.mdwn b/wiki/src/blueprint/SponsorS/reports/2016_05.mdwn
index a67279e..4b92d63 100644
--- a/wiki/src/blueprint/SponsorS/reports/2016_05.mdwn
+++ b/wiki/src/blueprint/SponsorS/reports/2016_05.mdwn
@@ -15,7 +15,7 @@ Everything in this report can be made public.
Note: the numbers preceded with a `#` correspond to tickets in our bug
tracker which contains more technical details and timeline. For example,
-ticket #6938 can been seed on https://labs.riseup.net/code/issues/6938.
+ticket #6938 can be seen on <https://labs.riseup.net/code/issues/6938>.
# A. Replace Claws Mail with Icedove
diff --git a/wiki/src/blueprint/SponsorS/reports/2016_06.mdwn b/wiki/src/blueprint/SponsorS/reports/2016_06.mdwn
index 3f90919..6ff6f7b 100644
--- a/wiki/src/blueprint/SponsorS/reports/2016_06.mdwn
+++ b/wiki/src/blueprint/SponsorS/reports/2016_06.mdwn
@@ -15,7 +15,7 @@ Everything in this report can be made public.
Note: the numbers preceded with a `#` correspond to tickets in our bug
tracker which contains more technical details and timeline. For example,
-ticket #6938 can been seed on https://labs.riseup.net/code/issues/6938.
+ticket #6938 can be seen on <https://labs.riseup.net/code/issues/6938>.
# A. Replace Claws Mail with Icedove
diff --git a/wiki/src/blueprint/SponsorS/reports/2016_07.mdwn b/wiki/src/blueprint/SponsorS/reports/2016_07.mdwn
index 8331a57..4f1bb0f 100644
--- a/wiki/src/blueprint/SponsorS/reports/2016_07.mdwn
+++ b/wiki/src/blueprint/SponsorS/reports/2016_07.mdwn
@@ -15,7 +15,7 @@ Everything in this report can be made public.
Note: the numbers preceded with a `#` correspond to tickets in our bug
tracker which contains more technical details and timeline. For example,
-ticket #6938 can been seed on https://labs.riseup.net/code/issues/6938.
+ticket #6938 can be seen on <https://labs.riseup.net/code/issues/6938>.
# A. Replace Claws Mail with Icedove
diff --git a/wiki/src/blueprint/automated_builds_and_tests/automated_tests_specs.mdwn b/wiki/src/blueprint/automated_builds_and_tests/automated_tests_specs.mdwn
index 7b832d0..5df035b 100644
--- a/wiki/src/blueprint/automated_builds_and_tests/automated_tests_specs.mdwn
+++ b/wiki/src/blueprint/automated_builds_and_tests/automated_tests_specs.mdwn
@@ -128,26 +128,19 @@ The test suite produces different kind of artifacts: logfiles, screen
captures for failing steps, snapshots of the test VM, and also videos of
the running test session.
-Videos may be a bit too much to keep, given they slow down the test
-suite and might take quite a bit of disk space to store. If we want to
-keep them, we may want to do so only for failing test suite runs. If we
-decide to still use them, then we probably have to wait for
-[[!tails_ticket 10001]] too be resolved.
+We can keep the video captures in the build artifacts, now that
+[[!tails_ticket 10001]] is resolved.
-Proposal for a first iteration:
+Decision:
* For green test suite run: keep the test logs (Jenkins natively do
- that) and video captures
- * For red test suite run: keep the screen and video captures and the
- logs.
+ that).
+ * For red test suite run: keep the screenshots and video captures, the
+ logs and the pcap files.
-On the second iteration, we will keep video capture only for the red
-tests.
-
-The retention strategy should be the same than for the automatically
-built ISOs. In particular, we will have to pay attention to the rotation
-of videos capture (given they'll quickly bloat our storage space).
-Keeping them only for 7 days sounds reasonnable.
+In [[!tails_ticket 10155]] we calculated that we can probably keep the
+video captures for a full release cycle. This will be refine is reality
+claims the contrary after an evaluation.
# Scenarios
diff --git a/wiki/src/blueprint/automated_builds_and_tests/jenkins.mdwn b/wiki/src/blueprint/automated_builds_and_tests/jenkins.mdwn
index c53d05b..0e9902c 100644
--- a/wiki/src/blueprint/automated_builds_and_tests/jenkins.mdwn
+++ b/wiki/src/blueprint/automated_builds_and_tests/jenkins.mdwn
@@ -1,152 +1,41 @@
-[[!meta title="Jenkins"]]
+[[!meta title="Automated tests implementation details"]]
+
+For Jenkins resources, see [[blueprint/automated_builds_and_tests/resources]].
[[!toc levels=2]]
-Resources
-=========
-
-Miscellaneous
--------------
-
-- [Jenkins Best
- Practices](https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Best+Practices)
-- [plugins](https://wiki.jenkins-ci.org/display/JENKINS/Plugins)
- * [Git plugin](https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin)
- * [Copy Artifact
- plugin](https://wiki.jenkins-ci.org/display/JENKINS/Copy+Artifact+Plugin)
- can be used to run a test job against the result of a build job,
- e.g. for Debian packages (think Lintian) or Tails ISO images; see
- [grml's setup
- documentation](http://jenkins-debian-glue.org/getting_started/manual/)
- that uses it.
-- the [jenkins](http://jujucharms.com/charms/precise/jenkins) and
- [jenkins-slave](http://jujucharms.com/charms/precise/jenkins-slave)
- JuJu charms may be good sources of inspiration for deployment
-- [[!cpan Net-Jenkins]] (not in Debian) allows to interact with
- a Jenkins server: create and start jobs, get information about
- builds etc.
-
-Jobs management
----------------
-
-- [Job builder](http://ci.openstack.org/jenkins-job-builder/) provides
- one-way (Git to Jenkins) jobs synchronization; it's in Debian sid.
- * [configuration documentation](http://ci.openstack.org/jenkins-job-builder/configuration.html)
- * Debian uses it in their `update_jdn.sh`: it runs `jenkins-jobs
- update $config` after importing updated YAML job config files
- from Git.
- * Tor [use
- it](https://gitweb.torproject.org/project/jenkins/jobs.git/tree) too.
-- jenkins.debian.net uses the [SCM
- Sync](https://wiki.jenkins-ci.org/display/JENKINS/SCM+Sync+configuration+plugin)
- plugin, that apparently handles committing to the VCS on
- configuration changes done in the web interface, and maybe more.
-- [jenkins-yaml](https://github.com/varnish/jenkins-yaml) might make
- it easy to generate a large number of similar Jenkins jobs, e.g.
- one per branch
-- [jenkins_jobs puppet module](http://tradeshift.com/blog/tstech-managing-jenkins-job-configurations-by-puppet/)
-
-Web setup
----------
-
-### Visible read-only on the web
-
-We'd like our Jenkins instance to be visible read-only on the web.
-We'd rather not rely on Jenkins authentication / authorization to
-enforce this read-only policy. We'd rather see the frontend reverse
-proxy take care of this.
-
-The
-[`getUnprotectedRootActions()`](http://javadoc.jenkins-ci.org/jenkins/model/Jenkins.html#getUnprotectedRootActions())
-method should return the list of URL prefixes that we want to allow.
-And we could forbid anything else.
-
-The [Reverse Proxy
-Auth](https://wiki.jenkins-ci.org/display/JENKINS/Reverse+Proxy+Auth+Plugin)
-Jenkins plugin can be useful to display [an example
-usage](https://github.com/jenkinsci/reverse-proxy-auth-plugin/commit/72567a974960be2363107614ba3f705ec6e9b695)
-of this method.
-
-### Miscellaneous
-
-- [sample nginx configuration](https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu)
-
-Notifications
--------------
-
-- [IRC plugin](https://wiki.jenkins-ci.org/display/JENKINS/IRC+Plugin),
- but I'm told that the jenkins email notifications are way nicer
- than what this plugin can do, so see [a better way to do
- it](http://jenkins.debian.net/userContent/setup.html#_installing_kgb_client)
-- [[!cpan Jenkins-NotificationListener]] is a server that listens to
- messages from Jenkins [Notification
- plugin](https://wiki.jenkins-ci.org/display/JENKINS/Notification+Plugin).
-
-### Notifying different people depending on what triggered the build
-
-At least the obvious candidate (Email-ext plugin) doesn't seem able to
-email different recipients depending on what triggered the build
-out-of-the-box. But apparently, one can set up two 'Script - After
-Build' email triggers in the Email-ext configuration: one emails the
-culprit, the other emails the RM. And then, they do something or not
-depending on a variable we set during the build, based on what
-triggered the build. Likely the cleaner and simpler solution.
-
-Otherwise, we could have Jenkins email some pipe script that will
-forward to the right person depending on 1. whether it's a base
-branch; and 2. whether the build was triggered by a push or by
-something else. This should work if we can get the email notification
-to pass the needed info in it. E.g. the full console output currently
-has "Started by timer" or "Started by an SCM change", but this is not
-part of the email notification. Could work, but a bit hackish and all
-kinds of things can go wrong.
-
-Also, I've seen lots of people documenting crazy similar things with
-some of these plugins: "Run Condition", "Conditional BuildStep",
-"Flexible Publish" and "Any Build step". But then it gets too
-complicated for me to dive into it right now.
-
-How others use Jenkins
-----------------------
-
-- jenkins.debian.net's:
- * [setup documentation](http://jenkins.debian.net/userContent/setup.html)
- * configuration: `git://git.debian.org/git/users/holger/jenkins.debian.net.git`
-- [Tor's jobs](https://gitweb.torproject.org/project/jenkins/jobs.git/blob/HEAD:/jobs.yaml)
-- [Ubuntu QA Jenkins instance](https://jenkins.qa.ubuntu.com/)
-- grml's Michael Prokop talks about autotesting in KVM during his
- [talk at DebConf
- 10](http://penta.debconf.org/dc10_schedule/events/547.en.html);
- they use Jenkins:
- * [Jenkins instance](http://jenkins.grml.org/)
- * [unittests](https://github.com/grml/grml-unittests)
- * [debian-glue Jenkins plugin](https://github.com/mika/jenkins-debian-glue)
- * [kantan](https://github.com/mika/kantan): simple test suite for
- autotesting using Grml and KVM
- * [Jenkins server setup documentation](https://github.com/grml/grml-server-setup/blob/master/jenkins.asciidoc)
-- [jenkinstool](http://git.gitano.org.uk/personal/liw/jenkinstool.git/)
- has the tools Lars Wirzenius uses to manage his CI (Python projects
- test suite, Debian packages, importing into reprepro, VM setup of
- all needed stuff); the whole thing is very ad-hoc but many bits
- could be used as inspiration sources.
-
-Jenkins for Perl projects
--------------------------
-
-* [a collection of links](https://wiki.jenkins-ci.org/display/JENKINS/Perl+Projects)
- on the Jenkins wiki
-* an overview of the available tools: [[!cpan Task::Jenkins]]
-* [a tutorial](https://logiclab.jira.com/wiki/display/OPEN/Continuous+Integration)
-* [another tutorial](http://alexandre-masselot.blogspot.com/2011/12/perl-hudson-continuous-testing.html)
-* use [[!cpan TAP::Formatter::JUnit]] (in Wheezy) rather than the Jenkins TAP plugin
-* use `prove --timer` to know how long each test takes
+Generating jobs
+===============
+
+We use code that lay in three different Git repositories to generate
+automatically the list of Jenkins jobs for branches that are active in
+the Tails main Git repo.
+
+The first brick is the Tails
+[[!tails_gitweb_repo pythonlib]], which extracts the list of
+active branches and output the needed informations. This list is parsed
+by the `generate_tails_iso_jobs` script run by a cronjob and deployed by
+our [[!tails_gitweb_repo puppet-tails]]
+`tails::jenkins::iso_jobs_generator` manifest.
+
+This script output yaml files compatible with
+[jenkins-job-builder](http://docs.openstack.org/infra/jenkins-job-builder).
+It creates one `project` for each active branches, which in turn uses
+three JJB `job templates` to create the three jobs for each branch: the
+ISO build one, and wrapper job that is used to start the ISO test jobs.
+
+This changes are pushed to our [[!tails_gitweb_repo jenkins-jobs]] git
+repo by the cronjob, and thanks to their automatic deployment in our
+`tails::jenkins::master` and `tails::gitolite::hooks::jenkins_jobs`
+manifests in our [[!tails_gitweb_repo puppet-tails]] repo, this new
+changes are applied automatically to our Jenkins instance.
Restarting slave VMs between jobs
----------------------------------
+=================================
This question is tracked in [[!tails_ticket 9486]].
-When we tackle [[!tails_ticket 5288]], if the test suite doesn't
+For [[!tails_ticket 5288]] to be robust enough, if the test suite doesn't
_always_ clean between itself properly (e.g. when tests simply hang
and timeout), we might want to restart `isotesterN.lizard` between
each each ISO testing job.
@@ -164,44 +53,35 @@ This was discussed at least there:
* <http://jenkins-ci.361315.n4.nabble.com/How-to-reboot-a-slave-during-a-build-td4628820.html>
* <https://stackoverflow.com/questions/5543413/reconfigure-and-reboot-a-hudson-jenkins-slave-as-part-of-a-build>
-That would maybe be the way to go, with 3 chained jobs:
+We achieve this VM reboot by using 3 chained jobs:
* First one is a wrapper and trigger 2 other jobs. It is executed on the
isotester the test job is supposed to be assigned to. It puts the
isotester in offline mode and starts the second job, blocking while
waiting for it to complete. This way this isotester is left reserved
- for the second job, and the isotester name can be passed as a build
+ while the second job run, and the isotester name can be passed as a build
parameter to the second job. This job is low prio so it waits for
other second and third type of jobs to be completed before starting its
own.
-* The second job is executed on the master (which has two build
+* The second job is executed on the master (which has 4 build
executors). This job ssh into the said isotester and issue the
- reboot. It waits a bit and put the node back online again. This jobs
- is higher prio so that it is not lagging behind other wrapper jobs in
- the queue.
+ reboot. It needs to wait a reasonable amount of time for the Jenkins
+ slave to be stopped by the shutdown process so that no jobs gets assigned
+ to this isotester meanwhile. Stoping this Jenkins slave daemon usually
+ takes a few seconds. During testing, 5 seconds proved to be enough of
+ a delay for that, and more would mean unnecessary lagging time. It then
+ put the node back online again. This job is higher prio so that it is
+ not lagging behind other wrapper jobs in the queue.
* The third job is the test job, run on the freshly started isotester.
This one is high prio too to get executed before any other wrapper
- jobs.
-
-Using some kind of queue sorting is necessary. Unfortunately, the
-[PrioritySorter
-plugin](https://wiki.jenkins-ci.org/display/JENKINS/Priority+Sorter+Plugin)
-is not well supported by the current version of JJB in Debian. We'll
-have to push upstream a fix, and meanwhile use the `raw` option trick in
-the yaml files (which itself isn't supported by JJB in Debian yet,
-hopefully the new one will leave the NEW queue soon).
-
-Another tested but non-working option was to use the Jenkins [PostBuildScript
-plugin](https://wiki.jenkins-ci.org/display/JENKINS/PostBuildScript%20Plugin)
-to issue a `shutdown -r` command at the end of the job. There are
-indications that [people are using it like
-this](https://stackoverflow.com/questions/11160363/execute-shell-script-after-post-build-in-jenkins)
-already. It's supported by JJB.
+ jobs. These jobs are set to run concurrently, so that if a first one is
+ already running, a more recent one triggered by a new build will still
+ be able to run and not be blocked by the first running one.
<a id="chain"></a>
Chaining jobs
--------------
+=============
There are several plugins that allow to chain jobs that we might use to
run the test suite job following a build job of a branch.
@@ -228,33 +108,11 @@ run the test suite job following a build job of a branch.
These are all supported by JJB v0.9+.
-One solution that could work and won't require more additionnal plugins
-to manage could be to make an extensive use of the EnvInject plugin in
-the same way we already use it to configure the notification. Then we
-would be able to simply use Jenkins' native way of chaining jobs:
-
- * At the beginning of the build job, a script (in our jenkins-tools
- repo) is collecting every necessary parameters defined in the
- automated test blueprin and outputing them in a file in the
- /build-artifacts/ directory.
- * This file is the one used by the build job, to setup the variables it
- needs (currently only $NOTIFY_TO).
- * At the end of the build job, this file is archived with the other
- artifacts.
- * At the beginning of the chained test job, this file is imported in
- the workspace along with the build artifacts. The EnvInject pre-build
- step uses it to setup the necessary variables.
-
-Where I'm not sure is that the Jenkins's native way can collaborate
-smoothly with the EnvInject plugin. Maybe the different steps we are
-talking about don't happen in an order that would fit this scenario.
-Might be that we'll have to use the ParameterizedTrigger plugin. Might
-also be that we don't need the EnvInject plugin in the test job, but
-just import the variables in the environment in the test suite wrapper
-script.
+As we'll have to pass some parameters, the ParameterizedTrigger plugin
+is the best candidate for us.
Passing parameters through jobs
--------------------------------
+===============================
We already specified what kind of informations we want to pass from the
build job to the test job.
@@ -262,14 +120,62 @@ build job to the test job.
The ParameterizedTiggerPlugin is the one usually used for that kind of
work.
-An other way that seem to be possible/used with the Jenkins native job
-chaining ability is to put the wanted parameters in a file that is
-archived with the artifacts of the upstream job. Then the downstream job
-can be configured with then EnvInject plugin we already use to set the
-necessary variables in the job environment.
+We'll use it for some basic parameter passing through jobs, but given
+the test jobs will need to know a lot of them from the build job, we'll
+also use the EnvInject plugin we're already using:
+
+ * In the build job, a script will collect every necessary parameters
+ defined in the automated test blueprint and outputing them in a file
+ in the /build-artifacts/ directory.
+ * This file is the one used by the build job, to setup the variables it
+ needs (currently only $NOTIFY_TO).
+ * At the end of the build job, this file is archived with the other
+ artifacts.
+ * At the beginning of the chained test job, this file is imported in
+ the workspace along with the build artifacts. The EnvInject pre-build
+ step uses it to setup the necessary variables.
+
+Define which $OLD_ISO to test against
+=====================================
+
+It appeared in [[!tails_ticket 10117]] that this question is not so
+obvious and easy to address.
+
+The most obvious answer would be to use the previous release for all the
+branches **but** feature/jessie, which would use the previously built
+ISO of the same branch.
+
+But in some occasions, an ISO can't be tested this way, because it
+contains changes that affects the "set up an old Tails", like changes in
+the Persistence Assistant, the Greeter, the Tails Installer or in
+syslinux.
+
+So we may need a way to encode in the Git repo that a given branch needs
+to use the same value than $ISO rather than the last release as $OLD_ISO.
+We could use the same kind of trick than for the APT_overlay feature:
+having a file in `config/ci.d/` that if present shows that this is the
+case. OTOH, we may need something a bit more complex than a simple
+boolean flag. So we may rather want to check the content of a file.
+
+But this brings concerns about the merge of the base branch in the
+feature branch and how to handle conflicts. Note that at testing time,
+we'll have to merge the base branch before we look at that config
+setting (because for some reason the base branch might itself require
+old ISO = same).
+
+Another option that could be considered, using existing code in the repo: use the
+`OLD_TAILS_ISO` flag present in `config/default.yml`: when we release we
+set its value to the released ISO, and for some branch that need it we
+empty this variable so that the test use the same ISO for both
+`--old-iso` and `--iso`.
+
+In the end, we will by default use the same ISO for both `--old-iso` and
+`--iso`, except for the branches used to prepare releases (`devel` and
+`stable`), so that we know if the upgrades are broken long before the
+next release.
Retrieving the ISOs for the test
---------------------------------
+================================
We'll need a way to retrieve the different ISO needed for the test.
@@ -284,4 +190,4 @@ For the last release ISO, we have several means:
vhost for the isotesters.
* Using the git-annex repo directly.
-The former is probably the most simple to use.
+We'll use the first one, as it's easier to implement.
diff --git a/wiki/src/blueprint/automated_builds_and_tests/resources.mdwn b/wiki/src/blueprint/automated_builds_and_tests/resources.mdwn
new file mode 100644
index 0000000..0368eb6
--- /dev/null
+++ b/wiki/src/blueprint/automated_builds_and_tests/resources.mdwn
@@ -0,0 +1,140 @@
+[[!meta title="Jenkins resources"]]
+
+[[!toc levels=2]]
+
+Miscellaneous
+=============
+
+- [Jenkins Best
+ Practices](https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Best+Practices)
+- [plugins](https://wiki.jenkins-ci.org/display/JENKINS/Plugins)
+ * [Git plugin](https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin)
+ * [Copy Artifact
+ plugin](https://wiki.jenkins-ci.org/display/JENKINS/Copy+Artifact+Plugin)
+ can be used to run a test job against the result of a build job,
+ e.g. for Debian packages (think Lintian) or Tails ISO images; see
+ [grml's setup
+ documentation](http://jenkins-debian-glue.org/getting_started/manual/)
+ that uses it.
+- the [jenkins](http://jujucharms.com/charms/precise/jenkins) and
+ [jenkins-slave](http://jujucharms.com/charms/precise/jenkins-slave)
+ JuJu charms may be good sources of inspiration for deployment
+- [[!cpan Net-Jenkins]] (not in Debian) allows to interact with
+ a Jenkins server: create and start jobs, get information about
+ builds etc.
+
+Jobs management
+===============
+
+- [Job builder](http://ci.openstack.org/jenkins-job-builder/) provides
+ one-way (Git to Jenkins) jobs synchronization; it's in Debian sid.
+ * [configuration documentation](http://ci.openstack.org/jenkins-job-builder/configuration.html)
+ * Debian uses it in their `update_jdn.sh`: it runs `jenkins-jobs
+ update $config` after importing updated YAML job config files
+ from Git.
+ * Tor [use
+ it](https://gitweb.torproject.org/project/jenkins/jobs.git/tree) too.
+- jenkins.debian.net uses the [SCM
+ Sync](https://wiki.jenkins-ci.org/display/JENKINS/SCM+Sync+configuration+plugin)
+ plugin, that apparently handles committing to the VCS on
+ configuration changes done in the web interface, and maybe more.
+- [jenkins-yaml](https://github.com/varnish/jenkins-yaml) might make
+ it easy to generate a large number of similar Jenkins jobs, e.g.
+ one per branch
+- [jenkins_jobs puppet module](http://tradeshift.com/blog/tstech-managing-jenkins-job-configurations-by-puppet/)
+
+Web setup
+=========
+
+### Visible read-only on the web
+
+We'd like our Jenkins instance to be visible read-only on the web.
+We'd rather not rely on Jenkins authentication / authorization to
+enforce this read-only policy. We'd rather see the frontend reverse
+proxy take care of this.
+
+The
+[`getUnprotectedRootActions()`](http://javadoc.jenkins-ci.org/jenkins/model/Jenkins.html#getUnprotectedRootActions())
+method should return the list of URL prefixes that we want to allow.
+And we could forbid anything else.
+
+The [Reverse Proxy
+Auth](https://wiki.jenkins-ci.org/display/JENKINS/Reverse+Proxy+Auth+Plugin)
+Jenkins plugin can be useful to display [an example
+usage](https://github.com/jenkinsci/reverse-proxy-auth-plugin/commit/72567a974960be2363107614ba3f705ec6e9b695)
+of this method.
+
+### Miscellaneous
+
+- [sample nginx configuration](https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu)
+
+Notifications
+=============
+
+- [IRC plugin](https://wiki.jenkins-ci.org/display/JENKINS/IRC+Plugin),
+ but I'm told that the jenkins email notifications are way nicer
+ than what this plugin can do, so see [a better way to do
+ it](http://jenkins.debian.net/userContent/setup.html#_installing_kgb_client)
+- [[!cpan Jenkins-NotificationListener]] is a server that listens to
+ messages from Jenkins [Notification
+ plugin](https://wiki.jenkins-ci.org/display/JENKINS/Notification+Plugin).
+
+### Notifying different people depending on what triggered the build
+
+At least the obvious candidate (Email-ext plugin) doesn't seem able to
+email different recipients depending on what triggered the build
+out-of-the-box. But apparently, one can set up two 'Script - After
+Build' email triggers in the Email-ext configuration: one emails the
+culprit, the other emails the RM. And then, they do something or not
+depending on a variable we set during the build, based on what
+triggered the build. Likely the cleaner and simpler solution.
+
+Otherwise, we could have Jenkins email some pipe script that will
+forward to the right person depending on 1. whether it's a base
+branch; and 2. whether the build was triggered by a push or by
+something else. This should work if we can get the email notification
+to pass the needed info in it. E.g. the full console output currently
+has "Started by timer" or "Started by an SCM change", but this is not
+part of the email notification. Could work, but a bit hackish and all
+kinds of things can go wrong.
+
+Also, I've seen lots of people documenting crazy similar things with
+some of these plugins: "Run Condition", "Conditional BuildStep",
+"Flexible Publish" and "Any Build step". But then it gets too
+complicated for me to dive into it right now.
+
+How others use Jenkins
+======================
+
+- jenkins.debian.net's:
+ * [setup documentation](http://jenkins.debian.net/userContent/setup.html)
+ * configuration: `git://git.debian.org/git/users/holger/jenkins.debian.net.git`
+- [Tor's jobs](https://gitweb.torproject.org/project/jenkins/jobs.git/blob/HEAD:/jobs.yaml)
+- [Ubuntu QA Jenkins instance](https://jenkins.qa.ubuntu.com/)
+- grml's Michael Prokop talks about autotesting in KVM during his
+ [talk at DebConf
+ 10](http://penta.debconf.org/dc10_schedule/events/547.en.html);
+ they use Jenkins:
+ * [Jenkins instance](http://jenkins.grml.org/)
+ * [unittests](https://github.com/grml/grml-unittests)
+ * [debian-glue Jenkins plugin](https://github.com/mika/jenkins-debian-glue)
+ * [kantan](https://github.com/mika/kantan): simple test suite for
+ autotesting using Grml and KVM
+ * [Jenkins server setup documentation](https://github.com/grml/grml-server-setup/blob/master/jenkins.asciidoc)
+- [jenkinstool](http://git.gitano.org.uk/personal/liw/jenkinstool.git/)
+ has the tools Lars Wirzenius uses to manage his CI (Python projects
+ test suite, Debian packages, importing into reprepro, VM setup of
+ all needed stuff); the whole thing is very ad-hoc but many bits
+ could be used as inspiration sources.
+
+Jenkins for Perl projects
+=========================
+
+* [a collection of links](https://wiki.jenkins-ci.org/display/JENKINS/Perl+Projects)
+ on the Jenkins wiki
+* an overview of the available tools: [[!cpan Task::Jenkins]]
+* [a tutorial](https://logiclab.jira.com/wiki/display/OPEN/Continuous+Integration)
+* [another tutorial](http://alexandre-masselot.blogspot.com/2011/12/perl-hudson-continuous-testing.html)
+* use [[!cpan TAP::Formatter::JUnit]] (in Wheezy) rather than the Jenkins TAP plugin
+* use `prove --timer` to know how long each test takes
+
diff --git a/wiki/src/blueprint/bootstrapping/assistant/infography/2nd_iteration/infography-sajolida-20150327.svg b/wiki/src/blueprint/bootstrapping/assistant/infography/2nd_iteration/infography-sajolida-20150327.svg
deleted file mode 100644
index d1787b2..0000000
--- a/wiki/src/blueprint/bootstrapping/assistant/infography/2nd_iteration/infography-sajolida-20150327.svg
+++ /dev/null
@@ -1,1095 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="646.42462"
- height="260.05408"
- id="svg3449"
- version="1.1"
- inkscape:version="0.48.3.1 r9886"
- sodipodi:docname="infography-sajolida-20150327.svg">
- <defs
- id="defs3451">
- <path
- id="path-1"
- d="M 5.8863643,3.0005748 C -0.13642709,3.0615313 -5,7.9627911 -5,14 -5,20.075132 -0.07513255,25 6,25 L 6,24 C 0.47715225,24 -4,19.522848 -4,14 -4,8.4963397 0.44609729,4.0311216 5.9424757,4.000162 L 4.2928932,5.6497444 5,6.3568512 7.8284271,3.5284241 5,0.69999695 4.2928932,1.4071037 5.8863643,3.0005748 z"
- inkscape:connector-curvature="0" />
- <path
- id="path-1-7"
- d="M 5.8863643,3.0005748 C -0.13642709,3.0615313 -5,7.9627911 -5,14 -5,20.075132 -0.07513255,25 6,25 L 6,24 C 0.47715225,24 -4,19.522848 -4,14 -4,8.4963397 0.44609729,4.0311216 5.9424757,4.000162 L 4.2928932,5.6497444 5,6.3568512 7.8284271,3.5284241 5,0.69999695 4.2928932,1.4071037 5.8863643,3.0005748 z"
- inkscape:connector-curvature="0" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.86220698"
- inkscape:cx="324.71886"
- inkscape:cy="163.19068"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1024"
- inkscape:window-height="681"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0" />
- <metadata
- id="metadata3454">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-376.17182,-855.26956)">
- <g
- style="fill:#000000;fill-opacity:1"
- id="Captions-0"
- transform="matrix(0,-0.07092847,0.05562694,0.0458562,531.76326,893.17244)" />
- <g
- style="fill:#000000;fill-opacity:1"
- id="Captions-7-1"
- transform="matrix(0.28457047,0,0,0.28457047,546.30591,859.79114)" />
- <g
- style="fill:#000000;fill-opacity:1"
- id="Your_Icon-4"
- transform="matrix(0.28457047,0,0,0.28457047,532.88171,906.69785)" />
- <text
- xml:space="preserve"
- style="font-size:9.06930542px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
- x="517.85468"
- y="913.69794"
- id="text6902"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan6904"
- x="517.85468"
- y="913.69794" /></text>
- <g
- id="g14032"
- transform="matrix(0.50587079,0,0,0.50587079,543.02156,618.93655)">
- <path
- d="m 204.07369,567.04654 -30.0517,-0.14345 c -7.07099,-0.0338 -12.93535,-5.95437 -13.04821,-13.17337 l 0.41101,-55.24138 55.97865,0.26721 -0.11638,55.24279 c -0.18177,7.21759 -5.95437,12.93535 -13.17337,13.0482 z"
- stroke-miterlimit="10"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.16666651;stroke-miterlimit:10"
- id="path4152-4-1-32" />
- <rect
- id="rect4154-4-7-9"
- height="27.083073"
- width="39.374622"
- stroke-miterlimit="10"
- transform="matrix(0.99998861,0.00477338,-0.00477338,0.99998861,0,0)"
- y="470.59338"
- x="172.10887"
- style="fill:none;stroke:#000000;stroke-width:4.16662645;stroke-miterlimit:10" />
- <g
- id="g13759">
- <g
- id="g4156-7-9-0"
- transform="matrix(1.4801542,-1.2750407,1.4660905,1.2872717,118.56439,514.05907)">
- <line
- style="fill:none;stroke:#000000;stroke-width:1.9764694;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="40.6609"
- y1="12.348352"
- x2="39.013733"
- y2="13.948482"
- id="line4158-7-8-0" />
- <line
- style="fill:none;stroke:#000000;stroke-width:1.97647011;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="35.6609"
- y1="7.3483534"
- x2="34.013733"
- y2="8.9484825"
- id="line4160-1-9-1" />
- </g>
- </g>
- <path
- sodipodi:nodetypes="cscc"
- inkscape:connector-curvature="0"
- d="m 198.83483,485.78333 c 0.031,4.18563 -4.38849,6.53271 -9.31446,6.53271 -4.92401,0 -9.42093,-2.6759 -9.42948,-6.53271 2.01684,0 16.95283,0 18.74394,0 z"
- id="path4818-2-4-3-6-1-0-4"
- style="fill:#000000;fill-opacity:1" />
- </g>
- <g
- id="g14041"
- transform="matrix(0.50587079,0,0,0.50587079,542.00981,618.93655)">
- <path
- d="m 301.5747,566.4861 -30.0517,-0.14345 c -7.07099,-0.0338 -12.93535,-5.95437 -13.04821,-13.17337 l 0.41101,-55.24138 55.97865,0.26721 -0.11638,55.24279 c -0.18177,7.21759 -5.95437,12.93535 -13.17337,13.0482 z"
- stroke-miterlimit="10"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.16666651;stroke-miterlimit:10"
- id="path4152-4-1" />
- <rect
- id="rect4154-4-7"
- height="27.083073"
- width="39.374622"
- stroke-miterlimit="10"
- transform="matrix(0.99998861,0.00477338,-0.00477338,0.99998861,0,0)"
- y="469.56754"
- x="269.60611"
- style="fill:none;stroke:#000000;stroke-width:4.16662645;stroke-miterlimit:10" />
- <path
- inkscape:connector-curvature="0"
- d="m 300.72986,549.73132 -28.18282,0 c -0.86313,0 -1.55809,-0.74461 -1.54731,-1.66072 l 0.21872,-18.56457 c 0.0135,-0.91525 0.71395,-1.65986 1.57709,-1.65986 l 3.54795,0 0,-5.80177 c 0.001,-6.22198 4.82143,-11.20417 10.64493,-11.20417 5.82216,0 10.49791,5.01611 10.44199,11.20417 l 0,5.80177 3.54795,0 c 0.86273,0 1.55768,0.74461 1.54704,1.65986 l -0.21872,18.56422 c -0.0135,0.91802 -0.71422,1.66107 -1.57682,1.66107 z M 292.4664,522.3761 c 0.0297,-3.27502 -2.44548,-5.92979 -5.5269,-5.92979 -3.08235,0 -5.60451,2.65477 -5.63403,5.92979 l 9.5e-4,5.47007 11.16133,0 -9.5e-4,-5.47007 z"
- id="path5189-4-8-1-2-2-0-5-7"
- style="fill:#ffffff;fill-opacity:1" />
- <g
- id="g13759-1"
- transform="translate(97.608432,0.232262)">
- <g
- id="g4156-7-9-0-4"
- transform="matrix(1.4801542,-1.2750407,1.4660905,1.2872717,118.56439,514.05907)">
- <line
- style="fill:none;stroke:#000000;stroke-width:1.9764694;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="40.6609"
- y1="12.348352"
- x2="39.013733"
- y2="13.948482"
- id="line4158-7-8-0-9" />
- <line
- style="fill:none;stroke:#000000;stroke-width:1.97647011;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="35.6609"
- y1="7.3483534"
- x2="34.013733"
- y2="8.9484825"
- id="line4160-1-9-1-1" />
- </g>
- </g>
- <path
- sodipodi:nodetypes="cscc"
- inkscape:connector-curvature="0"
- d="m 296.44325,486.01559 c 0.031,4.18563 -4.38849,6.53271 -9.31446,6.53271 -4.92401,0 -9.42093,-2.6759 -9.42948,-6.53271 2.01684,0 16.95283,0 18.74394,0 z"
- id="path4818-2-4-3-6-1-0-4-2"
- style="fill:#000000;fill-opacity:1" />
- </g>
- <g
- id="g14024"
- transform="matrix(0.50587079,0,0,0.50587079,542.00981,618.93655)">
- <path
- d="m 111.07874,568.33943 -30.0517,-0.14345 c -7.07098,-0.0338 -12.93534,-5.95437 -13.0482,-13.17337 l 0.41101,-55.24138 55.97864,0.26721 -0.11638,55.24279 c -0.18177,7.21759 -5.95437,12.93535 -13.17337,13.0482 z"
- stroke-miterlimit="10"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.16666651;stroke-miterlimit:10"
- id="path4152-4-1-32-8" />
- <rect
- id="rect4154-4-7-9-8"
- height="27.083073"
- width="39.374622"
- stroke-miterlimit="10"
- transform="matrix(0.99998861,0.00477338,-0.00477338,0.99998861,0,0)"
- y="472.33014"
- x="79.12117"
- style="fill:none;stroke:#000000;stroke-width:4.16662645;stroke-miterlimit:10" />
- <g
- id="g13759-0"
- transform="translate(-92.994948,1.292888)">
- <g
- id="g4156-7-9-0-41"
- transform="matrix(1.4801542,-1.2750407,1.4660905,1.2872717,118.56439,514.05907)">
- <line
- style="fill:none;stroke:#000000;stroke-width:1.9764694;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="40.6609"
- y1="12.348352"
- x2="39.013733"
- y2="13.948482"
- id="line4158-7-8-0-5" />
- <line
- style="fill:none;stroke:#000000;stroke-width:1.97647011;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="35.6609"
- y1="7.3483534"
- x2="34.013733"
- y2="8.9484825"
- id="line4160-1-9-1-3" />
- </g>
- </g>
- </g>
- <g
- id="g22288"
- transform="matrix(0.50587079,0,0,0.50587079,411.49512,618.93655)">
- <path
- id="path4152-4-1-3"
- d="m 271.73055,566.76226 -30.0517,-0.14345 c -7.07099,-0.0338 -12.93535,-5.95437 -13.04821,-13.17337 l 0.41101,-55.24138 55.97865,0.26721 -0.11638,55.24279 c -0.18177,7.21759 -5.95437,12.93535 -13.17337,13.0482 z"
- stroke-miterlimit="10"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:4.16666651;stroke-miterlimit:10" />
- <rect
- id="rect4154-4-7-7"
- height="27.083073"
- width="39.374622"
- stroke-miterlimit="10"
- transform="matrix(0.99998861,0.00477338,-0.00477338,0.99998861,0,0)"
- y="469.98615"
- x="239.76363"
- style="fill:none;stroke:#000000;stroke-width:4.16662645;stroke-miterlimit:10" />
- <text
- transform="matrix(0.01414842,-0.99989991,0.99989991,0.01414842,0,0)"
- sodipodi:linespacing="125%"
- id="text5311-7-6"
- y="277.49564"
- x="-556.10962"
- style="font-size:32.15980148px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
- xml:space="preserve"><tspan
- y="277.49564"
- x="-556.10962"
- id="tspan5313-5-2"
- sodipodi:role="line">ISO</tspan></text>
- <path
- sodipodi:nodetypes="cscc"
- inkscape:connector-curvature="0"
- d="m 266.57856,486.23883 c 0.031,4.18563 -4.38849,6.53271 -9.31446,6.53271 -4.92401,0 -9.42093,-2.6759 -9.42948,-6.53271 2.01684,0 16.95283,0 18.74394,0 z"
- id="path4818-2-4-3-6-1-0-4-2-4"
- style="fill:#000000;fill-opacity:1" />
- <g
- id="g13759-1-9"
- transform="translate(67.92871,0.39555892)">
- <g
- id="g4156-7-9-0-4-3"
- transform="matrix(1.4801542,-1.2750407,1.4660905,1.2872717,118.56439,514.05907)">
- <line
- style="fill:none;stroke:#000000;stroke-width:1.9764694;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="40.6609"
- y1="12.348352"
- x2="39.013733"
- y2="13.948482"
- id="line4158-7-8-0-9-3" />
- <line
- style="fill:none;stroke:#000000;stroke-width:1.97647011;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="35.6609"
- y1="7.3483534"
- x2="34.013733"
- y2="8.9484825"
- id="line4160-1-9-1-1-1" />
- </g>
- </g>
- </g>
- <g
- id="g14062"
- transform="matrix(0.50587079,0,0,0.50587079,493.44622,618.93655)">
- <g
- style="stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- transform="translate(92.05259,-38.571071)"
- id="g7473">
- <path
- inkscape:connector-curvature="0"
- d="m 371.15628,569.29509 2.04755,1.25278 c 0.34545,0 0.51979,-0.14275 0.51979,-0.42827 0,-0.18256 -0.0833,-0.43651 -0.24433,-0.76366 l -4.52384,-8.49722 -10.02592,0.24525 c -0.4484,0.021 -0.67214,0.25485 -0.67214,0.70279 0,0.10204 0.14229,0.24434 0.4278,0.42782 l 2.07867,1.25278 -2.20083,3.42251 c -0.61084,0.9787 -0.91648,1.78491 -0.91648,2.41587 0,0.57195 0.20224,1.21344 0.61084,1.92585 l 6.81618,11.88908 c -0.16336,-0.75314 -0.24434,-1.46692 -0.24434,-2.13998 0,-1.20016 0.37565,-2.3834 1.13015,-3.54513 l 5.1969,-8.16047 0,0 z"
- id="path7422"
- style="fill:#00e300;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- inkscape:connector-curvature="0"
- d="m 373.78493,562.3572 5.6238,-8.7109 c -2.10017,-4.78785 -4.33121,-7.1836 -6.69402,-7.1836 -1.42711,0 -2.38294,0.39853 -2.87206,1.19192 l -5.31953,8.49815 9.26181,6.20443 0,0 z"
- id="path7424"
- style="fill:#00e300;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- inkscape:connector-curvature="0"
- d="m 369.20024,585.95234 h 10.85044 V 574.67455 H 369.5974 c -1.2839,1.83341 -2.08919,3.07842 -2.41451,3.72907 -0.53077,1.03864 -0.79432,2.09971 -0.79432,3.1777 0,2.91508 0.93616,4.37102 2.81167,4.37102 l 0,0 z"
- id="path7426"
- style="fill:#00e300;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- inkscape:connector-curvature="0"
- d="m 391.54351,560.27853 4.82856,-8.13073 c 0.16243,-0.28414 0.24434,-0.58063 0.24434,-0.88582 0,-0.36696 -0.12217,-0.55044 -0.36604,-0.55044 0.0385,0 -0.12263,0.0614 -0.48913,0.18348 l -2.20084,1.00845 -2.01689,-4.00359 c -0.89772,-1.7927 -2.68996,-2.68996 -5.37992,-2.68996 H 373.6019 c 1.52778,0.46945 2.56643,0.92746 3.11686,1.37541 1.28436,1.01943 2.59799,2.93429 3.94275,5.74595 l 2.50693,5.25775 -1.86544,0.88674 c -0.18302,0.0824 -0.27453,0.24434 -0.27453,0.48867 0,0.30565 0.19262,0.48043 0.58063,0.51978 l 9.93441,0.79431 0,0 z"
- id="path7428"
- style="fill:#00e300;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- inkscape:connector-curvature="0"
- d="m 396.37162,584.2722 7.0303,-12.77628 c -1.03909,1.18278 -2.17017,1.97755 -3.3923,2.38432 -0.97824,0.32669 -2.37607,0.48912 -4.18844,0.48912 H 387.997 v -1.62065 c 0,-0.63097 -0.15328,-0.9476 -0.45892,-0.9476 -0.22466,0 -0.38847,0.0833 -0.48866,0.24479 l -4.95074,8.58875 5.13467,7.88639 c 0.38755,0.59116 0.72248,0.82497 1.00845,0.7019 0.28414,-0.081 0.42827,-0.23291 0.42827,-0.45756 v -2.69042 h 4.3399 c 1.58954,0 2.70963,-0.60031 3.36165,-1.80276 l 0,0 z"
- id="path7430"
- style="fill:#00e300;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- inkscape:connector-curvature="0"
- d="m 393.31561,572.74871 h 4.67712 c 1.11963,0 2.2809,-0.48868 3.48382,-1.46646 1.28389,-1.01852 1.92583,-2.09881 1.92583,-3.24086 0,-0.52802 -0.17478,-1.04825 -0.52024,-1.55843 l -5.56201,-8.49677 -9.56837,5.56386 5.56385,9.19866 0,0 z"
- id="path7432"
- style="fill:#00e300;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- </g>
- <path
- id="path4152-4-1-3-7"
- d="m 487.39455,564.90082 -30.0517,-0.14345 C 450.27186,564.72362 444.4075,558.803 444.29464,551.584 l 0.41101,-55.24138 55.97865,0.26721 -0.11638,55.24279 c -0.18177,7.21759 -5.95437,12.93535 -13.17337,13.0482 z"
- stroke-miterlimit="10"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:4.16666651;stroke-miterlimit:10" />
- <rect
- id="rect4154-4-7-7-7"
- height="27.083073"
- width="39.374622"
- stroke-miterlimit="10"
- transform="matrix(0.99998861,0.00477338,-0.00477338,0.99998861,0,0)"
- y="467.09534"
- x="455.41632"
- style="fill:none;stroke:#000000;stroke-width:4.16662645;stroke-miterlimit:10" />
- <g
- id="g13759-1-9-0"
- transform="translate(283.46781,-1.604441)">
- <g
- id="g4156-7-9-0-4-3-8"
- transform="matrix(1.4801542,-1.2750407,1.4660905,1.2872717,118.56439,514.05907)">
- <line
- style="fill:none;stroke:#000000;stroke-width:1.9764694;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="40.6609"
- y1="12.348352"
- x2="39.013733"
- y2="13.948482"
- id="line4158-7-8-0-9-3-6" />
- <line
- style="fill:none;stroke:#000000;stroke-width:1.97647011;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="35.6609"
- y1="7.3483534"
- x2="34.013733"
- y2="8.9484825"
- id="line4160-1-9-1-1-1-4" />
- </g>
- </g>
- </g>
- <g
- id="g14077"
- transform="matrix(0.50587079,0,0,0.50587079,209.14683,618.93655)">
- <path
- id="path4152-4-1-3-1"
- d="m 575.4326,565.02572 -30.0517,-0.14345 c -7.07099,-0.0337 -12.93535,-5.95437 -13.04821,-13.17337 l 0.41101,-55.24138 55.97865,0.26721 -0.11638,55.24279 c -0.18177,7.21759 -5.95437,12.93535 -13.17337,13.0482 z"
- stroke-miterlimit="10"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:4.16666651;stroke-miterlimit:10" />
- <rect
- id="rect4154-4-7-7-1"
- height="27.083073"
- width="39.374622"
- stroke-miterlimit="10"
- transform="matrix(0.99998861,0.00477338,-0.00477338,0.99998861,0,0)"
- y="466.79996"
- x="543.45392"
- style="fill:none;stroke:#000000;stroke-width:4.16662645;stroke-miterlimit:10" />
- <g
- id="g13759-1-9-0-2"
- transform="translate(372.4247,-1.4831207)">
- <g
- id="g4156-7-9-0-4-3-8-0"
- transform="matrix(1.4801542,-1.2750407,1.4660905,1.2872717,118.56439,514.05907)">
- <line
- style="fill:none;stroke:#000000;stroke-width:1.9764694;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="40.6609"
- y1="12.348352"
- x2="39.013733"
- y2="13.948482"
- id="line4158-7-8-0-9-3-6-6" />
- <line
- style="fill:none;stroke:#000000;stroke-width:1.97647011;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="35.6609"
- y1="7.3483534"
- x2="34.013733"
- y2="8.9484825"
- id="line4160-1-9-1-1-1-4-5" />
- </g>
- </g>
- </g>
- <g
- style="fill:#00ff00;display:inline"
- inkscape:label="emblem-important"
- transform="matrix(8.2887493,0,0,8.2887493,-2447.4609,-7185.4419)"
- id="g17779" />
- <path
- inkscape:connector-curvature="0"
- d="m 400.62439,1039.9422 a 1.7119602,1.7119602 0 0 0 -1.39083,1.7118 l 0,22.2533 a 1.7119602,1.7119602 0 0 0 1.71179,1.7117 l 17.1179,0 a 1.7119602,1.7119602 0 0 0 1.71178,-1.7117 l 0,-16.155 a 1.7119602,1.7119602 0 0 0 -0.48144,-1.2304 l -6.09825,-6.0982 a 1.7119602,1.7119602 0 0 0 -1.23034,-0.4815 l -11.01965,0 a 1.7119602,1.7119602 0 0 0 -0.16039,0 1.7119602,1.7119602 0 0 0 -0.1604,0 z m 2.03275,3.4236 8.55894,0 0,5.1354 5.13538,0 0,13.6943 -13.69432,0 0,-18.8297 z"
- id="path1234"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.99999988;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
- <text
- xml:space="preserve"
- style="font-size:5.02514458px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
- x="420.11722"
- y="1048.1885"
- id="text5311-7-6-4"
- sodipodi:linespacing="125%"
- transform="matrix(0.99989991,0.01414844,-0.01414844,0.99989991,0,0)"><tspan
- sodipodi:role="line"
- id="tspan5313-5-2-3"
- x="420.11722"
- y="1048.1885">ISO</tspan></text>
- <path
- inkscape:connector-curvature="0"
- d="m 418.61251,1055.5715 c -3.29755,0 -5.9628,2.6928 -5.9628,6.0128 0,3.3201 2.66525,6.0129 5.9628,6.0129 3.29746,0 5.98779,-2.6928 5.98779,-6.0129 0,-0.334 -0.0481,-0.6578 -0.10024,-0.977 l -5.52626,4.9507 -3.48163,-3.4832 1.82585,-1.7917 1.65655,1.7689 4.34799,-4.1756 c -1.09288,-1.406 -2.79942,-2.3049 -4.71005,-2.3049 z"
- id="path74"
- sodipodi:nodetypes="ssssccccccs"
- style="fill:#00aa00;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- inkscape:connector-curvature="0"
- d="m 424.50006,1060.6073 -5.52626,4.9507 -3.48163,-3.4832 1.82585,-1.7917 1.65655,1.7689 4.34799,-4.1756 c 0.52397,0.733 1.01365,1.6371 1.1775,2.7309 z"
- id="path74-5"
- sodipodi:nodetypes="ccccccc"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <g
- transform="matrix(0.22673265,0,0,0.22673265,327.71856,1021.4365)"
- id="g18376-5">
- <path
- id="path3978-0"
- d="m 501.08191,278.17762 c -7.21715,-13.9489 -14.06128,-28.08879 -21.39661,-41.97333 -3.73599,-7.06836 -5.80633,-15.24365 -13.12689,-20.35459 5.41537,-4.7453 6.07435,-10.74843 6.06327,-17.14198 -0.0718,-40.55881 -0.13243,-81.11551 0.0216,-121.669045 0.0464,-11.512935 -7.81863,-19.188576 -19.08306,-19.140036 -63.10508,0.290184 -126.20384,0.299154 -189.30153,-0.0016 -11.65486,-0.0554 -19.31942,7.967409 -19.26244,19.332085 0.22951,40.914946 0.12187,81.826726 0.0644,122.740616 -0.0143,5.95194 1.03886,11.37153 5.43014,15.34917 -2.53569,3.52073 -5.24706,6.45898 -7.02036,9.88157 -8.41693,16.26246 -16.16379,32.89267 -24.97854,48.92404 -5.47288,9.93486 -5.58368,19.86866 -3.65316,30.40446 0.98135,5.3758 4.14067,8.83427 9.05112,10.53053 2.74356,0.95444 5.79841,1.40766 8.71397,1.40766 84.09755,0.0765 168.18824,0.0638 252.27841,0.0638 0.84206,0 1.67621,0.0164 2.51088,-0.0143 8.26287,-0.25747 13.97951,-4.80334 15.51959,-12.88418 0.77348,-4.06733 0.9096,-8.26868 1.13172,-12.41304 0.25009,-4.59916 -0.81357,-8.88281 -2.96252,-13.04194 z M 255.01081,77.482921 c 0,-7.736317 2.21332,-9.910589 10.09315,-9.910589 31.23914,-0.0016 62.48567,0 93.7322,0 31.24283,0 62.48567,-0.0016 93.72481,0 7.86558,0 10.10369,2.192211 10.10369,9.915865 0,41.026273 0,82.043573 0,123.068263 0,7.59808 -2.37054,9.92642 -10.11055,9.92642 -62.4862,0.002 -124.97187,0.002 -187.46123,0 -7.75057,0 -10.08207,-2.29985 -10.08207,-9.93223 0,-41.02627 0,-82.04884 0,-123.067729 z M 485.50534,295.0405 c -42.21391,0.0105 -84.4273,0.01 -126.63383,0.01 -41.97702,0 -83.95405,-0.15776 -125.9279,0.13084 -7.91887,0.0538 -11.71554,-5.06503 -7.81862,-12.52541 9.23736,-17.71075 18.06213,-35.63201 27.15651,-53.42453 2.99048,-5.85223 8.05868,-8.49713 14.56989,-8.49713 33.63185,0 67.25683,0 100.88129,0 27.42823,0 54.8496,0.0433 82.27783,-0.029 7.57171,-0.0153 12.76495,3.15246 16.17488,10.0235 8.69973,17.58095 17.67909,35.02526 26.51494,52.54132 3.52812,7.00399 0.6057,11.77093 -7.19499,11.77093 z"
- clip-rule="evenodd"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-rule:evenodd" />
- <path
- id="path3980-3"
- d="m 394.57369,260.00786 c -0.81674,-3.51387 -2.85806,-5.19378 -6.57611,-5.18217 -19.4413,0.0712 -38.87891,0.0681 -58.31651,0 -3.70381,-0.007 -5.77362,1.63453 -6.58297,5.16581 -1.27523,5.56046 -2.5647,11.11565 -3.91116,16.6587 -1.51845,6.2933 -0.19363,8.04391 6.35715,8.06026 11.08557,0.0238 22.17748,0.005 33.27043,0.005 11.44699,-0.003 22.89397,0.0507 34.34834,-0.029 5.07876,-0.0322 6.74441,-2.20751 5.61639,-7.00188 -1.38286,-5.89655 -2.83009,-11.78149 -4.20556,-17.67698 z"
- clip-rule="evenodd"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-rule:evenodd" />
- </g>
- <g
- id="g18446"
- transform="matrix(0.22673265,0,0,0.22673265,254.27277,1137.0465)">
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.99999988;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
- id="path1234-9"
- d="m 644.83491,-667.25727 a 7.5505678,7.5505678 0 0 0 -6.13422,7.54981 l 0,98.14758 a 7.5505678,7.5505678 0 0 0 7.54981,7.54981 l 75.49814,0 a 7.5505678,7.5505678 0 0 0 7.54981,-7.54981 l 0,-71.25137 a 7.5505678,7.5505678 0 0 0 -2.12338,-5.42643 l -26.89621,-26.89621 a 7.5505678,7.5505678 0 0 0 -5.42643,-2.12338 l -48.60193,0 a 7.5505678,7.5505678 0 0 0 -0.70741,0 7.5505678,7.5505678 0 0 0 -0.70742,0 z m 8.96541,15.09963 37.74906,0 0,22.64943 22.64945,0 0,60.39851 -60.39851,0 0,-83.04794 z"
- inkscape:connector-curvature="0" />
- <text
- transform="matrix(0.99989991,0.01414844,-0.01414844,0.99989991,0,0)"
- sodipodi:linespacing="125%"
- id="text5311-7-6-4-5"
- y="-613.24182"
- x="656.78455"
- style="font-size:22.16330338px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
- xml:space="preserve"><tspan
- y="-613.24182"
- x="656.78455"
- id="tspan5313-5-2-3-0"
- sodipodi:role="line">ISO</tspan></text>
- </g>
- <path
- inkscape:connector-curvature="0"
- d="m 409.58941,1031.7121 -9.4797,-9.4068 4.73985,0 0,-6.8545 9.40679,0 0,6.8545 4.73983,0 z"
- id="rect7040"
- style="fill:#00aa00;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline;enable-background:new"
- sodipodi:nodetypes="cccccccc" />
- <g
- transform="matrix(0.22673265,0,0,0.22673265,480.96081,1020.7307)"
- id="g18376-2">
- <path
- id="path3978-8"
- d="m 501.08191,278.17762 c -7.21715,-13.9489 -14.06128,-28.08879 -21.39661,-41.97333 -3.73599,-7.06836 -5.80633,-15.24365 -13.12689,-20.35459 5.41537,-4.7453 6.07435,-10.74843 6.06327,-17.14198 -0.0718,-40.55881 -0.13243,-81.11551 0.0216,-121.669045 0.0464,-11.512935 -7.81863,-19.188576 -19.08306,-19.140036 -63.10508,0.290184 -126.20384,0.299154 -189.30153,-0.0016 -11.65486,-0.0554 -19.31942,7.967409 -19.26244,19.332085 0.22951,40.914946 0.12187,81.826726 0.0644,122.740616 -0.0143,5.95194 1.03886,11.37153 5.43014,15.34917 -2.53569,3.52073 -5.24706,6.45898 -7.02036,9.88157 -8.41693,16.26246 -16.16379,32.89267 -24.97854,48.92404 -5.47288,9.93486 -5.58368,19.86866 -3.65316,30.40446 0.98135,5.3758 4.14067,8.83427 9.05112,10.53053 2.74356,0.95444 5.79841,1.40766 8.71397,1.40766 84.09755,0.0765 168.18824,0.0638 252.27841,0.0638 0.84206,0 1.67621,0.0164 2.51088,-0.0143 8.26287,-0.25747 13.97951,-4.80334 15.51959,-12.88418 0.77348,-4.06733 0.9096,-8.26868 1.13172,-12.41304 0.25009,-4.59916 -0.81357,-8.88281 -2.96252,-13.04194 z M 255.01081,77.482921 c 0,-7.736317 2.21332,-9.910589 10.09315,-9.910589 31.23914,-0.0016 62.48567,0 93.7322,0 31.24283,0 62.48567,-0.0016 93.72481,0 7.86558,0 10.10369,2.192211 10.10369,9.915865 0,41.026273 0,82.043573 0,123.068263 0,7.59808 -2.37054,9.92642 -10.11055,9.92642 -62.4862,0.002 -124.97187,0.002 -187.46123,0 -7.75057,0 -10.08207,-2.29985 -10.08207,-9.93223 0,-41.02627 0,-82.04884 0,-123.067729 z M 485.50534,295.0405 c -42.21391,0.0105 -84.4273,0.01 -126.63383,0.01 -41.97702,0 -83.95405,-0.15776 -125.9279,0.13084 -7.91887,0.0538 -11.71554,-5.06503 -7.81862,-12.52541 9.23736,-17.71075 18.06213,-35.63201 27.15651,-53.42453 2.99048,-5.85223 8.05868,-8.49713 14.56989,-8.49713 33.63185,0 67.25683,0 100.88129,0 27.42823,0 54.8496,0.0433 82.27783,-0.029 7.57171,-0.0153 12.76495,3.15246 16.17488,10.0235 8.69973,17.58095 17.67909,35.02526 26.51494,52.54132 3.52812,7.00399 0.6057,11.77093 -7.19499,11.77093 z"
- clip-rule="evenodd"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-rule:evenodd" />
- <path
- id="path3980-4"
- d="m 394.57369,260.00786 c -0.81674,-3.51387 -2.85806,-5.19378 -6.57611,-5.18217 -19.4413,0.0712 -38.87891,0.0681 -58.31651,0 -3.70381,-0.007 -5.77362,1.63453 -6.58297,5.16581 -1.27523,5.56046 -2.5647,11.11565 -3.91116,16.6587 -1.51845,6.2933 -0.19363,8.04391 6.35715,8.06026 11.08557,0.0238 22.17748,0.005 33.27043,0.005 11.44699,-0.003 22.89397,0.0507 34.34834,-0.029 5.07876,-0.0322 6.74441,-2.20751 5.61639,-7.00188 -1.38286,-5.89655 -2.83009,-11.78149 -4.20556,-17.67698 z"
- clip-rule="evenodd"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-rule:evenodd" />
- </g>
- <path
- style="fill:none;stroke:#000000;stroke-width:0.94471931;stroke-miterlimit:10"
- inkscape:connector-curvature="0"
- stroke-miterlimit="10"
- d="m 510.25311,1070.7005 3.1821,-6.0251 c 0.74872,-1.4177 2.55406,-1.9751 4.01686,-1.2403 l 11.05996,5.8789 -5.9274,11.2233 -11.09118,-5.8199 c -1.43161,-0.7939 -1.97511,-2.5541 -1.24034,-4.0169 z"
- id="path4152-4-1-3-13" />
- <rect
- style="fill:none;stroke:#000000;stroke-width:0.94471025;stroke-miterlimit:10"
- x="700.61798"
- y="-972.86499"
- transform="matrix(-0.4670074,0.88425341,-0.88425341,-0.4670074,0,0)"
- stroke-miterlimit="10"
- width="8.9275131"
- height="6.1406169"
- id="rect4154-4-7-7-2" />
- <g
- transform="matrix(-0.10492761,0.20099227,-0.20099227,-0.10492761,645.47288,1089.1654)"
- id="g13759-1-9-2">
- <g
- transform="matrix(1.4801542,-1.2750407,1.4660905,1.2872717,118.56439,514.05907)"
- id="g4156-7-9-0-4-3-88">
- <line
- id="line4158-7-8-0-9-3-63"
- y2="13.948482"
- x2="39.013733"
- y1="12.348352"
- x1="40.6609"
- stroke-miterlimit="10"
- style="fill:none;stroke:#000000;stroke-width:1.9764694;stroke-miterlimit:10" />
- <line
- id="line4160-1-9-1-1-1-1"
- y2="8.9484825"
- x2="34.013733"
- y1="7.3483534"
- x1="35.6609"
- stroke-miterlimit="10"
- style="fill:none;stroke:#000000;stroke-width:1.97647011;stroke-miterlimit:10" />
- </g>
- </g>
- <path
- inkscape:connector-curvature="0"
- d="m 553.24865,1038.9575 a 1.7119602,1.7119602 0 0 0 -1.39085,1.7118 l 0,22.2533 a 1.7119602,1.7119602 0 0 0 1.71179,1.7118 l 17.1179,0 a 1.7119602,1.7119602 0 0 0 1.71179,-1.7118 l 0,-16.155 a 1.7119602,1.7119602 0 0 0 -0.48144,-1.2304 l -6.09825,-6.0982 a 1.7119602,1.7119602 0 0 0 -1.23034,-0.4815 l -11.01966,0 a 1.7119602,1.7119602 0 0 0 -0.16039,0 1.7119602,1.7119602 0 0 0 -0.16039,0 z m 2.03275,3.4236 8.55893,0 0,5.1354 5.13538,0 0,13.6943 -13.69431,0 0,-18.8297 z"
- id="path1234-1"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.99999988;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
- <text
- xml:space="preserve"
- style="font-size:5.02514458px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
- x="572.71222"
- y="1045.0447"
- id="text5311-7-6-4-9"
- sodipodi:linespacing="125%"
- transform="matrix(0.99989991,0.01414844,-0.01414844,0.99989991,0,0)"><tspan
- sodipodi:role="line"
- id="tspan5313-5-2-3-5"
- x="572.71222"
- y="1045.0447">ISO</tspan></text>
- <path
- inkscape:connector-curvature="0"
- d="m 571.23676,1054.5868 c -3.29756,0 -5.9628,2.6928 -5.9628,6.0129 0,3.32 2.66524,6.0128 5.9628,6.0128 3.29746,0 5.98778,-2.6928 5.98778,-6.0128 0,-0.334 -0.0481,-0.658 -0.10024,-0.9771 l -5.52627,4.9507 -3.48161,-3.4832 1.82585,-1.7917 1.65653,1.769 4.34801,-4.1757 c -1.09287,-1.406 -2.79942,-2.3049 -4.71005,-2.3049 z"
- id="path74-6"
- sodipodi:nodetypes="ssssccccccs"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- inkscape:connector-curvature="0"
- d="m 577.1243,1059.6226 -5.52627,4.9507 -3.48161,-3.4832 1.82585,-1.7917 1.65653,1.769 4.34801,-4.1757 c 0.52396,0.733 1.01365,1.6371 1.17749,2.7309 z"
- id="path74-5-0"
- sodipodi:nodetypes="ccccccc"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- inkscape:connector-curvature="0"
- d="m 525.00531,1059.8237 -1.55303,-5.4034 c -0.21428,-0.7455 -0.99252,-1.1762 -1.73806,-0.962 -0.7455,0.2143 -1.17626,0.9925 -0.96196,1.7381 l 2.48971,8.6622 0,0 c 0.0257,0.089 0.0606,0.1749 0.10289,0.2573 0.0174,0.033 0.0404,0.063 0.0598,0.094 0.0288,0.046 0.0552,0.093 0.0893,0.1361 0.0278,0.035 0.0605,0.063 0.0911,0.095 0.033,0.034 0.0632,0.071 0.10006,0.1019 0.0559,0.047 0.11711,0.087 0.17937,0.1242 0.0166,0.01 0.0298,0.023 0.047,0.032 0.0191,0.01 0.0396,0.015 0.0587,0.025 0.063,0.031 0.12644,0.062 0.1941,0.083 0.0487,0.016 0.0979,0.023 0.14731,0.033 0.0404,0.01 0.0795,0.021 0.1206,0.025 0.0585,0.01 0.11738,0 0.17576,0 0.0323,-3e-4 0.0651,0 0.0982,0 0.0937,-0.01 0.18601,-0.024 0.2759,-0.051 l 8.65995,-2.489 c 0.37274,-0.1072 0.66702,-0.3553 0.8411,-0.6699 0.17418,-0.3146 0.22798,-0.6954 0.12088,-1.0685 -0.21424,-0.7455 -0.99248,-1.1762 -1.7377,-0.9618 l -5.40309,1.5532 z"
- id="path6172-3"
- sodipodi:nodetypes="csssccccccccccccccccsscccc"
- style="fill:#00aa00;fill-opacity:1" />
- <path
- style="fill:#ff6600;stroke:#000000;stroke-width:0.22673266px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0"
- d="m 558.07917,1044.7351 -33.89653,17.5718"
- id="path22569"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#00aa00;stroke-width:3.40098977;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 525.16455,1062.4406 c 9.54411,-16.6032 15.85271,-26.2893 32.68788,-15.2114"
- id="path22571"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <g
- transform="matrix(0.22673265,0,0,0.22673265,767.46682,1023.4135)"
- id="g18376-2-5">
- <path
- id="path3978-8-9"
- d="m 501.08191,278.17762 c -7.21715,-13.9489 -14.06128,-28.08879 -21.39661,-41.97333 -3.73599,-7.06836 -5.80633,-15.24365 -13.12689,-20.35459 5.41537,-4.7453 6.07435,-10.74843 6.06327,-17.14198 -0.0718,-40.55881 -0.13243,-81.11551 0.0216,-121.669045 0.0464,-11.512935 -7.81863,-19.188576 -19.08306,-19.140036 -63.10508,0.290184 -126.20384,0.299154 -189.30153,-0.0016 -11.65486,-0.0554 -19.31942,7.967409 -19.26244,19.332085 0.22951,40.914946 0.12187,81.826726 0.0644,122.740616 -0.0143,5.95194 1.03886,11.37153 5.43014,15.34917 -2.53569,3.52073 -5.24706,6.45898 -7.02036,9.88157 -8.41693,16.26246 -16.16379,32.89267 -24.97854,48.92404 -5.47288,9.93486 -5.58368,19.86866 -3.65316,30.40446 0.98135,5.3758 4.14067,8.83427 9.05112,10.53053 2.74356,0.95444 5.79841,1.40766 8.71397,1.40766 84.09755,0.0765 168.18824,0.0638 252.27841,0.0638 0.84206,0 1.67621,0.0164 2.51088,-0.0143 8.26287,-0.25747 13.97951,-4.80334 15.51959,-12.88418 0.77348,-4.06733 0.9096,-8.26868 1.13172,-12.41304 0.25009,-4.59916 -0.81357,-8.88281 -2.96252,-13.04194 z M 255.01081,77.482921 c 0,-7.736317 2.21332,-9.910589 10.09315,-9.910589 31.23914,-0.0016 62.48567,0 93.7322,0 31.24283,0 62.48567,-0.0016 93.72481,0 7.86558,0 10.10369,2.192211 10.10369,9.915865 0,41.026273 0,82.043573 0,123.068263 0,7.59808 -2.37054,9.92642 -10.11055,9.92642 -62.4862,0.002 -124.97187,0.002 -187.46123,0 -7.75057,0 -10.08207,-2.29985 -10.08207,-9.93223 0,-41.02627 0,-82.04884 0,-123.067729 z M 485.50534,295.0405 c -42.21391,0.0105 -84.4273,0.01 -126.63383,0.01 -41.97702,0 -83.95405,-0.15776 -125.9279,0.13084 -7.91887,0.0538 -11.71554,-5.06503 -7.81862,-12.52541 9.23736,-17.71075 18.06213,-35.63201 27.15651,-53.42453 2.99048,-5.85223 8.05868,-8.49713 14.56989,-8.49713 33.63185,0 67.25683,0 100.88129,0 27.42823,0 54.8496,0.0433 82.27783,-0.029 7.57171,-0.0153 12.76495,3.15246 16.17488,10.0235 8.69973,17.58095 17.67909,35.02526 26.51494,52.54132 3.52812,7.00399 0.6057,11.77093 -7.19499,11.77093 z"
- clip-rule="evenodd"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-rule:evenodd" />
- <path
- id="path3980-4-3"
- d="m 394.57369,260.00786 c -0.81674,-3.51387 -2.85806,-5.19378 -6.57611,-5.18217 -19.4413,0.0712 -38.87891,0.0681 -58.31651,0 -3.70381,-0.007 -5.77362,1.63453 -6.58297,5.16581 -1.27523,5.56046 -2.5647,11.11565 -3.91116,16.6587 -1.51845,6.2933 -0.19363,8.04391 6.35715,8.06026 11.08557,0.0238 22.17748,0.005 33.27043,0.005 11.44699,-0.003 22.89397,0.0507 34.34834,-0.029 5.07876,-0.0322 6.74441,-2.20751 5.61639,-7.00188 -1.38286,-5.89655 -2.83009,-11.78149 -4.20556,-17.67698 z"
- clip-rule="evenodd"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-rule:evenodd" />
- </g>
- <path
- style="fill:#ff6600;stroke:#000000;stroke-width:0.22673266px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0"
- d="m 844.58519,1047.4179 -33.89652,17.5717"
- id="path22569-4"
- inkscape:connector-curvature="0" />
- <g
- id="g14024-0"
- transform="matrix(-0.10510031,-0.20090201,0.20090201,-0.10510031,794.55332,1149.3104)">
- <path
- d="m 111.07874,568.33943 -30.0517,-0.14345 c -7.07098,-0.0338 -12.93534,-5.95437 -13.0482,-13.17337 l 0.41101,-55.24138 55.97864,0.26721 -0.11638,55.24279 c -0.18177,7.21759 -5.95437,12.93535 -13.17337,13.0482 z"
- stroke-miterlimit="10"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.16666651;stroke-miterlimit:10"
- id="path4152-4-1-32-8-7" />
- <rect
- id="rect4154-4-7-9-8-4"
- height="27.083073"
- width="39.374622"
- stroke-miterlimit="10"
- transform="matrix(0.99998861,0.00477338,-0.00477338,0.99998861,0,0)"
- y="472.33014"
- x="79.12117"
- style="fill:none;stroke:#000000;stroke-width:4.16662645;stroke-miterlimit:10" />
- <g
- id="g13759-0-6"
- transform="translate(-92.994948,1.292888)">
- <g
- id="g4156-7-9-0-41-3"
- transform="matrix(1.4801542,-1.2750407,1.4660905,1.2872717,118.56439,514.05907)">
- <line
- style="fill:none;stroke:#000000;stroke-width:1.9764694;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="40.6609"
- y1="12.348352"
- x2="39.013733"
- y2="13.948482"
- id="line4158-7-8-0-5-6" />
- <line
- style="fill:none;stroke:#000000;stroke-width:1.97647011;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="35.6609"
- y1="7.3483534"
- x2="34.013733"
- y2="8.9484825"
- id="line4160-1-9-1-3-0" />
- </g>
- </g>
- </g>
- <g
- transform="matrix(-0.11080185,0.19781467,-0.19781467,-0.11080185,940.10468,1081.3902)"
- id="g22288-2">
- <path
- id="path4152-4-1-3-79"
- d="m 271.73055,566.76226 -30.0517,-0.14345 c -7.07099,-0.0338 -12.93535,-5.95437 -13.04821,-13.17337 l 0.41101,-55.24138 55.97865,0.26721 -0.11638,55.24279 c -0.18177,7.21759 -5.95437,12.93535 -13.17337,13.0482 z"
- stroke-miterlimit="10"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:4.16666651;stroke-miterlimit:10" />
- <rect
- id="rect4154-4-7-7-25"
- height="27.083073"
- width="39.374622"
- stroke-miterlimit="10"
- transform="matrix(0.99998861,0.00477338,-0.00477338,0.99998861,0,0)"
- y="469.98615"
- x="239.76363"
- style="fill:none;stroke:#000000;stroke-width:4.16662645;stroke-miterlimit:10" />
- <text
- transform="matrix(0.01414842,-0.99989991,0.99989991,0.01414842,0,0)"
- sodipodi:linespacing="125%"
- id="text5311-7-6-8"
- y="277.49564"
- x="-556.10962"
- style="font-size:32.15980148px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
- xml:space="preserve"><tspan
- y="277.49564"
- x="-556.10962"
- id="tspan5313-5-2-7"
- sodipodi:role="line">ISO</tspan></text>
- <path
- sodipodi:nodetypes="cscc"
- inkscape:connector-curvature="0"
- d="m 266.57856,486.23883 c 0.031,4.18563 -4.38849,6.53271 -9.31446,6.53271 -4.92401,0 -9.42093,-2.6759 -9.42948,-6.53271 2.01684,0 16.95283,0 18.74394,0 z"
- id="path4818-2-4-3-6-1-0-4-2-4-6"
- style="fill:#000000;fill-opacity:1" />
- <g
- id="g13759-1-9-3"
- transform="translate(67.92871,0.39555892)">
- <g
- id="g4156-7-9-0-4-3-6"
- transform="matrix(1.4801542,-1.2750407,1.4660905,1.2872717,118.56439,514.05907)">
- <line
- style="fill:none;stroke:#000000;stroke-width:1.9764694;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="40.6609"
- y1="12.348352"
- x2="39.013733"
- y2="13.948482"
- id="line4158-7-8-0-9-3-8" />
- <line
- style="fill:none;stroke:#000000;stroke-width:1.97647011;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="35.6609"
- y1="7.3483534"
- x2="34.013733"
- y2="8.9484825"
- id="line4160-1-9-1-1-1-3" />
- </g>
- </g>
- </g>
- <path
- inkscape:connector-curvature="0"
- d="m 899.11604,1085.4203 6.53454,2.4382 c 0.90159,0.3364 1.90534,-0.1219 2.24172,-1.0235 0.33643,-0.9016 -0.12192,-1.9054 -1.02346,-2.2418 l -10.47564,-3.9086 0,0 c -0.10745,-0.04 -0.21901,-0.069 -0.33247,-0.087 -0.0464,-0.01 -0.0922,-0.01 -0.138,-0.01 -0.067,-0.01 -0.13361,-0.014 -0.2016,-0.011 -0.055,0 -0.1077,0.014 -0.16191,0.021 -0.0585,0.01 -0.11713,0.011 -0.17545,0.024 -0.0882,0.021 -0.17271,0.053 -0.25621,0.087 -0.022,0.01 -0.045,0.013 -0.0671,0.023 -0.0249,0.011 -0.0445,0.028 -0.0685,0.04 -0.0776,0.04 -0.15472,0.081 -0.22595,0.1324 -0.0515,0.037 -0.0946,0.081 -0.14118,0.1229 -0.0381,0.034 -0.0789,0.064 -0.11395,0.1018 -0.0499,0.053 -0.0914,0.1135 -0.13336,0.1725 -0.0235,0.032 -0.0516,0.062 -0.0735,0.097 -0.0616,0.099 -0.11317,0.2034 -0.15335,0.3124 l -3.90752,10.4727 c -0.16817,0.4509 -0.13786,0.9274 0.0474,1.3332 0.18517,0.4058 0.52526,0.7404 0.97637,0.9089 0.90154,0.3364 1.90534,-0.1219 2.24138,-1.0233 l 2.43774,-6.5343 z"
- id="path6172-3-1"
- sodipodi:nodetypes="csssccccccccccccccccsscccc"
- style="fill:#00aa00;fill-opacity:1" />
- <path
- style="fill:none;stroke:#00aa00;stroke-width:3.40098977;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 895.89354,1083.8468 c 24.7634,42.0036 -93.33751,37.5591 -91.21859,-0.7267"
- id="path22571-4"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <text
- xml:space="preserve"
- style="font-size:9.06930542px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
- x="760.54181"
- y="767.6051"
- id="text24183"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan24185"
- x="760.54181"
- y="767.6051" /></text>
- <g
- id="g24139-6"
- transform="matrix(0.22673265,0,0,0.22673265,412.54863,1077.8342)">
- <g
- id="g18376-2-5-2"
- transform="translate(1556.6223,-573.3313)">
- <path
- style="fill:#000000;fill-rule:evenodd"
- inkscape:connector-curvature="0"
- clip-rule="evenodd"
- d="m 501.08191,278.17762 c -7.21715,-13.9489 -14.06128,-28.08879 -21.39661,-41.97333 -3.73599,-7.06836 -5.80633,-15.24365 -13.12689,-20.35459 5.41537,-4.7453 6.07435,-10.74843 6.06327,-17.14198 -0.0718,-40.55881 -0.13243,-81.11551 0.0216,-121.669045 0.0464,-11.512935 -7.81863,-19.188576 -19.08306,-19.140036 -63.10508,0.290184 -126.20384,0.299154 -189.30153,-0.0016 -11.65486,-0.0554 -19.31942,7.967409 -19.26244,19.332085 0.22951,40.914946 0.12187,81.826726 0.0644,122.740616 -0.0143,5.95194 1.03886,11.37153 5.43014,15.34917 -2.53569,3.52073 -5.24706,6.45898 -7.02036,9.88157 -8.41693,16.26246 -16.16379,32.89267 -24.97854,48.92404 -5.47288,9.93486 -5.58368,19.86866 -3.65316,30.40446 0.98135,5.3758 4.14067,8.83427 9.05112,10.53053 2.74356,0.95444 5.79841,1.40766 8.71397,1.40766 84.09755,0.0765 168.18824,0.0638 252.27841,0.0638 0.84206,0 1.67621,0.0164 2.51088,-0.0143 8.26287,-0.25747 13.97951,-4.80334 15.51959,-12.88418 0.77348,-4.06733 0.9096,-8.26868 1.13172,-12.41304 0.25009,-4.59916 -0.81357,-8.88281 -2.96252,-13.04194 z M 255.01081,77.482921 c 0,-7.736317 2.21332,-9.910589 10.09315,-9.910589 31.23914,-0.0016 62.48567,0 93.7322,0 31.24283,0 62.48567,-0.0016 93.72481,0 7.86558,0 10.10369,2.192211 10.10369,9.915865 0,41.026273 0,82.043573 0,123.068263 0,7.59808 -2.37054,9.92642 -10.11055,9.92642 -62.4862,0.002 -124.97187,0.002 -187.46123,0 -7.75057,0 -10.08207,-2.29985 -10.08207,-9.93223 0,-41.02627 0,-82.04884 0,-123.067729 z M 485.50534,295.0405 c -42.21391,0.0105 -84.4273,0.01 -126.63383,0.01 -41.97702,0 -83.95405,-0.15776 -125.9279,0.13084 -7.91887,0.0538 -11.71554,-5.06503 -7.81862,-12.52541 9.23736,-17.71075 18.06213,-35.63201 27.15651,-53.42453 2.99048,-5.85223 8.05868,-8.49713 14.56989,-8.49713 33.63185,0 67.25683,0 100.88129,0 27.42823,0 54.8496,0.0433 82.27783,-0.029 7.57171,-0.0153 12.76495,3.15246 16.17488,10.0235 8.69973,17.58095 17.67909,35.02526 26.51494,52.54132 3.52812,7.00399 0.6057,11.77093 -7.19499,11.77093 z"
- id="path3978-8-9-1" />
- <path
- style="fill:#000000;fill-rule:evenodd"
- inkscape:connector-curvature="0"
- clip-rule="evenodd"
- d="m 394.57369,260.00786 c -0.81674,-3.51387 -2.85806,-5.19378 -6.57611,-5.18217 -19.4413,0.0712 -38.87891,0.0681 -58.31651,0 -3.70381,-0.007 -5.77362,1.63453 -6.58297,5.16581 -1.27523,5.56046 -2.5647,11.11565 -3.91116,16.6587 -1.51845,6.2933 -0.19363,8.04391 6.35715,8.06026 11.08557,0.0238 22.17748,0.005 33.27043,0.005 11.44699,-0.003 22.89397,0.0507 34.34834,-0.029 5.07876,-0.0322 6.74441,-2.20751 5.61639,-7.00188 -1.38286,-5.89655 -2.83009,-11.78149 -4.20556,-17.67698 z"
- id="path3980-4-3-9" />
- </g>
- <path
- inkscape:connector-curvature="0"
- id="path22569-4-9"
- d="m 1896.7513,-467.46056 -149.5,77.5"
- style="fill:#ff6600;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0" />
- <g
- transform="matrix(-0.4635429,-0.88607448,0.88607448,-0.4635429,1676.0867,-18.065512)"
- id="g14024-0-6">
- <path
- id="path4152-4-1-32-8-7-0"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.16666651;stroke-miterlimit:10"
- inkscape:connector-curvature="0"
- stroke-miterlimit="10"
- d="m 111.07874,568.33943 -30.0517,-0.14345 c -7.07098,-0.0338 -12.93534,-5.95437 -13.0482,-13.17337 l 0.41101,-55.24138 55.97864,0.26721 -0.11638,55.24279 c -0.18177,7.21759 -5.95437,12.93535 -13.17337,13.0482 z" />
- <rect
- style="fill:none;stroke:#000000;stroke-width:4.16662645;stroke-miterlimit:10"
- x="79.12117"
- y="472.33014"
- transform="matrix(0.99998861,0.00477338,-0.00477338,0.99998861,0,0)"
- stroke-miterlimit="10"
- width="39.374622"
- height="27.083073"
- id="rect4154-4-7-9-8-4-5" />
- <g
- transform="translate(-92.994948,1.292888)"
- id="g13759-0-6-0">
- <g
- transform="matrix(1.4801542,-1.2750407,1.4660905,1.2872717,118.56439,514.05907)"
- id="g4156-7-9-0-41-3-6">
- <line
- id="line4158-7-8-0-5-6-5"
- y2="13.948482"
- x2="39.013733"
- y1="12.348352"
- x1="40.6609"
- stroke-miterlimit="10"
- style="fill:none;stroke:#000000;stroke-width:1.9764694;stroke-miterlimit:10" />
- <line
- id="line4160-1-9-1-3-0-8"
- y2="8.9484825"
- x2="34.013733"
- y1="7.3483534"
- x1="35.6609"
- stroke-miterlimit="10"
- style="fill:none;stroke:#000000;stroke-width:1.97647011;stroke-miterlimit:10" />
- </g>
- </g>
- </g>
- <g
- id="g22288-2-3"
- transform="matrix(-0.48868944,0.87245781,-0.87245781,-0.48868944,2318.0382,-317.6264)">
- <path
- style="fill:none;stroke:#000000;stroke-width:4.16666651;stroke-miterlimit:10"
- inkscape:connector-curvature="0"
- stroke-miterlimit="10"
- d="m 271.73055,566.76226 -30.0517,-0.14345 c -7.07099,-0.0338 -12.93535,-5.95437 -13.04821,-13.17337 l 0.41101,-55.24138 55.97865,0.26721 -0.11638,55.24279 c -0.18177,7.21759 -5.95437,12.93535 -13.17337,13.0482 z"
- id="path4152-4-1-3-79-1" />
- <rect
- style="fill:none;stroke:#000000;stroke-width:4.16662645;stroke-miterlimit:10"
- x="239.76363"
- y="469.98615"
- transform="matrix(0.99998861,0.00477338,-0.00477338,0.99998861,0,0)"
- stroke-miterlimit="10"
- width="39.374622"
- height="27.083073"
- id="rect4154-4-7-7-25-3" />
- <text
- xml:space="preserve"
- style="font-size:32.15980148px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
- x="-556.10962"
- y="277.49564"
- id="text5311-7-6-8-1"
- sodipodi:linespacing="125%"
- transform="matrix(0.01414842,-0.99989991,0.99989991,0.01414842,0,0)"><tspan
- sodipodi:role="line"
- id="tspan5313-5-2-7-3"
- x="-556.10962"
- y="277.49564">ISO</tspan></text>
- <path
- style="fill:#000000;fill-opacity:1"
- id="path4818-2-4-3-6-1-0-4-2-4-6-5"
- d="m 266.57856,486.23883 c 0.031,4.18563 -4.38849,6.53271 -9.31446,6.53271 -4.92401,0 -9.42093,-2.6759 -9.42948,-6.53271 2.01684,0 16.95283,0 18.74394,0 z"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cscc" />
- <g
- transform="translate(67.92871,0.39555892)"
- id="g13759-1-9-3-8">
- <g
- transform="matrix(1.4801542,-1.2750407,1.4660905,1.2872717,118.56439,514.05907)"
- id="g4156-7-9-0-4-3-6-2">
- <line
- id="line4158-7-8-0-9-3-8-9"
- y2="13.948482"
- x2="39.013733"
- y1="12.348352"
- x1="40.6609"
- stroke-miterlimit="10"
- style="fill:none;stroke:#000000;stroke-width:1.9764694;stroke-miterlimit:10" />
- <line
- id="line4160-1-9-1-1-1-3-6"
- y2="8.9484825"
- x2="34.013733"
- y1="7.3483534"
- x1="35.6609"
- stroke-miterlimit="10"
- style="fill:none;stroke:#000000;stroke-width:1.97647011;stroke-miterlimit:10" />
- </g>
- </g>
- </g>
- </g>
- <path
- inkscape:connector-curvature="0"
- d="m 882.49189,987.91532 -5.02278,-1.57042 c -0.693,-0.2167 -1.43062,0.16956 -1.64723,0.86257 -0.21681,0.69297 0.16953,1.4306 0.86252,1.64725 l 8.05213,2.51759 0,0 c 0.0826,0.0256 0.16783,0.0427 0.25401,0.0521 0.0352,0.003 0.0697,4.9e-4 0.10437,0.001 0.0507,10e-4 0.10124,0.005 0.15237,2.2e-4 0.0416,-0.004 0.0806,-0.0147 0.12114,-0.0222 0.044,-0.008 0.0878,-0.0129 0.13121,-0.0256 0.0656,-0.0195 0.12793,-0.0469 0.18948,-0.0762 0.0161,-0.008 0.0332,-0.0116 0.0496,-0.02 0.0181,-0.009 0.0327,-0.0228 0.05,-0.0328 0.0569,-0.0331 0.11326,-0.0671 0.16484,-0.10894 0.0376,-0.0299 0.068,-0.0649 0.10133,-0.0983 0.0274,-0.0274 0.0569,-0.0516 0.0817,-0.0813 0.0357,-0.0422 0.064,-0.0893 0.0935,-0.13541 0.0166,-0.0253 0.0362,-0.049 0.0512,-0.0763 0.042,-0.0772 0.0769,-0.15785 0.1029,-0.24156 l 2.51689,-8.04994 c 0.10838,-0.34649 0.066,-0.7043 -0.09,-1.00249 -0.15599,-0.29818 -0.42588,-0.53644 -0.77267,-0.64495 -0.69295,-0.21672 -1.43057,0.16952 -1.64693,0.86236 l -1.57019,5.02262 z"
- id="path6172-3-1-2"
- sodipodi:nodetypes="csssccccccccccccccccsscccc"
- style="fill:#00aa00;fill-opacity:1" />
- <path
- style="fill:none;stroke:#00aa00;stroke-width:3.40098977;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 884.33685,988.60395 c -7.31333,-6.38658 0.0347,-58.38708 -33.1102,-13.72065"
- id="path22571-4-7"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <text
- xml:space="preserve"
- style="font-size:9.06930542px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
- x="837.26477"
- y="983.53394"
- id="text24274"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan24276"
- x="837.26477"
- y="983.53394">Tails</tspan></text>
- <g
- id="g24462"
- transform="matrix(0.05534768,0,0,0.05534768,559.71708,1037.1234)">
- <g
- transform="translate(844.34482,-9.2785145)"
- id="g24392">
- <path
- id="path4597"
- d="m 2016.5308,231.207 c 0.9912,-0.42169 1.9551,-0.9074 2.8839,-1.453 5.1896,-2.45892 9.4836,-6.75908 11.9352,-11.95214 2.4514,-5.19301 3.0424,-11.24128 1.6425,-16.81073 l -9.3191,-41.25679 30.95,-40.71681 35.1446,-7.93862 c 6.4002,-1.44637 12.1657,-5.51824 15.6692,-11.06617 3.5035,-5.548123 4.7018,-12.503976 3.2568,-18.904567 -0.2061,-1.819583 -0.6114,-3.616612 -1.2079,-5.348077 l -4.3145,-19.100397 -20.6283,4.659507 -3.8201,0.862787 -97.7938,22.089739 -24.4483,5.522418 5.5225,24.44845 22.0897,97.79359 c 0.1947,1.55668 0.5478,3.093 1.0354,4.58422 l 4.487,19.86426 19.8643,-4.48696 c 2.3711,0.0718 4.7522,-0.19519 7.0484,-0.79045 z"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#bebebe;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccsccccscccccccccccccc" />
- <path
- inkscape:connector-curvature="0"
- d="m 1811.1482,84.604931 a 32.652676,32.660298 0 0 0 -11.3666,4.37325 c -34.4001,19.907029 -63.0697,47.868959 -83.073,82.216229 -63.3309,108.74698 -26.5242,249.77362 82.1979,313.12086 108.7222,63.34758 249.7155,26.53074 313.0464,-82.21623 63.3342,-108.74665 26.5275,-249.77329 -82.1946,-313.120859 a 32.919987,32.92767 0 1 0 -33.2312,56.851539 c 78.2306,45.57997 104.1572,144.78698 58.5896,223.03324 -45.5708,78.24626 -144.7549,104.18075 -222.9823,58.60077 -77.8909,-45.38438 -104.2225,-144.06829 -59.4615,-222.15846 l 0.8817,-0.87511 c 14.289,-24.53497 34.8899,-45.2554 59.4615,-59.47522 a 32.652676,32.660298 0 0 0 -21.8613,-60.350329 z"
- id="path3869-2"
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.333606;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
- </g>
- <path
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
- id="path4710"
- d="m 2751.5327,16.142457 a 32.656485,32.656485 0 0 0 -25.5087,32.65322 l 0,163.266103 a 32.656485,32.656485 0 1 0 65.3064,0 l 0,-163.266103 a 32.656485,32.656485 0 0 0 -39.7977,-32.65322 z"
- inkscape:connector-curvature="0" />
- </g>
- <g
- transform="matrix(0.22673265,0,0,0.22673265,629.93163,1021.1351)"
- id="g18376-2-2">
- <path
- id="path3978-8-8"
- d="m 501.08191,278.17762 c -7.21715,-13.9489 -14.06128,-28.08879 -21.39661,-41.97333 -3.73599,-7.06836 -5.80633,-15.24365 -13.12689,-20.35459 5.41537,-4.7453 6.07435,-10.74843 6.06327,-17.14198 -0.0718,-40.55881 -0.13243,-81.11551 0.0216,-121.669045 0.0464,-11.512935 -7.81863,-19.188576 -19.08306,-19.140036 -63.10508,0.290184 -126.20384,0.299154 -189.30153,-0.0016 -11.65486,-0.0554 -19.31942,7.967409 -19.26244,19.332085 0.22951,40.914946 0.12187,81.826726 0.0644,122.740616 -0.0143,5.95194 1.03886,11.37153 5.43014,15.34917 -2.53569,3.52073 -5.24706,6.45898 -7.02036,9.88157 -8.41693,16.26246 -16.16379,32.89267 -24.97854,48.92404 -5.47288,9.93486 -5.58368,19.86866 -3.65316,30.40446 0.98135,5.3758 4.14067,8.83427 9.05112,10.53053 2.74356,0.95444 5.79841,1.40766 8.71397,1.40766 84.09755,0.0765 168.18824,0.0638 252.27841,0.0638 0.84206,0 1.67621,0.0164 2.51088,-0.0143 8.26287,-0.25747 13.97951,-4.80334 15.51959,-12.88418 0.77348,-4.06733 0.9096,-8.26868 1.13172,-12.41304 0.25009,-4.59916 -0.81357,-8.88281 -2.96252,-13.04194 z M 255.01081,77.482921 c 0,-7.736317 2.21332,-9.910589 10.09315,-9.910589 31.23914,-0.0016 62.48567,0 93.7322,0 31.24283,0 62.48567,-0.0016 93.72481,0 7.86558,0 10.10369,2.192211 10.10369,9.915865 0,41.026273 0,82.043573 0,123.068263 0,7.59808 -2.37054,9.92642 -10.11055,9.92642 -62.4862,0.002 -124.97187,0.002 -187.46123,0 -7.75057,0 -10.08207,-2.29985 -10.08207,-9.93223 0,-41.02627 0,-82.04884 0,-123.067729 z M 485.50534,295.0405 c -42.21391,0.0105 -84.4273,0.01 -126.63383,0.01 -41.97702,0 -83.95405,-0.15776 -125.9279,0.13084 -7.91887,0.0538 -11.71554,-5.06503 -7.81862,-12.52541 9.23736,-17.71075 18.06213,-35.63201 27.15651,-53.42453 2.99048,-5.85223 8.05868,-8.49713 14.56989,-8.49713 33.63185,0 67.25683,0 100.88129,0 27.42823,0 54.8496,0.0433 82.27783,-0.029 7.57171,-0.0153 12.76495,3.15246 16.17488,10.0235 8.69973,17.58095 17.67909,35.02526 26.51494,52.54132 3.52812,7.00399 0.6057,11.77093 -7.19499,11.77093 z"
- clip-rule="evenodd"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-rule:evenodd" />
- <path
- id="path3980-4-5"
- d="m 394.57369,260.00786 c -0.81674,-3.51387 -2.85806,-5.19378 -6.57611,-5.18217 -19.4413,0.0712 -38.87891,0.0681 -58.31651,0 -3.70381,-0.007 -5.77362,1.63453 -6.58297,5.16581 -1.27523,5.56046 -2.5647,11.11565 -3.91116,16.6587 -1.51845,6.2933 -0.19363,8.04391 6.35715,8.06026 11.08557,0.0238 22.17748,0.005 33.27043,0.005 11.44699,-0.003 22.89397,0.0507 34.34834,-0.029 5.07876,-0.0322 6.74441,-2.20751 5.61639,-7.00188 -1.38286,-5.89655 -2.83009,-11.78149 -4.20556,-17.67698 z"
- clip-rule="evenodd"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-rule:evenodd" />
- </g>
- <path
- style="fill:#ff6600;stroke:#000000;stroke-width:0.22673266px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0"
- d="m 707.04998,1045.1395 -33.89651,17.5717"
- id="path22569-8"
- inkscape:connector-curvature="0" />
- <g
- transform="matrix(-0.11080185,0.19781467,-0.19781467,-0.11080185,802.61826,1078.8522)"
- id="g22288-2-9">
- <path
- id="path4152-4-1-3-79-8"
- d="m 271.73055,566.76226 -30.0517,-0.14345 c -7.07099,-0.0338 -12.93535,-5.95437 -13.04821,-13.17337 l 0.41101,-55.24138 55.97865,0.26721 -0.11638,55.24279 c -0.18177,7.21759 -5.95437,12.93535 -13.17337,13.0482 z"
- stroke-miterlimit="10"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:4.16666651;stroke-miterlimit:10" />
- <rect
- id="rect4154-4-7-7-25-2"
- height="27.083073"
- width="39.374622"
- stroke-miterlimit="10"
- transform="matrix(0.99998861,0.00477338,-0.00477338,0.99998861,0,0)"
- y="469.98615"
- x="239.76363"
- style="fill:none;stroke:#000000;stroke-width:4.16662645;stroke-miterlimit:10" />
- <text
- transform="matrix(0.01414842,-0.99989991,0.99989991,0.01414842,0,0)"
- sodipodi:linespacing="125%"
- id="text5311-7-6-8-2"
- y="277.49564"
- x="-556.10962"
- style="font-size:32.15980148px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
- xml:space="preserve"><tspan
- y="277.49564"
- x="-556.10962"
- id="tspan5313-5-2-7-34"
- sodipodi:role="line">ISO</tspan></text>
- <path
- sodipodi:nodetypes="cscc"
- inkscape:connector-curvature="0"
- d="m 266.57856,486.23883 c 0.031,4.18563 -4.38849,6.53271 -9.31446,6.53271 -4.92401,0 -9.42093,-2.6759 -9.42948,-6.53271 2.01684,0 16.95283,0 18.74394,0 z"
- id="path4818-2-4-3-6-1-0-4-2-4-6-7"
- style="fill:#000000;fill-opacity:1" />
- <g
- id="g13759-1-9-3-1"
- transform="translate(67.92871,0.39555892)">
- <g
- id="g4156-7-9-0-4-3-6-29"
- transform="matrix(1.4801542,-1.2750407,1.4660905,1.2872717,118.56439,514.05907)">
- <line
- style="fill:none;stroke:#000000;stroke-width:1.9764694;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="40.6609"
- y1="12.348352"
- x2="39.013733"
- y2="13.948482"
- id="line4158-7-8-0-9-3-8-0" />
- <line
- style="fill:none;stroke:#000000;stroke-width:1.97647011;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="35.6609"
- y1="7.3483534"
- x2="34.013733"
- y2="8.9484825"
- id="line4160-1-9-1-1-1-3-8" />
- </g>
- </g>
- </g>
- <text
- xml:space="preserve"
- style="font-size:9.06930542px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
- x="837.55408"
- y="1056.5741"
- id="text24274-5"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan24276-4"
- x="837.55408"
- y="1056.5741">Tails</tspan></text>
- <g
- transform="matrix(0.22673265,0,0,0.22673265,889.50898,1021.9329)"
- id="g18376-2-5-13">
- <path
- id="path3978-8-9-0"
- d="m 501.08191,278.17762 c -7.21715,-13.9489 -14.06128,-28.08879 -21.39661,-41.97333 -3.73599,-7.06836 -5.80633,-15.24365 -13.12689,-20.35459 5.41537,-4.7453 6.07435,-10.74843 6.06327,-17.14198 -0.0718,-40.55881 -0.13243,-81.11551 0.0216,-121.669045 0.0464,-11.512935 -7.81863,-19.188576 -19.08306,-19.140036 -63.10508,0.290184 -126.20384,0.299154 -189.30153,-0.0016 -11.65486,-0.0554 -19.31942,7.967409 -19.26244,19.332085 0.22951,40.914946 0.12187,81.826726 0.0644,122.740616 -0.0143,5.95194 1.03886,11.37153 5.43014,15.34917 -2.53569,3.52073 -5.24706,6.45898 -7.02036,9.88157 -8.41693,16.26246 -16.16379,32.89267 -24.97854,48.92404 -5.47288,9.93486 -5.58368,19.86866 -3.65316,30.40446 0.98135,5.3758 4.14067,8.83427 9.05112,10.53053 2.74356,0.95444 5.79841,1.40766 8.71397,1.40766 84.09755,0.0765 168.18824,0.0638 252.27841,0.0638 0.84206,0 1.67621,0.0164 2.51088,-0.0143 8.26287,-0.25747 13.97951,-4.80334 15.51959,-12.88418 0.77348,-4.06733 0.9096,-8.26868 1.13172,-12.41304 0.25009,-4.59916 -0.81357,-8.88281 -2.96252,-13.04194 z M 255.01081,77.482921 c 0,-7.736317 2.21332,-9.910589 10.09315,-9.910589 31.23914,-0.0016 62.48567,0 93.7322,0 31.24283,0 62.48567,-0.0016 93.72481,0 7.86558,0 10.10369,2.192211 10.10369,9.915865 0,41.026273 0,82.043573 0,123.068263 0,7.59808 -2.37054,9.92642 -10.11055,9.92642 -62.4862,0.002 -124.97187,0.002 -187.46123,0 -7.75057,0 -10.08207,-2.29985 -10.08207,-9.93223 0,-41.02627 0,-82.04884 0,-123.067729 z M 485.50534,295.0405 c -42.21391,0.0105 -84.4273,0.01 -126.63383,0.01 -41.97702,0 -83.95405,-0.15776 -125.9279,0.13084 -7.91887,0.0538 -11.71554,-5.06503 -7.81862,-12.52541 9.23736,-17.71075 18.06213,-35.63201 27.15651,-53.42453 2.99048,-5.85223 8.05868,-8.49713 14.56989,-8.49713 33.63185,0 67.25683,0 100.88129,0 27.42823,0 54.8496,0.0433 82.27783,-0.029 7.57171,-0.0153 12.76495,3.15246 16.17488,10.0235 8.69973,17.58095 17.67909,35.02526 26.51494,52.54132 3.52812,7.00399 0.6057,11.77093 -7.19499,11.77093 z"
- clip-rule="evenodd"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-rule:evenodd" />
- <path
- id="path3980-4-3-2"
- d="m 394.57369,260.00786 c -0.81674,-3.51387 -2.85806,-5.19378 -6.57611,-5.18217 -19.4413,0.0712 -38.87891,0.0681 -58.31651,0 -3.70381,-0.007 -5.77362,1.63453 -6.58297,5.16581 -1.27523,5.56046 -2.5647,11.11565 -3.91116,16.6587 -1.51845,6.2933 -0.19363,8.04391 6.35715,8.06026 11.08557,0.0238 22.17748,0.005 33.27043,0.005 11.44699,-0.003 22.89397,0.0507 34.34834,-0.029 5.07876,-0.0322 6.74441,-2.20751 5.61639,-7.00188 -1.38286,-5.89655 -2.83009,-11.78149 -4.20556,-17.67698 z"
- clip-rule="evenodd"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-rule:evenodd" />
- </g>
- <text
- xml:space="preserve"
- style="font-size:9.06930542px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans"
- x="959.59619"
- y="1055.0935"
- id="text24274-5-3"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan24276-4-9"
- x="959.59619"
- y="1055.0935">Tails</tspan></text>
- <g
- id="g14041-2"
- transform="matrix(-0.11047841,-0.19089588,0.19089588,-0.11047841,943.65201,1185.8845)">
- <path
- d="m 301.5747,566.4861 -30.0517,-0.14345 c -7.07099,-0.0338 -12.93535,-5.95437 -13.04821,-13.17337 l 0.41101,-55.24138 55.97865,0.26721 -0.11638,55.24279 c -0.18177,7.21759 -5.95437,12.93535 -13.17337,13.0482 z"
- stroke-miterlimit="10"
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.16666651;stroke-miterlimit:10"
- id="path4152-4-1-5" />
- <rect
- id="rect4154-4-7-8"
- height="27.083073"
- width="39.374622"
- stroke-miterlimit="10"
- transform="matrix(0.99998861,0.00477338,-0.00477338,0.99998861,0,0)"
- y="469.56754"
- x="269.60611"
- style="fill:none;stroke:#000000;stroke-width:4.16662645;stroke-miterlimit:10" />
- <path
- inkscape:connector-curvature="0"
- d="m 300.72986,549.73132 -28.18282,0 c -0.86313,0 -1.55809,-0.74461 -1.54731,-1.66072 l 0.21872,-18.56457 c 0.0135,-0.91525 0.71395,-1.65986 1.57709,-1.65986 l 3.54795,0 0,-5.80177 c 0.001,-6.22198 4.82143,-11.20417 10.64493,-11.20417 5.82216,0 10.49791,5.01611 10.44199,11.20417 l 0,5.80177 3.54795,0 c 0.86273,0 1.55768,0.74461 1.54704,1.65986 l -0.21872,18.56422 c -0.0135,0.91802 -0.71422,1.66107 -1.57682,1.66107 z M 292.4664,522.3761 c 0.0297,-3.27502 -2.44548,-5.92979 -5.5269,-5.92979 -3.08235,0 -5.60451,2.65477 -5.63403,5.92979 l 9.5e-4,5.47007 11.16133,0 -9.5e-4,-5.47007 z"
- id="path5189-4-8-1-2-2-0-5-7-1"
- style="fill:#ffffff;fill-opacity:1" />
- <g
- id="g13759-1-2"
- transform="translate(97.608432,0.232262)">
- <g
- id="g4156-7-9-0-4-7"
- transform="matrix(1.4801542,-1.2750407,1.4660905,1.2872717,118.56439,514.05907)">
- <line
- style="fill:none;stroke:#000000;stroke-width:1.9764694;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="40.6609"
- y1="12.348352"
- x2="39.013733"
- y2="13.948482"
- id="line4158-7-8-0-9-30" />
- <line
- style="fill:none;stroke:#000000;stroke-width:1.97647011;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="35.6609"
- y1="7.3483534"
- x2="34.013733"
- y2="8.9484825"
- id="line4160-1-9-1-1-18" />
- </g>
- </g>
- <path
- sodipodi:nodetypes="cscc"
- inkscape:connector-curvature="0"
- d="m 296.44325,486.01559 c 0.031,4.18563 -4.38849,6.53271 -9.31446,6.53271 -4.92401,0 -9.42093,-2.6759 -9.42948,-6.53271 2.01684,0 16.95283,0 18.74394,0 z"
- id="path4818-2-4-3-6-1-0-4-2-7"
- style="fill:#000000;fill-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/wiki/src/blueprint/bootstrapping/assistant/mac.mdwn b/wiki/src/blueprint/bootstrapping/assistant/mac.mdwn
index 4614f8c..57d8b30 100644
--- a/wiki/src/blueprint/bootstrapping/assistant/mac.mdwn
+++ b/wiki/src/blueprint/bootstrapping/assistant/mac.mdwn
@@ -5,10 +5,12 @@ Global process:
- Second step (difficult solution):
- Maintain a list of Macs and their compatibility
+<a id="generic"></a>
-Generic instructions that would work in most of the case
-========================================================
-Implementation is happening there : [[!tails_ticket 9316]]
+Generic instructions that would work in most cases
+==================================================
+
+Implementation is happening there: [[!tails_ticket 9316]]
Truths about Mac:
@@ -55,10 +57,6 @@ Algorithm:
- if works → happy
- else → try temporary Tails
-
-
-
-
List of compatibility with Mac
==============================
@@ -70,31 +68,29 @@ Seeing that:
We will maintain the state of Tails compatibility on these computers.
-
Roadmap
-------
-1 Bootstrap
------------
-- Specifing the data type.
+Bootstrap
+---------
+
+- Specifying the data type.
- Know the precise models. #9322
- Setup a git repo.
+Start to fill it
+----------------
-2 Start to fill it
-------------------
- Frontdesk starts to fill it
+Have it on the website
+----------------------
-3 Have it on the website
-------------------------
- Full list in markdown thanks to a routine
- In the web installation assistant
- In/linked in the troubleshooting section
- Maybe later an interactive app in the assistant
-
-
### Data type
The data could be stored in a YAML file, in the git repo. See [[!tails_ticket 9892]] for work in progress.
@@ -104,10 +100,9 @@ The data could be stored in a YAML file, in the git repo. See [[!tails_ticket 98
- Fields ("strings", boolean?):
"model id"
- - "Tails version" | DVD? | dd ? | tails installer? | SD? | wifi? | gaphic card? | mac address?
+ - "Tails version" | DVD? | dd ? | tails installer? | SD? | wifi? | gaphic card? | mac address?
- ... (an other user reports on this model)
-
Writing the report after the summit, I would add :
- Anonymised uniq identifier per users
@@ -127,12 +122,11 @@ Trying a yaml type (optional or not):
install: (required)
wifi: (optional)
mac_spoofing (optional)
- graphic_card (optional)
+ graphic_card (optional)
comments: (optional)
And some samples :
-
model_id: MacBookAir3.2
reports:
@@ -141,7 +135,7 @@ And some samples :
tails_version:1.5
media: usb
boot: true
- install: tails_installer
+ install: tails_installer
comments:
Touchpad not working.
@@ -175,7 +169,7 @@ And some samples :
versions) in this file, maybe we will have to show to the user only
the last relevant informations.
* "Comments" is raw information on harward issues (touchpad, bluetooth). The most common issues are fields (wifi, mac spoofing, graphic card)
-
+
### How to feed the list
diff --git a/wiki/src/blueprint/bootstrapping/assistant/overview/2nd_iteration/overview-20150324.odg b/wiki/src/blueprint/bootstrapping/assistant/overview/2nd_iteration/overview-20150324.odg
deleted file mode 100644
index ea1cfdb..0000000
--- a/wiki/src/blueprint/bootstrapping/assistant/overview/2nd_iteration/overview-20150324.odg
+++ /dev/null
Binary files differ
diff --git a/wiki/src/blueprint/bootstrapping/assistant/tails_installer.png b/wiki/src/blueprint/bootstrapping/assistant/tails_installer.png
deleted file mode 100644
index 7833677..0000000
--- a/wiki/src/blueprint/bootstrapping/assistant/tails_installer.png
+++ /dev/null
Binary files differ
diff --git a/wiki/src/blueprint/bootstrapping/assistant/windows.mdwn b/wiki/src/blueprint/bootstrapping/assistant/windows.mdwn
deleted file mode 100644
index 4704192..0000000
--- a/wiki/src/blueprint/bootstrapping/assistant/windows.mdwn
+++ /dev/null
@@ -1,436 +0,0 @@
-[[!meta title="Full synopsis for Windows USB scenario"]]
-
-[[!toc]]
-
-*Note: This page is part of our work on an [[*Installation
-Assistant*|assistant]] for Tails. It presents the full list of
-instructions for Windows user to install Tails on a flash memory.*
-
-*Note: Before getting to the full list of instructions, people will be
-presented an overview of the process. See the [draft
-wireframe](https://labs.riseup.net/code/attachments/download/782/overview-20150521-tchou.pdf).*
-
-Download and verify
-===================
-
-*Note: This section will correspond to the [[*Download and Verify Tails*
-browser extension|extension]]. See the [detailed
-wireframe](https://labs.riseup.net/code/attachments/download/764/extension-20150505.fodg).*
-
-Install a temporary Tails
-=========================
-
-Unfortunately *Tails Installer* is not yet available for Windows. As a
-consequence, you need to install the Tails ISO image on a first flash
-memory using a different program called *Universal USB Installer*. On
-this temporary Tails you won't benefit from important features like
-automatic upgrades or the possibility to create an encrypted persistent
-storage to store some of your personal files. After starting on this
-temporary Tails, you will be able to install the final Tails on a second
-flash memory using *Tails Installer*.
-
-<div class="tip">
-
-Although this program is called
-<span class="application">Universal USB Installer</span>, you can use it
-to install the Tails ISO image on a SD card.
-
-</div>
-
-1. Plug the first flash memory (USB stick or SD card) into the computer.
-
- <div class="caution">
-
- <p>All the data on this flash memory will be lost.</p>
-
- </div>
-
-1. Download <span class="application">Universal USB Installer</span>:
-
- <a class='download-file' href='http://www.pendrivelinux.com/downloads/Universal-USB-Installer/Universal-USB-Installer-1.9.6.0.exe'>Universal USB Installer</a>
-
-1. At the Windows security warning, click **Run** to run *Universal USB
-Installer* without saving.
-
-1. If a second security warning appears, also confirm that you want to
-run the program.
-
-1. Read the licence agreement and click **I Agree** to continue and
-start <span class="application">Universal USB Installer</span>.
-
- [[!img uui.png link=no alt="screenshot of Universal USB Installer"]]
-
-1. Select **Tails** from the drop-down list.
-
-1. Click **Browse** and choose the ISO image that you downloaded earlier.
-
-1. Use the drop-down list to specify the flash memory on which you want to install
-the ISO image. Click **Create**.
-
-1. A confirmation dialog appears. Click **Yes** to start the installation.
-
-1. After the installation is finished, click **Close** to quit *Universal USB
-Installer*.
-
-Restart on the temporary Tails
-==============================
-
-1. To be able to follow the rest of the instructions after shutting down
-the computer, we recommend you to either:
-
- - Open this page from your smartphone (recommended).
- - Print the rest of the instructions on paper.
- - Write down the URL of this page to be able to come back later:</br>
- <https://tails.boum.org/install/win/usb/4-restart-temporary>.
-
-1. Shut down the computer while leaving the first flash memory plugged in.
-
-1. Switch on the computer.
-
- - If the computer starts on Tails, the **Boot Tails** menu
- appears. Choose **Live** and press **Enter**.
-
- [[!img doc/first_steps/start_tails/tails_boot_menu.png link=no alt="Black screen with Tails artwork. 'Boot menu' with two options 'Live' and 'Live (failsafe)'."]]
-
- - If the computer starts on the usual operating system, refer to
- the troubleshooting section about [[Tails not starting at all|windows#not_at_all]].
-
-1. After 30&ndash;60 seconds, another screen called *Tails Greeter*, appears.
-
- [[!img doc/first_steps/startup_options/tails-greeter-welcome-to-tails.png link=no]]
-
- - If the computer stops responding or displays error messages before
- getting to *Tails Greeter*, refer to the troubleshooting section
- about [[Tails not starting entirely|windows#not_entirely]].
-
-1. In *Tails Greeter*, select your preferred language in the drop-down
-list on the bottom left of the screen. Click **Login**.
-
-1. After 15&ndash;30 seconds, the Tails desktop appears.
-
- [[!img desktop.png size=640x480 link=no]]
-
-<a id="not_at_all"></a>
-
-Troubleshooting: Tails does not start at all
---------------------------------------------
-
-The following section applies if the **Boot Tails** menu does not
-appear when starting on the flash memory.
-
-It is quite common for computers not to start automatically on a
-flash memory with Tails installed. Here are two troubleshooting techniques. You should try them
-one after the other.
-
-### Getting to the boot menu
-
-On most computer, you can press a *boot menu key* to display a list of possible
-devices to start from. The following screenshot is an example of such boot
-menu:
-
-[[!img bios_boot_menu.png link=no]]
-
-The following instructions explain how to display the boot menu key and
-start on the flash memory.
-
-1. Identify the potential boot menu keys for the computer depending on
-the computer manufacturer in the following list:
-
- <table>
- <tr><th>Manufacturer</th><th>Type</th><th>Models</th><th>Key</th><th>Notes</th></tr>
- <tr><td>Acer</td><td>*</td><td>*</td><td>Esc, F12, F9</td></tr>
- <tr><td>Acer</td><td>netbook</td><td>AspireOne </td><td>F12</td></tr>
- <tr><td>Acer</td><td>netbook</td><td>Aspire Timeline</td><td>F12</td></tr>
- <tr><td>Acer</td><td>netbook</td><td>Aspire v3, v5, v7</td><td>F12</td><td>Boot Menu must be enabled in BIOS. It is disabled by default. Please check manual of the computer on how to enable it.</td></tr>
- <tr><td>Apple</td><td>*</td><td>After 2006</td><td>Option</td></tr>
- <tr><td>Asus</td><td>desktop</td><td>*</td><td>F8</td></tr>
- <tr><td>Asus</td><td>laptop</td><td>*</td><td>Esc</td></tr>
- <tr><td>Asus</td><td>laptop</td><td>R503C</td><td>F8</td></tr>
- <tr><td>Asus</td><td>netbook</td><td>Eee PC 1025c</td><td>Esc</td></tr>
- <tr><td>Compaq</td><td>*</td><td>Presario</td><td>Esc, F9</td></tr>
- <tr><td>Dell</td><td>desktop</td><td>Dimension, Inspiron, Latitude</td><td>F12</td></tr>
- <tr><td>Dell</td><td>desktop</td><td>Inspiron One 2020, 2305, 2320, 2330 All-In-One</td><td>F12</td></tr>
- <tr><td>Dell</td><td>laptop</td><td>Inspiron</td><td> F12</td></tr>
- <tr><td>Dell</td><td>laptop</td><td>Precision</td><td>F12</td></tr>
- <tr><td>eMachines</td><td>*</td><td>*</td><td>F12</td></tr>
- <tr><td>HP</td><td>generic</td><td>*</td><td>Esc, F9</td></tr>
- <tr><td>HP</td><td>desktop</td><td>Media Center</td><td>Esc</td></tr>
- <tr><td>HP</td><td>desktop</td><td>Pavilion 23 All In One</td><td>Esc</td></tr>
- <tr><td>HP</td><td>desktop</td><td>Pavilion g6 and g7 </td><td>Esc</td></tr>
- <tr><td>HP</td><td>desktop</td><td>Pavilion HPE PC, h8-1287c</td><td>Esc</td></tr>
- <tr><td>HP</td><td>desktop</td><td>Pavilion PC, p6 2317c</td><td>Esc, then F9 for "Boot Menu"</td></tr>
- <tr><td>HP</td><td>desktop</td><td>Pavilion PC, p7 1297cb</td><td>Esc, then F9 for "Boot Menu"</td></tr>
- <tr><td>HP</td><td>desktop</td><td>TouchSmart 520 PC</td><td>Esc, then F9 for "Boot Menu"</td></tr>
- <tr><td>HP</td><td>laptop</td><td>2000</td><td>Esc</td></tr>
- <tr><td>HP</td><td>notebook</td><td>Pavilion</td><td>Esc</td></tr>
- <tr><td>HP</td><td>notebook</td><td>ENVY dv6 and dv7 PC</td><td>Esc, then F9 for "Boot Menu"</td></tr>
- <tr><td>Intel</td><td>*</td><td>*</td><td>F10</td></tr>
- <tr><td>Lenovo</td><td>desktop</td><td>*</td><td>F12, F8, F10</td></tr>
- <tr><td>Lenovo</td><td>laptop</td><td>*</td><td>F12</td></tr>
- <tr><td>Lenovo</td><td>laptop</td><td>IdeaPad P500</td><td>F12 or Fn + F11</td></tr>
- <tr><td>NEC</td><td>*</td><td>*</td><td>F5</td></tr>
- <tr><td>Packard Bell</td><td>*</td><td>*</td><td>F8</td></tr>
- <tr><td>Samsung</td><td>*</td><td>*</td><td>F12, Esc</td></tr>
- <tr><td>Samsung</td><td>netbook</td><td>NC10</td><td>Esc</td></tr>
- <tr><td>Samsung</td><td>ultrabook</td><td>Series 5 Ultra and Series 7 Chronos</td><td>Esc</td></tr>
- <tr><td>Sharp</td><td>*</td><td>*</td><td>F2</td></tr>
- <tr><td>Sony</td><td>*</td><td>VAIO, PCG, VGN</td><td>F11</td></tr>
- <tr><td>Sony</td><td>*</td><td>VGN</td><td>Esc, F10</td></tr>
- <tr><td>Toshiba</td><td>*</td><td>Protege, Satellite, Tecra</td><td>F12</td></tr>
- <tr><td>Toshiba</td><td>*</td><td>Equium</td><td>F12</td></tr>
- </table>
-
-1. Make sure that the first flash memory is plugged into the computer.
-
-1. Shut down the computer.
-
-1. Hold down the first potential boot menu key identified in step 1
-while you switch on the computer.
-
- - If a boot menu with a list of possible devices to start from
- appears, select your first flash memory in the list and press **Enter**.
-
- - If the computer starts on the usual operating system, repeat steps
- 2 and 3 for all the potential boot menu keys identified in step 1.
-
-If none of the potential boot menu keys identified in step 1 work or if
-your flash memory does not appear in the list, then try the second
-troubleshooting technique described below.
-
-### Edit the BIOS settings
-
-You might need to edit the BIOS settings of the computer. Consult the
-manual of the computer to know how to enter the BIOS settings.
-
-In the BIOS settings, try to apply the following changes one by one and
-restart the computer after each change. Some changes might not
-apply to certain computer models.
-
-1. Edit the **Boot Order**. Depending on the computer model you might
-see an entry for **removable devices** or **USB media**. Move this entry
-to the top of the list to force the computer to try to start from
-the first flash memory before starting from the internal hard disk.
-
-1. Disable **Fast boot**.
-
-1. If the computer is configured to start with **legacy BIOS**, try to
-configure it to start with **UEFI**. Else, if the computer is configured
-to start with **UEFI**, try to configure it to start with **legacy
-BIOS**. To do so, try any of the following options if available:
-
- - Enable Legacy mode
- - Disable Secure boot
- - Enable CSM boot
- - Disable UEFI
-
-1. Try to upgrade the BIOS to the latest version provided by the manufacturer.
-
-If none of these options work, please [[report the problem to our
-support team|doc/first_steps/bug_reporting/tails_does_not_start]].
-
-<a id="not_entirely"></a>
-
-Troubleshooting: Tails does not start entirely
-----------------------------------------------
-
-The following section applies if the **Boot Tails** menu appears but not
-*Tails Greeter* when starting Tails.
-
-1. Restart the computer on the first flash memory.
-
-1. In the **Boot Tails** menu, press `TAB`. A command line with a list
-of boot options appears at the bottom of the screen.
-
- [[!img doc/first_steps/startup_options/boot-menu-with-options.png link=no]]
-
-1. Remove the `quiet` option from the command line.
-
-1. Add the `debug` and `nosplash` options to the command line.
-
-1. To start Tails, press **Enter**.
-
-1. Hopefully, error messages now appear when starting Tails. You can
- [[send them to our support team by email|/support/talk]], for example by taking a
- picture of the last screen and error messages.
-
-1. If the error message is `/bin/sh: can't access tty; job control
- turned off` followed by `(initramfs)`, then try removing the
- `live-media=removable` option from the boot command line.
-
- <div class="caution">
-
- <strong>When removing this option, if an adversary installed a fake
- Tails on an internal hard disk, then you will likely start
- this dangerous operating system instead of the genuine Tails that
- you installed on the flash memory.</strong>
-
- </div>
-
- If removing `live-media=removable` allows you to start Tails, please
- report the problem to our [[support team|support/talk]].
- This contributes to improving the [[list
- of problematic USB sticks|support/known_issues#problematic-usb-sticks]].
- Then try installing Tails on another flash memory.
-
-Install the final Tails
-=======================
-
-1. After the Tails desktop appears, plug the second flash memory (USB stick or SD card) into the computer.
-
- <div class="caution">
-
- <p>All the data on this flash memory will be lost.</p>
-
- </div>
-
-1. Choose
- <span class="menuchoice">
- <span class="guimenu">Applications</span>&nbsp;▸
- <span class="guisubmenu">Tails</span>&nbsp;▸
- <span class="guimenuitem">Tails Installer</span>
- </span>
- to start <span class="application">Tails Installer</span>.
-
-1. Click on the <span class="button">Clone & Install</span> button.
-
- [[!img tails_installer.png link=no]]
-
-1. Use the <span class="guilabel">Target Device</span> drop-down list to
- specify your second flash memory.
-
-1. To start the installation, click on the <span
- class="button">Install Tails</span> button.
-
-1. Read the warning message in the pop-up window. Click on the <span
- class="button">Yes</span> button to confirm.
-
-Restart on the final Tails
-==========================
-
-1. Shut down the computer.
-
-1. Unplug the first flash memory and leave the second flash memory plugged in.
-
-1. Switch on the computer.
-
-1. In the **Boot Tails** menu, choose **Live** and press **Enter**.
-
-1. After 30&ndash;60 seconds, *Tails Greeter* appears.
-
-1. In *Tails Greeter*, select your preferred language in the drop-down
-list on the bottom left of the screen. Click **Login**.
-
-1. After 15&ndash;30 seconds, the Tails desktop appears.
-
-Create an encrypted persistent storage (optional)
-=================================================
-
-You can optionally create an *encrypted persistent storage* in the
-remaining free space on the second flash memory to store:
-
- - Your personal files and working documents
- - Some of your settings
- - Your encryption keys
-
-The data in the encrypted persistent storage:
-
- - Remains available across separate working sessions.
- - Is encrypted using a passphrase of your choice.
-
-Once the encrypted persistent storage is created, you can choose whether
-to activate it or not each time you start Tails.
-
-<div class="tip">
-
-If you don't want to store any data in Tails you can stop following
-these instructions and start enjoying Tails right now.
-
-</div>
-
-<div class="caution">
-
-<p><strong>The encrypted persistent storage is not hidden.</strong> An attacker in possession of
-the flash memory can know whether it has an encrypted persistent storage. Take into consideration
-that you can be forced or tricked to give out its passphrase.</p>
-
-</div>
-
-<div class="caution">
-
-<p><strong>Use the encrypted persistent storage only when necessary and
-to the minimum.</strong>
-You can always start Tails without activating the encrypted persistent storage. All the
-features of the encrypted persistent storage are optional and need to be explicitly
-activated. Only the files and folders that you specify are saved.</p>
-
-</div>
-
-<div class="caution">
-
-<p><strong>It is possible to
-open the encrypted persistent storage from other operating systems, but it might break
-your security.</strong>
-Other operating systems should probably not be trusted to handle
-sensitive information or leave no trace.</p>
-
-</div>
-
-1. Choose
- <span class="menuchoice">
- <span class="guimenu">Applications</span>&nbsp;▸
- <span class="guisubmenu">Tails</span>&nbsp;▸
- <span class="guimenuitem">Configure persistent volume</span></span> to
- start the *Persistence Assistant*. The assistant proposes to create
- an encrypted persistent volume on the flash memory.
-
-1. Specify a passphrase of your choice in both the
-<span class="guilabel">Passphrase</span> and <span class="guilabel">Verify
-Passphrase</span> text boxes. Click on the <span class="guilabel">Create</span> button.
-
-3. Wait for the creation to finish.
-
- <div class="bug">
-
- <strong>If the creation is interrupted before it finishes</strong>, you might not
- be able to start Tails from this flash memory anymore. This can happen if you
- close the window of the assistant or unplug the flash memory during the creation of
- the encrypted persistent storage. Reinstall the final Tails from the
- temporary Tails to fix this issue.
-
- </div>
-
-4. The assistant shows a list of the possible persistence features. Each
- feature corresponds to a set a files to be saved in the encrypted
- persistent storage.
-
- For the time being, we recommend you to only activate the **Personal
- Data** persistence feature. You can modify the configuration of the
- encrypted persistent storage later according to your needs.
-
- Refer to our documentation on [[configuring the encrypted persistent
- storage|doc/first_steps/persistence/configure]] to learn more about
- the other persistence features.
-
-5. Click **Save**.
-
-1. Shut down the computer and restart on the final Tails.
-
-1. In *Tails Greeter*:
-
- - Select your preferred language in the drop-down list on the bottom left of the screen.
- - In the <span class="guilabel">Use persistence?</span> section, choose <span class="guilabel">Yes</span> to
-enable the encrypted persistent storage for the current working session.
- - Enter the passphrase of the persistent volume in the
-<span class="guilabel">Passphrase</span> text box.</span>
- - If you select the <span class="guilabel">Read-Only</span> check box, the
-content of encrypted persistent storage is available and you can modify
-it but the changes are not be saved.
- - Click **Login**.
-
-1. After 15&ndash;30 seconds, the Tails desktop appears.
-
-1. You can now save your personal files and working documents in the
-**Persistent** folder. To open the **Persistent** folder choose
-<span class="menuchoice">
- <span class="guimenu">Places</span>&nbsp;▸
- <span class="guimenuitem">Persistent</span></span>.
diff --git a/wiki/src/blueprint/bootstrapping/extension.mdwn b/wiki/src/blueprint/bootstrapping/extension.mdwn
index e6f86d3..c600da1 100644
--- a/wiki/src/blueprint/bootstrapping/extension.mdwn
+++ b/wiki/src/blueprint/bootstrapping/extension.mdwn
@@ -16,7 +16,7 @@ The extension will be used as well by people doing full upgrades until
we automate the download and verification steps of a full upgrade in
Tails Upgrader. See the blueprint on [[upgrades|upgrade]].
-[[!toc]]
+[[!toc levels=2]]
Vision
======
@@ -220,17 +220,6 @@ mechanism would need to be of the "remote code execution vulnerability"
and would represent a threat in many more use cases than when verifying
an ISO image.
-Open questions
---------------
-
-As the verification mechanism totally depends on the integrity of web
-pages retrieved from our website and displayed to the user in their
-browser, it would also be vulnerable to an attacker who could manage to
-corrupt the verification mechanism or manipulate what is displayed to
-the user **from inside the browser**. We are [still
-investigating](https://mailman.boum.org/pipermail/tails-dev/2015-April/008648.html)
-whether such attacks are possible.
-
Checksum verification
---------------------
diff --git a/wiki/src/blueprint/bootstrapping/extension/prototype.mdwn b/wiki/src/blueprint/bootstrapping/extension/prototype.mdwn
index 979e328..0677ed6 100644
--- a/wiki/src/blueprint/bootstrapping/extension/prototype.mdwn
+++ b/wiki/src/blueprint/bootstrapping/extension/prototype.mdwn
@@ -1,132 +1,157 @@
[[!meta title="Download and verify"]]
-<div id="extension-version">1.0</div>
+<div id="download-and-verify">
+ <div id="extension-version">1.0</div>
-<div id="undetected-browser">
- <p>We failed to detect your browser vendor, maybe because JavaScript is disabled.</p>
- <p>You can download and verify the ISO image via:</p>
- <ul class="download-options">
- <li class="extension">
- <h2>Browser extension</h2>
- <p>(for Firefox, Tor Browser, or Chrome)</p>
- <a href="">I'm already in Firefox or Tor Broswer</a>
- <a href="">I'm already in Chrome</a>
- <p>Or copy and paste this link in Firefox, Tor Browser, or Chrome:</p>
- <p>https://tails.boum.org/download</p>
- </li>
- <li class="bittorrent">
- <h2>BitTorrent</h2>
- <a href=[[!inline pages="inc/stable_i386_torrent_url" raw="yes"]]>Download Torrent file</a>
- </li>
- </ul>
-</div>
-
-<div id="unsupported-browser">
- <p>You can download and verify the ISO image via:</p>
- <ul class="download-options">
- <li class="extension">
- <h2>Browser extension</h2>
- <p>(for Firefox, Tor Browser, or Chrome)</p>
- <p>Copy and paste this link in Firefox, Tor Browser, or Chrome:</p>
- <p>https://tails.boum.org/download</p>
- </li>
- <li class="bittorrent">
- <h2>BitTorrent</h2>
- <a href=[[!inline pages="inc/stable_i386_torrent_url" raw="yes"]]>Download Torrent file</a>
- </li>
- </ul>
-</div>
-
-<div id="supported-browser">
- <div id="use">
- <p>We detected that you are running Firefox or Tor Browser and already have our Firefox extension installed.</p>
- <a id="use-button" href="">
- <span id="use-button-label">Use Firefox extension</span>
- <div id="use-button-state>
- <span class="state already">Already installed</span>
+ <div id="undetected-browser">
+ <p>We failed to detect your browser vendor, maybe because JavaScript is disabled.</p>
+ <p>You can download and verify the ISO image via:</p>
+ <div class="row download-options">
+ <div class="col-md-6 extension">
+ <h2>Browser extension</h2>
+ <p>(for Firefox, Tor Browser, or Chrome)</p>
+ <a href="" class="btn btn-lg btn-primary">I'm already in Firefox or Tor Browser</a>
+ <a href="" class="btn btn-lg btn-primary">I'm already in Chrome</a>
+ <p>Or copy and paste this link in Firefox, Tor Browser, or Chrome:</p>
+ <code>https://tails.boum.org/download</code>
</div>
- </a>
- <div id="use-text">
- <span id="use-text-label">Use Firefox extension</span>
- <div id="use-text-state>
- <span class="state done">Done</span>
+ <div class="col-md-6 bittorrent">
+ <h2>BitTorrent</h2>
+ <a href="[[!inline pages="inc/stable_i386_torrent_url" raw="yes"]]" class="btn btn-lg btn-primary">Download Torrent file</a>
</div>
</div>
</div>
- <div id="update">
- <p>We detected that you are running Firefox of Tor Browser but have an outdated version of our Firefox extension.</p>
- <a id="update-button" href="">
- <span id="update-button-label">Update Firefox extension</span>
- <div id="update-state>
- <span class="state restartless">No restart</span>
+
+ <div id="unsupported-browser">
+ <p>You can download and verify the ISO image via:</p>
+ <div class="row download-options">
+ <div class="col-md-6 extension">
+ <h2>Browser extension</h2>
+ <p>(for Firefox, Tor Browser, or Chrome)</p>
+ <p>Copy and paste this link in Firefox, Tor Browser, or Chrome:</p>
+ <code>https://tails.boum.org/download</code>
</div>
- </a>
- <div id="update-text">
- <span id="update-button-label">Update Firefox extension</span>
- <div id="update-text-state>
- <span class="state done">Done</span>
+ <div class="col-md-6 bittorrent">
+ <h2>BitTorrent</h2>
+ <a href="[[!inline pages="inc/stable_i386_torrent_url" raw="yes"]]" class="btn btn-lg btn-primary">Download Torrent file</a>
</div>
</div>
</div>
- <div id="install">
- <p>We detected that you are running Firefox or Tor Browser.</p>
- <p>You can download and verify the ISO image via our Firefox extension.</p>
- <a id="install-button" href="">
- <span id="install-button-label">Install Firefox extension</span>
- <div id="install-button-state>
- <span class="state restartless">No restart</span>
+
+ <div id="supported-browser">
+ <div id="use">
+ <p>We detected that you are running Firefox or Tor Browser and already have our Firefox extension installed.</p>
+ <a id="use-button" href="" class="btn btn-lg btn-primary clearfix">
+ <span id="use-button-label" class="pull-left">Use Firefox extension</span>
+ <div id="use-button-state" class="pull-right">
+ <span class="label label-default state already">Already installed</span>
+ </div>
+ </a>
+ <div id="use-text" class="btn btn-lg disabled clearfix">
+ <span id="use-text-label" class="pull-left">Use Firefox extension</span>
+ <div id="use-text-state" class="pull-right">
+ <span class="label label-success state done">Done</span>
+ </div>
</div>
- </a>
- <div id="install-text">
- <span id="install-text-label">Install Firefox extension</span>
- <div id="install-text-state>
- <span class="state done">Done</span>
+ </div>
+ <div id="update">
+ <p>We detected that you are running Firefox of Tor Browser but have an outdated version of our Firefox extension.</p>
+ <a id="update-button" href="" class="btn btn-lg btn-primary clearfix">
+ <span id="update-button-label" class="pull-left">Update Firefox extension</span>
+ <div id="update-state" class="pull-right">
+ <span class="label label-default state restartless">No restart</span>
+ </div>
+ </a>
+ <div id="update-text" class="btn btn-lg disabled clearfix">
+ <span id="update-button-label" class="pull-left">Update Firefox extension</span>
+ <div id="update-text-state" class="pull-right">
+ <span class="label label-success state done">Done</span>
+ </div>
+ </div>
+ </div>
+ <div id="install">
+ <p>We detected that you are running Firefox or Tor Browser.</p>
+ <p>You can download and verify the ISO image via our Firefox extension.</p>
+ <a id="install-button" href="" class="btn btn-lg btn-primary clearfix">
+ <span id="install-button-label" class="pull-left">Install Firefox extension</span>
+ <div id="install-button-state" class="pull-right">
+ <span class="label label-default state restartless">No restart</span>
+ </div>
+ </a>
+ <div id="install-text" class="btn btn-lg disabled clearfix">
+ <span id="install-text-label" class="pull-left">Install Firefox extension</span>
+ <div id="install-text-state" class="pull-right">
+ <span class="label label-success state done">Done</span>
+ </div>
</div>
</div>
+ <p id="bittorrent-minor">or <a href="[[!inline pages="inc/stable_i386_torrent_url" raw="yes"]]" >Download via BitTorrent</a></p>
</div>
- <p id="bittorrent-minor">or <a href=[[!inline pages="inc/stable_i386_torrent_url" raw="yes"]]>Download via BitTorrent</a></p>
-</div>
-<a href="">I already have an ISO image.</a>
+ <a id="i_have_iso" href="">I already have an ISO image.</a>
-<div id="download">
- <a id="download-button" href=[[!inline pages="inc/stable_i386_iso_url" raw="yes"]]>
- <span id="download-button-label">Download Tails [[!inline pages="inc/stable_i386_version" raw="yes"]] ISO image</span>
- <span id="download-button-size">[[!inline pages="inc/stable_i386_iso_size" raw="yes"]]</span>
- <div id="download-button-state">
- <span id="download-button-state-retry">Retry</span>
+ <div id="download">
+ <a id="download-button" href="[[!inline pages="inc/stable_i386_iso_url" raw="yes"]]" class="btn btn-lg btn-primary clearfix">
+ <span id="download-button-label" class="pull-left">Download Tails [[!inline pages="inc/stable_i386_version" raw="yes"]] ISO image
+ <small id="download-button-size" >[[!inline pages="inc/stable_i386_iso_size" raw="yes"]]</small>
+ </span>
+ <div id="download-button-state" class="pull-right">
+ <span id="download-button-state-retry" class="label label-warning">Retry</span>
+ <span id="download-button-state-resume" class="label label-info">Resume</span>
+ </div>
+ </a>
+ <div id="download-text" class="btn btn-lg clearfix">
+ <div id="download-text-left" class="pull-left clearfix">
+ <div id="download-text-label" class="pull-left">Download Tails[[!inline pages="inc/stable_i386_version" raw="yes"]] ISO image
+ <small id="download-eta">
+ 240 Ko/s - 360,7/[[!inline pages="inc/stable_i386_iso_size" raw="yes"]], 10 minutes left
+ </small>
+ </div>
+ <div id="download-progress" class="progress">
+ <div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 45%">
+ <span class="sr-only">45% Complete</span>
+ 45%
+ </div>
+ </div>
+ <small id="download-path">Downloading to /home/amnesia/Tor Browser/tails-i386-1.3.2.iso</small>
+ </div>
+ <div id="download-text-state" class="pull-right">
+ <span id="download-text-pause">Pause</span>
+ <span id="download-text-done" class="label label-success state">Done</span>
+ <span id="download-text-failed" class="label label-warning state">Failed</span>
+ </div>
</div>
- </a>
- <div id="download-text">
- <div id="download-text-label">Download Tails [[!inline pages="inc/stable_i386_version" raw="yes"]] ISO image</div>
- <div id="download-text-size">[[!inline pages="inc/stable_i386_iso_size" raw="yes"]]</div>
- <div id="download-eta">10 minutes left</div>
- <div id="download-path">Downloading to /home/amnesia/Tor Browser/tails-i386-1.3.2.iso</div>
- <div id="download-text-state">
- <span class="state">Pause</span>
- <span class="state">Done</span>
+ <div id="download-message">
+ <div id="download-message-paused">
+ <p>The download as been paused. Click "resume" to go on.</p>
+ </div>
+ <div id="download-message-failed">
+ <p>The download of the ISO image failed! Please check your network connection and try to resume...</p>
+ </div>
</div>
</div>
-</div>
-<div id="verify">
- <div id="verify-text">
- <span id="verify-text-label">Verify ISO image</span>
- <div id="verify-text-state">
- <span class="state calculating">Calculating</span>
- <span class="state success">Done</span>
- <span class="state failed">Failed</span>
+ <div id="verify">
+ <div id="verify-text" class="btn btn-lg clearfix">
+ <div class="pull-left">
+ <span id="verify-text-label">Verify ISO image</span>
+ <small id="verify-text-calculating">Calculating SHA-256 checksum...</small>
+ </div>
+ <div id="verify-text-state" class="pull-right">
+ <span id="verify-text-state-calculating" class="state calculating label label-info">Calculating</span>
+ <span id="verify-text-state-done" class="state success label label-success">Done</span>
+ <span id="verify-text-state-failed" class="state failed label label-danger">Failed</span>
+ </div>
</div>
- <span id="verify-text-calculating">Calculating SHA-256 checksum...</span>
- <div id="verify-text-success">
- <p>If you are knowledgeable about OpenPGP, you can do additional verification using the <a href=[[!inline pages="inc/stable_i386_iso_sig_url" raw="yes"]]>OpenPGP signature</a>.</p>
- <a href="">Learn how to do that</a>
- <a href="">Next <span>Copy ISO image on first USB stick</span></a>
+ <div id="verify-text-success" class="bg-success">
+ <p>If you are knowledgeable about OpenPGP, you can do additional verification using the <a href=[[!inline pages="inc/stable_i386_iso_sig_url" raw="yes"]]>OpenPGP signature</a>.
+ <a href="">Learn how to do that</a></p>
+ <a href="" class="btn btn-lg btn-primary">Next <span>Copy ISO image on first USB stick</span></a>
</div>
- <div id="verify-text-failure">
+ <div id="verify-text-failure" class="bg-warning">
<p>The verification of the ISO image failed! Please try to download again&hellip;</p>
</div>
- <div id="verify-text-failure-again">
+ <div id="verify-text-failure-again" class="bg-danger">
<p>The verification of the ISO image failed again! Please try to download again from a different place or a different computer&hellip;</p>
</div>
</div>
diff --git a/wiki/src/blueprint/derivatives.mdwn b/wiki/src/blueprint/derivatives.mdwn
new file mode 100644
index 0000000..c3930a5e
--- /dev/null
+++ b/wiki/src/blueprint/derivatives.mdwn
@@ -0,0 +1,44 @@
+[[!meta title="About possible derivatives"]]
+
+What for:
+
+- Include additional features that we are not ready to add to Tails (for example
+ to include GNUnet or Namecoin).
+- Have custom branding or configuration.
+- Provide ISO images with less or different features (for example to
+ have VPN instead of Tor).
+
+Why is it complicated:
+
+- Release every 6 weeks, plus the occasional unscheduled emergency
+ security release
+- Heavy quality assurance process (automated builds and tests)
+- Complex infrastructure (upgrades)
+- User trust (authenticated downloads, OpenPGP Web-of-Trust)
+- Fingerprinting & partitioning users into a anonymity subset
+- For features that are not in Tails because there has been no time or
+ solution for doing them correctly, the temptation to just shove them
+ in hastily and call it done
+
+Good ways of doing it:
+
+- Don't build your own ISO images.
+- Package your specific applications in Debian to make them easier to
+ use in Tails.
+- Document how to use your specific applications in Tails.
+- Rely on the mechanisms already available in Tails to adapt it to your
+ needs (additional software packages, persistent storage).
+- Help us build in Tails other mechanisms that you might need to adapt
+ it to your needs (for example to have persistent DConf settings or APT
+ sources).
+- Talk with us to see how we can adapt our ISO images and source code to make them
+ easier for your to reuse.
+- If you want to include a piece of software into Tails, talk to us as
+ early as possible so we can provide feedback on how to integrate it.
+
+Open questions:
+
+- Trademark aspects. Will derivatives appear as being "Tails" to their
+ users while having different security features than Tails? Shall we
+ review ourselves the work of derivatives and "endorse" them? How could
+ crappy derivatives impact negatively the name and reputation of Tails?
diff --git a/wiki/src/blueprint/desktop_notifications.mdwn b/wiki/src/blueprint/desktop_notifications.mdwn
new file mode 100644
index 0000000..f4ef6c6
--- /dev/null
+++ b/wiki/src/blueprint/desktop_notifications.mdwn
@@ -0,0 +1,147 @@
+[[!toc levels=2]]
+
+# The problem
+
+[[!tails_ticket 7989]]
+
+## Done
+
+* `config/chroot_local-includes/usr/local/bin/tails-security-check`
+ - Perl, `Desktop::Notify`, ported to notification actions
+ - important enough to be noisy ⇒ ported to a dialog box
+* `config/chroot_local-includes/usr/local/bin/tails-virt-notify-user`
+ - Perl, `Desktop::Notify`, ported to a *transient* notification with
+ an action, so clicking it does open the doc, but the notification
+ disappears after 4 seconds
+ - broken on Tails/Wheezy already (the link to the doc is not visible)
+ ⇒ the current state of feature/jessie is not a regression, it
+ actually improves things a bit.
+* `config/chroot_local-includes/usr/local/sbin/tails-spoof-mac`
+ - Shell, uses `notify-send` via
+ [[!tails_gitweb config/chroot_local-includes/usr/local/sbin/tails-notify-user]]
+ - broken on Tails/Wheezy already (the link to the doc is not
+ visible, and one of the two possible links was broken anyway) ⇒
+ the link to the doc has been removed for Tails 2.0, and a better
+ solution can be found later ([[!tails_ticket 10559]]).
+ - A second iteration could turn this into
+ a dialog box: we now have an offline mode for those who want it,
+ and else, if you want to be online, then MAC spoofing failure
+ prevents you from using Tails in most cases so we can be noisy.
+ - The notification code (`notify_panic_*`) that's started as
+ a background process could advantageously be moved to the user
+ session (it's probably a good idea to avoid starting background
+ tasks in udev hooks, to avoid confusing udev wrt. when a hook has
+ actually completed its work). To this end,
+ `config/chroot_local-includes/usr/local/sbin/tails-unblock-network`
+ could raise a flag so that a unit run in user session knows that
+ it should notify the user (see e.g. the ugly `htp_done_file`, or
+ find a better solution).
+* `config/chroot_local-includes/usr/local/sbin/tails-restricted-network-detector`
+ - Perl, uses `notify-send` via
+ [[!tails_gitweb config/chroot_local-includes/usr/local/sbin/tails-notify-user]]
+ - removed while, see [[!tails_ticket 10560]]
+
+
+# Resources
+
+## GNotification
+
+* Needs GLib 2.40 (in Jessie).
+
+* Intro: <https://wiki.gnome.org/HowDoI/GNotification>
+
+* "applications using GNotification should be able to be started as
+ a D-Bus service, using GApplication." =>
+ <https://wiki.gnome.org/HowDoI/DBusApplicationLaunching>; this feels
+ totally overkill for most cases when we currently use
+ desktop notifications.
+
+* "gnome-shell uses desktop files to find extra information (app icon,
+ name) about the sender of the notification. If you don't have
+ a desktop file whose base name matches the application id, then your
+ notification will not show up". We'll see.
+
+* intrigeri has a working Perl example with `add_button`. Next step is
+ to pass parameters to the notification.
+
+* If it's deemed overkill, or just too painful, to port every single
+ script that needs to send notifications with actions to
+ "GApplication + D-Bus activation + actions support" properly,
+ a solution could be to let them all pretend to be the
+ `org.boum.tails.OpenURL` or similar app in the simplest possible
+ way, i.e. create a GApplication object merely to be able to send the
+ notification or use the private D-Bus API to
+ `org.gtk.Notifications`.
+
+ And then, we need only one single real GApplication that can react
+ to actions with parameters.
+
+ A potential problem with this approach is that if a given
+ GApplication is running already, another process pretending to be
+ the same can't send notifications (reproducer code follows; the
+ private D-Bus API allows to workaround this problem, but has other
+ ones, read on). So, in practice if we go this way the URL opener app
+ must have a lifetime close to zero, otherwise when clicking on
+ multiple notifications buttons in a row, some actions won't be
+ triggered (i.e. URLs won't be opened).
+
+ #!/usr/bin/perl
+
+ use strict;
+ use warnings FATAL => 'all';
+ use 5.10.1;
+
+ use Gtk3;
+ use Glib::Object::Introspection;
+
+ Glib::Object::Introspection->setup(
+ basename => 'Gio',
+ version => '2.0',
+ package => 'Gio'
+ );
+
+ my $app_id = 'org.gnome.gedit';
+ my $app = Gtk3::Application->new($app_id, []);
+ $app->register() || die "Could not register app";
+
+ my $notification = Gio::Notification->new('My notification title');
+ $notification->set_body("My notification body");
+ $notification->add_button("OK", 'app.new-document');
+ # If gedit is already running, this fails with:
+ # GLib-GIO-CRITICAL **: g_application_send_notification:
+ # assertion '!g_application_get_is_remote (application)' failed
+ $app->send_notification("my-notification-id", $notification);
+
+* private D-Bus API (`org.gtk.Notifications`):
+ <https://wiki.gnome.org/Projects/GLib/GNotification> ... maybe an
+ option whenever language bindings are not good enough, but so far
+ I (intrigeri) was not able to add buttons to it:
+
+ #!/usr/bin/perl
+ use strict;
+ use warnings FATAL => 'all';
+ use 5.10.1;
+ use Net::DBus;
+ Net::DBus
+ ->session
+ ->get_service("org.gtk.Notifications")
+ ->get_object("/org/gtk/Notifications")
+ ->as_interface("org.gtk.Notifications")
+ ->AddNotification('org.gnome.gedit', 'whatever-notification-id', {
+ title => 'my notification title',
+ body => 'my notification body',
+ # Works... when 'buttons' is not passed
+ 'default-action' => 'app.new-window',
+ # Does not work, for some reason
+ buttons => [
+ { label => "New window", action => "app.new-window"},
+ { label => "New document", action => "app.new-document"},
+ ],
+ });
+
+* GNOME Shell 3.16: non-default action buttons are only displayed when
+ the notification pops up initially, _not_ in the [Message
+ List](https://wiki.gnome.org/Design/OS/Notifications/#Message_List).
+ Jessie's GNOME Shell (3.14) hasn't this problem. We can get away
+ with only a default action that opens the URL we want, in the use
+ cases we have in practice.
diff --git a/wiki/src/blueprint/detect_captive_portals.mdwn b/wiki/src/blueprint/detect_captive_portals.mdwn
index cd7b066..5e4cc22 100644
--- a/wiki/src/blueprint/detect_captive_portals.mdwn
+++ b/wiki/src/blueprint/detect_captive_portals.mdwn
@@ -1,3 +1,5 @@
+[[!tails_ticket 5785]]
+
For users that haven't read the documentation about the unsafe browser
and/or just don't understand when it's necessary, it would be good if
Tails does a reasonable job to try to detect whether a captive portal
@@ -60,6 +62,10 @@ hellais and friends are working on
[ooni-probe](https://gitweb.torproject.org/ooni-probe.git) which may be
interesting, depeding on how stealthy the probe is.
+ - https://help.gnome.org/misc/release-notes/3.14/
+ - https://www.chromium.org/chromium-os/chromiumos-design-docs/network-portal-detection
+ - https://android.stackexchange.com/questions/82977/cyanogenmod-and-privacy
+
Beta testers
============
diff --git a/wiki/src/blueprint/evaluate_Docker.mdwn b/wiki/src/blueprint/evaluate_Docker.mdwn
index c6d45f6..d7dbcc4 100644
--- a/wiki/src/blueprint/evaluate_Docker.mdwn
+++ b/wiki/src/blueprint/evaluate_Docker.mdwn
@@ -181,6 +181,7 @@ Test run
<https://github.com/maci0/docker-systemd-unpriv/blob/master/Dockerfile>
* There are alternatives, like `supervisord`. Pros: likely less
tweaking to do. Cons: yet another tool to learn.
+ * See [[!debpkg systemd-docker]]: wrapper for "docker run" to handle systemd quirks
* Even with `--cache false`, some directories (`chroot`, `cache`) are
saved and retrieved from the container upon shutdown; same for
live-config -generated `config/*` files. That's because the current
diff --git a/wiki/src/blueprint/freezable_APT_repository.mdwn b/wiki/src/blueprint/freezable_APT_repository.mdwn
new file mode 100644
index 0000000..417ba84
--- /dev/null
+++ b/wiki/src/blueprint/freezable_APT_repository.mdwn
@@ -0,0 +1,787 @@
+This is about [[!tails_ticket 5926]].
+
+[[!toc levels=3]]
+
+# Assumptions
+
+A given APT repository snapshot is immutable after it's been taken.
+We'll deal with freeze exception separately.
+
+We want to have reproducible builds some day. Therefore, the APT
+`sources.list` shipped in the ISO must be stable across rebuilds from
+the same release Git tag.
+
+Say `kedit` is a package shipped in Debian, but not in Tails. Then,
+when run inside Tails, `apt install kedit` must fetch `kedit` from
+current Debian, as opposed to installing it from a Tails-specific, and
+generally obsolete, snapshot of the Debian APT repository.
+
+We don't bother merging mirrored APT repositories / suites into
+aggregated ones. It loses information, gives us more work, and brings
+little value.
+
+# TODO
+
+1. doc-driven development [i]
+ * draft contributors doc for each workflow
+ - RM (see release process doc and APT repo common operations doc)
+ - developer (including stable, testing, devel, and `$topic`)
+ * get the updated documentation + this design reviewed, including
+ security aspects [i]
+ * write tools that the doc calls for
+ - bump `Valid-Until`
+ - freeze
+ - unfreeze
+ * move relevant content from this blueprint to the "final" design
+ doc + contributors doc
+
+2. time-based snapshots [i]
+ a. **done** initial reprepro setup that keeps up-to-date local mirrors of
+ the APT repositories we need
+ b. **done** snapshot these mirrors every time they're updated
+ c. **done** decide how many reprepro instances we want/have to split all
+ this among
+ d. mirror relevant suites of deb.tails.b.o as well
+ d. publish the snapshots over HTTP
+ e. try using such snapshots for building an ISO
+ e. publish the snapshots' serial: a file is updated, now needs to
+ be published over HTTP
+ d. implement list of sticky snapshots that must not be GC'ed,
+ including the tool to add to that list
+ e. implement GC of snapshots
+ f. implement GC of packages
+ g. have build system output the snapshots being used,
+ and have Jenkins publish this info if available
+ h. manage symlinks or rewrite rules for URL → reprepro filesystem layout
+
+3. generate set of APT sources
+ * write automated tests for the generation of APT sources [i]
+ * implement the generation of APT sources
+ * plug the generation of APT sources into the build system
+ * implement switching to live APT sources at runtime
+
+4. tagged snapshots
+ a. **done** PoC of capturing the list of binary packages used during the build [k]
+ b. **done** PoC of capturing the list of source packages used during the build [k]
+ c. **done** initial reprepro setup for tagged snapshots
+ d. **WIP** how to create a partial snapshot from a manifest and
+ the origin time-based snapshots? [k]
+ - lacks source packages handling
+ - see XXX in `tails-prepare-tagged-apt-snapshot-import`
+ e. expand list of source packages with those that the binary
+ packages were built from [k]
+ f. have the manifest → partial snapshot process include source
+ packages [k]
+ h. **done** debootstrap in jessie-backports
+ g. for some Tails release: generate manifest, import packages into
+ tagged snapshots, try building *offline* with these tagged
+ snapshots [i]
+ h. have a debootstrap 1.0.73+ in all our build environments (Vagrant
+ basebox, Jenkins slaves, manual build doc) so that we get the
+ `deburis` file, that's needed to build our packages listing.
+ i. Update the "Listing used packages" section
+ j. Have Jenkins publish the list of needed packages for a build
+ if available (supersede existing `*.{bin,src}pkg`).
+ k. if needed, implement GC
+
+5. misc
+ * implement whatever the "freeze exceptions" section requires
+ * Puppetize every server-side thing that hasn't been yet.
+
+# The big picture
+
+## Snapshots and branches
+
+Several times a day (e.g. 4 times, to match runs of `dinstall` in the
+Debian archive; XXX: start with once a day and then raise the
+frequency if the infrastructure can hold it?) we update a local mirror
+of the APT repositories we're
+interested in, e.g. with `reprepro update`. Once this is successfully
+done, we take a snapshot of the current state of our local mirror
+(e.g. with `reprepro pull`); this snapshot's name must contain:
+
+ * an identifier of the APT repository this snapshot is about, e.g.
+ `debian`, `debian-security`, `torproject`;
+ * a `YYYYMMDD$ID` serial, `$ID` being an incremental decimal number
+ formatted on two digits (`01`, `02`, etc.).
+
+The APT repository mirroring infrastructure publishes the name of the
+latest snapshot for each mirrored repository. Similarly, every ISO
+build exports the names of the APT repository snapshots it uses.
+
+Building an ISO from the `devel` branch always uses the freshest set
+of APT repository snapshots available. Resolving what's the set of
+freshest APT repository snapshots is done at the beginning of the
+build, so that the entire build uses the exact same state of these
+repositories. This is needed for reproducible builds, and has a nice
+side effect: so long, `Hashsum mismatch`, and thanks for the fish.
+(Implementation detail: in practice, this pointer resolution is done
+early in `auto/config`, so that we can 1. specify the snapshots we
+want via `lb config --mirror-{bootstrap,chroot}`, which `lb build`
+uses to generate APT sources for the target base distribution, and 2.
+adjust other APT sources (`config/chroot_sources`) somehow.)
+
+Building an ISO from the branch used to prepare the next major release
+(`testing`), or a topic branch based on it (`config/base_branch`):
+
+ * **outside of the freeze period**: we use the latest set of APT
+ repository snapshots, just like when building from `devel`;
+ * **freeze period**: at freeze time, the RM encodes in the Git
+ `testing` branch the set of APT repository snapshots (via their
+ serial numbers) that shall be used during the freeze; the only
+ exception is security.debian.org, for which we always use our
+ latest snapshot;
+ * **at release time**: when building from a tagged branch, similarly to
+ what we do for our custom [[contribute/APT_repository]], instead of
+ using time-based APT repository snapshots, we use snapshots
+ labeled with the Git tag;
+ * **after releasing**, the RM encodes in the `testing` Git branch the
+ fact that it is not frozen anymore, that is: the RM removes the
+ indication that a specific set of APT repository snapshots must be
+ used; and then, we're back to the "outside of the freeze
+ period" case.
+
+Building an ISO from the branch used to prepare the next point-release
+(`stable`), or a topic branch based on it (`config/base_branch`), we
+use snapshots labeled with the Git tag of the latest Tails release,
+except:
+
+ * we generally use our latest snapshot of security.debian.org;
+ * if a set of APT repository snapshots is encoded directly in that
+ branch: use them, even for security.debian.org.
+
+XXX: add special handling of deb.tails.b.o, that we need since it's
+the repo where we can sneak freeze exceptions in. In theory it's not
+related to our great APT repository snapshots plans, since it has its
+own snapshots mechanism already, but ideally we would integrate it
+into the new system entirely?
+
+## Different problems ⇒ different solutions
+
+Note that:
+
+ * The time-based snapshots of the mirrored APT repositories that are
+ used basically all the time (except when building a release) should
+ be *full* snapshots, that is they should contain exactly the same
+ set of packages as the mirrored repository. This has the advantage
+ that some workflows are trivially handled, e.g. working on a topic
+ branch that installs additional Debian packages; if such snapshots
+ were not full ones, then to work on one such branch, one would need
+ either that I have the credentials to import new packages from
+ Debian into our own mirror or repositories (which raises the
+ barrier for contributing), or that during some phases of Tails
+ development the regular Debian archive is used instead of our own
+ mirror, which feels prone to "time to QA vs. time to
+ release" issues.
+
+ * The tagged snapshots used to build releases can be *partial*, that
+ is they can contain only the subset of the mirrored repositories
+ that is required for building a specific Tails ISO image.
+
+So, we actually want to manage two sets of snapshots that are vastly
+different in terms of goals, users, turnover, garbage collection and
+backup strategies:
+
+ * **time-based, full snapshots** of the mirrored APT repositories over
+ the last N days;
+ - goal: freezable repo feature for the dev process and QA
+ - this one can be started from scratch from time to time if
+ reprepro becomes too slow for some reason (such as imperfect DB
+ garbage collection);
+ - if we lose this content, we lose only N days of data, and can
+ immediately rebuild a working data set from scratch ⇒ no need to
+ sync' this content to the failover server; no need to back it up;
+
+ * **tagged, partial snapshots** that were used to build released Tails
+ ISO images:
+ - goal: reproducible builds, GPL compliance;
+ - in there we import only the needed packages;
+ - we want to back up this data, and expire it very cautiously,
+ if ever.
+
+Trying to solve both problems in the same `reprepro` instance would be
+problematic. Not only, coupling very different problems together, and
+trying to address them with the exact same tools and process, is
+generally a bad idea. But also, reprepro's database becomes quite big
+when we import large chunks of the Debian archive into it, which may
+make it slow ([[!tails_ticket 6295]]), and in any case makes it hard
+to back up... which we want to, for preserving the releases' tagged
+snapshots information.
+
+So we'll use two independent `reprepro` instances to address these
+two problems.
+
+XXX: how exactly we'll import packages we need from time-based
+snapshots to tagged ones is left to be defined (filtered `reprepro
+update`? `cp` + `reprepro includeblah`?)
+
+# Special cases and implementation
+
+## APT sources used inside Tails
+
+A running Tails' APT must be pointed at the official, live Debian
+archive, and not to a Tails-specific and already obsolete snapshot.
+
+To achieve that we can tweak `sources.list` as we already do in
+[[!tails_gitweb config/chroot_local-includes/lib/live/config/1500-reconfigure-APT]].
+
+But generating the 2 versions (frozen, not frozen) of the sources at
+ISO build time would probably be more elegant: at boot time, one only
+needs to rename files instead of fiddling with `sed`.
+
+## Upgrading to a new snapshot
+
+In other words: bumping, in Git, the pointers to the set of snapshots
+that shall be used.
+
+Let's use, as an example of a situation in which we might want to do
+that, upgrading to a new Debian point-release.
+
+With this design:
+
+ * `devel` gets them automatically because it closely tracks the
+ Debian archive;
+ * for release branches (`stable`, `testing`): on a case-by-case
+ basis, depending on the respective Debian/Tails release schedule
+ timing, we can choose whether to switch to using a new snapshot of
+ the Debian archive for the next release. Note that this can be done
+ via a topic-branch since this information is encoded in Git. If we
+ choose not to manually pick the point release, which is the default
+ if we don't act at all, then:
+ - `testing` will start using the new Debian point-release as soon
+ as it is unfrozen, that is as soon as it has been used to release
+ a new major version of Tails;
+ - `stable` will start using the new Debian point-release once
+ a `testing` branch that uses that point-release is merged into
+ `stable`.
+
+<a id="freeze-exceptions"></a>
+
+## Freeze exceptions
+
+This is a new problem brought by using "frozen" snapshot of APT
+repositories during a Tails code freeze: some bug, that we want to see
+fixed in the release we are preparing, would be resolved if we pulled
+an upgraded package as-is from a freshest Debian APT repository.
+Before we could freeze APT repositories, we would have got this bugfix
+for free. Now we need to grant freeze exceptions.
+
+This is similar to "Upgrading to a new snapshot", except that we want
+to upgrade one package only. By definition, this only affects *frozen*
+release branches (`stable`, `testing`), and topic branches based on
+them: all other branches use the freshest set of APT repository
+snapshots available.
+
+Most of the time, a bugfix branch we want to merge into a frozen
+release branch doesn't need to upgrade packages from Debian, so this
+is a corner case for the time being. Moreover, so far we have always
+dealt with this problem entirely by hand, so it's not critical to
+provide much improved tools. What makes it tempting to improve the
+situation here is mostly:
+
+ * even though freeze exceptions will remain exceptions, frozen will
+ add one use case:
+ * this will become a relatively common operation if we are based on
+ Debian testing some day, so let's check that it's not only
+ possible, but also reasonably easy to handle with this design
+ (otherwise we may have to switch to more powerful tools, such as
+ dak + britney).
+
+Definition: here, we'll call "overlay [[contribute/APT repository]]"
+the set of Tails-specific APT suites that we have been maintaining for
+a few years. They are overlay in that they don't contain all the
+packages that can be found in Debian: building a Tails ISO image also
+requires another kind of APT sources, that are more complete.
+
+We can handle freeze exceptions this way:
+
+1. Import the package we want to upgrade into our own overlay
+ [[contribute/APT repository]], in the suite corresponding to the
+ branch that we want to see this package ⇒ in the general case, the
+ upgraded package will be installed in the next Tails release.
+ We need a tool to do that (would `reprepro pull` with a custom
+ filter do the job?).
+
+2. Pin, in `config/chroot_apt/preferences`, the upgraded package we
+ have just imported. The aforementioned tool can do this as well.
+
+ [Our current default APT pinning ranks Tails overlay APT suites
+ over any other APT source, so why the need to add an APT pinning
+ entry? The problem is that it's hard to do the next step (clean up)
+ with this APT pinning, combined with the fact that we can't easily
+ delete a package from an APT suite and see this deletion propagated
+ over suite merges. I (intrigeri) was not able to find a good
+ solution to that problem under these constraints, so this document
+ assumes that we change this, and pin our overlay APT suites at the
+ same level as the APT sources corresponding to the Debian release
+ Tails is currently based on. This implies that we manually pin, in
+ Git, the packages from our overlay APT suites, that we want to
+ override the ones found in other repositories regardless of
+ version numbers.]
+
+3. Make it so branches stop using the upgraded package once they have
+ been unfrozen, that is once the upgraded package can be fetched
+ from a time-based snapshot of the repository we've initially pulled
+ it from. Reverting the commit that added the corresponding APT
+ pinning in the first place is enough. This should be done by the
+ release manager, immediately after a release, when they un-freeze
+ the branch used for the release and merge it into other release
+ branches. But the RM needs to know which commit to revert, so we
+ need to keep track of such upgrades: ideally the tool used to pull
+ the upgraded package in the first place should generate the
+ commands that will need to be run post-release, or save the data
+ needed to generate these commands; such information must be pasted
+ somewhere, e.g. into a new ticket; these commands could even be
+ scheduled to be run post-release automatically, if we're
+ comfortable giving commit access to our Git repository to more
+ machines, and have time to implement it.
+
+Another option, instead of adding/removing temporary APT pinning,
+would be to backport the package we want to upgrade, and make it so it
+has a version greater than the one in the time-based snapshot used by
+the frozen release branch, and lower than the one in more recent
+time-based snapshots. This means building and uploading the package to
+the relevant overlay APT suite. This is appealing, because it doesn't
+require any cleanup: the upgraded package will automatically be
+superseded as soon as it can be. However:
+
+ * we would not benefit from Debian features like reproducible builds;
+ * it requires either manual work and bandwidth every time, or setting
+ up and maintaining infrastructure to automate the whole thing;
+ * the fact that the changes *have to* go through Git, with the APT
+ pinning option, helps enforcing our review'n'merge processes; one
+ can do it by the book with the custom backport option too, by going
+ through a topic branch and `config/APT_overlays.d/`, but it still
+ conveys less historical information through Git than the APT
+ pinning option.
+
+## Number of distributions
+
+... in reprepro's `conf/distributions`, for the reprepro instance(s)
+dedicated to taking snapshots of the regular Debian archive, assuming
+other mirrored archives such as security.d.o, deb.tpo, etc. each go to
+their own reprepro instance.
+
+XXX: do estimates and initial experiments for other archives as well:
+security.d.o is not that small, and deb.tpo may trigger special cases
+we've not thought of.
+
+XXX: the more we split between multiple instances of reprepro, the
+smaller and more manageable its database becomes. But it implies some
+disk space waste due to duplicated files, and some bandwidth waste to
+re-downloading these duplicated packages. If the waste is limited the
+packages from security.d.o that get included in the next
+{oldstable,stable} point release we can perhaps live with it.
+
+### Time-based snapshots
+
+14 distributions:
+ ( oldstable * (base, updates, p-u, backports, sloppy-backports)
+ + stable * (base, updates, p-u, backports)
+ + testing * (base, updates, p-u)
+ + sid
+ + experimental
+ )
+
+4 snapshots a day (=~ 1/dinstall run) * 14 distributions
+* N days
+= 56 * N
+
+Let's set N to match the `Valid-Until` duration we want: it makes
+little sense to keep expired snapshots around, and reciprocally it
+makes little sense to give a snapshot a validity time that goes beyond
+when we'll delete it via garbage collection.
+
+⇒ 56 * N = 56 * 10 = 560
+
+#### Garbage collection
+
+Simply cloning an existing Wheezy/i386/main "distribution" adds 100MB
+to `reprepro`'s database (*not* counting the actual packages!), so the
+whole thing will likely be quite big ⇒ expiring the snapshots older
+than N days will probably be compulsory.
+
+To ensure that garbage collection doesn't delete a snapshot we still
+need, e.g. the one currently referenced in the frozen `testing`
+branch, we'll maintain a list of snapshots that need to be kept
+around. The tool used by the RM to bump the archive snapshot serials
+in Git should take care of it.
+
+### Tagged snapshots
+
+We want to keep "forever" the tagged snapshots used by releases.
+
+In practice, "forever" == min(3 years for GPL, how long we want to be
+able to reproduce the build of a released ISO) = 3 years.
+
+12 releases/year * 13 distributions =~ 150 distributions/year
+
+⇒ 450 distributions three years after deployment, which is the upper
+bound if we delete such snapshots when they're 3 years old.
+
+#### Garbage collection
+
+Depending on the growth rate of this `reprepro` instance's database,
+we may or may not need to implement expiration of these snapshots any
+time soon. Time will tell.
+
+## reprepro
+
+XXX:
+
+ * use `Log:` in `conf/distributions`? deployed (20151030), let's look
+ at it and reconsider in a few weeks
+ * use `Tracking:` in `conf/distributions`?
+ * use a leading dash for `Update: - ...` in `conf/distributions`?
+ <https://mirrorer.alioth.debian.org/reprepro.1.html#Some%20note%20on%20updates>
+ * compare fields in generated `Release` files, with what can be found
+ in the official Debian archive
+ * "Reprepro uses berkeley db, which was a big mistake. The most
+ annoying problem not yet worked around is database corruption when
+ the disk runs out of space. (Luckily if it happens while
+ downloading packages while updating, only the files database is
+ affected, which is easy (though time consuming) to rebuild, see
+ recovery file in the documentation). *Ideally put the database on
+ another partition to avoid that.*" (emphasis mine, from
+ [reprepro(1)](https://mirrorer.alioth.debian.org/reprepro.1.html#BUGS))
+
+There's a race condition when updating a local mirror with `reprepro
+update`: if it's not finished before the next dinstall + mirror sync'
+end, then files `reprepro` wants to download can have disappeared from
+the remote mirror, and `reprepro update` will fail (exit code = 255).
+So, when the first run exits with exit code 255, let's ignore the
+error and run `reprepro update` a second time.
+
+### Snapshots
+
+In our [initial
+experiments](https://labs.riseup.net/code/issues/6295#note-14) we
+added full blown distributions to `conf/distributions` for each
+snapshot, and used `reprepro pull $codename` to add packages to them.
+
+Let's try with `reprepro gensnapshot`, which avoids the need to manage
+the list of snapshots in `conf/distributions`. The following tests are
+run with `conf/{distributions,updates}` set up to mirror the 14
+distributions we want from the Debian archive.
+
+Creating one snapshot:
+
+ distributions() {
+ sed -rn -e 's/^Codename:\s+(.*)$/\1/p' conf/distributions
+ }
+ serial="$(date -u '+%Y%m%d')01"
+ for codename in $(distributions) ; do
+ reprepro gensnapshot "$codename" "$serial"
+ done
+
+⇒ `dists/*/snapshots` takes 400MB (a snapshot done with `reprepro
+pull` would of course add essentially the same files somewhere else in
+`dists`, and occupy the same disk space in there), but the DB doesn't
+grow noticeably.
+
+And then, jumping to 40 (10 days * 4 snapshots/day) snapshots of each
+distribution, which is what we should have in practice:
+
+ for incr in $(seq --equal-width 2 40); do
+ serial="$(date -u '+%Y%m%d')$incr"
+ for codename in $(distributions) ; do
+ reprepro gensnapshot "$codename" "$serial"
+ done
+ done
+
+⇒ `dist/*/snapshots` takes 16 GB, and the DB has grown from 900 MB to
+1.5 GB; as expected, `packages.db` didn't grow at all: only
+`references.db` did.
+
+Conclusion: compared to the "snapshots as full-blown distributions +
+`reprepro pull`" option, we're saving _a lot_ on database size, which
+is very appealing. The counterpart being that:
+
+ * garbage collecting expired snapshots is a bit more involved, but
+ apparently doable: see reprepro(1) around `gensnapshot`;
+ * bumping `Valid-Until` for a given time-based snapshot has to be
+ done directly in `dist`, without any help from reprepro.
+
+XXX: find out how we can solve these two problems.
+
+None of these problems seem to warrant going back to the other
+option... and having to deal with 80GB+ BDB databases.
+
+## Listing used packages
+
+Only needed for partial archive snapshots, but useful in all cases.
+
+Saved as ISO build artifact, both when building in Jenkins and outside
+from it.
+
+Output:
+
+- for each .deb:
+ * Version: Need to look up version _inside_ .deb's because file name doesn't
+ contain epoch and then doesn't allow us to infer version.
+ * APT sources from where it is available, so that we can reinject it
+ into the relevant tagged snapshot(s!); better gather this info
+ incrementally rather than at the end of the build => we avoid
+ requiring APT sources to be stable during the duration of the
+ build
+ * Checksum(s) ???
+- The union of all APT sources used during the build.
+- XXX: save more build info, e.g. Git commit etc.?
+
+XXX: if a (package, version) is seen at build time in 2 or more APT
+sources, we'll want to inject it into each of the tagged snapshots
+corresponding to these sources.
+
+"at ISO build time, generate a list of used packages and version,
+including packages used at build time but not shipped in the ISO"
+-> from logs APT and/or dpkg and/or `/var/cache/apt`
+
+* debootstrap ⇒ `--keep-debootstrap-dir`
+* `apt-get source` ⇒ corner case, handle by hand
+* if all APT sources in use behave ((source package name, version)
+ is a unique identifier wrt. file *content* among all such APT
+ sources), then we don't need to save _where_ each package was
+ pulled from
+* Note: one can have a binary package with a different version from
+ the source package it was built from, see e.g. `src:lvm2` and
+ `libdevmapper1.02.1-udeb`.
+
+Not strictly needed, but useful even if we do full archive
+snapshots:
+
+- Allows to inspect the diff between the subset of two different
+ snapshots that was used at build time; the benefit is very
+ minor as long as we're based on Debian oldstable or stable, but
+ if/when we switch to being based on Debian testing then we will
+ definitely want that. Not that minor: we also fetch packages
+ from testing, sid, backports, etc.
+- Say a branch (topic one, or devel, etc.) introduces
+ a regression, and has changes the set of packages used at build
+ time, we may want to check how exactly that set was changed.
+ Think "check the diff between `.packages`" as we do at release
+ time, but done in a correct way.
+- Allows keeping only _partial_ snapshots (of our full archive
+ ones) for those we want to keep forever, i.e. release ones.
+
+### Downloading specific packages
+
+Needed for creating the partial archive snapshot.
+
+Input = the output of "Listing used packages"
+
+for each (package, version, checksum):
+ if found on deb.tails.b.o
+ then
+ skip
+ else
+ add APT sources = union(those used during build)
+ if not apt-get download $package=$version:
+ fetch with debsnap + verify checksum
+
+## Valid-Until and signing
+
+Assumption: it is acceptable to have our APT repository snapshots
+signed by a key that lives on an online server.
+
+We would like to have `Valid-Until` fields in the generated `Release`
+files, but we'd rather not have to update these files, and the
+corresponding signatures, regularly. In practice:
+
+ * A **tagged APT repository snapshot** that was used to build a given
+ Tails release is immutable by design, so it does not need the
+ protections provided by `Valid-Until`. Besides, not using
+ `Valid-Until` for those makes it much easier to reproduce a given
+ ISO build in the future.
+
+ * The main use case for keeping a given **time-based APT repository
+ snapshot** around and valid is when it's being used by a release
+ branch:
+ - `testing`: while it's frozen, that is during 5-10 days most of
+ the time;
+ - `stable`: that's a corner case, since `stable` generally uses the
+ set of tagged snapshots of the latest Tails release; if and when
+ we decide to manually point `stable` to a different set of
+ snapshots, then we can as well deal with `Valid-Until` manually.
+
+So, let's set `Valid-Until` 10 days after the generation time for
+time-based snapshots, and not set it at all for tagged snapshots.
+
+Still, it may be that we need to bump `Valid-Until` for a given
+time-based snapshot, e.g. if a freeze lasts substantially longer than
+usual. We thus need a tool that allows us (XXX: the RM?
+sysadmin team?) to do so.
+
+In passing, note that we ship an empty `/var/cache/apt/lists/` in the
+ISO ⇒ modifying `Release` and `Release.gpg` files on our APT
+repository won't prevent the ISO build from being deterministic.
+
+## APT vs. reprepro: dist names
+
+We need to encode in the APT sources' base URL the exact snapshot we
+want to use, in order to be able to pass it to `lb config --mirror-*`.
+But this doesn't match reprepro's directory structure as-is.
+
+Thankfully this problem can be workaround'ed with some symlinks or
+HTTP rewrite rules. Here's how.
+
+Let's assume:
+
+ lb config --distribution wheezy
+ lb config --mirror-chroot http://XYZ.tails.boum.org/debian/20151019/
+ lb config --mirror-chroot-security http://XYZ.tails.boum.org/debian-security/20151021/
+ etc.
+
+Which generates this APT `sources.list`:
+
+ deb http://XYZ.tails.boum.org/debian/20151019/ wheezy main
+ deb http://XYZ.tails.boum.org/debian-security/20151021/ wheezy/updates main
+
+As a result APT sends HTTP requests with URL such as:
+
+ * <http://XYZ.tails.boum.org/debian/20151019/dists/wheezy/Release>
+ * <http://XYZ.tails.boum.org/debian-security/20151021/dists/wheezy/updates/Release>
+
+XXX: update the following if we decide to use `reprepro gensnapshot`,
+which implies slightly different paths.
+
+The corresponding files in reprepro's filesystem (if we have one
+reprepro instance per mirrored archive) are:
+
+ * in Debian archive's reprepro:
+ - `/srv/foo/debian/dists/wheezy/20151019/Release`
+ - `/srv/foo/debian/conf/distributions` contains `Suite: wheezy/20151019`
+
+ * in Debian security archive's reprepro:
+ - `/srv/foo/debian-security/dists/wheezy/updates/20151021/Release`
+ - `/srv/foo/debian-security/conf/distributions` contains
+ `Suite: wheezy/updates/20151019`
+
+To have these HTTP requests translate to access these files, one needs
+either symlinks (tested successfully) or HTTP rewrite rules.
+
+Note: this works because APT only warns when the codename in the
+`Release` file doesn't match the one requested in `sources.list`.
+There's a code comment around this check, dating back from 2004, that
+says something like "This might become fatal in the future". We bet that if it
+becomes fatal some day, it will be possible to turn it back into
+a warning via configuration. This affects only development builds
+since we're not going to configure APT _in the Tails ISO_ to point to
+our own snapshots of the Debian archive.
+
+# Bonus for later
+
+This mechanism can perhaps be reused for snapshotting the state of our
+own repo at release time (e.g. to create/publish the `1.6` APT suite).
+
+If the chosen mirroring/snapshoting tool supported re-using the Debian
+signature (e.g. <https://github.com/smira/aptly/issues/37>) then we
+would only have to sign ourselves the snapshots for which need to
+modify `Release` — that is: when we bump (too long freeze) or remove
+(at release time) `Valid-Until` — which happens rarely and can be done
+manually ⇒ we can avoid storing the signing key on an online server.
+
+# Discarded
+
+## "Remote" APT repository snapshots
+
+... i.e. using snapshot.debian.org directly, instead of mirroring the
+files ourselves.
+
+Discarded because:
+
+* not substantially simpler than our other designs;
+* having to re-implement `Valid-Until` checking is scary;
+* too much reliance on an external service.
+
+frozen mode = when building from a tag => use snapshot.d.o with
+a timestamp manually set in Git => need code that tells us what's the
+dinstall timestamp used at some point during a validated build (racy
+but no big deal; can kill the race condition by using a local mirror
+whose update is disabled during builds)
+
+regular mode = otherwise => use ftp.us.d.o
+
+* Directly use snapshot.d.o + dinstall ID
+ - basically replaces e.g. aptly's snapshot / "reprepro pull in new
+ suite" feature
+ - The fastest possible way to do a new snapshot, since we don't have
+ to store nor pull anything at all.
+ - Doesn't introduce a database we have to maintain and trust
+ software not to ever corrupt it.
+ - the dinstall ID that a given mirror was last updated can be
+ retrieved from that mirror, e.g. `Archive serial` in
+ <http://ftp.fr.debian.org/debian/project/trace/ftp-master.debian.org>
+ - Blocker: `Valid-Until` can be invalid:
+ * If we don't bump the dinstall ID at least once a week as part of
+ the normal development process. Seems impractical (e.g.
+ we sometimes freeze for more than a week) and too rigid.
+ * When rebuilding from an old tag (old > a week).
+ - But do we want to depend on snapshot.d.o that much?
+ * Served from two different locations.
+ * Ask weasel if we can go this way. Make it clear how much we care
+ about _old_ data, e.g.:
+ - For reproducible rebuild check we only care about re-building
+ the last release, or the last few releases.
+ - GPL requires distributing the source for at least 3 years
+ after we stop distributing the binaries.
+ - Whonix uses that, go look/ask for pros/cons they've seen.
+ - other repos e.g. deb.tpo; we can probably handle it in a very
+ ad-hoc and lightweight way, by importing the packages we want into
+ our own Tails-specific APT suites, or with reprepro's mirroring
+ (`pull`) feature.
+
+- to avoid relying on browsing <http://snapshot.debian.org/> for
+ getting the dinstall timestamp we'll stick into Git, we need
+ a script that does the browsing _and_ validates that the determined
+ timestamp is not too far away in the past.
+
+## Partial APT repository snapshots
+
+Discarded because:
+
+* it raises a tricky chicken'n'egg problem: managing the list of
+ packages that will be needed to build a given Git branch, and
+ maintaining the set of partial APT repository snapshots that these
+ branches need;
+* partially snapshot'ing live APT repositories (e.g.
+ security.debian.org) is racy: between the time when we build an ISO
+ to get the list of packages we need to import, and the time we
+ actually import them, files can have disappeared on the mirrors.
+
+ - pro: faster sync ⇒ faster snapshots ⇒ shorter time to remediation
+ However, we can have something similar with full snapshots, if we
+ continuously update a temporary snapshot, and then when we need it
+ we only have to stick some label onto it.
+ - cons: more complex... except perhaps if we want to optimize time to
+ remediation for full snapshots as described above.
+
+### Snapshots name
+
+For partial mirroring, their name must contain:
+
+* Debian origin (`debian`, `debian-security`)
+* Debian distribution (`sid`, `jessie`, `jessie-backports`, etc.)
+* name of the Tails Git release/base branch that needs this set of
+ packages
+
+## Replace index expiration check
+
+For the remote snapshots (snapshot.d.o) solution, we _have_ to do
+that. For partial and full archive snapshots, this is optional: the
+only advantage is that it allows us to _not_ periodically update
+`Valid-Until` and signature.
+
+One "solution" would be to replace `Acquire::Check-Valid-Until`:
+
+ - runtime: we point APT sources to the regular Debian archive, no
+ need to disable `Acquire::Check-Valid-Until`, we're good.
+ - ISO build time: we know when we've frozen ⇒ we can tell APT not to
+ do that check, and check the Release files ourselves based on the
+ additional info and constraints we have; a bit risky, no right to
+ fail, but not totally scary; so draft a security discussion, then
+ have it reviewed
+
+## dak, britney, merge-o-matic, debile, etc.
+
+Overkill, and not really meant to address our needs.
+Let's instead write our own :P
diff --git a/wiki/src/blueprint/greeter_revamp_UI/design_rationale_phase1.mdwn b/wiki/src/blueprint/greeter_revamp_UI/design_rationale_phase1.mdwn
index eac002b..78e7df9 100644
--- a/wiki/src/blueprint/greeter_revamp_UI/design_rationale_phase1.mdwn
+++ b/wiki/src/blueprint/greeter_revamp_UI/design_rationale_phase1.mdwn
@@ -4,6 +4,10 @@
This document serves as an explanation of the rationale behind the proposed Greeter design related to [[!tails_ticket 8230]]. This document will grow over time, so please feel free to agree with, object to, or request anything.
+# Contents
+
+[[!toc levels=3]]
+
# History of this document
This document is the result of a process that took more than one year:
@@ -17,37 +21,28 @@ Please take this into account when you comment on current proposals. Improvement
# Flow
-After working on a prototype and doing UX testing with some folks at NUMA, we arrived at
-the idea of having two main experience flows:
+After working on a prototype and doing UX testing with some folks at NUMA, we arrived at the idea of having two main experience flows:
-- A quick setup for regular users, in which every option is easy to access in a few screens;
-- A wizard to guide newcomers.
+- Guided Configuration: A wizard to guide new users
+- Self-guided Configuration: A quick setup for veteran users
-The result of this step can be found in [[NUMA_flow]].
+The result of this step can be found in this [[NUMA_flow]].
# Implementation phases
-The implementation and release of this is scheduled in three
-phases, so that we make actual progress we can deliver to users as
-soon as things become reality:
+The implementation and release of this is scheduled in three phases. The intention is to make progress that can be delivered as soon as things become reality:
-- Phase 1: redesign the Greeter's 1st and 2nd screen. We then have
- similar functionality to the current Greeter, but more clearly presented.
+- PHASE 1: Redesign the Greeter's 1st screen. We then have similar functionality to the current Greeter but more clearly presented.
-- Phase 2: add a Wizard to guide beginners ("Discover: Guided Configuration")
+- PHASE 2: Add a wizard to guide beginners ("Discover: Guided Configuration")
-- Phase 3: merge the persistence creation/configuration into the
- greeter
+- PHASE 3: Merge the persistence creation/configuration into the Greeter
-We are proposing this because we have been debating a lot on
-the first screen(s) and we have reached something that is worth
-being tested and implemented. On the other hand, there is more
-work needed on the Guided Configuration wizard.
+We are proposing this because we have been debating a lot on the first screen(s) and we have reached something that is worth being tested and implemented. There is still work needed on the Guided Configuration wizard.
# Proposed design for the 1st screen
-We refined this on the *tails-ux* mailing list to arrive at the following concrete proposal
-for the 1st screen. Below in this document we explain every designation.
+We refined this on the *tails-ux* mailing list to arrive at the following concrete proposal for the 1st screen. Below in this document we explain every designation.
## Intention
@@ -57,13 +52,32 @@ Design a greeter dialog that:
- Accommodates for fast access to other advanced options
- Has a simple and easy to understand interface for both new and advanced users
- Uses as much tested data from previous design iterations as possible
-- Is up-to-date with GNOME 3.14 standards
+- Is up-to-date with GNOME 3.14 guidelines
## Proposed design
-[[!img Greeter.Welcome.png link="Greeter.Welcome.svg"]]
+A single welcome and settings screen, which is always displayed, that acts as a "Check & Go" screen, as well as a hub for editing settings.
+
+<img src="https://labs.riseup.net/code/attachments/download/984/Greeter.Explained.png" width="100%" height="auto" />
+
+[full size bitmap](https://labs.riseup.net/code/attachments/download/984/Greeter.Explained.png)
+[source](https://labs.riseup.net/code/attachments/download/985/Greeter.Explained.svgz)
+
+<img src="https://labs.riseup.net/code/attachments/download/979/Greeter.States.png" width="100%" height="auto" />
-There is a single welcome and settings screen which is always displayed and acts as a "Check & Go" screen, as well as a hub for editing settings.
+[full size bitmap](https://labs.riseup.net/code/attachments/download/979/Greeter.States.png)
+[source](https://labs.riseup.net/code/attachments/download/980/Greeter.States.svgz)
+
+
+## UX for specific options
+
+### Language
+
+<img src="https://labs.riseup.net/code/attachments/download/1016/Greeter.Language.png" width="100%" height="auto" />
+
+[full size bitmap](https://labs.riseup.net/code/attachments/download/1016/Greeter.Language.png)
+
+The language section is always visible. When a language is saved (in cleartext), it is automatically filled in with saved options.
When a line is clicked, a popover ([[https://developer.gnome.org/hig/stable/popovers.html.en]]) opens with an explanation of the option and the controls to change its value.
@@ -71,19 +85,50 @@ As the values change their new value will replace the previous value in each res
It is clear that the "Language" section can/should be saved, but not yet weather the "Settings" section can/should be saved.
+UI when "Save Language Changes" is checked:
+
+ - On a new Tails installation the check box is unchecked by default.
+ - When the user switches languages the check box is checked, then a warning is
+ displayed.
+ - The next time Tails starts the language preferences that were saved unencrypted are
+ detected and the box is automatically checked.
+ - When the user switches languages by unchecking the box to remove the saved
+ preferences, a notification is displayed saying that the options were safely
+ deleted.
+
+### Storage
+
+<img src="https://labs.riseup.net/code/attachments/download/997/Encrypted.Storage.png" width="100%" height="auto" />
+
+[full size bitmap](https://labs.riseup.net/code/attachments/download/997/Encrypted.Storage.png) [source](https://labs.riseup.net/code/attachments/download/998/Encrypted.Storage.svgz)
+
+
+### Privacy
+
+<img src="https://labs.riseup.net/code/attachments/download/1017/Greeter.Privacy.png" width="100%" height="auto" />
+
+[full size bitmap](https://labs.riseup.net/code/attachments/download/1017/Greeter.Privacy.png)
+[source](https://labs.riseup.net/code/attachments/download/1018/Greeter.Privacy.svgz)
+
## Explanation of this design
### Content Structure Types
Which content structure type is most appropriate for the Greeter?
-[[!img Greeter.Decision.00-Structure.png link="Greeter.Decision.00-Structure.svg" size="800x"]]
+<img src="https://labs.riseup.net/code/attachments/download/987/Content.Structure.Types.png" width="100%" height="auto" />
+
+[full size bitmap](https://labs.riseup.net/code/attachments/download/987/Content.Structure.Types.png)
+[source](https://labs.riseup.net/code/attachments/download/988/Content.Structure.Types.svgz)
-- Step-by-step - Guided walkthrough
-- Show/Hide - Hidden off-screen or behind on-screen element
-- **Openface - Full display**
+- Step-by-step: Guided walkthrough
+- Show/Hide: Hidden off-screen or behind on-screen element
+- **Openface: Full display**
-With the Step-by-step flow already established as the most appropriate guided configuration structure, the designation made was that, although the Show/Hide structure most appropriately accommodates the two end-of-spectrum use cases (noob vs veteran), the Openface structure is the most appropriate for the Greeter’s first screen, as it most closely aligns with GNOME HIG and ensures there is no hidden or undiscoverable information.
+With the Step-by-step flow already established as the most appropriate guided configuration structure, the designation made was that the Show/Hide structure most appropriately accommodates the two end-of-spectrum use cases (noob and veteran). However, this does not align with the GNOME HIG or provide feedback to the user which options are selected (when diverging from defaults). We thus chose to:
+
+- Add a "+" button to add a customizable setting, as commonly found in GNOME lists
+- Only display privacy settings that diverge from defaults
### Options Available On The 1st Screen
@@ -91,14 +136,16 @@ The hypothesis is that a good design should allow people to teach themselves.
With this said, it seems appropriate to educate people of varying technical levels of understanding what options are available to them and what importance these options hold in regard to the intended function.
-In our situation, this is most effectively accomplished by
-displaying everything upfront (Openface).
+In our situation, this is most effectively accomplished by displaying all settings groups upfront. However, in order not lose the beginners, the privacy settings are hidden when they doesn't diverge from defaults.
### Start Tails Button Location
Where should the ‘Start Tails’ button be located?
-[[!img Greeter.Decision.01-Start.png link="Greeter.Decision.01-Start.svg" size="800x"]]
+<img src="https://labs.riseup.net/code/attachments/download/989/Start.Tails.Button.Location.png" width="100%" height="auto" />
+
+[full size bitmap](https://labs.riseup.net/code/attachments/download/989/Start.Tails.Button.Location.png)
+[source](https://labs.riseup.net/code/attachments/download/990/Start.Tails.Button.Location.svgz)
Height:
@@ -125,11 +172,14 @@ How should the settings section be ordered?
- Importance: Storage, Language, Settings
- **Logical: Language, Storage, Settings**
-An arbitrary order such as alphabetical is much less relevant than ordering by importance or logical steps. On top of that, to setup storage, one should select the appropriate language first to be able to read or write. Thus the choice of the Language, Storage, then Settings order.
+An order such as alphabetical is much less helpful than ordering by importance or by logical steps. On top of that, to setup storage, one should select the appropriate language first to be able to read or write. Thus the choice of the Language, Storage, then Settings order.
+
+Should the settings sections be labeled with either two or three labels?
-Further, should the settings sections be labeled with either two or three labels?
+<img src="https://labs.riseup.net/code/attachments/download/991/Settings.Labels.png" width="100%" height="auto" />
-[[!img Greeter.Decision.03-Labels.png link="Greeter.Decision.03-Labels.svg" size="800x"]]
+[full size bitmap](https://labs.riseup.net/code/attachments/download/991/Settings.Labels.png)
+[source](https://labs.riseup.net/code/attachments/download/992/Settings.Labels.svgz)
- Two
- **Three**
@@ -140,7 +190,10 @@ The designation was made that having three sections with three labels was the mo
Should icons accompany the Section or Line-item labels, none, or both?
-[[!img Greeter.Decision.04-Icons.png link="Greeter.Decision.04-Icons.svg" size="800x"]]
+<img src="https://labs.riseup.net/code/attachments/download/993/Label.Icons.png" width="100%" height="auto" />
+
+[full size bitmap](https://labs.riseup.net/code/attachments/download/993/Label.Icons.png)
+[source](https://labs.riseup.net/code/attachments/download/994/Label.Icons.svgz)
- Section
- **Line Item**
@@ -160,57 +213,16 @@ The designation was made that icons should not accompany button labels. In addit
Should the Greeter have the option to be closed/restarted?
-[[!img Greeter.Decision.05-Close.png link="Greeter.Decision.05-Close.svg" size="800x"]]
+<img src="https://labs.riseup.net/code/attachments/download/995/Close.Greeter.png" width="100%" height="auto" />
+
+[full size bitmap](https://labs.riseup.net/code/attachments/download/995/Close.Greeter.png)
+[source](https://labs.riseup.net/code/attachments/download/996/Close.Greeter.svgz)
- **Close/Restart**
- No Close/Restart
Since there are multiple boot modes to choose from for Tails, the designation was made that a ‘Restart’ button located in the Action Bar of the Greeter would accommodate a user’s preference to go back and boot into failsafe mode.
-## UX for specific options
-
-### Language
-
-The language section is always visible. When a language is saved (in cleartext), it is automatically filled in with saved options.
-
-Clicking on a language line will open a Popover with the available options and a search bar.
-
-UI when "Save Language Changes" is checked:
-
- - On a new Tails installation the check box is unchecked by default.
- - When the user switches languages the check box is checked, then a warning is
- displayed.
- - The next time Tails starts the language preferences that were saved unencrypted are
- detected and the box is automatically checked.
- - When the user switches languages by unchecking the box to remove the saved
- preferences, a notification is displayed saying that the options were safely
- deleted.
-
-### Storage
-
-Initial state:
-
- Storage [more info]
- [Type your passphrase...................] [icon: pad closed] [enable]
-
-A context menu enables to "show passphrase", "copy" and "paste" as in
-GNOME OpenPGP agent
-
-After clicking on enable:
-
- Storage [more info]
- [ooooooooooooooooo......................] [icon: spinner] [enable]
-
-If the password is correct:
-
- Storage [more info]
- [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] [icon: pad open] [disable]
-
-If the password is wrong:
-
- Storage [more info]
- [ooooooooooooooooo......................] [icon: pad closed] [enable]
-
# Upcoming settings
The following new settings are planned or discussed:
diff --git a/wiki/src/blueprint/l10n_Italian.mdwn b/wiki/src/blueprint/l10n_Italian.mdwn
index 7e9749f..d11f968 100644
--- a/wiki/src/blueprint/l10n_Italian.mdwn
+++ b/wiki/src/blueprint/l10n_Italian.mdwn
@@ -4,6 +4,17 @@
<http://tp.linux.it/glossario.html>
+<http://amagama-live.translatehouse.org>
+
+Warning page = pagina degli avvertimenti/avvisi
+
+Persistence = persistente https://it.wikipedia.org/wiki/Persistenza_%28informatica%29
+
+Sensitive = sensibile o riservato
+
+
+
+[[Domande aperte sui termini]]
# Info
@@ -28,6 +39,48 @@ to add it, run:
... in an existing clone of our Git repo.
+#Git comandi quotidiani
+
+Sono tutti da mandare da terminale, una volta che si è dentro alla cartella che si usa per il progetto tails.
+Il pulsante TAB è vostro amico per completare tutti i percorsi dei file e soprattutto quando usate git add. Le frecce su e giù della tastiera vi danno gli ultimi comandi che avete lanciato, così andate velocissim*.
+
+Tutte le volte va configurata la chiave ssh che si usa, quindi:
+
+ $ ssh-add /home/utente/vostrachiaveprivata
+
+Fatto, ora possimo sincronizzarsi al repository remoto, prendendo i file che ci mancano:
+
+ $ git pull
+
+Per aggiungere allo stadio "stage" i file che poi si manderà al repository remoto.
+
+
+ $ git add NAMEFILE
+
+Per avere una descrizione delle modifiche fatte localmente, ma che apparirà anche al repository remoto quando si aggiungeranno
+
+
+ $ git commit -m "DESCRIZIONE DELLE MODIFICHE FATTE"
+
+Se siete sicuri che le modifiche che avete fatto vanno tutte sul repository remoto, potete condensare i due comandi sopra con uno solo, -a mette tutti i file nella zona "stage" e committate direttamente:
+
+ $ git commit -a -m "DESCRIZIONE MODIFICHE"
+
+Se non sapete l'identità con cui è configurato git, fate un controllo prima di mandare le cose in remoto:
+
+
+ $ git config -l
+
+Per aggiungere i commit fatti al repository remoto:
+
+ $ git push l10n-italian master
+
+In caso di dubbi, vedete un po il vosro status:
+
+ $ git status
+
+
+
# Come configurare il workflow git sul vostro pc
NOTA:
@@ -116,8 +169,11 @@ in fondo al comando):
11)Genero la chiave ssh, la invio agli sviluppatori TAILS(il file.pub) e l'associo per essere autenticato sul server:
ssh-keygen -t rsa -b 4096 -C "ignifugo@blablabla.net"
- $ eval "$(ssh-agent -s)"
- Agent pid 12534
+
+Ti chiederà il nome con cui genererà i due file della chiave, quello pubblico e quello segreto. QUindi ti cheide una passwor, due volte; i caratteri non si vedono quando li digiti.Finito
+
+Ora configuro la comunicazione ssh ad usare la mia chiave segreta ed invio quella pubblica agli sviluppatori di Tails per poter così scrivere nel repository condiviso.
+
$ ssh-add /home/cri/ignissh
Enter passphrase for /home/cri/ignissh:
Identity added: /home/cri/ignissh (/home/cri/ignissh)
@@ -163,33 +219,52 @@ Attingere nuove pagine da tradurre dando precedenza a queste:
./doc/about/requirements --DONE, pushed, daRev
+./doc/download --DONE, pushed, daRev
+
+./doc/get.index --DONE, pushed, daRev
+
+./doc/get/trusting_tails_signing_key --DONE, pushed, daRev
+
+./doc/get/*--DONE, pushed, daRev
___
-./doc/about.index
+bf
-./doc/about/openpgp_keys --80% DONE, a lot of issues... daRev
+./doc/about.index --FINITO!
-./doc/about/features --DONE, pushed daRev
+./doc/about/features --DONE, pushed daRev
-./doc/about/fingerprint --DONE, pushed daRev
+./doc/about/fingerprint --DONE, pushed daRev
-___
+./doc/first_steps/persistence.caution --FINITO!
-./doc/about/tor --DONE, Pushed
+./doc/first_steps/persistence/configure --DONE pushed daRev
-./doc/about/trust --DONE, Pushed
+./doc/first_steps/persistence/delete --FINITO!
-./doc/about/warning --DONE, Pushed
+./doc/first_steps/persistence/warnings --FINITO!
-./doc/first_steps/accessibility
+***
+./doc/first_steps/persistence/use
-./doc/first_steps/bug_reporting
+./doc/about/openpgp_keys --80% DONE, a lot of issues... not pushed
-./doc/first_steps/bug_reporting/tails_does_not_start
+___
+./doc/about/tor --DONE, Pushed
+./doc/about/trust --DONE, Pushed
+./doc/about/warning --DONE, Pushed
+./doc/first_steps/accessibility
+./doc/first_steps/bug_reporting
+./doc/first_steps/bug_reporting/tails_does_not_start
+./doc/first_steps/reset
+./doc/first_steps/upgrade
___
-./doc/first_steps/start_tails FAtta, ma da caricare sul repo
+./doc/first_steps/start_tails FAtta, e sul repo
+
+./doc/first_steps/startup_options --DONE, Pushed
-./doc/first_steps/startup_options
+#Viz
+<http://www.digitigrafo.it/traduzioni/>
diff --git a/wiki/src/blueprint/lizard_failover.mdwn b/wiki/src/blueprint/lizard_failover.mdwn
new file mode 100644
index 0000000..f3148e5
--- /dev/null
+++ b/wiki/src/blueprint/lizard_failover.mdwn
@@ -0,0 +1,60 @@
+This is about [[!tails_ticket 6185]] and friends.
+
+[[!toc levels=2]]
+
+# Scope
+
+The idea is to avoid blocking the release process and normal Tails
+usage if lizard goes down. It's *not* meant to replace lizard for more
+than a few weeks.
+
+# Services
+
+These are the services, among [[those we
+run|contribute/working_together/roles/sysadmins]], that we want
+a failover for. This is inspired by the [[priority list for service
+monitoring|blueprint/monitor_servers#services]].
+
+- APT repository (our own one + the freezable Debian one)
+- bittorrent
+- Gitolite + git-annex for our Tor Browser archive
+- rsync server
+- WhisperBack relay
+
+<a id="system-specs"></a>
+
+# System requirements
+
+This is about [[!tails_ticket 10243]].
+
+The goal is to specify what we'll likely need mid-2016.
+We also need datacenter-class bandwidth.
+
+- APT repository:
+ * CPU: reprepro can already be hungry; and once we have the
+ freezable APT repo, depending on the chosen tools it may grow
+ a lot (e.g. no idea how aptly behaves)
+ * RAM: currently low, but might grow for the same reason as CPU usage
+ * storage: 425 GB, +25% each year
+- bittorrent:
+ * CPU: low
+ * RAM: low
+ * storage: 3 GB
+- Tor Browser archive:
+ * CPU: low
+ * RAM: low
+ * storage: 60 GB, +40GB each year
+- rsync server:
+ * CPU: low
+ * RAM: low
+ * storage: 5 GB (excluding `obsolete`; 20 GB including it)
+- WhisperBack relay:
+ * CPU: low
+ * RAM: low
+ * storage: low
+
+**Total**:
+
+ * CPU: currently low but must be easily upgradable
+ * RAM: 2 GB should be enough for now, but must be easily upgradable
+ * storage: 500 GB mid-2016; 650 GB mid-2017
diff --git a/wiki/src/blueprint/monitor_servers.mdwn b/wiki/src/blueprint/monitor_servers.mdwn
index 5fedbdb..470f57e 100644
--- a/wiki/src/blueprint/monitor_servers.mdwn
+++ b/wiki/src/blueprint/monitor_servers.mdwn
@@ -244,6 +244,8 @@ scale up to 50 hosts.
monitoring system. Let's keep in mind that collecting exported
Puppet resources is expensive.
+<a id="services"></a>
+
# Service and system checks
Below, HIGH, MEDIUM and LOW are priority level wrt. the implementation
@@ -263,8 +265,8 @@ For description of individual services, see
## APT repository
-* HIGH: `stable` APT suite over HTTP
-* HIGH: freezable APT repository, once it exists
+* CRITICAL: `stable` APT suite over HTTP
+* CRITICAL: freezable APT repository, once it exists
## Bitcoind
@@ -288,18 +290,18 @@ For description of individual services, see
## Jenkins
-* HIGH: the HTTP server must be up, and unauthenticated connection
+* CRITICAL: the HTTP server must be up, and unauthenticated connection
must be forbidden (may require to install its TLS certificate, or to
skip certificate validation, or something)
## Nightly builds
-* HIGH: <http://nightly.tails.boum.org/> must have directories for
+* CRITICAL: <http://nightly.tails.boum.org/> must have directories for
the `stable` and `devel` branches, that contain ISO images
## rsync
-* HIGH: check, over `rsync://`, that expected directories are there
+* CRITICAL: check, over `rsync://`, that expected directories are there
## Test suite infrastructure
@@ -308,7 +310,7 @@ For description of individual services, see
## Website
-* HIGH: <https://tails.boum.org/> must be up and working
+* CRITICAL: <https://tails.boum.org/> must be up and working
## WhisperBack relay
diff --git a/wiki/src/blueprint/monthly_meeting.mdwn b/wiki/src/blueprint/monthly_meeting.mdwn
index 20e010d..469e64e 100644
--- a/wiki/src/blueprint/monthly_meeting.mdwn
+++ b/wiki/src/blueprint/monthly_meeting.mdwn
@@ -15,3 +15,4 @@ Availability and plans for the next weeks
Discussions
===========
+
diff --git a/wiki/src/blueprint/network_connection.mdwn b/wiki/src/blueprint/network_connection.mdwn
new file mode 100644
index 0000000..ccf43dc
--- /dev/null
+++ b/wiki/src/blueprint/network_connection.mdwn
@@ -0,0 +1,75 @@
+[[!meta title="Network connection (configuration and startup)"]]
+
+This is about [[!tails_ticket 10491]].
+
+ - Original post-its by Lunar:
+
+ <a href="https://labs.riseup.net/code/attachments/download/1036/20151002-lunar.jpg"><img src="https://labs.riseup.net/code/attachments/download/1036/20151002-lunar.jpg" width="300px"></a>
+
+ <https://mailman.boum.org/pipermail/tails-dev/2015-October/009593.html>
+
+ - Digital rewrite by SpencerOne:
+
+ <a href="https://labs.riseup.net/code/attachments/download/1035/20151005-spencer.png"><img src="https://labs.riseup.net/code/attachments/download/1035/20151005-spencer.png" width="300px"></a>
+
+Current issues in Tails
+=======================
+
+ - After Tails Greeter, it might be hard for some people to understand where
+ to click on the GNOME desktop to connect a Wi-Fi network.
+
+ - It's not possible to go from direct Tor connection to bridge mode in case
+ you realize once in the session that you actually need them to connect.
+
+ - It's hard to know whether you need to log in through a captive portal.
+
+ - There's no way of triggering Tor to reconnect after logging in through a
+ captive portal.
+
+ - Configuring bridges is done in two steps: (1) activate in the Greeter and
+ (2) configure in Tor Launcher. It can be scary for people who cannot afford
+ connecting without bridges to postponed the configuration after the session
+ is started.
+
+ - Bridges, firewall and proxy have to be configured again each time.
+
+ - There is no visual feedback on whether the connection to Tor is making
+ progress.
+
+ - If MAC spoofing fails but I decide that it's OK not to spoof MAC in my
+ situation, then I have to reboot Tails all the way.
+
+Open questions
+==============
+
+ - What's left from this configuration process on the desktop after Tor is
+ started?
+ - What do we do with the NetworkManager applet?
+ - Do we allow changing or visualizing the current settings?
+
+ - What's the best way of asking for bridges, keeping in mind
+ situations where people might be at risk if they don't use them?
+ - Lunar's proposal: Say you're at risk in the Greeter, then configure
+ bridges in the session.
+ - other possibility: Do everything in the session (offline mode and MAC
+ spoofing could still be optional settings in the Greeter), if so how?
+ - if we have persistent network configuration (for example bridges) per
+ local network, then this might conflict (or duplicate) the fact of
+ asking about bridges in the Greeter
+ - bridges might be needed on a give local network but not on
+ another, would it be possible to ask about that *after* selecting
+ the local network?
+
+ - Could we, technically speaking, do something more useful about the failure
+ of MAC spoofing than disabling the interface? in the Greeter? in the session?
+ - Should we ask for confirmation before disabling the interface?
+
+ - How shall we integrate the captive portal browser on the desktop in case we
+ need to get back to it (to log in again, to log out)?
+ - Lunar's proposal: as a detached windows
+ - other possibility: invisible browser by default, can be displayed again somehow
+
+Related work
+============
+
+ - [[Captive portal detection|detect_captive_portals]]
diff --git a/wiki/src/blueprint/non-discriminatory_language.mdwn b/wiki/src/blueprint/non-discriminatory_language.mdwn
new file mode 100644
index 0000000..2e9ad1f
--- /dev/null
+++ b/wiki/src/blueprint/non-discriminatory_language.mdwn
@@ -0,0 +1,72 @@
+Also tracked by ticket: https://labs.riseup.net/code/issues/10181
+
+What's the problem
+------------------
+
+some ideas/suggestions:
+
+* Can we measure how severe the problem is?
+
+ ` find $WIKIPATH -name *.de.po -type f -exec \
+ grep -ioE "Nutzer|Anwender|$MOREWORDS" '{}' \; | wc -l `
+
+ That could allow us to decide whether we have an urgent problem in
+ our documentation that needs to be addressed in general, or whether
+ it occurs only in a few places that can be fixed manually by
+ slightly twisting the language.
+
+* Via the same approach as we handle other translation issues: How do
+ other wikis/translations handle the same problem? Like TorProject,
+ GNOME, Debian, Wikipedia,... What would be the "official" (Duden?)
+ way to do it? (for comparison)
+
+* Other languages are not gender neutral as well. How is it handled in
+ the French/$MORELANG translation?
+ Of course it is difficult to compare "good" and "bad" languages with
+ regard to gender neutrality, and every language needs a mechanism to
+ express/discriminate between, for instance, gender where it is
+ necessary for understanding.
+
+* It should be decided what we want to achieve: non-discrimination
+ between which groups? A candidate/idea for a solution should again
+ be evaluated for this aspect. For instance if we decided to use
+ "Benutzerinnen und Benutzer" consistently, we might accidentially
+ exclude all groups that don't want themselves to be categorised to
+ male or female. We could bite the bullet and accept that we cannot
+ fix natural/spoken languages and need to take a feasible option.
+ Another approach could be to only remove/replace words (versus
+ adding them) to make the language less specific, and thus, less
+ discriminating. (On the other hand, there are some people that are
+ very effective in saying nothing with a lot of words.)
+
+Examples of sentences and their german translation
+--------------------------------------------------
+
+"Das Hauptziel einer Fehlerbeschreibung ist es, den Entwicklern genau
+zu sagen wie der Fehler reproduziert werden kann." from the bug
+reporting page. In this situation we could use "den Entwickelnden"
+oder a gender gap "den Entwickler*Innen". The question is also how we
+can maintain a good readability (for me personally a gender gap is not
+a problem for readability, it's sort of a habituation thing).
+
+Another example:
+"Das Ziel dieser Dokumentation ist zu erklären, wie man Tails benutzt
+und dem Nutzer die wesentlichen Sicherheitsfeatures darzustellen."
+from the introduction page. In this one we could use "den Nutzenden",
+but this sounds a bit weird. So maybe a gender gap fits more in here
+or a completely different term.
+
+Last example (there a a lot of them ;) I just picked some out quickly):
+"Tor wird gleichermaßen von Journalisten, Strafverfolgungsbehörden,
+Regierungen, Menschenrechtsaktivisten, Geschäftsführern, dem Militär,
+Missbrauchsopfern und normalen Bürgern, die sich um ihre Privatsphäre
+sorgen, benutzt." from "Why does Tails use Tor?"
+
+Interesting reads
+-----------------
+
+* https://de.wikipedia.org/wiki/Generisches_Maskulinum
+* this is a brochure of the austrian 'ministry for education and women' with some tips how to phrase:
+https://www.bmbf.gv.at/frauen/gleichbehandlung/sg/lf_gg_sprachgebrauch_26114.pdf
+* this is a guide to non discriminatory language not only about gender based discrimination but also about ageism, ableism... http://www.uibk.ac.at/gleichbehandlung/sprache/leitfaden_nicht_diskr_sprachgebrauch.pdf
+* https://de.wikipedia.org/wiki/Gender_Gap_%28Linguistik%29
diff --git a/wiki/src/blueprint/replace_vagrant.mdwn b/wiki/src/blueprint/replace_vagrant.mdwn
index 8d7b1c8..ebcc672 100644
--- a/wiki/src/blueprint/replace_vagrant.mdwn
+++ b/wiki/src/blueprint/replace_vagrant.mdwn
@@ -86,4 +86,7 @@ Plan
* Short-term: fix the Vagrant situation for the most important
usecases ([[!tails_ticket 7527]])
* Mid-term: fix the situation for real, starting with evaluating
- Docker ([[!tails_ticket 7530]], [[blueprint/evaluate_Docker]])
+ `vagrant-lxc` (in Stretch, [[!tails_ticket 10232]]) and `vagrant-libvirt` (see
+ [[blueprint|blueprint/vagrant-libvirt]]). If none of those is good
+ enough, then let's give another look to Docker ([[!tails_ticket
+ 7530]], [[blueprint/evaluate_Docker]]).
diff --git a/wiki/src/blueprint/report_2015_08.mdwn b/wiki/src/blueprint/report_2015_08.mdwn
index eec37e5..91cfee5 100644
--- a/wiki/src/blueprint/report_2015_08.mdwn
+++ b/wiki/src/blueprint/report_2015_08.mdwn
@@ -18,16 +18,24 @@ Releases
Code
====
-FIXME
+## Upgrades and changes
-* Alan submitted for review a new version of
- [Tor Monitor](https://mailman.boum.org/pipermail/tails-dev/2015-August/009381.html)
- (to replace Vidalia) and Sascha Steinbiss proposed to
- [package it for Debian](https://mailman.boum.org/pipermail/tails-dev/2015-August/009397.html).
+- Install Tor Browser 5.0.2 (based on Firefox ESR 38.2.1).
-* We drafted a script to [[!tails_ticket 9993 desc="run a Mumble server"]] from
- Tails, verified that the Mumble client in Tails Jessie works well, and
- started using it for internal meetings.
+- Install a 32-bit GRUB EFI boot loader. Tails should now start on some tablets
+with Intel Bay Trail processors among others.
+
+- Let the user know when Tails Installer has rejected a device because it is too
+small.
+
+- Upgrade Tor to 0.2.6.10-1~d70.wheezy+1+tails1
+
+## Fixed problems
+
+- Our AppArmor setup has been audited and improved in various ways which should
+harden the system.
+
+- The network should now be properly disabled when MAC address spoofing fails.
Documentation and website
=========================
@@ -49,8 +57,6 @@ Documentation and website
* We explained how to analyse [[Wi-Fi problems with Broadcom interfaces|support/known_issues#wireless]].
-FIXME
-
User experience
===============
@@ -74,8 +80,8 @@ Infrastructure
[[stopped saying that our pool is full|contribute/how/mirror#http]].
* scenarios, FIXME more that in April.
-
-* FIXME more?
+ - at the beginning of August: 177
+ - at the end of August: 191
Funding
=======
@@ -90,45 +96,69 @@ Outreach
* [We have Tails stickers again](http://t.co/AgtuTN0XmJ)! We'll share them during upcoming events, you can also [[make your own|contribute/how/promote/material/stickers]].
-* A talk about Tails took place during DebConf15 in Heidelberg, Germany, on August 15th.
-
-* DrWhax did a lightning talk about Tails at CCCamp.
+* Alan attended [GUADEC, the GNOME conference](https://2015.guadec.org/) in Gothenburg, Sweden on August 7 – 9 and connected us better with the GNOME community.
-* Alan attended GUADEC, the GNOME conference and connected us better
- with the GNOME community.
+* A talk about Tails took place during DebConf15 in Heidelberg, Germany, on August 15th.
-FIXME
+* DrWhax did a lightning talk about Tails at [CCCamp](https://events.ccc.de/camp/2015/wiki/Main_Page) on August 13 - 17 in Zehdenick, Germany.
Upcoming events
---------------
* 2015-09-22: [Tails - Computer nutzen und Privatsphäre schützen](http://pentabarf.linkemedienakademie.de/export/lima15_2/events/158.de.html) by Vera Henssler and Ulrich Overdieck in Berlin, Germany (in German)
-* 2015-09-29 to 2015-10-02: Farsi localization sprint in Amsterdam
+* 2015-09-29 to 2015-10-02: Farsi localization sprint in Amsterdam, Netherlands.
-* 2015-10-06 to 08: OTF Annual Summit in Washington DC
+* 2015-10-06 to 08: OTF Annual Summit in Washington DC, USA.
+
+* There will be a Tails and Tor workshop to the [Capitole du libre](https://2015.capitoledulibre.org) in Toulouse (France) on November 22nd.
On-going discussions
====================
-FIXME
+* Alan submitted for review a new version of
+ [Tor Monitor](https://mailman.boum.org/pipermail/tails-dev/2015-August/009381.html)
+ (to replace Vidalia) and Sascha Steinbiss proposed to
+ [package it for Debian](https://mailman.boum.org/pipermail/tails-dev/2015-August/009397.html).
+
+* We drafted a script to [[!tails_ticket 9993 desc="run a Mumble server"]] from
+ Tails, verified that the Mumble client in Tails Jessie works well, and
+ started using it for internal meetings.
Press and testimonials
======================
-FIXME
+* 2015-08-04: [Cinq systèmes d’exploitation pour snober Windows 10 (et Mac OS)](http://www.lemonde.fr/pixels/article/2015/08/04/cinq-systemes-d-exploitation-pour-snober-windows-10-et-mac-os_4710726_4408996.html) by Damien Leloup in Le Monde (in French).
+* 2015-08-29: [Tails OS 1.5 Offers Out-of-the-Box Privacy Protection](http://www.greycoder.com/tails-os-1-5-offers-out-of-the-box-privacy-protection/) by Tracy Knauer on GreyCoder.
Translation
===========
-FIXME
+At the end of the month:
+
+All website PO files
+
+ - de: 18% (1265) strings translated, 0% strings fuzzy, 17% words translated
+ - fr: 46% (3223) strings translated, 2% strings fuzzy, 43% words translated
+ - pt: 26% (1842) strings translated, 3% strings fuzzy, 24% words translated
+
+Total original words: 79407
+
+[[Core PO files|contribute/l10n_tricks/core_po_files.txt]]
+
+ - de: 59% (794) strings translated, 1% strings fuzzy, 66% words translated
+ - fr: 91% (1219) strings translated, 3% strings fuzzy, 92% words translated
+ - pt: 82% (1102) strings translated, 9% strings fuzzy, 85% words translated
+
+Total original words: 14404
+
Metrics
=======
-* Tails has been started more than FIXME times this month. This makes FIXME boots a day on average.
+* Tails has been started more than 469,870 times this month. This makes 15,157 boots a day on average.
-* FIXME downloads of the OpenPGP signature of Tails ISO from our website.
+* 31,870 downloads of the OpenPGP signature of Tails ISO from our website.
* 127 bug reports were received through WhisperBack.
diff --git a/wiki/src/blueprint/report_2015_09.mdwn b/wiki/src/blueprint/report_2015_09.mdwn
index 2bde8c3..246813a 100644
--- a/wiki/src/blueprint/report_2015_09.mdwn
+++ b/wiki/src/blueprint/report_2015_09.mdwn
@@ -30,6 +30,9 @@ Infrastructure
==============
* Our test suite covers FIXME scenarios, FIXME more that in April.
+ - at the beginning of September: 191
+ - at the end of September: 185 (FIXME: ask the developers why if
+ needed, after checking the SponsorR and SponsorS reports)
* FIXME more?
@@ -45,6 +48,7 @@ FIXME
Upcoming events
---------------
+There will be a Tails and Tor workshop to the [Capitole du libre](https://2015.capitoledulibre.org) in Toulouse (France) on November 22nd.
FIXME
@@ -55,20 +59,37 @@ FIXME
Press and testimonials
======================
-
-FIXME
-
+* 2015-09-24: [Open Source Privacy: Tails OS Issues Security Fixes and New Release](http://thevarguy.com/open-source-application-software-companies/092415/open-source-privacy-tails-os-issues-security-fixes-and-ne) by Christopher Tozzi on The VAR Guy.
+
Translation
===========
FIXME
+At the end of the month:
+
+All website PO files
+
+ - de: 19% (1283) strings translated, 0% strings fuzzy, 18% words translated
+ - fr: 46% (3120) strings translated, 2% strings fuzzy, 43% words translated
+ - pt: 27% (1863) strings translated, 3% strings fuzzy, 26% words translated
+
+Total original words: 76959
+
+[[Core PO files|contribute/l10n_tricks/core_po_files.txt]]
+
+ - de: 60% (803) strings translated, 0% strings fuzzy, 68% words translated
+ - fr: 92% (1214) strings translated, 3% strings fuzzy, 92% words translated
+ - pt: 84% (1119) strings translated, 8% strings fuzzy, 87% words translated
+
+Total original words: 14258
+
Metrics
=======
-* Tails has been started more than FIXME times this month. This makes FIXME boots a day on average.
+* Tails has been started more than 473.295 times this month. This makes 15.776 boots a day on average.
-* FIXME downloads of the OpenPGP signature of Tails ISO from our website.
+* 29.135 downloads of the OpenPGP signature of Tails ISO from our website.
* FIXME bug reports were received through WhisperBack.
diff --git a/wiki/src/blueprint/report_2015_10.mdwn b/wiki/src/blueprint/report_2015_10.mdwn
index ada1d84..568f536 100644
--- a/wiki/src/blueprint/report_2015_10.mdwn
+++ b/wiki/src/blueprint/report_2015_10.mdwn
@@ -35,6 +35,8 @@ FIXME
Upcoming events
---------------
+There will be a Tails and Tor workshop to the [Capitole du libre](https://2015.capitoledulibre.org) in Toulouse (France) on November 22nd.
+
FIXME
@@ -45,7 +47,7 @@ FIXME
Press and testimonials
======================
-
+2015-10-05: [Be completely anonymous online](http://www.postandcourier.com/article/20151005/PC05/151009881/1002/be-completely-anonymous-online) by Kim Komando in The Post and Courier.
FIXME
Translation
diff --git a/wiki/src/blueprint/reproducible_builds.mdwn b/wiki/src/blueprint/reproducible_builds.mdwn
new file mode 100644
index 0000000..6c871db
--- /dev/null
+++ b/wiki/src/blueprint/reproducible_builds.mdwn
@@ -0,0 +1,5 @@
+debconf (1.5.58) unstable; urgency=medium
+
+ * Don't update po/debconf.pot unless doing so changes something other than
+ the POT-Creation-Date header. The basic approach here is from gettext,
+ though implemented a bit more simply since we can assume perl.
diff --git a/wiki/src/bootstrap.css b/wiki/src/bootstrap.css
new file mode 100644
index 0000000..4f5f45f
--- /dev/null
+++ b/wiki/src/bootstrap.css
@@ -0,0 +1,6592 @@
+/*!
+ * Bootstrap v3.3.4 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+html {
+ font-family: sans-serif;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+body {
+ margin: 0;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+audio,
+canvas,
+progress,
+video {
+ display: inline-block;
+ vertical-align: baseline;
+}
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+[hidden],
+template {
+ display: none;
+}
+a {
+ background-color: transparent;
+}
+a:active,
+a:hover {
+ outline: 0;
+}
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+b,
+strong {
+ font-weight: bold;
+}
+dfn {
+ font-style: italic;
+}
+h1 {
+ margin: .67em 0;
+ font-size: 2em;
+}
+mark {
+ color: #000;
+ background: #ff0;
+}
+small {
+ font-size: 80%;
+}
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+sup {
+ top: -.5em;
+}
+sub {
+ bottom: -.25em;
+}
+img {
+ border: 0;
+}
+svg:not(:root) {
+ overflow: hidden;
+}
+figure {
+ margin: 1em 40px;
+}
+hr {
+ height: 0;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+pre {
+ overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+ margin: 0;
+ font: inherit;
+ color: inherit;
+}
+button {
+ overflow: visible;
+}
+button,
+select {
+ text-transform: none;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button;
+ cursor: pointer;
+}
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+input {
+ line-height: normal;
+}
+input[type="checkbox"],
+input[type="radio"] {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0;
+}
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+input[type="search"] {
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+fieldset {
+ padding: .35em .625em .75em;
+ margin: 0 2px;
+ border: 1px solid #c0c0c0;
+}
+legend {
+ padding: 0;
+ border: 0;
+}
+textarea {
+ overflow: auto;
+}
+optgroup {
+ font-weight: bold;
+}
+table {
+ border-spacing: 0;
+ border-collapse: collapse;
+}
+td,
+th {
+ padding: 0;
+}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+ *,
+ *:before,
+ *:after {
+ color: #000 !important;
+ text-shadow: none !important;
+ background: transparent !important;
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+ }
+ a,
+ a:visited {
+ text-decoration: underline;
+ }
+ a[href]:after {
+ content: " (" attr(href) ")";
+ }
+ abbr[title]:after {
+ content: " (" attr(title) ")";
+ }
+ a[href^="#"]:after,
+ a[href^="javascript:"]:after {
+ content: "";
+ }
+ pre,
+ blockquote {
+ border: 1px solid #999;
+
+ page-break-inside: avoid;
+ }
+ thead {
+ display: table-header-group;
+ }
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+ img {
+ max-width: 100% !important;
+ }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+ select {
+ background: #fff !important;
+ }
+ .navbar {
+ display: none;
+ }
+ .btn > .caret,
+ .dropup > .btn > .caret {
+ border-top-color: #000 !important;
+ }
+ .label {
+ border: 1px solid #000;
+ }
+ .table {
+ border-collapse: collapse !important;
+ }
+ .table td,
+ .table th {
+ background-color: #fff !important;
+ }
+ .table-bordered th,
+ .table-bordered td {
+ border: 1px solid #ddd !important;
+ }
+}
+@font-face {
+ font-family: 'Glyphicons Halflings';
+
+ src: url('../fonts/glyphicons-halflings-regular.eot');
+ src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+}
+.glyphicon {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.glyphicon-asterisk:before {
+ content: "\2a";
+}
+.glyphicon-plus:before {
+ content: "\2b";
+}
+.glyphicon-euro:before,
+.glyphicon-eur:before {
+ content: "\20ac";
+}
+.glyphicon-minus:before {
+ content: "\2212";
+}
+.glyphicon-cloud:before {
+ content: "\2601";
+}
+.glyphicon-envelope:before {
+ content: "\2709";
+}
+.glyphicon-pencil:before {
+ content: "\270f";
+}
+.glyphicon-glass:before {
+ content: "\e001";
+}
+.glyphicon-music:before {
+ content: "\e002";
+}
+.glyphicon-search:before {
+ content: "\e003";
+}
+.glyphicon-heart:before {
+ content: "\e005";
+}
+.glyphicon-star:before {
+ content: "\e006";
+}
+.glyphicon-star-empty:before {
+ content: "\e007";
+}
+.glyphicon-user:before {
+ content: "\e008";
+}
+.glyphicon-film:before {
+ content: "\e009";
+}
+.glyphicon-th-large:before {
+ content: "\e010";
+}
+.glyphicon-th:before {
+ content: "\e011";
+}
+.glyphicon-th-list:before {
+ content: "\e012";
+}
+.glyphicon-ok:before {
+ content: "\e013";
+}
+.glyphicon-remove:before {
+ content: "\e014";
+}
+.glyphicon-zoom-in:before {
+ content: "\e015";
+}
+.glyphicon-zoom-out:before {
+ content: "\e016";
+}
+.glyphicon-off:before {
+ content: "\e017";
+}
+.glyphicon-signal:before {
+ content: "\e018";
+}
+.glyphicon-cog:before {
+ content: "\e019";
+}
+.glyphicon-trash:before {
+ content: "\e020";
+}
+.glyphicon-home:before {
+ content: "\e021";
+}
+.glyphicon-file:before {
+ content: "\e022";
+}
+.glyphicon-time:before {
+ content: "\e023";
+}
+.glyphicon-road:before {
+ content: "\e024";
+}
+.glyphicon-download-alt:before {
+ content: "\e025";
+}
+.glyphicon-download:before {
+ content: "\e026";
+}
+.glyphicon-upload:before {
+ content: "\e027";
+}
+.glyphicon-inbox:before {
+ content: "\e028";
+}
+.glyphicon-play-circle:before {
+ content: "\e029";
+}
+.glyphicon-repeat:before {
+ content: "\e030";
+}
+.glyphicon-refresh:before {
+ content: "\e031";
+}
+.glyphicon-list-alt:before {
+ content: "\e032";
+}
+.glyphicon-lock:before {
+ content: "\e033";
+}
+.glyphicon-flag:before {
+ content: "\e034";
+}
+.glyphicon-headphones:before {
+ content: "\e035";
+}
+.glyphicon-volume-off:before {
+ content: "\e036";
+}
+.glyphicon-volume-down:before {
+ content: "\e037";
+}
+.glyphicon-volume-up:before {
+ content: "\e038";
+}
+.glyphicon-qrcode:before {
+ content: "\e039";
+}
+.glyphicon-barcode:before {
+ content: "\e040";
+}
+.glyphicon-tag:before {
+ content: "\e041";
+}
+.glyphicon-tags:before {
+ content: "\e042";
+}
+.glyphicon-book:before {
+ content: "\e043";
+}
+.glyphicon-bookmark:before {
+ content: "\e044";
+}
+.glyphicon-print:before {
+ content: "\e045";
+}
+.glyphicon-camera:before {
+ content: "\e046";
+}
+.glyphicon-font:before {
+ content: "\e047";
+}
+.glyphicon-bold:before {
+ content: "\e048";
+}
+.glyphicon-italic:before {
+ content: "\e049";
+}
+.glyphicon-text-height:before {
+ content: "\e050";
+}
+.glyphicon-text-width:before {
+ content: "\e051";
+}
+.glyphicon-align-left:before {
+ content: "\e052";
+}
+.glyphicon-align-center:before {
+ content: "\e053";
+}
+.glyphicon-align-right:before {
+ content: "\e054";
+}
+.glyphicon-align-justify:before {
+ content: "\e055";
+}
+.glyphicon-list:before {
+ content: "\e056";
+}
+.glyphicon-indent-left:before {
+ content: "\e057";
+}
+.glyphicon-indent-right:before {
+ content: "\e058";
+}
+.glyphicon-facetime-video:before {
+ content: "\e059";
+}
+.glyphicon-picture:before {
+ content: "\e060";
+}
+.glyphicon-map-marker:before {
+ content: "\e062";
+}
+.glyphicon-adjust:before {
+ content: "\e063";
+}
+.glyphicon-tint:before {
+ content: "\e064";
+}
+.glyphicon-edit:before {
+ content: "\e065";
+}
+.glyphicon-share:before {
+ content: "\e066";
+}
+.glyphicon-check:before {
+ content: "\e067";
+}
+.glyphicon-move:before {
+ content: "\e068";
+}
+.glyphicon-step-backward:before {
+ content: "\e069";
+}
+.glyphicon-fast-backward:before {
+ content: "\e070";
+}
+.glyphicon-backward:before {
+ content: "\e071";
+}
+.glyphicon-play:before {
+ content: "\e072";
+}
+.glyphicon-pause:before {
+ content: "\e073";
+}
+.glyphicon-stop:before {
+ content: "\e074";
+}
+.glyphicon-forward:before {
+ content: "\e075";
+}
+.glyphicon-fast-forward:before {
+ content: "\e076";
+}
+.glyphicon-step-forward:before {
+ content: "\e077";
+}
+.glyphicon-eject:before {
+ content: "\e078";
+}
+.glyphicon-chevron-left:before {
+ content: "\e079";
+}
+.glyphicon-chevron-right:before {
+ content: "\e080";
+}
+.glyphicon-plus-sign:before {
+ content: "\e081";
+}
+.glyphicon-minus-sign:before {
+ content: "\e082";
+}
+.glyphicon-remove-sign:before {
+ content: "\e083";
+}
+.glyphicon-ok-sign:before {
+ content: "\e084";
+}
+.glyphicon-question-sign:before {
+ content: "\e085";
+}
+.glyphicon-info-sign:before {
+ content: "\e086";
+}
+.glyphicon-screenshot:before {
+ content: "\e087";
+}
+.glyphicon-remove-circle:before {
+ content: "\e088";
+}
+.glyphicon-ok-circle:before {
+ content: "\e089";
+}
+.glyphicon-ban-circle:before {
+ content: "\e090";
+}
+.glyphicon-arrow-left:before {
+ content: "\e091";
+}
+.glyphicon-arrow-right:before {
+ content: "\e092";
+}
+.glyphicon-arrow-up:before {
+ content: "\e093";
+}
+.glyphicon-arrow-down:before {
+ content: "\e094";
+}
+.glyphicon-share-alt:before {
+ content: "\e095";
+}
+.glyphicon-resize-full:before {
+ content: "\e096";
+}
+.glyphicon-resize-small:before {
+ content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+ content: "\e101";
+}
+.glyphicon-gift:before {
+ content: "\e102";
+}
+.glyphicon-leaf:before {
+ content: "\e103";
+}
+.glyphicon-fire:before {
+ content: "\e104";
+}
+.glyphicon-eye-open:before {
+ content: "\e105";
+}
+.glyphicon-eye-close:before {
+ content: "\e106";
+}
+.glyphicon-warning-sign:before {
+ content: "\e107";
+}
+.glyphicon-plane:before {
+ content: "\e108";
+}
+.glyphicon-calendar:before {
+ content: "\e109";
+}
+.glyphicon-random:before {
+ content: "\e110";
+}
+.glyphicon-comment:before {
+ content: "\e111";
+}
+.glyphicon-magnet:before {
+ content: "\e112";
+}
+.glyphicon-chevron-up:before {
+ content: "\e113";
+}
+.glyphicon-chevron-down:before {
+ content: "\e114";
+}
+.glyphicon-retweet:before {
+ content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+ content: "\e116";
+}
+.glyphicon-folder-close:before {
+ content: "\e117";
+}
+.glyphicon-folder-open:before {
+ content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+ content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+ content: "\e120";
+}
+.glyphicon-hdd:before {
+ content: "\e121";
+}
+.glyphicon-bullhorn:before {
+ content: "\e122";
+}
+.glyphicon-bell:before {
+ content: "\e123";
+}
+.glyphicon-certificate:before {
+ content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+ content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+ content: "\e126";
+}
+.glyphicon-hand-right:before {
+ content: "\e127";
+}
+.glyphicon-hand-left:before {
+ content: "\e128";
+}
+.glyphicon-hand-up:before {
+ content: "\e129";
+}
+.glyphicon-hand-down:before {
+ content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+ content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+ content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+ content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+ content: "\e134";
+}
+.glyphicon-globe:before {
+ content: "\e135";
+}
+.glyphicon-wrench:before {
+ content: "\e136";
+}
+.glyphicon-tasks:before {
+ content: "\e137";
+}
+.glyphicon-filter:before {
+ content: "\e138";
+}
+.glyphicon-briefcase:before {
+ content: "\e139";
+}
+.glyphicon-fullscreen:before {
+ content: "\e140";
+}
+.glyphicon-dashboard:before {
+ content: "\e141";
+}
+.glyphicon-paperclip:before {
+ content: "\e142";
+}
+.glyphicon-heart-empty:before {
+ content: "\e143";
+}
+.glyphicon-link:before {
+ content: "\e144";
+}
+.glyphicon-phone:before {
+ content: "\e145";
+}
+.glyphicon-pushpin:before {
+ content: "\e146";
+}
+.glyphicon-usd:before {
+ content: "\e148";
+}
+.glyphicon-gbp:before {
+ content: "\e149";
+}
+.glyphicon-sort:before {
+ content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+ content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+ content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+ content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+ content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+ content: "\e155";
+}
+.glyphicon-sort-by-attributes-alt:before {
+ content: "\e156";
+}
+.glyphicon-unchecked:before {
+ content: "\e157";
+}
+.glyphicon-expand:before {
+ content: "\e158";
+}
+.glyphicon-collapse-down:before {
+ content: "\e159";
+}
+.glyphicon-collapse-up:before {
+ content: "\e160";
+}
+.glyphicon-log-in:before {
+ content: "\e161";
+}
+.glyphicon-flash:before {
+ content: "\e162";
+}
+.glyphicon-log-out:before {
+ content: "\e163";
+}
+.glyphicon-new-window:before {
+ content: "\e164";
+}
+.glyphicon-record:before {
+ content: "\e165";
+}
+.glyphicon-save:before {
+ content: "\e166";
+}
+.glyphicon-open:before {
+ content: "\e167";
+}
+.glyphicon-saved:before {
+ content: "\e168";
+}
+.glyphicon-import:before {
+ content: "\e169";
+}
+.glyphicon-export:before {
+ content: "\e170";
+}
+.glyphicon-send:before {
+ content: "\e171";
+}
+.glyphicon-floppy-disk:before {
+ content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+ content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+ content: "\e174";
+}
+.glyphicon-floppy-save:before {
+ content: "\e175";
+}
+.glyphicon-floppy-open:before {
+ content: "\e176";
+}
+.glyphicon-credit-card:before {
+ content: "\e177";
+}
+.glyphicon-transfer:before {
+ content: "\e178";
+}
+.glyphicon-cutlery:before {
+ content: "\e179";
+}
+.glyphicon-header:before {
+ content: "\e180";
+}
+.glyphicon-compressed:before {
+ content: "\e181";
+}
+.glyphicon-earphone:before {
+ content: "\e182";
+}
+.glyphicon-phone-alt:before {
+ content: "\e183";
+}
+.glyphicon-tower:before {
+ content: "\e184";
+}
+.glyphicon-stats:before {
+ content: "\e185";
+}
+.glyphicon-sd-video:before {
+ content: "\e186";
+}
+.glyphicon-hd-video:before {
+ content: "\e187";
+}
+.glyphicon-subtitles:before {
+ content: "\e188";
+}
+.glyphicon-sound-stereo:before {
+ content: "\e189";
+}
+.glyphicon-sound-dolby:before {
+ content: "\e190";
+}
+.glyphicon-sound-5-1:before {
+ content: "\e191";
+}
+.glyphicon-sound-6-1:before {
+ content: "\e192";
+}
+.glyphicon-sound-7-1:before {
+ content: "\e193";
+}
+.glyphicon-copyright-mark:before {
+ content: "\e194";
+}
+.glyphicon-registration-mark:before {
+ content: "\e195";
+}
+.glyphicon-cloud-download:before {
+ content: "\e197";
+}
+.glyphicon-cloud-upload:before {
+ content: "\e198";
+}
+.glyphicon-tree-conifer:before {
+ content: "\e199";
+}
+.glyphicon-tree-deciduous:before {
+ content: "\e200";
+}
+.glyphicon-cd:before {
+ content: "\e201";
+}
+.glyphicon-save-file:before {
+ content: "\e202";
+}
+.glyphicon-open-file:before {
+ content: "\e203";
+}
+.glyphicon-level-up:before {
+ content: "\e204";
+}
+.glyphicon-copy:before {
+ content: "\e205";
+}
+.glyphicon-paste:before {
+ content: "\e206";
+}
+.glyphicon-alert:before {
+ content: "\e209";
+}
+.glyphicon-equalizer:before {
+ content: "\e210";
+}
+.glyphicon-king:before {
+ content: "\e211";
+}
+.glyphicon-queen:before {
+ content: "\e212";
+}
+.glyphicon-pawn:before {
+ content: "\e213";
+}
+.glyphicon-bishop:before {
+ content: "\e214";
+}
+.glyphicon-knight:before {
+ content: "\e215";
+}
+.glyphicon-baby-formula:before {
+ content: "\e216";
+}
+.glyphicon-tent:before {
+ content: "\26fa";
+}
+.glyphicon-blackboard:before {
+ content: "\e218";
+}
+.glyphicon-bed:before {
+ content: "\e219";
+}
+.glyphicon-apple:before {
+ content: "\f8ff";
+}
+.glyphicon-erase:before {
+ content: "\e221";
+}
+.glyphicon-hourglass:before {
+ content: "\231b";
+}
+.glyphicon-lamp:before {
+ content: "\e223";
+}
+.glyphicon-duplicate:before {
+ content: "\e224";
+}
+.glyphicon-piggy-bank:before {
+ content: "\e225";
+}
+.glyphicon-scissors:before {
+ content: "\e226";
+}
+.glyphicon-bitcoin:before {
+ content: "\e227";
+}
+.glyphicon-btc:before {
+ content: "\e227";
+}
+.glyphicon-xbt:before {
+ content: "\e227";
+}
+.glyphicon-yen:before {
+ content: "\00a5";
+}
+.glyphicon-jpy:before {
+ content: "\00a5";
+}
+.glyphicon-ruble:before {
+ content: "\20bd";
+}
+.glyphicon-rub:before {
+ content: "\20bd";
+}
+.glyphicon-scale:before {
+ content: "\e230";
+}
+.glyphicon-ice-lolly:before {
+ content: "\e231";
+}
+.glyphicon-ice-lolly-tasted:before {
+ content: "\e232";
+}
+.glyphicon-education:before {
+ content: "\e233";
+}
+.glyphicon-option-horizontal:before {
+ content: "\e234";
+}
+.glyphicon-option-vertical:before {
+ content: "\e235";
+}
+.glyphicon-menu-hamburger:before {
+ content: "\e236";
+}
+.glyphicon-modal-window:before {
+ content: "\e237";
+}
+.glyphicon-oil:before {
+ content: "\e238";
+}
+.glyphicon-grain:before {
+ content: "\e239";
+}
+.glyphicon-sunglasses:before {
+ content: "\e240";
+}
+.glyphicon-text-size:before {
+ content: "\e241";
+}
+.glyphicon-text-color:before {
+ content: "\e242";
+}
+.glyphicon-text-background:before {
+ content: "\e243";
+}
+.glyphicon-object-align-top:before {
+ content: "\e244";
+}
+.glyphicon-object-align-bottom:before {
+ content: "\e245";
+}
+.glyphicon-object-align-horizontal:before {
+ content: "\e246";
+}
+.glyphicon-object-align-left:before {
+ content: "\e247";
+}
+.glyphicon-object-align-vertical:before {
+ content: "\e248";
+}
+.glyphicon-object-align-right:before {
+ content: "\e249";
+}
+.glyphicon-triangle-right:before {
+ content: "\e250";
+}
+.glyphicon-triangle-left:before {
+ content: "\e251";
+}
+.glyphicon-triangle-bottom:before {
+ content: "\e252";
+}
+.glyphicon-triangle-top:before {
+ content: "\e253";
+}
+.glyphicon-console:before {
+ content: "\e254";
+}
+.glyphicon-superscript:before {
+ content: "\e255";
+}
+.glyphicon-subscript:before {
+ content: "\e256";
+}
+.glyphicon-menu-left:before {
+ content: "\e257";
+}
+.glyphicon-menu-right:before {
+ content: "\e258";
+}
+.glyphicon-menu-down:before {
+ content: "\e259";
+}
+.glyphicon-menu-up:before {
+ content: "\e260";
+}
+* {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+*:before,
+*:after {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+html {
+ font-size: 10px;
+
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+body {
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #333;
+ background-color: #fff;
+}
+input,
+button,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+a {
+ color: #337ab7;
+ text-decoration: none;
+}
+a:hover,
+a:focus {
+ color: #23527c;
+ text-decoration: underline;
+}
+a:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+figure {
+ margin: 0;
+}
+img {
+ vertical-align: middle;
+}
+.img-responsive,
+.thumbnail > img,
+.thumbnail a > img,
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ display: block;
+ max-width: 100%;
+ height: auto;
+}
+.img-rounded {
+ border-radius: 6px;
+}
+.img-thumbnail {
+ display: inline-block;
+ max-width: 100%;
+ height: auto;
+ padding: 4px;
+ line-height: 1.42857143;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ -webkit-transition: all .2s ease-in-out;
+ -o-transition: all .2s ease-in-out;
+ transition: all .2s ease-in-out;
+}
+.img-circle {
+ border-radius: 50%;
+}
+hr {
+ margin-top: 20px;
+ margin-bottom: 20px;
+ border: 0;
+ border-top: 1px solid #eee;
+}
+.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;
+}
+[role="button"] {
+ cursor: pointer;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+ font-family: inherit;
+ font-weight: 500;
+ line-height: 1.1;
+ color: inherit;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
+ font-weight: normal;
+ line-height: 1;
+ color: #777;
+}
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+ margin-top: 20px;
+ margin-bottom: 10px;
+}
+h1 small,
+.h1 small,
+h2 small,
+.h2 small,
+h3 small,
+.h3 small,
+h1 .small,
+.h1 .small,
+h2 .small,
+.h2 .small,
+h3 .small,
+.h3 .small {
+ font-size: 65%;
+}
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+h4 small,
+.h4 small,
+h5 small,
+.h5 small,
+h6 small,
+.h6 small,
+h4 .small,
+.h4 .small,
+h5 .small,
+.h5 .small,
+h6 .small,
+.h6 .small {
+ font-size: 75%;
+}
+h1,
+.h1 {
+ font-size: 36px;
+}
+h2,
+.h2 {
+ font-size: 30px;
+}
+h3,
+.h3 {
+ font-size: 24px;
+}
+h4,
+.h4 {
+ font-size: 18px;
+}
+h5,
+.h5 {
+ font-size: 14px;
+}
+h6,
+.h6 {
+ font-size: 12px;
+}
+p {
+ margin: 0 0 10px;
+}
+.lead {
+ margin-bottom: 20px;
+ font-size: 16px;
+ font-weight: 300;
+ line-height: 1.4;
+}
+@media (min-width: 768px) {
+ .lead {
+ font-size: 21px;
+ }
+}
+small,
+.small {
+ font-size: 85%;
+}
+mark,
+.mark {
+ padding: .2em;
+ background-color: #fcf8e3;
+}
+.text-left {
+ text-align: left;
+}
+.text-right {
+ text-align: right;
+}
+.text-center {
+ text-align: center;
+}
+.text-justify {
+ text-align: justify;
+}
+.text-nowrap {
+ white-space: nowrap;
+}
+.text-lowercase {
+ text-transform: lowercase;
+}
+.text-uppercase {
+ text-transform: uppercase;
+}
+.text-capitalize {
+ text-transform: capitalize;
+}
+.text-muted {
+ color: #777;
+}
+.text-primary {
+ color: #337ab7;
+}
+a.text-primary:hover,
+a.text-primary:focus {
+ color: #286090;
+}
+.text-success {
+ color: #3c763d;
+}
+a.text-success:hover,
+a.text-success:focus {
+ color: #2b542c;
+}
+.text-info {
+ color: #31708f;
+}
+a.text-info:hover,
+a.text-info:focus {
+ color: #245269;
+}
+.text-warning {
+ color: #8a6d3b;
+}
+a.text-warning:hover,
+a.text-warning:focus {
+ color: #66512c;
+}
+.text-danger {
+ color: #a94442;
+}
+a.text-danger:hover,
+a.text-danger:focus {
+ color: #843534;
+}
+.bg-primary {
+ color: #fff;
+ background-color: #337ab7;
+}
+a.bg-primary:hover {
+ background-color: #286090;
+}
+.bg-success {
+ background-color: #dff0d8;
+}
+a.bg-success:hover {
+ background-color: #c1e2b3;
+}
+.bg-info {
+ background-color: #d9edf7;
+}
+a.bg-info:hover {
+ background-color: #afd9ee;
+}
+.bg-warning {
+ background-color: #fcf8e3;
+}
+a.bg-warning:hover {
+ background-color: #f7ecb5;
+}
+.bg-danger {
+ background-color: #f2dede;
+}
+a.bg-danger:hover {
+ background-color: #e4b9b9;
+}
+.page-header {
+ padding-bottom: 9px;
+ margin: 40px 0 20px;
+ border-bottom: 1px solid #eee;
+}
+ul,
+ol {
+ margin-top: 0;
+ margin-bottom: 10px;
+}
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+ margin-bottom: 0;
+}
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+.list-inline {
+ padding-left: 0;
+ margin-left: -5px;
+ list-style: none;
+}
+.list-inline > li {
+ display: inline-block;
+ padding-right: 5px;
+ padding-left: 5px;
+}
+dl {
+ margin-top: 0;
+ margin-bottom: 20px;
+}
+dt,
+dd {
+ line-height: 1.42857143;
+}
+dt {
+ font-weight: bold;
+}
+dd {
+ margin-left: 0;
+}
+@media (min-width: 768px) {
+ .dl-horizontal dt {
+ float: left;
+ width: 160px;
+ overflow: hidden;
+ clear: left;
+ text-align: right;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ .dl-horizontal dd {
+ margin-left: 180px;
+ }
+}
+abbr[title],
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted #777;
+}
+.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+blockquote {
+ padding: 10px 20px;
+ margin: 0 0 20px;
+ font-size: 17.5px;
+ border-left: 5px solid #eee;
+}
+blockquote p:last-child,
+blockquote ul:last-child,
+blockquote ol:last-child {
+ margin-bottom: 0;
+}
+blockquote footer,
+blockquote small,
+blockquote .small {
+ display: block;
+ font-size: 80%;
+ line-height: 1.42857143;
+ color: #777;
+}
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+ content: '\2014 \00A0';
+}
+.blockquote-reverse,
+blockquote.pull-right {
+ padding-right: 15px;
+ padding-left: 0;
+ text-align: right;
+ border-right: 5px solid #eee;
+ border-left: 0;
+}
+.blockquote-reverse footer:before,
+blockquote.pull-right footer:before,
+.blockquote-reverse small:before,
+blockquote.pull-right small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right .small:before {
+ content: '';
+}
+.blockquote-reverse footer:after,
+blockquote.pull-right footer:after,
+.blockquote-reverse small:after,
+blockquote.pull-right small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right .small:after {
+ content: '\00A0 \2014';
+}
+address {
+ margin-bottom: 20px;
+ font-style: normal;
+ line-height: 1.42857143;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+}
+code {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #c7254e;
+ background-color: #f9f2f4;
+ border-radius: 4px;
+}
+kbd {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #fff;
+ background-color: #333;
+ border-radius: 3px;
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+}
+kbd kbd {
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+pre {
+ display: block;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 13px;
+ line-height: 1.42857143;
+ color: #333;
+ word-break: break-all;
+ word-wrap: break-word;
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+}
+pre code {
+ padding: 0;
+ font-size: inherit;
+ color: inherit;
+ white-space: pre-wrap;
+ background-color: transparent;
+ border-radius: 0;
+}
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+.container {
+ padding-right: 15px;
+ padding-left: 15px;
+ margin-right: auto;
+ margin-left: auto;
+}
+@media (min-width: 768px) {
+ .container {
+ width: 750px;
+ }
+}
+@media (min-width: 992px) {
+ .container {
+ width: 970px;
+ }
+}
+@media (min-width: 1200px) {
+ .container {
+ width: 1170px;
+ }
+}
+.container-fluid {
+ padding-right: 15px;
+ padding-left: 15px;
+ margin-right: auto;
+ margin-left: auto;
+}
+.row {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+ position: relative;
+ min-height: 1px;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+ 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-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+ 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-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+ 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-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+ 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;
+ }
+}
+table {
+ background-color: transparent;
+}
+caption {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ color: #777;
+ text-align: left;
+}
+th {
+ text-align: left;
+}
+.table {
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: 20px;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ padding: 8px;
+ line-height: 1.42857143;
+ vertical-align: top;
+ border-top: 1px solid #ddd;
+}
+.table > thead > tr > th {
+ vertical-align: bottom;
+ border-bottom: 2px solid #ddd;
+}
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > th,
+.table > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > td {
+ border-top: 0;
+}
+.table > tbody + tbody {
+ border-top: 2px solid #ddd;
+}
+.table .table {
+ background-color: #fff;
+}
+.table-condensed > thead > tr > th,
+.table-condensed > tbody > tr > th,
+.table-condensed > tfoot > tr > th,
+.table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > td {
+ padding: 5px;
+}
+.table-bordered {
+ border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+ border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 2px;
+}
+.table-striped > tbody > tr:nth-of-type(odd) {
+ background-color: #f9f9f9;
+}
+.table-hover > tbody > tr:hover {
+ background-color: #f5f5f5;
+}
+table col[class*="col-"] {
+ position: static;
+ display: table-column;
+ float: none;
+}
+table td[class*="col-"],
+table th[class*="col-"] {
+ position: static;
+ display: table-cell;
+ float: none;
+}
+.table > thead > tr > td.active,
+.table > tbody > tr > td.active,
+.table > tfoot > tr > td.active,
+.table > thead > tr > th.active,
+.table > tbody > tr > th.active,
+.table > tfoot > tr > th.active,
+.table > thead > tr.active > td,
+.table > tbody > tr.active > td,
+.table > tfoot > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr.active > th,
+.table > tfoot > tr.active > th {
+ background-color: #f5f5f5;
+}
+.table-hover > tbody > tr > td.active:hover,
+.table-hover > tbody > tr > th.active:hover,
+.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr:hover > .active,
+.table-hover > tbody > tr.active:hover > th {
+ background-color: #e8e8e8;
+}
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+ background-color: #dff0d8;
+}
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr:hover > .success,
+.table-hover > tbody > tr.success:hover > th {
+ background-color: #d0e9c6;
+}
+.table > thead > tr > td.info,
+.table > tbody > tr > td.info,
+.table > tfoot > tr > td.info,
+.table > thead > tr > th.info,
+.table > tbody > tr > th.info,
+.table > tfoot > tr > th.info,
+.table > thead > tr.info > td,
+.table > tbody > tr.info > td,
+.table > tfoot > tr.info > td,
+.table > thead > tr.info > th,
+.table > tbody > tr.info > th,
+.table > tfoot > tr.info > th {
+ background-color: #d9edf7;
+}
+.table-hover > tbody > tr > td.info:hover,
+.table-hover > tbody > tr > th.info:hover,
+.table-hover > tbody > tr.info:hover > td,
+.table-hover > tbody > tr:hover > .info,
+.table-hover > tbody > tr.info:hover > th {
+ background-color: #c4e3f3;
+}
+.table > thead > tr > td.warning,
+.table > tbody > tr > td.warning,
+.table > tfoot > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > tbody > tr > th.warning,
+.table > tfoot > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > tbody > tr.warning > td,
+.table > tfoot > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr.warning > th {
+ background-color: #fcf8e3;
+}
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr:hover > .warning,
+.table-hover > tbody > tr.warning:hover > th {
+ background-color: #faf2cc;
+}
+.table > thead > tr > td.danger,
+.table > tbody > tr > td.danger,
+.table > tfoot > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > tbody > tr > th.danger,
+.table > tfoot > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > tbody > tr.danger > td,
+.table > tfoot > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr.danger > th {
+ background-color: #f2dede;
+}
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr:hover > .danger,
+.table-hover > tbody > tr.danger:hover > th {
+ background-color: #ebcccc;
+}
+.table-responsive {
+ min-height: .01%;
+ overflow-x: auto;
+}
+@media screen and (max-width: 767px) {
+ .table-responsive {
+ width: 100%;
+ margin-bottom: 15px;
+ overflow-y: hidden;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ border: 1px solid #ddd;
+ }
+ .table-responsive > .table {
+ margin-bottom: 0;
+ }
+ .table-responsive > .table > thead > tr > th,
+ .table-responsive > .table > tbody > tr > th,
+ .table-responsive > .table > tfoot > tr > th,
+ .table-responsive > .table > thead > tr > td,
+ .table-responsive > .table > tbody > tr > td,
+ .table-responsive > .table > tfoot > tr > td {
+ white-space: nowrap;
+ }
+ .table-responsive > .table-bordered {
+ border: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:first-child,
+ .table-responsive > .table-bordered > tbody > tr > th:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+ .table-responsive > .table-bordered > thead > tr > td:first-child,
+ .table-responsive > .table-bordered > tbody > tr > td:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:last-child,
+ .table-responsive > .table-bordered > tbody > tr > th:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+ .table-responsive > .table-bordered > thead > tr > td:last-child,
+ .table-responsive > .table-bordered > tbody > tr > td:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+ }
+ .table-responsive > .table-bordered > tbody > tr:last-child > th,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+ .table-responsive > .table-bordered > tbody > tr:last-child > td,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+ border-bottom: 0;
+ }
+}
+fieldset {
+ min-width: 0;
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 21px;
+ line-height: inherit;
+ color: #333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
+}
+label {
+ display: inline-block;
+ max-width: 100%;
+ margin-bottom: 5px;
+ font-weight: bold;
+}
+input[type="search"] {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+input[type="radio"],
+input[type="checkbox"] {
+ margin: 4px 0 0;
+ margin-top: 1px \9;
+ line-height: normal;
+}
+input[type="file"] {
+ display: block;
+}
+input[type="range"] {
+ display: block;
+ width: 100%;
+}
+select[multiple],
+select[size] {
+ height: auto;
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+output {
+ display: block;
+ padding-top: 7px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #555;
+}
+.form-control {
+ display: block;
+ width: 100%;
+ height: 34px;
+ padding: 6px 12px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #555;
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.form-control:focus {
+ border-color: #66afe9;
+ outline: 0;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+}
+.form-control::-moz-placeholder {
+ color: #999;
+ opacity: 1;
+}
+.form-control:-ms-input-placeholder {
+ color: #999;
+}
+.form-control::-webkit-input-placeholder {
+ color: #999;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ background-color: #eee;
+ opacity: 1;
+}
+.form-control[disabled],
+fieldset[disabled] .form-control {
+ cursor: not-allowed;
+}
+textarea.form-control {
+ height: auto;
+}
+input[type="search"] {
+ -webkit-appearance: none;
+}
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ input[type="date"],
+ input[type="time"],
+ input[type="datetime-local"],
+ input[type="month"] {
+ line-height: 34px;
+ }
+ input[type="date"].input-sm,
+ input[type="time"].input-sm,
+ input[type="datetime-local"].input-sm,
+ input[type="month"].input-sm,
+ .input-group-sm input[type="date"],
+ .input-group-sm input[type="time"],
+ .input-group-sm input[type="datetime-local"],
+ .input-group-sm input[type="month"] {
+ line-height: 30px;
+ }
+ input[type="date"].input-lg,
+ input[type="time"].input-lg,
+ input[type="datetime-local"].input-lg,
+ input[type="month"].input-lg,
+ .input-group-lg input[type="date"],
+ .input-group-lg input[type="time"],
+ .input-group-lg input[type="datetime-local"],
+ .input-group-lg input[type="month"] {
+ line-height: 46px;
+ }
+}
+.form-group {
+ margin-bottom: 15px;
+}
+.radio,
+.checkbox {
+ position: relative;
+ display: block;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+.radio label,
+.checkbox label {
+ min-height: 20px;
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ cursor: pointer;
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+ position: absolute;
+ margin-top: 4px \9;
+ margin-left: -20px;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+ margin-top: -5px;
+}
+.radio-inline,
+.checkbox-inline {
+ position: relative;
+ display: inline-block;
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ vertical-align: middle;
+ cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+ margin-top: 0;
+ margin-left: 10px;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"].disabled,
+input[type="checkbox"].disabled,
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"] {
+ cursor: not-allowed;
+}
+.radio-inline.disabled,
+.checkbox-inline.disabled,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox-inline {
+ cursor: not-allowed;
+}
+.radio.disabled label,
+.checkbox.disabled label,
+fieldset[disabled] .radio label,
+fieldset[disabled] .checkbox label {
+ cursor: not-allowed;
+}
+.form-control-static {
+ min-height: 34px;
+ padding-top: 7px;
+ padding-bottom: 7px;
+ margin-bottom: 0;
+}
+.form-control-static.input-lg,
+.form-control-static.input-sm {
+ padding-right: 0;
+ padding-left: 0;
+}
+.input-sm {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+select.input-sm {
+ height: 30px;
+ line-height: 30px;
+}
+textarea.input-sm,
+select[multiple].input-sm {
+ height: auto;
+}
+.form-group-sm .form-control {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+select.form-group-sm .form-control {
+ height: 30px;
+ line-height: 30px;
+}
+textarea.form-group-sm .form-control,
+select[multiple].form-group-sm .form-control {
+ height: auto;
+}
+.form-group-sm .form-control-static {
+ height: 30px;
+ min-height: 32px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+}
+.input-lg {
+ height: 46px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+select.input-lg {
+ height: 46px;
+ line-height: 46px;
+}
+textarea.input-lg,
+select[multiple].input-lg {
+ height: auto;
+}
+.form-group-lg .form-control {
+ height: 46px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+select.form-group-lg .form-control {
+ height: 46px;
+ line-height: 46px;
+}
+textarea.form-group-lg .form-control,
+select[multiple].form-group-lg .form-control {
+ height: auto;
+}
+.form-group-lg .form-control-static {
+ height: 46px;
+ min-height: 38px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+}
+.has-feedback {
+ position: relative;
+}
+.has-feedback .form-control {
+ padding-right: 42.5px;
+}
+.form-control-feedback {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ display: block;
+ width: 34px;
+ height: 34px;
+ line-height: 34px;
+ text-align: center;
+ pointer-events: none;
+}
+.input-lg + .form-control-feedback {
+ width: 46px;
+ height: 46px;
+ line-height: 46px;
+}
+.input-sm + .form-control-feedback {
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
+}
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline,
+.has-success.radio label,
+.has-success.checkbox label,
+.has-success.radio-inline label,
+.has-success.checkbox-inline label {
+ color: #3c763d;
+}
+.has-success .form-control {
+ border-color: #3c763d;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-success .form-control:focus {
+ border-color: #2b542c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+}
+.has-success .input-group-addon {
+ color: #3c763d;
+ background-color: #dff0d8;
+ border-color: #3c763d;
+}
+.has-success .form-control-feedback {
+ color: #3c763d;
+}
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline,
+.has-warning.radio label,
+.has-warning.checkbox label,
+.has-warning.radio-inline label,
+.has-warning.checkbox-inline label {
+ color: #8a6d3b;
+}
+.has-warning .form-control {
+ border-color: #8a6d3b;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-warning .form-control:focus {
+ border-color: #66512c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+}
+.has-warning .input-group-addon {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #8a6d3b;
+}
+.has-warning .form-control-feedback {
+ color: #8a6d3b;
+}
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline,
+.has-error.radio label,
+.has-error.checkbox label,
+.has-error.radio-inline label,
+.has-error.checkbox-inline label {
+ color: #a94442;
+}
+.has-error .form-control {
+ border-color: #a94442;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-error .form-control:focus {
+ border-color: #843534;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+}
+.has-error .input-group-addon {
+ color: #a94442;
+ background-color: #f2dede;
+ border-color: #a94442;
+}
+.has-error .form-control-feedback {
+ color: #a94442;
+}
+.has-feedback label ~ .form-control-feedback {
+ top: 25px;
+}
+.has-feedback label.sr-only ~ .form-control-feedback {
+ top: 0;
+}
+.help-block {
+ display: block;
+ margin-top: 5px;
+ margin-bottom: 10px;
+ color: #737373;
+}
+@media (min-width: 768px) {
+ .form-inline .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .form-inline .form-control-static {
+ display: inline-block;
+ }
+ .form-inline .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .form-inline .input-group .input-group-addon,
+ .form-inline .input-group .input-group-btn,
+ .form-inline .input-group .form-control {
+ width: auto;
+ }
+ .form-inline .input-group > .form-control {
+ width: 100%;
+ }
+ .form-inline .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .radio,
+ .form-inline .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .radio label,
+ .form-inline .checkbox label {
+ padding-left: 0;
+ }
+ .form-inline .radio input[type="radio"],
+ .form-inline .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .form-inline .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+ padding-top: 7px;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+ min-height: 27px;
+}
+.form-horizontal .form-group {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+@media (min-width: 768px) {
+ .form-horizontal .control-label {
+ padding-top: 7px;
+ margin-bottom: 0;
+ text-align: right;
+ }
+}
+.form-horizontal .has-feedback .form-control-feedback {
+ right: 15px;
+}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-lg .control-label {
+ padding-top: 14.333333px;
+ }
+}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-sm .control-label {
+ padding-top: 6px;
+ }
+}
+.btn {
+ display: inline-block;
+ padding: 6px 12px;
+ margin-bottom: 0;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1.42857143;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+.btn:hover,
+.btn:focus,
+.btn.focus {
+ color: #333;
+ text-decoration: none;
+}
+.btn:active,
+.btn.active {
+ background-image: none;
+ outline: 0;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+ cursor: not-allowed;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ opacity: .65;
+}
+a.btn.disabled,
+fieldset[disabled] a.btn {
+ pointer-events: none;
+}
+.btn-default {
+ color: #333;
+ background-color: #fff;
+ border-color: #ccc;
+}
+.btn-default:hover,
+.btn-default:focus,
+.btn-default.focus,
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ color: #333;
+ background-color: #e6e6e6;
+ border-color: #adadad;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ background-image: none;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+ background-color: #fff;
+ border-color: #ccc;
+}
+.btn-default .badge {
+ color: #fff;
+ background-color: #333;
+}
+.btn-primary {
+ color: #fff;
+ background-color: #337ab7;
+ border-color: #2e6da4;
+}
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary.focus,
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ color: #fff;
+ background-color: #286090;
+ border-color: #204d74;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ background-image: none;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+ background-color: #337ab7;
+ border-color: #2e6da4;
+}
+.btn-primary .badge {
+ color: #337ab7;
+ background-color: #fff;
+}
+.btn-success {
+ color: #fff;
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+.btn-success:hover,
+.btn-success:focus,
+.btn-success.focus,
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #398439;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ background-image: none;
+}
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+.btn-success .badge {
+ color: #5cb85c;
+ background-color: #fff;
+}
+.btn-info {
+ color: #fff;
+ background-color: #5bc0de;
+ border-color: #46b8da;
+}
+.btn-info:hover,
+.btn-info:focus,
+.btn-info.focus,
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ color: #fff;
+ background-color: #31b0d5;
+ border-color: #269abc;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ background-image: none;
+}
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+ background-color: #5bc0de;
+ border-color: #46b8da;
+}
+.btn-info .badge {
+ color: #5bc0de;
+ background-color: #fff;
+}
+.btn-warning {
+ color: #fff;
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning.focus,
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ color: #fff;
+ background-color: #ec971f;
+ border-color: #d58512;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ background-image: none;
+}
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+.btn-warning .badge {
+ color: #f0ad4e;
+ background-color: #fff;
+}
+.btn-danger {
+ color: #fff;
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger.focus,
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ color: #fff;
+ background-color: #c9302c;
+ border-color: #ac2925;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ background-image: none;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+.btn-danger .badge {
+ color: #d9534f;
+ background-color: #fff;
+}
+.btn-link {
+ font-weight: normal;
+ color: #337ab7;
+ border-radius: 0;
+}
+.btn-link,
+.btn-link:active,
+.btn-link.active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+ background-color: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+ border-color: transparent;
+}
+.btn-link:hover,
+.btn-link:focus {
+ color: #23527c;
+ text-decoration: underline;
+ background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+ color: #777;
+ text-decoration: none;
+}
+.btn-lg,
+.btn-group-lg > .btn {
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+ padding: 1px 5px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+.btn-block {
+ display: block;
+ width: 100%;
+}
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+ width: 100%;
+}
+.fade {
+ opacity: 0;
+ -webkit-transition: opacity .15s linear;
+ -o-transition: opacity .15s linear;
+ transition: opacity .15s linear;
+}
+.fade.in {
+ opacity: 1;
+}
+.collapse {
+ display: none;
+}
+.collapse.in {
+ display: block;
+}
+tr.collapse.in {
+ display: table-row;
+}
+tbody.collapse.in {
+ display: table-row-group;
+}
+.collapsing {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition-timing-function: ease;
+ -o-transition-timing-function: ease;
+ transition-timing-function: ease;
+ -webkit-transition-duration: .35s;
+ -o-transition-duration: .35s;
+ transition-duration: .35s;
+ -webkit-transition-property: height, visibility;
+ -o-transition-property: height, visibility;
+ transition-property: height, visibility;
+}
+.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 2px;
+ vertical-align: middle;
+ border-top: 4px dashed;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent;
+}
+.dropup,
+.dropdown {
+ position: relative;
+}
+.dropdown-toggle:focus {
+ outline: 0;
+}
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ font-size: 14px;
+ text-align: left;
+ list-style: none;
+ background-color: #fff;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, .15);
+ border-radius: 4px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+}
+.dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+.dropdown-menu .divider {
+ height: 1px;
+ margin: 9px 0;
+ overflow: hidden;
+ background-color: #e5e5e5;
+}
+.dropdown-menu > li > a {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 1.42857143;
+ color: #333;
+ white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ color: #262626;
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ color: #fff;
+ text-decoration: none;
+ background-color: #337ab7;
+ outline: 0;
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ color: #777;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ text-decoration: none;
+ cursor: not-allowed;
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.open > .dropdown-menu {
+ display: block;
+}
+.open > a {
+ outline: 0;
+}
+.dropdown-menu-right {
+ right: 0;
+ left: auto;
+}
+.dropdown-menu-left {
+ right: auto;
+ left: 0;
+}
+.dropdown-header {
+ display: block;
+ padding: 3px 20px;
+ font-size: 12px;
+ line-height: 1.42857143;
+ color: #777;
+ white-space: nowrap;
+}
+.dropdown-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 990;
+}
+.pull-right > .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ content: "";
+ border-top: 0;
+ border-bottom: 4px solid;
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 2px;
+}
+@media (min-width: 768px) {
+ .navbar-right .dropdown-menu {
+ right: 0;
+ left: auto;
+ }
+ .navbar-right .dropdown-menu-left {
+ right: auto;
+ left: 0;
+ }
+}
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+ position: relative;
+ float: left;
+}
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+ z-index: 2;
+}
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+ margin-left: -1px;
+}
+.btn-toolbar {
+ margin-left: -5px;
+}
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+ float: left;
+}
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
+ margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+ border-radius: 0;
+}
+.btn-group > .btn:first-child {
+ margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group > .btn-group {
+ float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+ padding-right: 8px;
+ padding-left: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+ padding-right: 12px;
+ padding-left: 12px;
+}
+.btn-group.open .dropdown-toggle {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn .caret {
+ margin-left: 0;
+}
+.btn-lg .caret {
+ border-width: 5px 5px 0;
+ border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+ border-width: 0 5px 5px;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
+ display: block;
+ float: none;
+ width: 100%;
+ max-width: 100%;
+}
+.btn-group-vertical > .btn-group > .btn {
+ float: none;
+}
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+ margin-top: -1px;
+ margin-left: 0;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-bottom-left-radius: 4px;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group-justified {
+ display: table;
+ width: 100%;
+ table-layout: fixed;
+ border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+ display: table-cell;
+ float: none;
+ width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+ width: 100%;
+}
+.btn-group-justified > .btn-group .dropdown-menu {
+ left: auto;
+}
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
+}
+.input-group {
+ position: relative;
+ display: table;
+ border-collapse: separate;
+}
+.input-group[class*="col-"] {
+ float: none;
+ padding-right: 0;
+ padding-left: 0;
+}
+.input-group .form-control {
+ position: relative;
+ z-index: 2;
+ float: left;
+ width: 100%;
+ margin-bottom: 0;
+}
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+ height: 46px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+ height: 46px;
+ line-height: 46px;
+}
+textarea.input-group-lg > .form-control,
+textarea.input-group-lg > .input-group-addon,
+textarea.input-group-lg > .input-group-btn > .btn,
+select[multiple].input-group-lg > .form-control,
+select[multiple].input-group-lg > .input-group-addon,
+select[multiple].input-group-lg > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+ height: 30px;
+ line-height: 30px;
+}
+textarea.input-group-sm > .form-control,
+textarea.input-group-sm > .input-group-addon,
+textarea.input-group-sm > .input-group-btn > .btn,
+select[multiple].input-group-sm > .form-control,
+select[multiple].input-group-sm > .input-group-addon,
+select[multiple].input-group-sm > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+ display: table-cell;
+}
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.input-group-addon,
+.input-group-btn {
+ width: 1%;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+.input-group-addon {
+ padding: 6px 12px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1;
+ color: #555;
+ text-align: center;
+ background-color: #eee;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+}
+.input-group-addon.input-sm {
+ padding: 5px 10px;
+ font-size: 12px;
+ border-radius: 3px;
+}
+.input-group-addon.input-lg {
+ padding: 10px 16px;
+ font-size: 18px;
+ border-radius: 6px;
+}
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+ margin-top: 0;
+}
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.input-group-addon:first-child {
+ border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.input-group-addon:last-child {
+ border-left: 0;
+}
+.input-group-btn {
+ position: relative;
+ font-size: 0;
+ white-space: nowrap;
+}
+.input-group-btn > .btn {
+ position: relative;
+}
+.input-group-btn > .btn + .btn {
+ margin-left: -1px;
+}
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:focus,
+.input-group-btn > .btn:active {
+ z-index: 2;
+}
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group {
+ margin-right: -1px;
+}
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group {
+ margin-left: -1px;
+}
+.nav {
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+.nav > li {
+ position: relative;
+ display: block;
+}
+.nav > li > a {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+ text-decoration: none;
+ background-color: #eee;
+}
+.nav > li.disabled > a {
+ color: #777;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+ color: #777;
+ text-decoration: none;
+ cursor: not-allowed;
+ background-color: transparent;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+ background-color: #eee;
+ border-color: #337ab7;
+}
+.nav .nav-divider {
+ height: 1px;
+ margin: 9px 0;
+ overflow: hidden;
+ background-color: #e5e5e5;
+}
+.nav > li > a > img {
+ max-width: none;
+}
+.nav-tabs {
+ border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+ float: left;
+ margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+ margin-right: 2px;
+ line-height: 1.42857143;
+ border: 1px solid transparent;
+ border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+ border-color: #eee #eee #ddd;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+ color: #555;
+ cursor: default;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-bottom-color: transparent;
+}
+.nav-tabs.nav-justified {
+ width: 100%;
+ border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+ float: none;
+}
+.nav-tabs.nav-justified > li > a {
+ margin-bottom: 5px;
+ text-align: center;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-tabs.nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs.nav-justified > li > a {
+ margin-right: 0;
+ border-radius: 4px;
+}
+.nav-tabs.nav-justified > .active > a,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:focus {
+ border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li > a {
+ border-bottom: 1px solid #ddd;
+ border-radius: 4px 4px 0 0;
+ }
+ .nav-tabs.nav-justified > .active > a,
+ .nav-tabs.nav-justified > .active > a:hover,
+ .nav-tabs.nav-justified > .active > a:focus {
+ border-bottom-color: #fff;
+ }
+}
+.nav-pills > li {
+ float: left;
+}
+.nav-pills > li > a {
+ border-radius: 4px;
+}
+.nav-pills > li + li {
+ margin-left: 2px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+ color: #fff;
+ background-color: #337ab7;
+}
+.nav-stacked > li {
+ float: none;
+}
+.nav-stacked > li + li {
+ margin-top: 2px;
+ margin-left: 0;
+}
+.nav-justified {
+ width: 100%;
+}
+.nav-justified > li {
+ float: none;
+}
+.nav-justified > li > a {
+ margin-bottom: 5px;
+ text-align: center;
+}
+.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs-justified {
+ border-bottom: 0;
+}
+.nav-tabs-justified > li > a {
+ margin-right: 0;
+ border-radius: 4px;
+}
+.nav-tabs-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus {
+ border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+ .nav-tabs-justified > li > a {
+ border-bottom: 1px solid #ddd;
+ border-radius: 4px 4px 0 0;
+ }
+ .nav-tabs-justified > .active > a,
+ .nav-tabs-justified > .active > a:hover,
+ .nav-tabs-justified > .active > a:focus {
+ border-bottom-color: #fff;
+ }
+}
+.tab-content > .tab-pane {
+ display: none;
+}
+.tab-content > .active {
+ display: block;
+}
+.nav-tabs .dropdown-menu {
+ margin-top: -1px;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.navbar {
+ position: relative;
+ min-height: 50px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+}
+@media (min-width: 768px) {
+ .navbar {
+ border-radius: 4px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-header {
+ float: left;
+ }
+}
+.navbar-collapse {
+ padding-right: 15px;
+ padding-left: 15px;
+ overflow-x: visible;
+ -webkit-overflow-scrolling: touch;
+ border-top: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+}
+.navbar-collapse.in {
+ overflow-y: auto;
+}
+@media (min-width: 768px) {
+ .navbar-collapse {
+ width: auto;
+ border-top: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+ .navbar-collapse.collapse {
+ display: block !important;
+ height: auto !important;
+ padding-bottom: 0;
+ overflow: visible !important;
+ }
+ .navbar-collapse.in {
+ overflow-y: visible;
+ }
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-static-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ padding-right: 0;
+ padding-left: 0;
+ }
+}
+.navbar-fixed-top .navbar-collapse,
+.navbar-fixed-bottom .navbar-collapse {
+ max-height: 340px;
+}
+@media (max-device-width: 480px) and (orientation: landscape) {
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ max-height: 200px;
+ }
+}
+.container > .navbar-header,
+.container-fluid > .navbar-header,
+.container > .navbar-collapse,
+.container-fluid > .navbar-collapse {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+@media (min-width: 768px) {
+ .container > .navbar-header,
+ .container-fluid > .navbar-header,
+ .container > .navbar-collapse,
+ .container-fluid > .navbar-collapse {
+ margin-right: 0;
+ margin-left: 0;
+ }
+}
+.navbar-static-top {
+ z-index: 1000;
+ border-width: 0 0 1px;
+}
+@media (min-width: 768px) {
+ .navbar-static-top {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+}
+@media (min-width: 768px) {
+ .navbar-fixed-top,
+ .navbar-fixed-bottom {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top {
+ top: 0;
+ border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+ bottom: 0;
+ margin-bottom: 0;
+ border-width: 1px 0 0;
+}
+.navbar-brand {
+ float: left;
+ height: 50px;
+ padding: 15px 15px;
+ font-size: 18px;
+ line-height: 20px;
+}
+.navbar-brand:hover,
+.navbar-brand:focus {
+ text-decoration: none;
+}
+.navbar-brand > img {
+ display: block;
+}
+@media (min-width: 768px) {
+ .navbar > .container .navbar-brand,
+ .navbar > .container-fluid .navbar-brand {
+ margin-left: -15px;
+ }
+}
+.navbar-toggle {
+ position: relative;
+ float: right;
+ padding: 9px 10px;
+ margin-top: 8px;
+ margin-right: 15px;
+ margin-bottom: 8px;
+ background-color: transparent;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+.navbar-toggle:focus {
+ outline: 0;
+}
+.navbar-toggle .icon-bar {
+ display: block;
+ width: 22px;
+ height: 2px;
+ border-radius: 1px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+ margin-top: 4px;
+}
+@media (min-width: 768px) {
+ .navbar-toggle {
+ display: none;
+ }
+}
+.navbar-nav {
+ margin: 7.5px -15px;
+}
+.navbar-nav > li > a {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ line-height: 20px;
+}
+@media (max-width: 767px) {
+ .navbar-nav .open .dropdown-menu {
+ position: static;
+ float: none;
+ width: auto;
+ margin-top: 0;
+ background-color: transparent;
+ border: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+ .navbar-nav .open .dropdown-menu > li > a,
+ .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding: 5px 15px 5px 25px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a {
+ line-height: 20px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-nav .open .dropdown-menu > li > a:focus {
+ background-image: none;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-nav {
+ float: left;
+ margin: 0;
+ }
+ .navbar-nav > li {
+ float: left;
+ }
+ .navbar-nav > li > a {
+ padding-top: 15px;
+ padding-bottom: 15px;
+ }
+}
+.navbar-form {
+ padding: 10px 15px;
+ margin-top: 8px;
+ margin-right: -15px;
+ margin-bottom: 8px;
+ margin-left: -15px;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+}
+@media (min-width: 768px) {
+ .navbar-form .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control-static {
+ display: inline-block;
+ }
+ .navbar-form .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .navbar-form .input-group .input-group-addon,
+ .navbar-form .input-group .input-group-btn,
+ .navbar-form .input-group .form-control {
+ width: auto;
+ }
+ .navbar-form .input-group > .form-control {
+ width: 100%;
+ }
+ .navbar-form .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio,
+ .navbar-form .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio label,
+ .navbar-form .checkbox label {
+ padding-left: 0;
+ }
+ .navbar-form .radio input[type="radio"],
+ .navbar-form .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .navbar-form .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+@media (max-width: 767px) {
+ .navbar-form .form-group {
+ margin-bottom: 5px;
+ }
+ .navbar-form .form-group:last-child {
+ margin-bottom: 0;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-form {
+ width: auto;
+ padding-top: 0;
+ padding-bottom: 0;
+ margin-right: 0;
+ margin-left: 0;
+ border: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+}
+.navbar-nav > li > .dropdown-menu {
+ margin-top: 0;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+ margin-bottom: 0;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.navbar-btn {
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+.navbar-btn.btn-sm {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+.navbar-btn.btn-xs {
+ margin-top: 14px;
+ margin-bottom: 14px;
+}
+.navbar-text {
+ margin-top: 15px;
+ margin-bottom: 15px;
+}
+@media (min-width: 768px) {
+ .navbar-text {
+ float: left;
+ margin-right: 15px;
+ margin-left: 15px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-left {
+ float: left !important;
+ }
+ .navbar-right {
+ float: right !important;
+ margin-right: -15px;
+ }
+ .navbar-right ~ .navbar-right {
+ margin-right: 0;
+ }
+}
+.navbar-default {
+ background-color: #f8f8f8;
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-brand {
+ color: #777;
+}
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+ color: #5e5e5e;
+ background-color: transparent;
+}
+.navbar-default .navbar-text {
+ color: #777;
+}
+.navbar-default .navbar-nav > li > a {
+ color: #777;
+}
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+ color: #333;
+ background-color: transparent;
+}
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+ color: #555;
+ background-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+ color: #ccc;
+ background-color: transparent;
+}
+.navbar-default .navbar-toggle {
+ border-color: #ddd;
+}
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+ background-color: #ddd;
+}
+.navbar-default .navbar-toggle .icon-bar {
+ background-color: #888;
+}
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+ color: #555;
+ background-color: #e7e7e7;
+}
+@media (max-width: 767px) {
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+ color: #777;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #333;
+ background-color: transparent;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #555;
+ background-color: #e7e7e7;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #ccc;
+ background-color: transparent;
+ }
+}
+.navbar-default .navbar-link {
+ color: #777;
+}
+.navbar-default .navbar-link:hover {
+ color: #333;
+}
+.navbar-default .btn-link {
+ color: #777;
+}
+.navbar-default .btn-link:hover,
+.navbar-default .btn-link:focus {
+ color: #333;
+}
+.navbar-default .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-default .btn-link:hover,
+.navbar-default .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-default .btn-link:focus {
+ color: #ccc;
+}
+.navbar-inverse {
+ background-color: #222;
+ border-color: #080808;
+}
+.navbar-inverse .navbar-brand {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+ color: #fff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-text {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+ color: #fff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+ color: #fff;
+ background-color: #080808;
+}
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+ color: #444;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-toggle {
+ border-color: #333;
+}
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+ background-color: #333;
+}
+.navbar-inverse .navbar-toggle .icon-bar {
+ background-color: #fff;
+}
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+ border-color: #101010;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+ color: #fff;
+ background-color: #080808;
+}
+@media (max-width: 767px) {
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+ border-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+ color: #9d9d9d;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #fff;
+ background-color: transparent;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #fff;
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #444;
+ background-color: transparent;
+ }
+}
+.navbar-inverse .navbar-link {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-link:hover {
+ color: #fff;
+}
+.navbar-inverse .btn-link {
+ color: #9d9d9d;
+}
+.navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link:focus {
+ color: #fff;
+}
+.navbar-inverse .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-inverse .btn-link:focus {
+ color: #444;
+}
+.breadcrumb {
+ padding: 8px 15px;
+ margin-bottom: 20px;
+ list-style: none;
+ background-color: #f5f5f5;
+ border-radius: 4px;
+}
+.breadcrumb > li {
+ display: inline-block;
+}
+.breadcrumb > li + li:before {
+ padding: 0 5px;
+ color: #ccc;
+ content: "/\00a0";
+}
+.breadcrumb > .active {
+ color: #777;
+}
+.pagination {
+ display: inline-block;
+ padding-left: 0;
+ margin: 20px 0;
+ border-radius: 4px;
+}
+.pagination > li {
+ display: inline;
+}
+.pagination > li > a,
+.pagination > li > span {
+ position: relative;
+ float: left;
+ padding: 6px 12px;
+ margin-left: -1px;
+ line-height: 1.42857143;
+ color: #337ab7;
+ text-decoration: none;
+ background-color: #fff;
+ border: 1px solid #ddd;
+}
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+ margin-left: 0;
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+ color: #23527c;
+ background-color: #eee;
+ border-color: #ddd;
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+ z-index: 2;
+ color: #fff;
+ cursor: default;
+ background-color: #337ab7;
+ border-color: #337ab7;
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+ color: #777;
+ cursor: not-allowed;
+ background-color: #fff;
+ border-color: #ddd;
+}
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+ padding: 10px 16px;
+ font-size: 18px;
+}
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+ border-top-left-radius: 6px;
+ border-bottom-left-radius: 6px;
+}
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+ border-top-right-radius: 6px;
+ border-bottom-right-radius: 6px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ padding: 5px 10px;
+ font-size: 12px;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+ border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+ border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+}
+.pager {
+ padding-left: 0;
+ margin: 20px 0;
+ text-align: center;
+ list-style: none;
+}
+.pager li {
+ display: inline;
+}
+.pager li > a,
+.pager li > span {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 15px;
+}
+.pager li > a:hover,
+.pager li > a:focus {
+ text-decoration: none;
+ background-color: #eee;
+}
+.pager .next > a,
+.pager .next > span {
+ float: right;
+}
+.pager .previous > a,
+.pager .previous > span {
+ float: left;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+ color: #777;
+ cursor: not-allowed;
+ background-color: #fff;
+}
+.label {
+ display: inline;
+ padding: .2em .6em .3em;
+ font-size: 75%;
+ font-weight: bold;
+ line-height: 1;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: .25em;
+}
+a.label:hover,
+a.label:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.label:empty {
+ display: none;
+}
+.btn .label {
+ position: relative;
+ top: -1px;
+}
+.label-default {
+ background-color: #777;
+}
+.label-default[href]:hover,
+.label-default[href]:focus {
+ background-color: #5e5e5e;
+}
+.label-primary {
+ background-color: #337ab7;
+}
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+ background-color: #286090;
+}
+.label-success {
+ background-color: #5cb85c;
+}
+.label-success[href]:hover,
+.label-success[href]:focus {
+ background-color: #449d44;
+}
+.label-info {
+ background-color: #5bc0de;
+}
+.label-info[href]:hover,
+.label-info[href]:focus {
+ background-color: #31b0d5;
+}
+.label-warning {
+ background-color: #f0ad4e;
+}
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+ background-color: #ec971f;
+}
+.label-danger {
+ background-color: #d9534f;
+}
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+ background-color: #c9302c;
+}
+.badge {
+ display: inline-block;
+ min-width: 10px;
+ padding: 3px 7px;
+ font-size: 12px;
+ font-weight: bold;
+ line-height: 1;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ background-color: #777;
+ border-radius: 10px;
+}
+.badge:empty {
+ display: none;
+}
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+.btn-xs .badge,
+.btn-group-xs > .btn .badge {
+ top: 0;
+ padding: 1px 5px;
+}
+a.badge:hover,
+a.badge:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+ color: #337ab7;
+ background-color: #fff;
+}
+.list-group-item > .badge {
+ float: right;
+}
+.list-group-item > .badge + .badge {
+ margin-right: 5px;
+}
+.nav-pills > li > a > .badge {
+ margin-left: 3px;
+}
+.jumbotron {
+ padding: 30px 15px;
+ margin-bottom: 30px;
+ color: inherit;
+ background-color: #eee;
+}
+.jumbotron h1,
+.jumbotron .h1 {
+ color: inherit;
+}
+.jumbotron p {
+ margin-bottom: 15px;
+ font-size: 21px;
+ font-weight: 200;
+}
+.jumbotron > hr {
+ border-top-color: #d5d5d5;
+}