##// END OF EJS Templates
Merge from stable
Mads Kiilerich -
r8788:b9e24c7b merge default
parent child Browse files
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -1,194 +1,197 b''
1 1 List of contributors to Kallithea project:
2 2
3 Mads Kiilerich <mads@kiilerich.com> 2016-2023
3 Mads Kiilerich <mads@kiilerich.com> 2016-2024
4 Aristotelis Stageiritis <aristotelis79@gmail.com> 2024
5 Poesty Li <poesty7450@gmail.com> 2024
4 6 Manuel Jacob <me@manueljacob.de> 2019-2020 2022-2023
5 7 Mathias De Mare <mathias.de_mare@nokia.com> 2023
8 qy117121 <mixuan121@gmail.com> 2023
6 9 Asterios Dimitriou <steve@pci.gr> 2016-2017 2020 2022
10 Étienne Gilli <etienne@gilli.io> 2020-2022
7 11 Jaime Marquínez Ferrándiz <weblate@jregistros.fastmail.net> 2022
8 12 Louis Bertrand <louis.bertrand@durhamcollege.ca> 2022
9 13 toras9000 <toras9000@gmail.com> 2022
10 14 yzqzss <yzqzss@othing.xyz> 2022
11 15 МАН69К <weblate@mah69k.net> 2022
12 16 Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> 2014-2021
13 17 ssantos <ssantos@web.de> 2018-2021
14 18 Private <adamantine.sword@gmail.com> 2019-2021
15 Étienne Gilli <etienne@gilli.io> 2020-2021
16 19 fresh <fresh190@protonmail.com> 2020-2021
17 20 robertus <robertuss12@gmail.com> 2020-2021
18 21 Eugenia Russell <eugenia.russell2019@gmail.com> 2021
19 22 Michalis <michalisntovas@yahoo.gr> 2021
20 23 vs <vsuhachev@yandex.ru> 2021
21 24 Александр <akonn7@mail.ru> 2021
22 25 Allan Nordhøy <epost@anotheragency.no> 2017-2020
23 26 Anton Schur <tonich.sh@gmail.com> 2017 2020
24 27 Artem <kovalevartem.ru@gmail.com> 2020
25 28 David Ignjić <ignjic@gmail.com> 2020
26 29 Dennis Fink <dennis.fink@c3l.lu> 2020
27 30 J. Lavoie <j.lavoie@net-c.ca> 2020
28 31 Ross Thomas <ross@lns-nevasoft.com> 2020
29 32 Tim Ooms <tatankat@users.noreply.github.com> 2020
30 33 Andrej Shadura <andrew@shadura.me> 2012 2014-2017 2019
31 34 Étienne Gilli <etienne.gilli@gmail.com> 2015-2017 2019
32 35 Adi Kriegisch <adi@cg.tuwien.ac.at> 2019
33 36 Danni Randeris <danniranderis@gmail.com> 2019
34 37 Edmund Wong <ewong@crazy-cat.org> 2019
35 38 Elizabeth Sherrock <lizzyd710@gmail.com> 2019
36 39 Hüseyin Tunç <huseyin.tunc@bulutfon.com> 2019
37 40 leela <53352@protonmail.com> 2019
38 41 Mateusz Mendel <mendelm9@gmail.com> 2019
39 42 Nathan <bonnemainsnathan@gmail.com> 2019
40 43 Oleksandr Shtalinberg <o.shtalinberg@gmail.com> 2019
41 44 THANOS SIOURDAKIS <siourdakisthanos@gmail.com> 2019
42 45 Wolfgang Scherer <wolfgang.scherer@gmx.de> 2019
43 46 Христо Станев <hstanev@gmail.com> 2019
44 47 Dominik Ruf <dominikruf@gmail.com> 2012 2014-2018
45 48 Michal Čihař <michal@cihar.com> 2014-2015 2018
46 49 Branko Majic <branko@majic.rs> 2015 2018
47 50 Chris Rule <crule@aegistg.com> 2018
48 51 Jesús Sánchez <jsanchezfdz95@gmail.com> 2018
49 52 Patrick Vane <patrick_vane@lowentry.com> 2018
50 53 Pheng Heong Tan <phtan90@gmail.com> 2018
51 54 Максим Якимчук <xpinovo@gmail.com> 2018
52 55 Марс Ямбар <mjambarmeta@gmail.com> 2018
53 56 Mads Kiilerich <madski@unity3d.com> 2012-2017
54 57 Unity Technologies 2012-2017
55 58 Søren Løvborg <sorenl@unity3d.com> 2015-2017
56 59 Sam Jaques <sam.jaques@me.com> 2015 2017
57 60 Alessandro Molina <alessandro.molina@axant.it> 2017
58 61 Ching-Chen Mao <mao@lins.fju.edu.tw> 2017
59 62 Eivind Tagseth <eivindt@gmail.com> 2017
60 63 FUJIWARA Katsunori <foozy@lares.dti.ne.jp> 2017
61 64 Holger Schramm <info@schramm.by> 2017
62 65 Karl Goetz <karl@kgoetz.id.au> 2017
63 66 Lars Kruse <devel@sumpfralle.de> 2017
64 67 Marko Semet <markosemet@googlemail.com> 2017
65 68 Viktar Vauchkevich <victorenator@gmail.com> 2017
66 69 Takumi IINO <trot.thunder@gmail.com> 2012-2016
67 70 Jan Heylen <heyleke@gmail.com> 2015-2016
68 71 Robert Martinez <ntttq@inboxen.org> 2015-2016
69 72 Robert Rauch <mail@robertrauch.de> 2015-2016
70 73 Angel Ezquerra <angel.ezquerra@gmail.com> 2016
71 74 Anton Shestakov <av6@dwimlabs.net> 2016
72 75 Brandon Jones <bjones14@gmail.com> 2016
73 76 Kateryna Musina <kateryna@unity3d.com> 2016
74 77 Konstantin Veretennicov <kveretennicov@gmail.com> 2016
75 78 Oscar Curero <oscar@naiandei.net> 2016
76 79 Robert James Dennington <tinytimrob@googlemail.com> 2016
77 80 timeless@gmail.com 2016
78 81 YFdyh000 <yfdyh000@gmail.com> 2016
79 82 Aras Pranckevičius <aras@unity3d.com> 2012-2013 2015
80 83 Sean Farley <sean.michael.farley@gmail.com> 2013-2015
81 84 Bradley M. Kuhn <bkuhn@sfconservancy.org> 2014-2015
82 85 Christian Oyarzun <oyarzun@gmail.com> 2014-2015
83 86 Joseph Rivera <rivera.d.joseph@gmail.com> 2014-2015
84 87 Anatoly Bubenkov <bubenkoff@gmail.com> 2015
85 88 Andrew Bartlett <abartlet@catalyst.net.nz> 2015
86 89 Balázs Úr <urbalazs@gmail.com> 2015
87 90 Ben Finney <ben@benfinney.id.au> 2015
88 91 Daniel Hobley <danielh@unity3d.com> 2015
89 92 David Avigni <david.avigni@ankapi.com> 2015
90 93 Denis Blanchette <dblanchette@coveo.com> 2015
91 94 duanhongyi <duanhongyi@doopai.com> 2015
92 95 EriCSN Chang <ericsning@gmail.com> 2015
93 96 Grzegorz Krason <grzegorz.krason@gmail.com> 2015
94 97 Jiří Suchan <yed@vanyli.net> 2015
95 98 Kazunari Kobayashi <kobanari@nifty.com> 2015
96 99 Kevin Bullock <kbullock@ringworld.org> 2015
97 100 kobanari <kobanari@nifty.com> 2015
98 101 Marc Abramowitz <marc@marc-abramowitz.com> 2015
99 102 Marc Villetard <marc.villetard@gmail.com> 2015
100 103 Matthias Zilk <matthias.zilk@gmail.com> 2015
101 104 Michael Pohl <michael@mipapo.de> 2015
102 105 Michael V. DePalatis <mike@depalatis.net> 2015
103 106 Morten Skaaning <mortens@unity3d.com> 2015
104 107 Nick High <nick@silverchip.org> 2015
105 108 Niemand Jedermann <predatorix@web.de> 2015
106 109 Peter Vitt <petervitt@web.de> 2015
107 110 Ronny Pfannschmidt <opensource@ronnypfannschmidt.de> 2015
108 111 Tuux <tuxa@galaxie.eu.org> 2015
109 112 Viktar Palstsiuk <vipals@gmail.com> 2015
110 113 Ante Ilic <ante@unity3d.com> 2014
111 114 Calinou <calinou@opmbx.org> 2014
112 115 Daniel Anderson <daniel@dattrix.com> 2014
113 116 Henrik Stuart <hg@hstuart.dk> 2014
114 117 Ingo von Borstel <kallithea@planetmaker.de> 2014
115 118 invision70 <invision70@gmail.com> 2014
116 119 Jelmer Vernooij <jelmer@samba.org> 2014
117 120 Jim Hague <jim.hague@acm.org> 2014
118 121 Matt Fellows <kallithea@matt-fellows.me.uk> 2014
119 122 Max Roman <max@choloclos.se> 2014
120 123 Na'Tosha Bard <natosha@unity3d.com> 2014
121 124 Rasmus Selsmark <rasmuss@unity3d.com> 2014
122 125 SkryabinD <skryabind@gmail.com> 2014
123 126 Tim Freund <tim@freunds.net> 2014
124 127 Travis Burtrum <android@moparisthebest.com> 2014
125 128 whosaysni <whosaysni@gmail.com> 2014
126 129 Zoltan Gyarmati <mr.zoltan.gyarmati@gmail.com> 2014
127 130 Marcin Kuźmiński <marcin@python-works.com> 2010-2013
128 131 Nemcio <areczek01@gmail.com> 2012-2013
129 132 xpol <xpolife@gmail.com> 2012-2013
130 133 Andrey Mivrenik <myvrenik@gmail.com> 2013
131 134 Aparkar <aparkar@icloud.com> 2013
132 135 ArcheR <aleclitvinov1980@gmail.com> 2013
133 136 Dennis Brakhane <brakhane@googlemail.com> 2013
134 137 gnustavo <gustavo@gnustavo.com> 2013
135 138 Grzegorz Rożniecki <xaerxess@gmail.com> 2013
136 139 Ilya Beda <ir4y.ix@gmail.com> 2013
137 140 ivlevdenis <ivlevdenis.ru@gmail.com> 2013
138 141 Jonathan Sternberg <jonathansternberg@gmail.com> 2013
139 142 Leonardo Carneiro <leonardo@unity3d.com> 2013
140 143 Magnus Ericmats <magnus.ericmats@gmail.com> 2013
141 144 Martin Vium <martinv@unity3d.com> 2013
142 145 Mikhail Zholobov <legal90@gmail.com> 2013
143 146 mokeev1995 <mokeev_andre@mail.ru> 2013
144 147 Ruslan Bekenev <furyinbox@gmail.com> 2013
145 148 shirou - しろう 2013
146 149 Simon Lopez <simon.lopez@slopez.org> 2013
147 150 softforwinxp <softforwinxp@gmail.com> 2013
148 151 stephanj <info@stephan-jauernick.de> 2013
149 152 Ton Plomp <tcplomp@gmail.com> 2013
150 153 zhmylove <zhmylove@narod.ru> 2013
151 154 こいんとす <tkondou@gmail.com> 2013
152 155 Augusto Herrmann <augusto.herrmann@planejamento.gov.br> 2011-2012
153 156 Augusto Herrmann <augusto.herrmann@gmail.com> 2012
154 157 Dan Sheridan <djs@adelard.com> 2012
155 158 Dies Koper <diesk@fast.au.fujitsu.com> 2012
156 159 Erwin Kroon <e.kroon@smartmetersolutions.nl> 2012
157 160 H Waldo G <gwaldo@gmail.com> 2012
158 161 hppj <hppj@postmage.biz> 2012
159 162 Indra Talip <indra.talip@gmail.com> 2012
160 163 mikespook <mikespook@gmail.com> 2012
161 164 nansenat16 <nansenat16@null.tw> 2012
162 165 Nemcio <bogdan114@g.pl> 2012
163 166 Philip Jameson <philip.j@hostdime.com> 2012
164 167 Raoul Thill <raoul.thill@gmail.com> 2012
165 168 Stefan Engel <mail@engel-stefan.de> 2012
166 169 Tony Bussieres <t.bussieres@gmail.com> 2012
167 170 Vincent Caron <vcaron@bearstech.com> 2012
168 171 Vincent Duvert <vincent@duvert.net> 2012
169 172 Vladislav Poluhin <nuklea@gmail.com> 2012
170 173 Zachary Auclair <zach101@gmail.com> 2012
171 174 Ankit Solanki <ankit.solanki@gmail.com> 2011
172 175 Dmitri Kuznetsov 2011
173 176 Jared Bunting <jared.bunting@peachjean.com> 2011
174 177 Jason Harris <jason@jasonfharris.com> 2011
175 178 Les Peabody <lpeabody@gmail.com> 2011
176 179 Liad Shani <liadff@gmail.com> 2011
177 180 Lorenzo M. Catucci <lorenzo@sancho.ccd.uniroma2.it> 2011
178 181 Matt Zuba <matt.zuba@goodwillaz.org> 2011
179 182 Nicolas VINOT <aeris@imirhil.fr> 2011
180 183 Shawn K. O'Shea <shawn@eth0.net> 2011
181 184 Thayne Harbaugh <thayne@fusionio.com> 2011
182 185 Łukasz Balcerzak <lukaszbalcerzak@gmail.com> 2010
183 186 Andrew Kesterson <andrew@aklabs.net>
184 187 cejones
185 188 David A. Sjøen <david.sjoen@westcon.no>
186 189 James Rhodes <jrhodes@redpointsoftware.com.au>
187 190 Jonas Oberschweiber <jonas.oberschweiber@d-velop.de>
188 191 larikale
189 192 RhodeCode GmbH
190 193 Sebastian Kreutzberger <sebastian@rhodecode.com>
191 194 Steve Romanow <slestak989@gmail.com>
192 195 SteveCohen
193 196 Thomas <thomas@rhodecode.com>
194 197 Thomas Waldmann <tw-public@gmx.de>
@@ -1,211 +1,211 b''
1 1 def createvirtualenv = ''
2 2 def activatevirtualenv = ''
3 3
4 4 node {
5 5 properties([[$class: 'BuildDiscarderProperty',
6 6 strategy: [$class: 'LogRotator',
7 7 artifactDaysToKeepStr: '',
8 8 artifactNumToKeepStr: '10',
9 9 daysToKeepStr: '',
10 10 numToKeepStr: '']]]);
11 11 if (isUnix()) {
12 12 createvirtualenv = 'rm -r $JENKINS_HOME/venv/$JOB_NAME || true && python3 -m venv $JENKINS_HOME/venv/$JOB_NAME'
13 13 activatevirtualenv = '. $JENKINS_HOME/venv/$JOB_NAME/bin/activate'
14 14 } else {
15 15 createvirtualenv = 'rmdir /s /q %JENKINS_HOME%\\venv\\%JOB_NAME% || true && python3 -m venv %JENKINS_HOME%\\venv\\%JOB_NAME%'
16 16 activatevirtualenv = 'call %JENKINS_HOME%\\venv\\%JOB_NAME%\\Scripts\\activate.bat'
17 17 }
18 18
19 19 stage('checkout') {
20 20 checkout scm
21 21 if (isUnix()) {
22 22 sh 'hg --config extensions.purge= purge --all'
23 23 } else {
24 24 bat 'hg --config extensions.purge= purge --all'
25 25 }
26 26 }
27 27 stage('virtual env') {
28 28 def virtualenvscript = """$createvirtualenv
29 29 $activatevirtualenv
30 python -m pip install --upgrade pip
31 pip install --upgrade setuptools
30 python -m pip install --upgrade "pip<24.1"
31 pip install --upgrade "setuptools<67"
32 32 pip install --upgrade pylint
33 33 pip install --upgrade pytest-cov
34 34 """
35 35 if (isUnix()) {
36 36 virtualenvscript += """
37 37 pip install --upgrade python-ldap
38 38 pip install --upgrade python-pam
39 39 """
40 40 sh virtualenvscript
41 41 } else {
42 42 bat virtualenvscript
43 43 }
44 44 }
45 45 stage('setup') {
46 46 def virtualenvscript = """$activatevirtualenv
47 47 pip install --upgrade -e . -r dev_requirements.txt
48 48 python setup.py compile_catalog
49 49 """
50 50 if (isUnix()) {
51 51 sh virtualenvscript
52 52 } else {
53 53 bat virtualenvscript
54 54 }
55 55 stash name: 'kallithea', useDefaultExcludes: false
56 56 }
57 57 stage('pylint') {
58 58 sh script: """$activatevirtualenv
59 59 pylint -j 0 --disable=C -f parseable kallithea > pylint.out
60 60 """, returnStatus: true
61 61 archiveArtifacts 'pylint.out'
62 62 try {
63 63 step([$class: 'WarningsPublisher', canComputeNew: false, canResolveRelativePaths: false, defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', messagesPattern: '', parserConfigurations: [[parserName: 'PyLint', pattern: 'pylint.out']], unHealthy: ''])
64 64 } catch (java.lang.IllegalArgumentException exc) {
65 65 echo "You need to install the 'Warnings Plug-in' to display the pylint report."
66 66 currentBuild.result = 'UNSTABLE'
67 67 echo "Caught: ${exc}"
68 68 }
69 69 }
70 70 }
71 71
72 72 def pytests = [:]
73 73 pytests['sqlite'] = {
74 74 node {
75 75 ws {
76 76 deleteDir()
77 77 unstash name: 'kallithea'
78 78 if (isUnix()) {
79 79 sh script: """$activatevirtualenv
80 80 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_sqlite.xml --cov=kallithea
81 81 """, returnStatus: true
82 82 } else {
83 83 bat script: """$activatevirtualenv
84 84 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_sqlite.xml --cov=kallithea
85 85 """, returnStatus: true
86 86 }
87 87 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1SQLITE./g" pytest_sqlite.xml'
88 88 archiveArtifacts 'pytest_sqlite.xml'
89 89 junit 'pytest_sqlite.xml'
90 90 writeFile(file: '.coverage.sqlite', text: readFile('.coverage'))
91 91 stash name: 'coverage.sqlite', includes: '.coverage.sqlite'
92 92 }
93 93 }
94 94 }
95 95
96 96 pytests['de'] = {
97 97 node {
98 98 if (isUnix()) {
99 99 ws {
100 100 deleteDir()
101 101 unstash name: 'kallithea'
102 102 withEnv(['LANG=de_DE.UTF-8',
103 103 'LANGUAGE=de',
104 104 'LC_ADDRESS=de_DE.UTF-8',
105 105 'LC_IDENTIFICATION=de_DE.UTF-8',
106 106 'LC_MEASUREMENT=de_DE.UTF-8',
107 107 'LC_MONETARY=de_DE.UTF-8',
108 108 'LC_NAME=de_DE.UTF-8',
109 109 'LC_NUMERIC=de_DE.UTF-8',
110 110 'LC_PAPER=de_DE.UTF-8',
111 111 'LC_TELEPHONE=de_DE.UTF-8',
112 112 'LC_TIME=de_DE.UTF-8',
113 113 ]) {
114 114 sh script: """$activatevirtualenv
115 115 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_de.xml --cov=kallithea
116 116 """, returnStatus: true
117 117 }
118 118 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1DE./g" pytest_de.xml'
119 119 archiveArtifacts 'pytest_de.xml'
120 120 junit 'pytest_de.xml'
121 121 writeFile(file: '.coverage.de', text: readFile('.coverage'))
122 122 stash name: 'coverage.de', includes: '.coverage.de'
123 123 }
124 124 }
125 125 }
126 126 }
127 127 pytests['mysql'] = {
128 128 node {
129 129 if (isUnix()) {
130 130 ws {
131 131 deleteDir()
132 132 unstash name: 'kallithea'
133 133 sh """$activatevirtualenv
134 134 pip install --upgrade MySQL-python
135 135 """
136 136 withEnv(['TEST_DB=mysql://kallithea:kallithea@jenkins_mysql/kallithea_test?charset=utf8']) {
137 137 if (isUnix()) {
138 138 sh script: """$activatevirtualenv
139 139 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_mysql.xml --cov=kallithea
140 140 """, returnStatus: true
141 141 } else {
142 142 bat script: """$activatevirtualenv
143 143 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_mysql.xml --cov=kallithea
144 144 """, returnStatus: true
145 145 }
146 146 }
147 147 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1MYSQL./g" pytest_mysql.xml'
148 148 archiveArtifacts 'pytest_mysql.xml'
149 149 junit 'pytest_mysql.xml'
150 150 writeFile(file: '.coverage.mysql', text: readFile('.coverage'))
151 151 stash name: 'coverage.mysql', includes: '.coverage.mysql'
152 152 }
153 153 }
154 154 }
155 155 }
156 156 pytests['postgresql'] = {
157 157 node {
158 158 if (isUnix()) {
159 159 ws {
160 160 deleteDir()
161 161 unstash name: 'kallithea'
162 162 sh """$activatevirtualenv
163 163 pip install --upgrade psycopg2
164 164 """
165 165 withEnv(['TEST_DB=postgresql://kallithea:kallithea@jenkins_postgresql/kallithea_test']) {
166 166 if (isUnix()) {
167 167 sh script: """$activatevirtualenv
168 168 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_postgresql.xml --cov=kallithea
169 169 """, returnStatus: true
170 170 } else {
171 171 bat script: """$activatevirtualenv
172 172 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_postgresql.xml --cov=kallithea
173 173 """, returnStatus: true
174 174 }
175 175 }
176 176 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1POSTGRES./g" pytest_postgresql.xml'
177 177 archiveArtifacts 'pytest_postgresql.xml'
178 178 junit 'pytest_postgresql.xml'
179 179 writeFile(file: '.coverage.postgresql', text: readFile('.coverage'))
180 180 stash name: 'coverage.postgresql', includes: '.coverage.postgresql'
181 181 }
182 182 }
183 183 }
184 184 }
185 185 stage('Tests') {
186 186 parallel pytests
187 187 node {
188 188 unstash 'coverage.sqlite'
189 189 unstash 'coverage.de'
190 190 unstash 'coverage.mysql'
191 191 unstash 'coverage.postgresql'
192 192 if (isUnix()) {
193 193 sh script: """$activatevirtualenv
194 194 coverage combine .coverage.sqlite .coverage.de .coverage.mysql .coverage.postgresql
195 195 coverage xml
196 196 """, returnStatus: true
197 197 } else {
198 198 bat script: """$activatevirtualenv
199 199 coverage combine .coverage.sqlite .coverage.de .coverage.mysql .coverage.postgresql
200 200 coverage xml
201 201 """, returnStatus: true
202 202 }
203 203 try {
204 204 step([$class: 'CoberturaPublisher', autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: 'coverage.xml', failNoReports: false, failUnhealthy: false, failUnstable: false, maxNumberOfBuilds: 0, onlyStable: false, zoomCoverageChart: false])
205 205 } catch (java.lang.IllegalArgumentException exc) {
206 206 echo "You need to install the pipeline compatible 'CoberturaPublisher Plug-in' to display the coverage report."
207 207 currentBuild.result = 'UNSTABLE'
208 208 echo "Caught: ${exc}"
209 209 }
210 210 }
211 211 }
@@ -1,9 +1,9 b''
1 pytest >= 4.6.6, < 6.3
2 pytest-sugar >= 0.9.2, < 0.10
3 pytest-benchmark >= 3.2.2, < 3.3
4 pytest-localserver >= 0.5.0, < 0.6
5 mock >= 3.0.0, < 4.1
1 pytest >= 4.6.6, < 8.3
2 pytest-sugar >= 0.9.2, < 1.1
3 pytest-benchmark >= 3.2.2, < 4.1
4 pytest-localserver >= 0.5.0, < 0.9
5 mock >= 3.0.0, < 5.2
6 6 Sphinx >= 1.8.0, < 5.2
7 WebTest >= 2.0.6, < 2.1
8 isort == 5.1.2
9 pyflakes == 2.2.0
7 WebTest >= 2.0.6, < 3.1
8 isort == 5.13.2
9 pyflakes == 3.2.0
@@ -1,229 +1,229 b''
1 1 # -*- coding: utf-8 -*-
2 2 #
3 3 # Kallithea documentation build configuration file, created by
4 4 # sphinx-quickstart on Sun Oct 10 16:46:37 2010.
5 5 #
6 6 # This file is execfile()d with the current directory set to its containing dir.
7 7 #
8 8 # Note that not all possible configuration values are present in this
9 9 # autogenerated file.
10 10 #
11 11 # All configuration values have a default; values that are commented out
12 12 # serve to show the default.
13 13
14 14 import os
15 15 import sys
16 16
17 17 import kallithea
18 18
19 19
20 20 # If extensions (or modules to document with autodoc) are in another directory,
21 21 # add these directories to sys.path here. If the directory is relative to the
22 22 # documentation root, use os.path.abspath to make it absolute, like shown here.
23 23 sys.path.insert(0, os.path.abspath('..'))
24 24
25 25 # -- General configuration -----------------------------------------------------
26 26
27 27 # If your documentation needs a minimal Sphinx version, state it here.
28 28 #needs_sphinx = '1.0'
29 29
30 30 # Add any Sphinx extension module names here, as strings. They can be extensions
31 31 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
32 32 extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest',
33 33 'sphinx.ext.intersphinx', 'sphinx.ext.todo',
34 34 'sphinx.ext.viewcode']
35 35
36 36 # Add any paths that contain templates here, relative to this directory.
37 37 templates_path = ['_templates']
38 38
39 39 # The suffix of source filenames.
40 40 source_suffix = '.rst'
41 41
42 42 # The encoding of source files.
43 43 #source_encoding = 'utf-8-sig'
44 44
45 45 # The master toctree document.
46 46 master_doc = 'index'
47 47
48 48 # General information about the project.
49 49 project = 'Kallithea'
50 copyright = '2010-2023 by various authors, licensed as GPLv3.'
50 copyright = '2010-2024 by various authors, licensed as GPLv3.'
51 51
52 52 # The version info for the project you're documenting, acts as replacement for
53 53 # |version| and |release|, also used in various other places throughout the
54 54 # built documents.
55 55 #
56 56 # The short X.Y version.
57 57 root = os.path.dirname(os.path.dirname(__file__))
58 58 sys.path.append(root)
59 59 version = kallithea.__version__
60 60 # The full version, including alpha/beta/rc tags.
61 61 release = kallithea.__version__
62 62
63 63 # The language for content autogenerated by Sphinx. Refer to documentation
64 64 # for a list of supported languages.
65 65 #language = None
66 66
67 67 # There are two options for replacing |today|: either, you set today to some
68 68 # non-false value, then it is used:
69 69 #today = ''
70 70 # Else, today_fmt is used as the format for a strftime call.
71 71 #today_fmt = '%B %d, %Y'
72 72
73 73 # List of patterns, relative to source directory, that match files and
74 74 # directories to ignore when looking for source files.
75 75 exclude_patterns = ['_build']
76 76
77 77 # The reST default role (used for this markup: `text`) to use for all documents.
78 78 #default_role = None
79 79
80 80 # If true, '()' will be appended to :func: etc. cross-reference text.
81 81 #add_function_parentheses = True
82 82
83 83 # If true, the current module name will be prepended to all description
84 84 # unit titles (such as .. function::).
85 85 #add_module_names = True
86 86
87 87 # If true, sectionauthor and moduleauthor directives will be shown in the
88 88 # output. They are ignored by default.
89 89 #show_authors = False
90 90
91 91 # The name of the Pygments (syntax highlighting) style to use.
92 92 pygments_style = 'sphinx'
93 93 highlight_language = 'none'
94 94
95 95 # A list of ignored prefixes for module index sorting.
96 96 #modindex_common_prefix = []
97 97
98 98
99 99 # -- Options for HTML output ---------------------------------------------------
100 100
101 101 # The theme to use for HTML and HTML Help pages. See the documentation for
102 102 # a list of builtin themes.
103 103 html_theme = 'nature'
104 104
105 105 # Theme options are theme-specific and customize the look and feel of a theme
106 106 # further. For a list of options available for each theme, see the
107 107 # documentation.
108 108 #html_theme_options = {}
109 109
110 110 # Add any paths that contain custom themes here, relative to this directory.
111 111 html_theme_path = ['theme']
112 112
113 113 # The name for this set of Sphinx documents. If None, it defaults to
114 114 # "<project> v<release> documentation".
115 115 #html_title = None
116 116
117 117 # A shorter title for the navigation bar. Default is the same as html_title.
118 118 #html_short_title = None
119 119
120 120 # The name of an image file (relative to this directory) to place at the top
121 121 # of the sidebar.
122 122 #html_logo = None
123 123
124 124 # The name of an image file (within the static path) to use as favicon of the
125 125 # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
126 126 # pixels large.
127 127 #html_favicon = None
128 128
129 129 # Add any paths that contain custom static files (such as style sheets) here,
130 130 # relative to this directory. They are copied after the builtin static files,
131 131 # so a file named "default.css" will overwrite the builtin "default.css".
132 132 #html_static_path = ['_static']
133 133
134 134 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
135 135 # using the given strftime format.
136 136 #html_last_updated_fmt = '%b %d, %Y'
137 137
138 138 # If true, SmartyPants will be used to convert quotes and dashes to
139 139 # typographically correct entities.
140 140 #html_use_smartypants = True
141 141
142 142 # Custom sidebar templates, maps document names to template names.
143 143 #html_sidebars = {}
144 144
145 145 # Additional templates that should be rendered to pages, maps page names to
146 146 # template names.
147 147 #html_additional_pages = {}
148 148
149 149 # If false, no module index is generated.
150 150 #html_domain_indices = True
151 151
152 152 # If false, no index is generated.
153 153 #html_use_index = True
154 154
155 155 # If true, the index is split into individual pages for each letter.
156 156 #html_split_index = False
157 157
158 158 # If true, links to the reST sources are added to the pages.
159 159 #html_show_sourcelink = True
160 160
161 161 # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
162 162 #html_show_sphinx = True
163 163
164 164 # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
165 165 #html_show_copyright = True
166 166
167 167 # If true, an OpenSearch description file will be output, and all pages will
168 168 # contain a <link> tag referring to it. The value of this option must be the
169 169 # base URL from which the finished HTML is served.
170 170 #html_use_opensearch = ''
171 171
172 172 # This is the file name suffix for HTML files (e.g. ".xhtml").
173 173 #html_file_suffix = None
174 174
175 175 # Output file base name for HTML help builder.
176 176 htmlhelp_basename = 'Kallithea-docs'
177 177
178 178
179 179 # -- Options for LaTeX output --------------------------------------------------
180 180
181 181 # The paper size ('letter' or 'a4').
182 182 #latex_paper_size = 'letter'
183 183
184 184 # The font size ('10pt', '11pt' or '12pt').
185 185 #latex_font_size = '10pt'
186 186
187 187 # Grouping the document tree into LaTeX files. List of tuples
188 188 # (source start file, target name, title, author, documentclass [howto/manual]).
189 189 latex_documents = [
190 190 ('index', 'Kallithea.tex', 'Kallithea Documentation',
191 191 'Kallithea Developers', 'manual'),
192 192 ]
193 193
194 194 # The name of an image file (relative to this directory) to place at the top of
195 195 # the title page.
196 196 #latex_logo = None
197 197
198 198 # For "manual" documents, if this is true, then toplevel headings are parts,
199 199 # not chapters.
200 200 #latex_use_parts = False
201 201
202 202 # If true, show page references after internal links.
203 203 #latex_show_pagerefs = False
204 204
205 205 # If true, show URL addresses after external links.
206 206 #latex_show_urls = False
207 207
208 208 # Additional stuff for the LaTeX preamble.
209 209 #latex_preamble = ''
210 210
211 211 # Documents to append as an appendix to all manuals.
212 212 #latex_appendices = []
213 213
214 214 # If false, no module index is generated.
215 215 #latex_domain_indices = True
216 216
217 217
218 218 # -- Options for manual page output --------------------------------------------
219 219
220 220 # One entry per manual page. List of tuples
221 221 # (source start file, name, description, authors, manual section).
222 222 man_pages = [
223 223 ('index', 'kallithea', 'Kallithea Documentation',
224 224 ['Kallithea Developers'], 1)
225 225 ]
226 226
227 227
228 228 # Example configuration for intersphinx: refer to the Python standard library.
229 229 intersphinx_mapping = {'http://docs.python.org/': None}
@@ -1,397 +1,397 b''
1 1 .. _contributing:
2 2
3 3 =========================
4 4 Contributing to Kallithea
5 5 =========================
6 6
7 7 Kallithea is developed and maintained by its users. Please join us and scratch
8 8 your own itch.
9 9
10 10
11 11 Infrastructure
12 12 --------------
13 13
14 14 The main repository is hosted on Our Own Kallithea (aka OOK) at
15 15 https://kallithea-scm.org/repos/kallithea/, our self-hosted instance
16 16 of Kallithea.
17 17
18 18 Please use the `mailing list`_ to send patches or report issues.
19 19
20 20 We use Weblate_ to translate the user interface messages into languages other
21 21 than English. Join our project on `Hosted Weblate`_ to help us.
22 22 To register, you can use your Bitbucket or GitHub account. See :ref:`translations`
23 23 for more details.
24 24
25 25
26 26 Getting started
27 27 ---------------
28 28
29 29 To get started with Kallithea development run the following commands in your
30 30 bash shell::
31 31
32 32 hg clone https://kallithea-scm.org/repos/kallithea
33 33 cd kallithea
34 34 python3 -m venv venv
35 35 . venv/bin/activate
36 pip install --upgrade pip setuptools
36 pip install --upgrade "pip<24.1" "setuptools<67"
37 37 pip install --upgrade -e . -r dev_requirements.txt python-ldap python-pam
38 38 kallithea-cli config-create my.ini
39 39 kallithea-cli db-create -c my.ini --user=user --email=user@example.com --password=password --repos=/tmp
40 40 kallithea-cli front-end-build
41 41 gearbox serve -c my.ini --reload &
42 42 firefox http://127.0.0.1:5000/
43 43
44 44
45 45 Contribution flow
46 46 -----------------
47 47
48 48 Starting from an existing Kallithea clone, make sure it is up to date with the
49 49 latest upstream changes::
50 50
51 51 hg pull
52 52 hg update
53 53
54 54 Review the :ref:`contributing-guidelines` and :ref:`coding-guidelines`.
55 55
56 56 If you are new to Mercurial, refer to Mercurial `Quick Start`_ and `Beginners
57 57 Guide`_ on the Mercurial wiki.
58 58
59 59 Now, make some changes and test them (see :ref:`contributing-tests`). Don't
60 60 forget to add new tests to cover new functionality or bug fixes.
61 61
62 62 For documentation changes, run ``make html`` from the ``docs`` directory to
63 63 generate the HTML result, then review them in your browser.
64 64
65 65 Before submitting any changes, run the cleanup script::
66 66
67 67 ./scripts/run-all-cleanup
68 68
69 69 When you are completely ready, you can send your changes to the community for
70 70 review and inclusion, via the mailing list (via ``hg email``).
71 71
72 72 .. _contributing-tests:
73 73
74 74
75 75 Internal dependencies
76 76 ---------------------
77 77
78 78 We try to keep the code base clean and modular and avoid circular dependencies.
79 79 Code should only invoke code in layers below itself.
80 80
81 81 Imports should import whole modules ``from`` their parent module, perhaps
82 82 ``as`` a shortened name. Avoid imports ``from`` modules.
83 83
84 84 To avoid cycles and partially initialized modules, ``__init__.py`` should *not*
85 85 contain any non-trivial imports. The top level of a module should *not* be a
86 86 facade for the module functionality.
87 87
88 88 Common code for a module is often in ``base.py``.
89 89
90 90 The important part of the dependency graph is approximately linear. In the
91 91 following list, modules may only depend on modules below them:
92 92
93 93 ``tests``
94 94 Just get the job done - anything goes.
95 95
96 96 ``bin/`` & ``config/`` & ``alembic/``
97 97 The main entry points, defined in ``setup.py``. Note: The TurboGears template
98 98 use ``config`` for the high WSGI application - this is not for low level
99 99 configuration.
100 100
101 101 ``controllers/``
102 102 The top level web application, with TurboGears using the ``root`` controller
103 103 as entry point, and ``routing`` dispatching to other controllers.
104 104
105 105 ``templates/**.html``
106 106 The "view", rendering to HTML. Invoked by controllers which can pass them
107 107 anything from lower layers - especially ``helpers`` available as ``h`` will
108 108 cut through all layers, and ``c`` gives access to global variables.
109 109
110 110 ``lib/helpers.py``
111 111 High level helpers, exposing everything to templates as ``h``. It depends on
112 112 everything and has a huge dependency chain, so it should not be used for
113 113 anything else. TODO.
114 114
115 115 ``controllers/base.py``
116 116 The base class of controllers, with lots of model knowledge.
117 117
118 118 ``lib/auth.py``
119 119 All things related to authentication. TODO.
120 120
121 121 ``lib/utils.py``
122 122 High level utils with lots of model knowledge. TODO.
123 123
124 124 ``lib/hooks.py``
125 125 Hooks into "everything" to give centralized logging to database, cache
126 126 invalidation, and extension handling. TODO.
127 127
128 128 ``model/``
129 129 Convenience business logic wrappers around database models.
130 130
131 131 ``model/db.py``
132 132 Defines the database schema and provides some additional logic.
133 133
134 134 ``model/scm.py``
135 135 All things related to anything. TODO.
136 136
137 137 SQLAlchemy
138 138 Database session and transaction in thread-local variables.
139 139
140 140 ``lib/utils2.py``
141 141 Low level utils specific to Kallithea.
142 142
143 143 ``lib/webutils.py``
144 144 Low level generic utils with awareness of the TurboGears environment.
145 145
146 146 TurboGears
147 147 Request, response and state like i18n gettext in thread-local variables.
148 148 External dependency with global state - usage should be minimized.
149 149
150 150 ``lib/vcs/``
151 151 Previously an independent library. No awareness of web, database, or state.
152 152
153 153 ``lib/*``
154 154 Various "pure" functionality not depending on anything else.
155 155
156 156 ``__init__``
157 157 Very basic Kallithea constants - some of them are set very early based on ``.ini``.
158 158
159 159 This is not exactly how it is right now, but we aim for something like that.
160 160 Especially the areas marked as TODO have some problems that need untangling.
161 161
162 162
163 163 Running tests
164 164 -------------
165 165
166 166 After finishing your changes make sure all tests pass cleanly. Run the testsuite
167 167 by invoking ``py.test`` from the project root::
168 168
169 169 py.test
170 170
171 171 Note that on unix systems, the temporary directory (``/tmp`` or where
172 172 ``$TMPDIR`` points) must allow executable files; Git hooks must be executable,
173 173 and the test suite creates repositories in the temporary directory. Linux
174 174 systems with /tmp mounted noexec will thus fail.
175 175
176 176 Tests can be run on PostgreSQL like::
177 177
178 178 sudo -u postgres createuser 'kallithea-test' --pwprompt # password password
179 179 sudo -u postgres createdb 'kallithea-test' --owner 'kallithea-test'
180 180 REUSE_TEST_DB='postgresql://kallithea-test:password@localhost/kallithea-test' py.test
181 181
182 182 Tests can be run on MariaDB/MySQL like::
183 183
184 184 echo "GRANT ALL PRIVILEGES ON \`kallithea-test\`.* TO 'kallithea-test'@'localhost' IDENTIFIED BY 'password'" | sudo -u mysql mysql
185 185 TEST_DB='mysql://kallithea-test:password@localhost/kallithea-test?charset=utf8mb4' py.test
186 186
187 187 You can also use ``tox`` to run the tests with all supported Python versions.
188 188
189 189 When running tests, Kallithea generates a `test.ini` based on template values
190 190 in `kallithea/tests/conftest.py` and populates the SQLite database specified
191 191 there.
192 192
193 193 It is possible to avoid recreating the full test database on each invocation of
194 194 the tests, thus eliminating the initial delay. To achieve this, run the tests as::
195 195
196 196 gearbox serve -c /tmp/kallithea-test-XXX/test.ini --pid-file=test.pid --daemon
197 197 KALLITHEA_WHOOSH_TEST_DISABLE=1 KALLITHEA_NO_TMP_PATH=1 py.test
198 198 kill -9 $(cat test.pid)
199 199
200 200 In these commands, the following variables are used::
201 201
202 202 KALLITHEA_WHOOSH_TEST_DISABLE=1 - skip whoosh index building and tests
203 203 KALLITHEA_NO_TMP_PATH=1 - disable new temp path for tests, used mostly for testing_vcs_operations
204 204
205 205 You can run individual tests by specifying their path as argument to py.test.
206 206 py.test also has many more options, see `py.test -h`. Some useful options
207 207 are::
208 208
209 209 -k EXPRESSION only run tests which match the given substring
210 210 expression. An expression is a python evaluable
211 211 expression where all names are substring-matched
212 212 against test names and their parent classes. Example:
213 213 -x, --exitfirst exit instantly on first error or failed test.
214 214 --lf rerun only the tests that failed at the last run (or
215 215 all if none failed)
216 216 --ff run all tests but run the last failures first. This
217 217 may re-order tests and thus lead to repeated fixture
218 218 setup/teardown
219 219 --pdb start the interactive Python debugger on errors.
220 220 -s, --capture=no don't capture stdout (any stdout output will be
221 221 printed immediately)
222 222
223 223 Performance tests
224 224 ^^^^^^^^^^^^^^^^^
225 225
226 226 A number of performance tests are present in the test suite, but they are
227 227 not run in a standard test run. These tests are useful to
228 228 evaluate the impact of certain code changes with respect to performance.
229 229
230 230 To run these tests::
231 231
232 232 env TEST_PERFORMANCE=1 py.test kallithea/tests/performance
233 233
234 234 To analyze performance, you could install pytest-profiling_, which enables the
235 235 --profile and --profile-svg options to py.test.
236 236
237 237 .. _pytest-profiling: https://github.com/manahl/pytest-plugins/tree/master/pytest-profiling
238 238
239 239 .. _contributing-guidelines:
240 240
241 241
242 242 Contribution guidelines
243 243 -----------------------
244 244
245 245 Kallithea is GPLv3 and we assume all contributions are made by the
246 246 committer/contributor and under GPLv3 unless explicitly stated. We do care a
247 247 lot about preservation of copyright and license information for existing code
248 248 that is brought into the project.
249 249
250 250 Contributions will be accepted in most formats -- such as commits hosted on your
251 251 own Kallithea instance, or patches sent by email to the `kallithea-general`_
252 252 mailing list.
253 253
254 254 Make sure to test your changes both manually and with the automatic tests
255 255 before posting.
256 256
257 257 We care about quality and review and keeping a clean repository history. We
258 258 might give feedback that requests polishing contributions until they are
259 259 "perfect". We might also rebase and collapse and make minor adjustments to your
260 260 changes when we apply them.
261 261
262 262 We try to make sure we have consensus on the direction the project is taking.
263 263 Everything non-sensitive should be discussed in public -- preferably on the
264 264 mailing list. We aim at having all non-trivial changes reviewed by at least
265 265 one other core developer before pushing. Obvious non-controversial changes will
266 266 be handled more casually.
267 267
268 268 There is a main development branch ("default") which is generally stable so that
269 269 it can be (and is) used in production. There is also a "stable" branch that is
270 270 almost exclusively reserved for bug fixes or trivial changes. Experimental
271 271 changes should live elsewhere (for example in a pull request) until they are
272 272 ready.
273 273
274 274 .. _coding-guidelines:
275 275
276 276
277 277 Coding guidelines
278 278 -----------------
279 279
280 280 We don't have a formal coding/formatting standard. We are currently using a mix
281 281 of Mercurial's (https://www.mercurial-scm.org/wiki/CodingStyle), pep8, and
282 282 consistency with existing code. Run ``scripts/run-all-cleanup`` before
283 283 committing to ensure some basic code formatting consistency.
284 284
285 285 We support Python 3.6 and later.
286 286
287 287 We try to support the most common modern web browsers. IE9 is still supported
288 288 to the extent it is feasible, IE8 is not.
289 289
290 290 We primarily support Linux and OS X on the server side but Windows should also work.
291 291
292 292 HTML templates should use 2 spaces for indentation ... but be pragmatic. We
293 293 should use templates cleverly and avoid duplication. We should use reasonable
294 294 semantic markup with element classes and IDs that can be used for styling and testing.
295 295 We should only use inline styles in places where it really is semantic (such as
296 296 ``display: none``).
297 297
298 298 JavaScript must use ``;`` between/after statements. Indentation 4 spaces. Inline
299 299 multiline functions should be indented two levels -- one for the ``()`` and one for
300 300 ``{}``.
301 301 Variables holding jQuery objects should be named with a leading ``$``.
302 302
303 303 Commit messages should have a leading short line summarizing the changes. For
304 304 bug fixes, put ``(Issue #123)`` at the end of this line.
305 305
306 306 Use American English grammar and spelling overall. Use `English title case`_ for
307 307 page titles, button labels, headers, and 'labels' for fields in forms.
308 308
309 309 .. _English title case: https://en.wikipedia.org/wiki/Capitalization#Title_case
310 310
311 311 Template helpers (that is, everything in ``kallithea.lib.helpers``)
312 312 should only be referenced from templates. If you need to call a
313 313 helper from the Python code, consider moving the function somewhere
314 314 else (e.g. to the model).
315 315
316 316 Notes on the SQLAlchemy session
317 317 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
318 318
319 319 Each HTTP request runs inside an independent SQLAlchemy session (as well
320 320 as in an independent database transaction). ``Session`` is the session manager
321 321 and factory. ``Session()`` will create a new session on-demand or return the
322 322 current session for the active thread. Many database operations are methods on
323 323 such session instances. The session will generally be removed by
324 324 TurboGears automatically.
325 325
326 326 Database model objects
327 327 (almost) always belong to a particular SQLAlchemy session, which means
328 328 that SQLAlchemy will ensure that they're kept in sync with the database
329 329 (but also means that they cannot be shared across requests).
330 330
331 331 Objects can be added to the session using ``Session().add``, but this is
332 332 rarely needed:
333 333
334 334 * When creating a database object by calling the constructor directly,
335 335 it must explicitly be added to the session.
336 336
337 337 * When creating an object using a factory function (like
338 338 ``create_repo``), the returned object has already (by convention)
339 339 been added to the session, and should not be added again.
340 340
341 341 * When getting an object from the session (via ``Session().query`` or
342 342 any of the utility functions that look up objects in the database),
343 343 it's already part of the session, and should not be added again.
344 344 SQLAlchemy monitors attribute modifications automatically for all
345 345 objects it knows about and syncs them to the database.
346 346
347 347 SQLAlchemy also flushes changes to the database automatically; manually
348 348 calling ``Session().flush`` is usually only necessary when the Python
349 349 code needs the database to assign an "auto-increment" primary key ID to
350 350 a freshly created model object (before flushing, the ID attribute will
351 351 be ``None``).
352 352
353 353 Debugging
354 354 ^^^^^^^^^
355 355
356 356 A good way to trace what Kallithea is doing is to keep an eye on the output on
357 357 stdout/stderr of the server process. Perhaps change ``my.ini`` to log at
358 358 ``DEBUG`` or ``INFO`` level, especially ``[logger_kallithea]``, but perhaps
359 359 also other loggers. It is often easier to add additional ``log`` or ``print``
360 360 statements than to use a Python debugger.
361 361
362 362 Sometimes it is simpler to disable ``errorpage.enabled`` and perhaps also
363 363 ``trace_errors.enable`` to expose raw errors instead of adding extra
364 364 processing. Enabling ``debug`` can be helpful for showing and exploring
365 365 tracebacks in the browser, but is also insecure and will add extra processing.
366 366
367 367 TurboGears2 DebugBar
368 368 ^^^^^^^^^^^^^^^^^^^^
369 369
370 370 It is possible to enable the TurboGears2-provided DebugBar_, a toolbar overlayed
371 371 over the Kallithea web interface, allowing you to see:
372 372
373 373 * timing information of the current request, including profiling information
374 374 * request data, including GET data, POST data, cookies, headers and environment
375 375 variables
376 376 * a list of executed database queries, including timing and result values
377 377
378 378 DebugBar is only activated when ``debug = true`` is set in the configuration
379 379 file. This is important, because the DebugBar toolbar will be visible for all
380 380 users, and allow them to see information they should not be allowed to see. Like
381 381 is anyway the case for ``debug = true``, do not use this in production!
382 382
383 383 To enable DebugBar, install ``tgext.debugbar`` and ``kajiki`` (typically via
384 384 ``pip``) and restart Kallithea (in debug mode).
385 385
386 386
387 387 Thank you for your contribution!
388 388 --------------------------------
389 389
390 390
391 391 .. _Weblate: http://weblate.org/
392 392 .. _mailing list: http://lists.sfconservancy.org/mailman/listinfo/kallithea-general
393 393 .. _kallithea-general: http://lists.sfconservancy.org/mailman/listinfo/kallithea-general
394 394 .. _Hosted Weblate: https://hosted.weblate.org/projects/kallithea/kallithea/
395 395 .. _DebugBar: https://github.com/TurboGears/tgext.debugbar
396 396 .. _Quick Start: https://www.mercurial-scm.org/wiki/QuickStart
397 397 .. _Beginners Guide: https://www.mercurial-scm.org/wiki/BeginnersGuides
@@ -1,144 +1,144 b''
1 1 .. _installation:
2 2
3 3 ==========================
4 4 Installation on Unix/Linux
5 5 ==========================
6 6
7 7 The following describes three different ways of installing Kallithea:
8 8
9 9 - :ref:`installation-source`: The simplest way to keep the installation
10 10 up-to-date and track any local customizations is to run directly from
11 11 source in a Kallithea repository clone, preferably inside a virtualenv
12 12 virtual Python environment.
13 13
14 14 - :ref:`installation-virtualenv`: If you prefer to only use released versions
15 15 of Kallithea, the recommended method is to install Kallithea in a virtual
16 16 Python environment using `virtualenv`. The advantages of this method over
17 17 direct installation is that Kallithea and its dependencies are completely
18 18 contained inside the virtualenv (which also means you can have multiple
19 19 installations side by side or remove it entirely by just removing the
20 20 virtualenv directory) and does not require root privileges.
21 21
22 22 - Kallithea can also be installed with plain pip - globally or with ``--user``
23 23 or similar. The package will be installed in the same location as all other
24 24 Python packages you have ever installed. As a result, removing it is not as
25 25 straightforward as with a virtualenv, as you'd have to remove its
26 26 dependencies manually and make sure that they are not needed by other
27 27 packages. We recommend using virtualenv.
28 28
29 29 Regardless of the installation method you may need to make sure you have
30 30 appropriate development packages installed, as installation of some of the
31 31 Kallithea dependencies requires a working C compiler and libffi library
32 32 headers. Depending on your configuration, you may also need to install
33 33 Git and development packages for the database of your choice.
34 34
35 35 For Debian and Ubuntu, the following command will ensure that a reasonable
36 36 set of dependencies is installed::
37 37
38 38 sudo apt-get install build-essential git libffi-dev python3-dev
39 39
40 40 For Fedora and RHEL-derivatives, the following command will ensure that a
41 41 reasonable set of dependencies is installed::
42 42
43 43 sudo yum install gcc git libffi-devel python3-devel
44 44
45 45 .. _installation-source:
46 46
47 47
48 48 Installation from repository source
49 49 -----------------------------------
50 50
51 51 To install Kallithea in a virtualenv using the stable branch of the development
52 52 repository, use the following commands in your bash shell::
53 53
54 54 hg clone https://kallithea-scm.org/repos/kallithea -u stable
55 55 cd kallithea
56 56 python3 -m venv venv
57 57 . venv/bin/activate
58 pip install --upgrade pip setuptools
58 pip install --upgrade "pip<24.1" "setuptools<67"
59 59 pip install --upgrade -e .
60 60 python3 setup.py compile_catalog # for translation of the UI
61 61
62 62 .. note::
63 63 This will install all Python dependencies into the virtualenv. Kallithea
64 64 itself will however only be installed as a pointer to the source location.
65 65 The source clone must thus be kept in the same location, and it shouldn't be
66 66 updated to other revisions unless you want to upgrade. Edits in the source
67 67 tree will have immediate impact (possibly after a restart of the service).
68 68
69 69 You can now proceed to :ref:`prepare-front-end-files`.
70 70
71 71 .. _installation-virtualenv:
72 72
73 73
74 74 Installing a released version in a virtualenv
75 75 ---------------------------------------------
76 76
77 77 It is highly recommended to use a separate virtualenv for installing Kallithea.
78 78 This way, all libraries required by Kallithea will be installed separately from your
79 79 main Python installation and other applications and things will be less
80 80 problematic when upgrading the system or Kallithea.
81 81 An additional benefit of virtualenv is that it doesn't require root privileges.
82 82
83 83 - Don't install as root - install as a dedicated user like ``kallithea``.
84 84 If necessary, create the top directory for the virtualenv (like
85 85 ``/srv/kallithea/venv``) as root and assign ownership to the user.
86 86
87 87 Make a parent folder for the virtualenv (and perhaps also Kallithea
88 88 configuration and data files) such as ``/srv/kallithea``. Create the
89 89 directory as root if necessary and grant ownership to the ``kallithea`` user.
90 90
91 91 - Create a new virtual environment, for example in ``/srv/kallithea/venv``,
92 92 specifying the right Python binary::
93 93
94 94 python3 -m venv /srv/kallithea/venv
95 95
96 96 - Activate the virtualenv in your current shell session and make sure the
97 97 basic requirements are up-to-date by running the following commands in your
98 98 bash shell::
99 99
100 100 . /srv/kallithea/venv/bin/activate
101 pip install --upgrade pip setuptools
101 pip install --upgrade "pip<24.1" "setuptools<67"
102 102
103 103 .. note:: You can't use UNIX ``sudo`` to source the ``activate`` script; it
104 104 will "activate" a shell that terminates immediately.
105 105
106 106 - Install Kallithea in the activated virtualenv::
107 107
108 108 pip install --upgrade kallithea
109 109
110 110 .. note:: Some dependencies are optional. If you need them, install them in
111 111 the virtualenv too::
112 112
113 113 pip install --upgrade kallithea python-ldap python-pam psycopg2
114 114
115 115 This might require installation of development packages using your
116 116 distribution's package manager.
117 117
118 118 Alternatively, download a .tar.gz from http://pypi.python.org/pypi/Kallithea,
119 119 extract it and install from source by running::
120 120
121 121 pip install --upgrade .
122 122
123 123 - This will install Kallithea together with all other required
124 124 Python libraries into the activated virtualenv.
125 125
126 126 You can now proceed to :ref:`prepare-front-end-files`.
127 127
128 128 .. _prepare-front-end-files:
129 129
130 130
131 131 Prepare front-end files
132 132 -----------------------
133 133
134 134 Finally, the front-end files with CSS and JavaScript must be prepared. This
135 135 depends on having some commands available in the shell search path: ``npm``
136 136 version 6 or later, and ``node.js`` (version 12 or later) available as
137 137 ``node``. The installation method for these dependencies varies between
138 138 operating systems and distributions.
139 139
140 140 Prepare the front-end by running::
141 141
142 142 kallithea-cli front-end-build
143 143
144 144 You can now proceed to :ref:`setup`.
@@ -1,193 +1,193 b''
1 1 .. _installation_win:
2 2
3 3 .. warning:: This section is outdated and needs updating for Python 3.
4 4
5 5 ====================================================
6 6 Installation on Windows (7/Server 2008 R2 and newer)
7 7 ====================================================
8 8
9 9
10 10 First time install
11 11 ------------------
12 12
13 13 Target OS: Windows 7 and newer or Windows Server 2008 R2 and newer
14 14
15 15 Tested on Windows 8.1, Windows Server 2008 R2 and Windows Server 2012
16 16
17 17 To install on an older version of Windows, see `<installation_win_old.html>`_
18 18
19 19 Step 1 -- Install Python
20 20 ^^^^^^^^^^^^^^^^^^^^^^^^
21 21
22 22 Install Python 3. Latest version is recommended. If you need another version, they can run side by side.
23 23
24 24 - Download Python 3 from http://www.python.org/download/
25 25 - Choose and click on the version
26 26 - Click on "Windows X86-64 Installer" for x64 or "Windows x86 MSI installer" for Win32.
27 27 - Disable UAC or run the installer with admin privileges. If you chose to disable UAC, do not forget to reboot afterwards.
28 28
29 29 While writing this guide, the latest version was v3.8.1.
30 30 Remember the specific major and minor versions installed, because they will
31 31 be needed in the next step. In this case, it is "3.8".
32 32
33 33 Step 2 -- Python BIN
34 34 ^^^^^^^^^^^^^^^^^^^^
35 35
36 36 Add Python BIN folder to the path. This can be done manually (editing
37 37 "PATH" environment variable) or by using Windows Support Tools that
38 38 come pre-installed in Windows Vista/7 and later.
39 39
40 40 Open a CMD and type::
41 41
42 42 SETX PATH "%PATH%;[your-python-path]" /M
43 43
44 44 Please substitute [your-python-path] with your Python installation
45 45 path. Typically this is ``C:\\Python38``.
46 46
47 47 Step 3 -- Install pywin32 extensions
48 48 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
49 49
50 50 Download pywin32 from:
51 51 http://sourceforge.net/projects/pywin32/files/
52 52
53 53 - Click on "pywin32" folder
54 54 - Click on the first folder (in this case, Build 219, maybe newer when you try)
55 55 - Choose the file ending with ".amd64-py3.x.exe" (".win32-py3.x.exe"
56 56 for Win32) where x is the minor version of Python you installed.
57 57 When writing this guide, the file was:
58 58 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win-amd64-py3.8.exe/download
59 59 (x64)
60 60 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win32-py3.8.exe/download
61 61 (Win32)
62 62
63 63 Step 5 -- Kallithea folder structure
64 64 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
65 65
66 66 Create a Kallithea folder structure.
67 67
68 68 This is only an example to install Kallithea. Of course, you can
69 69 change it. However, this guide will follow the proposed structure, so
70 70 please later adapt the paths if you change them. Folders without
71 71 spaces are recommended.
72 72
73 73 Create the following folder structure::
74 74
75 75 C:\Kallithea
76 76 C:\Kallithea\Bin
77 77 C:\Kallithea\Env
78 78 C:\Kallithea\Repos
79 79
80 80 Step 6 -- Install virtualenv
81 81 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
82 82
83 83 .. note::
84 84 A python virtual environment will allow for isolation between the Python packages of your system and those used for Kallithea.
85 85 It is strongly recommended to use it to ensure that Kallithea does not change a dependency that other software uses or vice versa.
86 86
87 87 To create a virtual environment, run::
88 88
89 89 python3 -m venv C:\Kallithea\Env
90 90
91 91 Step 7 -- Install Kallithea
92 92 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
93 93
94 94 In order to install Kallithea, you need to be able to run "pip install kallithea". It will use pip to install the Kallithea Python package and its dependencies.
95 95 Some Python packages use managed code and need to be compiled.
96 96 This can be done on Linux without any special steps. On Windows, you will need to install Microsoft Visual C++ compiler for Python 3.8.
97 97
98 98 Download and install "Microsoft Visual C++ Compiler for Python 3.8" from http://aka.ms/vcpython27
99 99
100 100 .. note::
101 101 You can also install the dependencies using already compiled Windows binaries packages. A good source of compiled Python packages is http://www.lfd.uci.edu/~gohlke/pythonlibs/. However, not all of the necessary packages for Kallithea are on this site and some are hard to find, so we will stick with using the compiler.
102 102
103 103 In a command prompt type (adapting paths if necessary)::
104 104
105 105 cd C:\Kallithea\Env\Scripts
106 106 activate
107 pip install --upgrade pip setuptools
107 pip install --upgrade "pip<24.1" "setuptools<67"
108 108
109 109 The prompt will change into "(Env) C:\\Kallithea\\Env\\Scripts" or similar
110 110 (depending of your folder structure). Then type::
111 111
112 112 pip install kallithea
113 113
114 114 .. note:: This will take some time. Please wait patiently until it is fully
115 115 complete. Some warnings will appear. Don't worry, they are
116 116 normal.
117 117
118 118 Step 8 -- Install Git (optional)
119 119 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
120 120
121 121 Mercurial being a python package, was installed automatically when doing ``pip install kallithea``.
122 122
123 123 You need to install Git manually if you want Kallithea to be able to host Git repositories.
124 124 See http://git-scm.com/book/en/v2/Getting-Started-Installing-Git#Installing-on-Windows for instructions.
125 125 The location of the Git binaries (like ``c:\path\to\git\bin``) must be
126 126 added to the ``PATH`` environment variable so ``git.exe`` and other tools like
127 127 ``gzip.exe`` are available.
128 128
129 129 Step 9 -- Configuring Kallithea
130 130 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
131 131
132 132 Steps taken from `<setup.html>`_
133 133
134 134 You have to use the same command prompt as in Step 7, so if you closed
135 135 it, reopen it following the same commands (including the "activate"
136 136 one). When ready, type::
137 137
138 138 cd C:\Kallithea\Bin
139 139 kallithea-cli config-create my.ini
140 140
141 141 Then you must edit my.ini to fit your needs (IP address, IP
142 142 port, mail settings, database, etc.). `NotePad++`__ or a similar text
143 143 editor is recommended to properly handle the newline character
144 144 differences between Unix and Windows.
145 145
146 146 __ http://notepad-plus-plus.org/
147 147
148 148 For the sake of simplicity, run it with the default settings. After your edits (if any) in the previous command prompt, type::
149 149
150 150 kallithea-cli db-create -c my.ini
151 151
152 152 .. warning:: This time a *new* database will be installed. You must
153 153 follow a different process to later :ref:`upgrade <upgrade>`
154 154 to a newer Kallithea version.
155 155
156 156 The script will ask you for confirmation about creating a new database, answer yes (y)
157 157
158 158 The script will ask you for the repository path, answer C:\\Kallithea\\Repos (or similar).
159 159
160 160 The script will ask you for the admin username and password, answer "admin" + "123456" (or whatever you want)
161 161
162 162 The script will ask you for admin mail, answer "admin@xxxx.com" (or whatever you want).
163 163
164 164 If you make a mistake and the script doesn't end, don't worry: start it again.
165 165
166 166 If you decided not to install Git, you will get errors about it that you can ignore.
167 167
168 168 Step 10 -- Running Kallithea
169 169 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
170 170
171 171 In the previous command prompt, being in the C:\\Kallithea\\Bin folder, type::
172 172
173 173 gearbox serve -c my.ini
174 174
175 175 Open your web server, and go to http://127.0.0.1:5000
176 176
177 177 It works!! :-)
178 178
179 179 Remark:
180 180 If it does not work the first time, Ctrl-C the CMD process and start it again. Don't forget the "http://" in Internet Explorer.
181 181
182 182 What this guide does not cover:
183 183
184 184 - Installing Celery
185 185 - Running Kallithea as a Windows Service. You can investigate here:
186 186
187 187 - http://pypi.python.org/pypi/wsgisvc
188 188 - http://ryrobes.com/python/running-python-scripts-as-a-windows-service/
189 189 - http://wiki.pylonshq.com/display/pylonscookbook/How+to+run+Pylons+as+a+Windows+service
190 190
191 191 - Using Apache. You can investigate here:
192 192
193 193 - https://groups.google.com/group/rhodecode/msg/c433074e813ffdc4
@@ -1,250 +1,250 b''
1 1 .. _installation_win_old:
2 2
3 3 .. warning:: This section is outdated and needs updating for Python 3.
4 4
5 5 ==========================================================
6 6 Installation on Windows (XP/Vista/Server 2003/Server 2008)
7 7 ==========================================================
8 8
9 9
10 10 First-time install
11 11 ------------------
12 12
13 13 Target OS: Windows XP SP3 32-bit English (Clean installation)
14 14 + All Windows Updates until 24-may-2012
15 15
16 16 .. note::
17 17
18 18 This installation is for 32-bit systems, for 64-bit Windows you might need
19 19 to download proper 64-bit versions of the different packages (Windows Installer, Win32py extensions)
20 20 plus some extra tweaks.
21 21 These extra steps haven been marked as "64-bit".
22 22 Tested on Windows Server 2008 R2 SP1, 9-feb-2013.
23 23 If you run into any 64-bit related problems, please check these pages:
24 24
25 25 - http://blog.victorjabur.com/2011/06/05/compiling-python-2-7-modules-on-windows-32-and-64-using-msvc-2008-express/
26 26 - http://bugs.python.org/issue7511
27 27
28 28 Step 1 -- Install Visual Studio 2008 Express
29 29 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
30 30
31 31 Optional: You can also install MinGW, but VS2008 installation is easier.
32 32
33 33 Download "Visual C++ 2008 Express Edition with SP1" from:
34 34 http://download.microsoft.com/download/E/8/E/E8EEB394-7F42-4963-A2D8-29559B738298/VS2008ExpressWithSP1ENUX1504728.iso
35 35 (if not found or relocated, google for "visual studio 2008 express" for updated link. This link was taken from http://stackoverflow.com/questions/15318560/visual-c-2008-express-download-link-dead)
36 36
37 37 You can also download full ISO file for offline installation, just
38 38 choose "All -- Offline Install ISO image file" in the previous page and
39 39 choose "Visual C++ 2008 Express" when installing.
40 40
41 41 .. note::
42 42
43 43 Using other versions of Visual Studio will lead to random crashes.
44 44 You must use Visual Studio 2008!"
45 45
46 46 .. note::
47 47
48 48 Silverlight Runtime and SQL Server 2008 Express Edition are not
49 49 required, you can uncheck them
50 50
51 51 .. note::
52 52
53 53 64-bit: You also need to install the Microsoft Windows SDK for .NET 3.5 SP1 (.NET 4.0 won't work).
54 54 Download from: http://www.microsoft.com/en-us/download/details.aspx?id=3138
55 55
56 56 .. note::
57 57
58 58 64-bit: You also need to copy and rename a .bat file to make the Visual C++ compiler work.
59 59 I am not sure why this is not necessary for 32-bit.
60 60 Copy C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat to C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat
61 61
62 62 Step 2 -- Install Python
63 63 ^^^^^^^^^^^^^^^^^^^^^^^^
64 64
65 65 Install Python 3.8.x from:
66 66 http://www.python.org/download/
67 67
68 68 Remember the specific major and minor version installed, because it will
69 69 be needed in the next step. In this case, it is "3.8".
70 70
71 71 .. note::
72 72
73 73 64-bit: Just download and install the 64-bit version of python.
74 74
75 75 Step 3 -- Install Win32py extensions
76 76 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
77 77
78 78 Download pywin32 from:
79 79 http://sourceforge.net/projects/pywin32/files/
80 80
81 81 - Click on "pywin32" folder
82 82 - Click on the first folder (in this case, Build 218, maybe newer when you try)
83 83 - Choose the file ending with ".win32-py3.x.exe" -> x being the minor
84 84 version of Python you installed (in this case, 7)
85 85 When writing this guide, the file was:
86 86 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/pywin32-218.win-amd64-py3.8.exe/download
87 87
88 88 .. note::
89 89
90 90 64-bit: Download and install the 64-bit version.
91 91 At the time of writing you can find this at:
92 92 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/pywin32-218.win-amd64-py3.8.exe/download
93 93
94 94 Step 4 -- Python BIN
95 95 ^^^^^^^^^^^^^^^^^^^^
96 96
97 97 Add Python BIN folder to the path
98 98
99 99 You have to add the Python folder to the path, you can do it manually
100 100 (editing "PATH" environment variable) or using Windows Support Tools
101 101 that came preinstalled in Vista/7 and can be installed in Windows XP.
102 102
103 103 - Using support tools on WINDOWS XP:
104 104 If you use Windows XP you can install them using Windows XP CD and
105 105 navigating to \SUPPORT\TOOLS. There, execute Setup.EXE (not MSI).
106 106 Afterwards, open a CMD and type::
107 107
108 108 SETX PATH "%PATH%;[your-python-path]" -M
109 109
110 110 Close CMD (the path variable will be updated then)
111 111
112 112 - Using support tools on WINDOWS Vista/7:
113 113
114 114 Open a CMD and type::
115 115
116 116 SETX PATH "%PATH%;[your-python-path]" /M
117 117
118 118 Please substitute [your-python-path] with your Python installation path.
119 119 Typically: C:\\Python38
120 120
121 121 Step 5 -- Kallithea folder structure
122 122 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
123 123
124 124 Create a Kallithea folder structure
125 125
126 126 This is only a example to install Kallithea, you can of course change
127 127 it. However, this guide will follow the proposed structure, so please
128 128 later adapt the paths if you change them. My recommendation is to use
129 129 folders with NO SPACES. But you can try if you are brave...
130 130
131 131 Create the following folder structure::
132 132
133 133 C:\Kallithea
134 134 C:\Kallithea\Bin
135 135 C:\Kallithea\Env
136 136 C:\Kallithea\Repos
137 137
138 138 Step 6 -- Install virtualenv
139 139 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
140 140
141 141 Create a virtual Python environment in C:\\Kallithea\\Env (or similar). To
142 142 do so, open a CMD (Python Path should be included in Step3), and write::
143 143
144 144 python3 -m venv C:\Kallithea\Env
145 145
146 146 Step 7 -- Install Kallithea
147 147 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
148 148
149 149 Finally, install Kallithea
150 150
151 151 Close previously opened command prompt/s, and open a Visual Studio 2008
152 152 Command Prompt (**IMPORTANT!!**). To do so, go to Start Menu, and then open
153 153 "Microsoft Visual C++ 2008 Express Edition" -> "Visual Studio Tools" ->
154 154 "Visual Studio 2008 Command Prompt"
155 155
156 156 .. note::
157 157
158 158 64-bit: For 64-bit you need to modify the shortcut that is used to start the
159 159 Visual Studio 2008 Command Prompt. Use right-mouse click to open properties.
160 160
161 161 Change commandline from::
162 162
163 163 %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" x86
164 164
165 165 to::
166 166
167 167 %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" amd64
168 168
169 169 In that CMD (loaded with VS2008 PATHs) type::
170 170
171 171 cd C:\Kallithea\Env\Scripts (or similar)
172 172 activate
173 pip install --upgrade pip setuptools
173 pip install --upgrade "pip<24.1" "setuptools<67"
174 174
175 175 The prompt will change into "(Env) C:\\Kallithea\\Env\\Scripts" or similar
176 176 (depending of your folder structure). Then type::
177 177
178 178 pip install kallithea
179 179
180 180 (long step, please wait until fully complete)
181 181
182 182 Some warnings will appear, don't worry as they are normal.
183 183
184 184 Step 8 -- Configuring Kallithea
185 185 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
186 186
187 187 steps taken from http://packages.python.org/Kallithea/setup.html
188 188
189 189 You have to use the same Visual Studio 2008 command prompt as Step7, so
190 190 if you closed it reopen it following the same commands (including the
191 191 "activate" one). When ready, just type::
192 192
193 193 cd C:\Kallithea\Bin
194 194 kallithea-cli config-create my.ini
195 195
196 196 Then, you must edit my.ini to fit your needs (network address and
197 197 port, mail settings, database, whatever). I recommend using NotePad++
198 198 (free) or similar text editor, as it handles well the EndOfLine
199 199 character differences between Unix and Windows
200 200 (http://notepad-plus-plus.org/)
201 201
202 202 For the sake of simplicity lets run it with the default settings. After
203 203 your edits (if any), in the previous Command Prompt, type::
204 204
205 205 kallithea-cli db-create -c my.ini
206 206
207 207 .. warning:: This time a *new* database will be installed. You must
208 208 follow a different process to later :ref:`upgrade <upgrade>`
209 209 to a newer Kallithea version.
210 210
211 211 The script will ask you for confirmation about creating a NEW database,
212 212 answer yes (y)
213 213 The script will ask you for repository path, answer C:\\Kallithea\\Repos
214 214 (or similar)
215 215 The script will ask you for admin username and password, answer "admin"
216 216 + "123456" (or whatever you want)
217 217 The script will ask you for admin mail, answer "admin@xxxx.com" (or
218 218 whatever you want)
219 219
220 220 If you make some mistake and the script does not end, don't worry, start
221 221 it again.
222 222
223 223 Step 9 -- Running Kallithea
224 224 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
225 225
226 226 In the previous command prompt, being in the C:\\Kallithea\\Bin folder,
227 227 just type::
228 228
229 229 gearbox serve -c my.ini
230 230
231 231 Open yout web server, and go to http://127.0.0.1:5000
232 232
233 233 It works!! :-)
234 234
235 235 Remark:
236 236 If it does not work first time, just Ctrl-C the CMD process and start it
237 237 again. Don't forget the "http://" in Internet Explorer
238 238
239 239 What this Guide does not cover:
240 240
241 241 - Installing Celery
242 242 - Running Kallithea as Windows Service. You can investigate here:
243 243
244 244 - http://pypi.python.org/pypi/wsgisvc
245 245 - http://ryrobes.com/python/running-python-scripts-as-a-windows-service/
246 246 - http://wiki.pylonshq.com/display/pylonscookbook/How+to+run+Pylons+as+a+Windows+service
247 247
248 248 - Using Apache. You can investigate here:
249 249
250 250 - https://groups.google.com/group/rhodecode/msg/c433074e813ffdc4
@@ -1,165 +1,169 b''
1 1 # -*- coding: utf-8 -*-
2 2 # This program is free software: you can redistribute it and/or modify
3 3 # it under the terms of the GNU General Public License as published by
4 4 # the Free Software Foundation, either version 3 of the License, or
5 5 # (at your option) any later version.
6 6 #
7 7 # This program is distributed in the hope that it will be useful,
8 8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 10 # GNU General Public License for more details.
11 11 #
12 12 # You should have received a copy of the GNU General Public License
13 13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 14 """
15 15 Global configuration file for TurboGears2 specific settings in Kallithea.
16 16
17 17 This file complements the .ini file.
18 18 """
19 19
20 20 import logging
21 21 import os
22 22 import platform
23 23 import sys
24 24
25 25 import alembic.config
26 26 import mercurial
27 27 import tg
28 28 from alembic.migration import MigrationContext
29 29 from alembic.script.base import ScriptDirectory
30 30 from sqlalchemy import create_engine
31 31 from tg import FullStackApplicationConfigurator
32 32
33 33 import kallithea.lib.locales
34 34 import kallithea.model.base
35 35 import kallithea.model.meta
36 36 from kallithea.lib import celery_app
37 37 from kallithea.lib.utils import load_extensions, set_app_settings, set_indexer_config, set_vcs_config
38 38 from kallithea.lib.utils2 import asbool, check_git_version
39 39 from kallithea.model import db
40 40
41 41
42 42 log = logging.getLogger(__name__)
43 43
44 44
45 45 base_config = FullStackApplicationConfigurator()
46 46
47 47 base_config.update_blueprint({
48 48 'package': kallithea,
49 49
50 50 # Rendering Engines Configuration
51 51 'renderers': [
52 52 'json',
53 53 'mako',
54 54 ],
55 55 'default_renderer': 'mako',
56 56 'use_dotted_templatenames': False,
57 57
58 58 # Configure Sessions, store data as JSON to avoid pickle security issues
59 59 'session.enabled': True,
60 60 'session.data_serializer': 'json',
61 61
62 62 # Configure the base SQLALchemy Setup
63 63 'use_sqlalchemy': True,
64 64 'model': kallithea.model.base,
65 65 'DBSession': kallithea.model.meta.Session,
66 66
67 67 # Configure App without an authentication backend.
68 68 'auth_backend': None,
69 69
70 70 # Use custom error page for these errors. By default, Turbogears2 does not add
71 71 # 400 in this list.
72 72 # Explicitly listing all is considered more robust than appending to defaults,
73 73 # in light of possible future framework changes.
74 74 'errorpage.status_codes': [400, 401, 403, 404],
75 75
76 76 # Disable transaction manager -- currently Kallithea takes care of transactions itself
77 77 'tm.enabled': False,
78 78
79 79 # Set the default i18n source language so TG doesn't search beyond 'en' in Accept-Language.
80 80 'i18n.lang': 'en',
81
82 # For TurboGears 2.4.3, define the native language for translations to
83 # prevent fall-through to languages requested with lower priority.
84 'i18n.native': ['en', 'en_US', 'en_GB'],
81 85 })
82 86
83 87 # DebugBar, a debug toolbar for TurboGears2.
84 88 # (https://github.com/TurboGears/tgext.debugbar)
85 89 # To enable it, install 'tgext.debugbar' and 'kajiki', and run Kallithea with
86 90 # 'debug = true' (not in production!)
87 91 # See the Kallithea documentation for more information.
88 92 try:
89 93 import kajiki # only to check its existence
90 94 from tgext.debugbar import enable_debugbar
91 95 assert kajiki
92 96 except ImportError:
93 97 pass
94 98 else:
95 99 base_config.get_blueprint_value('renderers').append('kajiki')
96 100 enable_debugbar(base_config)
97 101
98 102
99 103 def setup_configuration(app):
100 104 config = app.config
101 105
102 106 if not kallithea.lib.locales.current_locale_is_valid():
103 107 log.error("Terminating ...")
104 108 sys.exit(1)
105 109
106 110 # Mercurial sets encoding at module import time, so we have to monkey patch it
107 111 hgencoding = config.get('hgencoding')
108 112 if hgencoding:
109 113 mercurial.encoding.encoding = hgencoding
110 114
111 115 if config.get('ignore_alembic_revision', False):
112 116 log.warning('database alembic revision checking is disabled')
113 117 else:
114 118 dbconf = config['sqlalchemy.url']
115 119 alembic_cfg = alembic.config.Config()
116 120 alembic_cfg.set_main_option('script_location', 'kallithea:alembic')
117 121 alembic_cfg.set_main_option('sqlalchemy.url', dbconf)
118 122 script_dir = ScriptDirectory.from_config(alembic_cfg)
119 123 available_heads = sorted(script_dir.get_heads())
120 124
121 125 engine = create_engine(dbconf)
122 126 with engine.connect() as conn:
123 127 context = MigrationContext.configure(conn)
124 128 current_heads = sorted(str(s) for s in context.get_current_heads())
125 129 if current_heads != available_heads:
126 130 log.error('Failed to run Kallithea:\n\n'
127 131 'The database version does not match the Kallithea version.\n'
128 132 'Please read the documentation on how to upgrade or downgrade the database.\n'
129 133 'Current database version id(s): %s\n'
130 134 'Expected database version id(s): %s\n'
131 135 'If you are a developer and you know what you are doing, you can add `ignore_alembic_revision = True` '
132 136 'to your .ini file to skip the check.\n' % (' '.join(current_heads), ' '.join(available_heads)))
133 137 sys.exit(1)
134 138
135 139 # store some globals into kallithea
136 140 kallithea.DEFAULT_USER_ID = db.User.get_default_user().user_id
137 141
138 142 if asbool(config.get('use_celery')) and not kallithea.CELERY_APP.finalized:
139 143 kallithea.CELERY_APP.config_from_object(celery_app.make_celery_config(config))
140 144 kallithea.CONFIG = config
141 145
142 146 load_extensions(root_path=config['here'])
143 147
144 148 set_app_settings(config)
145 149
146 150 instance_id = kallithea.CONFIG.get('instance_id', '*')
147 151 if instance_id == '*':
148 152 instance_id = '%s-%s' % (platform.uname()[1], os.getpid())
149 153 kallithea.CONFIG['instance_id'] = instance_id
150 154
151 155 # update kallithea.CONFIG with the meanwhile changed 'config'
152 156 kallithea.CONFIG.update(config)
153 157
154 158 # configure vcs and indexer libraries (they are supposed to be independent
155 159 # as much as possible and thus avoid importing tg.config or
156 160 # kallithea.CONFIG).
157 161 set_vcs_config(kallithea.CONFIG)
158 162 set_indexer_config(kallithea.CONFIG)
159 163
160 164 check_git_version()
161 165
162 166 kallithea.model.meta.Session.remove()
163 167
164 168
165 169 tg.hooks.register('configure_new_app', setup_configuration)
@@ -1,403 +1,386 b''
1 1 # -*- coding: utf-8 -*-
2 2 # This program is free software: you can redistribute it and/or modify
3 3 # it under the terms of the GNU General Public License as published by
4 4 # the Free Software Foundation, either version 3 of the License, or
5 5 # (at your option) any later version.
6 6 #
7 7 # This program is distributed in the hope that it will be useful,
8 8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 10 # GNU General Public License for more details.
11 11 #
12 12 # You should have received a copy of the GNU General Public License
13 13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 14 """
15 15 kallithea.controllers.admin.repo_groups
16 16 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17 17
18 18 Repository groups controller for Kallithea
19 19
20 20 This file was forked by the Kallithea project in July 2014.
21 21 Original author and date, and relevant copyright and licensing information is below:
22 22 :created_on: Mar 23, 2010
23 23 :author: marcink
24 24 :copyright: (c) 2013 RhodeCode GmbH, and others.
25 25 :license: GPLv3, see LICENSE.md for more details.
26 26 """
27 27
28 28 import logging
29 29 import traceback
30 30
31 31 import formencode
32 32 from formencode import htmlfill
33 33 from tg import app_globals, request
34 34 from tg import tmpl_context as c
35 35 from tg.i18n import ugettext as _
36 36 from tg.i18n import ungettext
37 37 from webob.exc import HTTPForbidden, HTTPFound, HTTPInternalServerError, HTTPNotFound
38 38
39 39 from kallithea.controllers import base
40 40 from kallithea.lib import webutils
41 41 from kallithea.lib.auth import HasPermissionAny, HasRepoGroupPermissionLevel, HasRepoGroupPermissionLevelDecorator, LoginRequired
42 42 from kallithea.lib.utils2 import safe_int
43 43 from kallithea.lib.webutils import url
44 44 from kallithea.model import db, meta
45 45 from kallithea.model.forms import RepoGroupForm, RepoGroupPermsForm
46 46 from kallithea.model.repo import RepoModel
47 47 from kallithea.model.repo_group import RepoGroupModel
48 48 from kallithea.model.scm import AvailableRepoGroupChoices, RepoGroupList
49 49
50 50
51 51 log = logging.getLogger(__name__)
52 52
53 53
54 54 class RepoGroupsController(base.BaseController):
55 55
56 56 @LoginRequired(allow_default_user=True)
57 57 def _before(self, *args, **kwargs):
58 58 super(RepoGroupsController, self)._before(*args, **kwargs)
59 59
60 60 def __load_defaults(self, extras=(), exclude=()):
61 61 """extras is used for keeping current parent ignoring permissions
62 62 exclude is used for not moving group to itself TODO: also exclude descendants
63 63 Note: only admin can create top level groups
64 64 """
65 65 repo_groups = AvailableRepoGroupChoices('admin', extras)
66 66 exclude_group_ids = set(rg.group_id for rg in exclude)
67 67 c.repo_groups = [rg for rg in repo_groups
68 68 if rg[0] not in exclude_group_ids]
69 69
70 70 def __load_data(self, group_id):
71 71 """
72 72 Load defaults settings for edit, and update
73 73
74 74 :param group_id:
75 75 """
76 76 repo_group = db.RepoGroup.get_or_404(group_id)
77 77 data = repo_group.get_dict()
78 78 data['group_name'] = repo_group.name
79 79 data['owner'] = repo_group.owner.username
80 80
81 81 # fill repository group users
82 82 for p in repo_group.repo_group_to_perm:
83 83 data.update({'u_perm_%s' % p.user.username:
84 84 p.permission.permission_name})
85 85
86 86 # fill repository group groups
87 87 for p in repo_group.users_group_to_perm:
88 88 data.update({'g_perm_%s' % p.users_group.users_group_name:
89 89 p.permission.permission_name})
90 90
91 91 return data
92 92
93 def _revoke_perms_on_yourself(self, form_result):
94 _up = [u for u in form_result['perms_updates'] if request.authuser.username == u[0]]
95 _new = [u for u in form_result['perms_new'] if request.authuser.username == u[0]]
96 if _new and _new[0][1] != 'group.admin' or _up and _up[0][1] != 'group.admin':
97 return True
98 return False
99
100 93 def index(self, format='html'):
101 94 _list = db.RepoGroup.query(sorted=True).all()
102 95 group_iter = RepoGroupList(_list, perm_level='admin')
103 96 repo_groups_data = []
104 97 _tmpl_lookup = app_globals.mako_lookup
105 98 template = _tmpl_lookup.get_template('data_table/_dt_elements.html')
106 99
107 100 def repo_group_name(repo_group_name, children_groups):
108 101 return template.get_def("repo_group_name") \
109 102 .render_unicode(repo_group_name, children_groups, _=_, webutils=webutils, c=c)
110 103
111 104 def repo_group_actions(repo_group_id, repo_group_name, gr_count):
112 105 return template.get_def("repo_group_actions") \
113 106 .render_unicode(repo_group_id, repo_group_name, gr_count, _=_, webutils=webutils, c=c,
114 107 ungettext=ungettext)
115 108
116 109 for repo_gr in group_iter:
117 110 children_groups = [g.name for g in repo_gr.parents] + [repo_gr.name]
118 111 repo_count = repo_gr.repositories.count()
119 112 repo_groups_data.append({
120 113 "raw_name": webutils.escape(repo_gr.group_name),
121 114 "group_name": repo_group_name(repo_gr.group_name, children_groups),
122 115 "desc": webutils.escape(repo_gr.group_description),
123 116 "repos": repo_count,
124 117 "owner": repo_gr.owner.username,
125 118 "action": repo_group_actions(repo_gr.group_id, repo_gr.group_name,
126 119 repo_count)
127 120 })
128 121
129 122 c.data = {
130 123 "sort": None,
131 124 "dir": "asc",
132 125 "records": repo_groups_data
133 126 }
134 127
135 128 return base.render('admin/repo_groups/repo_groups.html')
136 129
137 130 def create(self):
138 131 self.__load_defaults()
139 132
140 133 # permissions for can create group based on parent_id are checked
141 134 # here in the Form
142 135 repo_group_form = RepoGroupForm(repo_groups=c.repo_groups)
143 136 form_result = None
144 137 try:
145 138 form_result = repo_group_form.to_python(dict(request.POST))
146 139 gr = RepoGroupModel().create(
147 140 group_name=form_result['group_name'],
148 141 group_description=form_result['group_description'],
149 142 parent=form_result['parent_group_id'],
150 143 owner=request.authuser.user_id,
151 144 copy_permissions=form_result['group_copy_permissions']
152 145 )
153 146 meta.Session().commit()
154 147 # TODO: in future action_logger(, '', '', '')
155 148 except formencode.Invalid as errors:
156 149 return htmlfill.render(
157 150 base.render('admin/repo_groups/repo_group_add.html'),
158 151 defaults=errors.value,
159 152 errors=errors.error_dict or {},
160 153 prefix_error=False,
161 154 encoding="UTF-8",
162 155 force_defaults=False)
163 156 except Exception:
164 157 log.error(traceback.format_exc())
165 158 webutils.flash(_('Error occurred during creation of repository group %s')
166 159 % request.POST.get('group_name'), category='error')
167 160 if form_result is None:
168 161 raise
169 162 parent_group_id = form_result['parent_group_id']
170 163 # TODO: maybe we should get back to the main view, not the admin one
171 164 raise HTTPFound(location=url('repos_groups', parent_group=parent_group_id))
172 165 webutils.flash(_('Created repository group %s') % gr.group_name,
173 166 category='success')
174 167 raise HTTPFound(location=url('repos_group_home', group_name=gr.group_name))
175 168
176 169 def new(self):
177 170 parent_group_id = safe_int(request.GET.get('parent_group') or '-1')
178 171 if HasPermissionAny('hg.admin')('group create'):
179 172 # we're global admin, we're ok and we can create TOP level groups
180 173 pass
181 174 else:
182 175 # we pass in parent group into creation form, thus we know
183 176 # what would be the group, we can check perms here !
184 177 group = db.RepoGroup.get(parent_group_id) if parent_group_id else None
185 178 group_name = group.group_name if group else None
186 179 if HasRepoGroupPermissionLevel('admin')(group_name, 'group create'):
187 180 pass
188 181 else:
189 182 raise HTTPForbidden()
190 183
191 184 self.__load_defaults()
192 185 return htmlfill.render(
193 186 base.render('admin/repo_groups/repo_group_add.html'),
194 187 defaults={'parent_group_id': parent_group_id},
195 188 errors={},
196 189 prefix_error=False,
197 190 encoding="UTF-8",
198 191 force_defaults=False)
199 192
200 193 @HasRepoGroupPermissionLevelDecorator('admin')
201 194 def update(self, group_name):
202 195 c.repo_group = db.RepoGroup.guess_instance(group_name)
203 196 self.__load_defaults(extras=[c.repo_group.parent_group],
204 197 exclude=[c.repo_group])
205 198
206 199 # TODO: kill allow_empty_group - it is only used for redundant form validation!
207 200 if HasPermissionAny('hg.admin')('group edit'):
208 201 # we're global admin, we're ok and we can create TOP level groups
209 202 allow_empty_group = True
210 203 elif not c.repo_group.parent_group:
211 204 allow_empty_group = True
212 205 else:
213 206 allow_empty_group = False
214 207 repo_group_form = RepoGroupForm(
215 208 edit=True,
216 209 old_data=c.repo_group.get_dict(),
217 210 repo_groups=c.repo_groups,
218 211 can_create_in_root=allow_empty_group,
219 212 )()
220 213 try:
221 214 form_result = repo_group_form.to_python(dict(request.POST))
222 215
223 216 new_gr = RepoGroupModel().update(group_name, form_result)
224 217 meta.Session().commit()
225 218 webutils.flash(_('Updated repository group %s')
226 219 % form_result['group_name'], category='success')
227 220 # we now have new name !
228 221 group_name = new_gr.group_name
229 222 # TODO: in future action_logger(, '', '', '')
230 223 except formencode.Invalid as errors:
231 224 c.active = 'settings'
232 225 return htmlfill.render(
233 226 base.render('admin/repo_groups/repo_group_edit.html'),
234 227 defaults=errors.value,
235 228 errors=errors.error_dict or {},
236 229 prefix_error=False,
237 230 encoding="UTF-8",
238 231 force_defaults=False)
239 232 except Exception:
240 233 log.error(traceback.format_exc())
241 234 webutils.flash(_('Error occurred during update of repository group %s')
242 235 % request.POST.get('group_name'), category='error')
243 236
244 237 raise HTTPFound(location=url('edit_repo_group', group_name=group_name))
245 238
246 239 @HasRepoGroupPermissionLevelDecorator('admin')
247 240 def delete(self, group_name):
248 241 gr = c.repo_group = db.RepoGroup.guess_instance(group_name)
249 242 parent_group = gr.parent_group
250 243 repos = gr.repositories.all()
251 244 if repos:
252 245 webutils.flash(_('This group contains %s repositories and cannot be '
253 246 'deleted') % len(repos), category='warning')
254 247 raise HTTPFound(location=url('repos_groups'))
255 248
256 249 children = gr.children.all()
257 250 if children:
258 251 webutils.flash(_('This group contains %s subgroups and cannot be deleted'
259 252 % (len(children))), category='warning')
260 253 raise HTTPFound(location=url('repos_groups'))
261 254
262 255 try:
263 256 RepoGroupModel().delete(group_name)
264 257 meta.Session().commit()
265 258 webutils.flash(_('Removed repository group %s') % group_name,
266 259 category='success')
267 260 # TODO: in future action_logger(, '', '', '')
268 261 except Exception:
269 262 log.error(traceback.format_exc())
270 263 webutils.flash(_('Error occurred during deletion of repository group %s')
271 264 % group_name, category='error')
272 265
273 266 if parent_group:
274 267 raise HTTPFound(location=url('repos_group_home', group_name=parent_group.group_name))
275 268 raise HTTPFound(location=url('repos_groups'))
276 269
277 270 def show_by_name(self, group_name):
278 271 """
279 272 This is a proxy that does a lookup group_name -> id, and shows
280 273 the group by id view instead
281 274 """
282 275 group_name = group_name.rstrip('/')
283 276 id_ = db.RepoGroup.get_by_group_name(group_name)
284 277 if id_:
285 278 return self.show(group_name)
286 279 raise HTTPNotFound
287 280
288 281 @HasRepoGroupPermissionLevelDecorator('read')
289 282 def show(self, group_name):
290 283 c.active = 'settings'
291 284
292 285 c.group = c.repo_group = db.RepoGroup.guess_instance(group_name)
293 286
294 287 groups = db.RepoGroup.query(sorted=True).filter_by(parent_group=c.group).all()
295 288 repo_groups_list = self.scm_model.get_repo_groups(groups)
296 289
297 290 repos_list = db.Repository.query(sorted=True).filter_by(group=c.group).all()
298 291 c.data = RepoModel().get_repos_as_dict(repos_list,
299 292 repo_groups_list=repo_groups_list,
300 293 short_name=True)
301 294
302 295 return base.render('admin/repo_groups/repo_group_show.html')
303 296
304 297 @HasRepoGroupPermissionLevelDecorator('admin')
305 298 def edit(self, group_name):
306 299 c.active = 'settings'
307 300
308 301 c.repo_group = db.RepoGroup.guess_instance(group_name)
309 302 self.__load_defaults(extras=[c.repo_group.parent_group],
310 303 exclude=[c.repo_group])
311 304 defaults = self.__load_data(c.repo_group.group_id)
312 305
313 306 return htmlfill.render(
314 307 base.render('admin/repo_groups/repo_group_edit.html'),
315 308 defaults=defaults,
316 309 encoding="UTF-8",
317 310 force_defaults=False
318 311 )
319 312
320 313 @HasRepoGroupPermissionLevelDecorator('admin')
321 314 def edit_repo_group_advanced(self, group_name):
322 315 c.active = 'advanced'
323 316 c.repo_group = db.RepoGroup.guess_instance(group_name)
324 317
325 318 return base.render('admin/repo_groups/repo_group_edit.html')
326 319
327 320 @HasRepoGroupPermissionLevelDecorator('admin')
328 321 def edit_repo_group_perms(self, group_name):
329 322 c.active = 'perms'
330 323 c.repo_group = db.RepoGroup.guess_instance(group_name)
331 324 self.__load_defaults()
332 325 defaults = self.__load_data(c.repo_group.group_id)
333 326
334 327 return htmlfill.render(
335 328 base.render('admin/repo_groups/repo_group_edit.html'),
336 329 defaults=defaults,
337 330 encoding="UTF-8",
338 331 force_defaults=False
339 332 )
340 333
341 334 @HasRepoGroupPermissionLevelDecorator('admin')
342 335 def update_perms(self, group_name):
343 336 """
344 337 Update permissions for given repository group
345 338
346 339 :param group_name:
347 340 """
348 341
349 342 c.repo_group = db.RepoGroup.guess_instance(group_name)
350 343 valid_recursive_choices = ['none', 'repos', 'groups', 'all']
351 344 form_result = RepoGroupPermsForm(valid_recursive_choices)().to_python(request.POST)
352 if not request.authuser.is_admin:
353 if self._revoke_perms_on_yourself(form_result):
354 msg = _('Cannot revoke permission for yourself as admin')
355 webutils.flash(msg, category='warning')
356 raise HTTPFound(location=url('edit_repo_group_perms', group_name=group_name))
357 345 recursive = form_result['recursive']
358 346 # iterate over all members(if in recursive mode) of this groups and
359 347 # set the permissions !
360 348 # this can be potentially heavy operation
361 349 RepoGroupModel()._update_permissions(c.repo_group,
362 350 form_result['perms_new'],
363 351 form_result['perms_updates'],
364 352 recursive)
365 353 # TODO: implement this
366 354 #action_logger(request.authuser, 'admin_changed_repo_permissions',
367 355 # repo_name, request.ip_addr)
368 356 meta.Session().commit()
369 357 webutils.flash(_('Repository group permissions updated'), category='success')
370 358 raise HTTPFound(location=url('edit_repo_group_perms', group_name=group_name))
371 359
372 360 @HasRepoGroupPermissionLevelDecorator('admin')
373 361 def delete_perms(self, group_name):
374 362 try:
375 363 obj_type = request.POST.get('obj_type')
376 364 obj_id = None
377 365 if obj_type == 'user':
378 366 obj_id = safe_int(request.POST.get('user_id'))
379 367 elif obj_type == 'user_group':
380 368 obj_id = safe_int(request.POST.get('user_group_id'))
381 369
382 if not request.authuser.is_admin:
383 if obj_type == 'user' and request.authuser.user_id == obj_id:
384 msg = _('Cannot revoke permission for yourself as admin')
385 webutils.flash(msg, category='warning')
386 raise Exception('revoke admin permission on self')
387 370 recursive = request.POST.get('recursive', 'none')
388 371 if obj_type == 'user':
389 372 RepoGroupModel().delete_permission(repo_group=group_name,
390 373 obj=obj_id, obj_type='user',
391 374 recursive=recursive)
392 375 elif obj_type == 'user_group':
393 376 RepoGroupModel().delete_permission(repo_group=group_name,
394 377 obj=obj_id,
395 378 obj_type='user_group',
396 379 recursive=recursive)
397 380
398 381 meta.Session().commit()
399 382 except Exception:
400 383 log.error(traceback.format_exc())
401 384 webutils.flash(_('An error occurred during revoking of permission'),
402 385 category='error')
403 386 raise HTTPInternalServerError()
This diff has been collapsed as it changes many lines, (3500 lines changed) Show them Hide them
@@ -1,4300 +1,2206 b''
1 1 {
2 2 "name": "kallithea",
3 "lockfileVersion": 2,
3 "lockfileVersion": 3,
4 4 "requires": true,
5 5 "packages": {
6 6 "": {
7 7 "name": "kallithea",
8 8 "dependencies": {
9 "at.js": "1.5.4",
10 "bootstrap": "3.3.7",
11 "codemirror": "5.49.0",
12 "datatables.net": "1.10.20",
13 "datatables.net-bs": "1.10.20",
14 "jquery": "3.4.1",
15 "jquery.caret": "0.3.1",
16 "jquery.flot": "0.8.3",
17 "select2": "3.5.1",
9 "at.js": "1.5",
10 "bootstrap": "3",
11 "codemirror": "5",
12 "datatables.net": "1",
13 "datatables.net-bs": "1",
14 "jquery": "3",
15 "jquery.caret": "0.3",
16 "jquery.flot": "0.8",
17 "select2": "3",
18 18 "select2-bootstrap-css": "1.4.6"
19 19 },
20 20 "devDependencies": {
21 "eslint": "6.8.0",
22 "eslint-plugin-html": "6.0.0",
23 "less": "3.10.3",
24 "less-plugin-clean-css": "1.5.1",
25 "license-checker": "25.0.1"
21 "eslint": "6",
22 "eslint-plugin-html": "6",
23 "less": "3",
24 "less-plugin-clean-css": "1.5",
25 "license-checker": "25"
26 26 }
27 27 },
28 28 "node_modules/@babel/code-frame": {
29 "version": "7.8.3",
30 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
31 "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
29 "version": "7.24.7",
30 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
31 "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
32 32 "dev": true,
33 33 "dependencies": {
34 "@babel/highlight": "^7.8.3"
34 "@babel/highlight": "^7.24.7",
35 "picocolors": "^1.0.0"
36 },
37 "engines": {
38 "node": ">=6.9.0"
39 }
40 },
41 "node_modules/@babel/helper-validator-identifier": {
42 "version": "7.24.7",
43 "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
44 "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
45 "dev": true,
46 "engines": {
47 "node": ">=6.9.0"
35 48 }
36 49 },
37 50 "node_modules/@babel/highlight": {
38 "version": "7.8.3",
39 "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
40 "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
51 "version": "7.24.7",
52 "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
53 "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
41 54 "dev": true,
42 55 "dependencies": {
43 "chalk": "^2.0.0",
44 "esutils": "^2.0.2",
45 "js-tokens": "^4.0.0"
56 "@babel/helper-validator-identifier": "^7.24.7",
57 "chalk": "^2.4.2",
58 "js-tokens": "^4.0.0",
59 "picocolors": "^1.0.0"
60 },
61 "engines": {
62 "node": ">=6.9.0"
46 63 }
47 64 },
48 65 "node_modules/abbrev": {
49 66 "version": "1.1.1",
50 67 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
51 68 "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
52 69 "dev": true
53 70 },
54 71 "node_modules/acorn": {
55 "version": "7.1.0",
56 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
57 "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
72 "version": "7.4.1",
73 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
74 "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
58 75 "dev": true,
59 76 "bin": {
60 77 "acorn": "bin/acorn"
61 78 },
62 79 "engines": {
63 80 "node": ">=0.4.0"
64 81 }
65 82 },
66 83 "node_modules/acorn-jsx": {
67 "version": "5.1.0",
68 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
69 "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
84 "version": "5.3.2",
85 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
86 "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
70 87 "dev": true,
71 88 "peerDependencies": {
72 "acorn": "^6.0.0 || ^7.0.0"
89 "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
73 90 }
74 91 },
75 92 "node_modules/ajv": {
76 "version": "6.10.2",
77 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
78 "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
93 "version": "6.12.6",
94 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
95 "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
79 96 "dev": true,
80 97 "dependencies": {
81 "fast-deep-equal": "^2.0.1",
98 "fast-deep-equal": "^3.1.1",
82 99 "fast-json-stable-stringify": "^2.0.0",
83 100 "json-schema-traverse": "^0.4.1",
84 101 "uri-js": "^4.2.2"
102 },
103 "funding": {
104 "type": "github",
105 "url": "https://github.com/sponsors/epoberezkin"
85 106 }
86 107 },
87 108 "node_modules/amdefine": {
88 109 "version": "1.0.1",
89 110 "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
90 "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
111 "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
91 112 "dev": true,
92 113 "engines": {
93 114 "node": ">=0.4.2"
94 115 }
95 116 },
96 117 "node_modules/ansi-escapes": {
97 "version": "4.3.0",
98 "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz",
99 "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==",
118 "version": "4.3.2",
119 "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
120 "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
100 121 "dev": true,
101 122 "dependencies": {
102 "type-fest": "^0.8.1"
123 "type-fest": "^0.21.3"
103 124 },
104 125 "engines": {
105 126 "node": ">=8"
127 },
128 "funding": {
129 "url": "https://github.com/sponsors/sindresorhus"
130 }
131 },
132 "node_modules/ansi-escapes/node_modules/type-fest": {
133 "version": "0.21.3",
134 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
135 "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
136 "dev": true,
137 "engines": {
138 "node": ">=10"
139 },
140 "funding": {
141 "url": "https://github.com/sponsors/sindresorhus"
106 142 }
107 143 },
108 144 "node_modules/ansi-regex": {
109 "version": "5.0.0",
110 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
111 "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
145 "version": "4.1.1",
146 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
147 "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
112 148 "dev": true,
113 149 "engines": {
114 "node": ">=8"
150 "node": ">=6"
115 151 }
116 152 },
117 153 "node_modules/ansi-styles": {
118 154 "version": "3.2.1",
119 155 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
120 156 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
121 157 "dev": true,
122 158 "dependencies": {
123 159 "color-convert": "^1.9.0"
124 160 },
125 161 "engines": {
126 162 "node": ">=4"
127 163 }
128 164 },
129 165 "node_modules/argparse": {
130 166 "version": "1.0.10",
131 167 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
132 168 "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
133 169 "dev": true,
134 170 "dependencies": {
135 171 "sprintf-js": "~1.0.2"
136 172 }
137 173 },
138 174 "node_modules/array-find-index": {
139 175 "version": "1.0.2",
140 176 "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
141 "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
177 "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==",
142 178 "dev": true,
143 179 "engines": {
144 180 "node": ">=0.10.0"
145 181 }
146 182 },
147 183 "node_modules/asap": {
148 184 "version": "2.0.6",
149 185 "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
150 "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
186 "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
151 187 "dev": true
152 188 },
153 "node_modules/asn1": {
154 "version": "0.2.4",
155 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
156 "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
157 "dev": true,
158 "optional": true,
159 "dependencies": {
160 "safer-buffer": "~2.1.0"
161 }
162 },
163 "node_modules/assert-plus": {
164 "version": "1.0.0",
165 "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
166 "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
167 "dev": true,
168 "optional": true,
169 "engines": {
170 "node": ">=0.8"
171 }
172 },
173 189 "node_modules/astral-regex": {
174 190 "version": "1.0.0",
175 191 "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
176 192 "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
177 193 "dev": true,
178 194 "engines": {
179 195 "node": ">=4"
180 196 }
181 197 },
182 "node_modules/asynckit": {
183 "version": "0.4.0",
184 "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
185 "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
186 "dev": true,
187 "optional": true
188 },
189 198 "node_modules/at.js": {
190 199 "version": "1.5.4",
191 200 "resolved": "https://registry.npmjs.org/at.js/-/at.js-1.5.4.tgz",
192 201 "integrity": "sha512-G8mgUb/PqShPoH8AyjuxsTGvIr1o716BtQUKDM44C8qN2W615y7KGJ68MlTGamd0J0D/m28emUkzagaHTdrGZw==",
193 202 "engines": {
194 203 "node": ">= 0.6.0"
195 204 },
196 205 "peerDependencies": {
197 206 "jquery": ">=1.7.0 <4.0.0"
198 207 }
199 208 },
200 "node_modules/aws-sign2": {
201 "version": "0.7.0",
202 "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
203 "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
204 "dev": true,
205 "optional": true,
206 "engines": {
207 "node": "*"
208 }
209 },
210 "node_modules/aws4": {
211 "version": "1.8.0",
212 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
213 "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
214 "dev": true,
215 "optional": true
216 },
217 209 "node_modules/balanced-match": {
218 "version": "1.0.0",
219 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
220 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
210 "version": "1.0.2",
211 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
212 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
221 213 "dev": true
222 214 },
223 "node_modules/bcrypt-pbkdf": {
224 "version": "1.0.2",
225 "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
226 "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
227 "dev": true,
228 "optional": true,
229 "dependencies": {
230 "tweetnacl": "^0.14.3"
231 }
232 },
233 215 "node_modules/bootstrap": {
234 "version": "3.3.7",
235 "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz",
236 "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=",
216 "version": "3.4.1",
217 "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz",
218 "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==",
237 219 "engines": {
238 "node": ">=0.10.1"
220 "node": ">=6"
239 221 }
240 222 },
241 223 "node_modules/brace-expansion": {
242 224 "version": "1.1.11",
243 225 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
244 226 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
245 227 "dev": true,
246 228 "dependencies": {
247 229 "balanced-match": "^1.0.0",
248 230 "concat-map": "0.0.1"
249 231 }
250 232 },
251 233 "node_modules/callsites": {
252 234 "version": "3.1.0",
253 235 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
254 236 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
255 237 "dev": true,
256 238 "engines": {
257 239 "node": ">=6"
258 240 }
259 241 },
260 "node_modules/caseless": {
261 "version": "0.12.0",
262 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
263 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
264 "dev": true,
265 "optional": true
266 },
267 242 "node_modules/chalk": {
268 243 "version": "2.4.2",
269 244 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
270 245 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
271 246 "dev": true,
272 247 "dependencies": {
273 248 "ansi-styles": "^3.2.1",
274 249 "escape-string-regexp": "^1.0.5",
275 250 "supports-color": "^5.3.0"
276 251 },
277 252 "engines": {
278 253 "node": ">=4"
279 254 }
280 255 },
281 256 "node_modules/chardet": {
282 257 "version": "0.7.0",
283 258 "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
284 259 "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
285 260 "dev": true
286 261 },
287 262 "node_modules/clean-css": {
288 263 "version": "3.4.28",
289 264 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
290 "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
265 "integrity": "sha512-aTWyttSdI2mYi07kWqHi24NUU9YlELFKGOAgFzZjDN1064DMAOy2FBuoyGmkKRlXkbpXd0EVHmiVkbKhKoirTw==",
291 266 "dev": true,
292 267 "dependencies": {
293 268 "commander": "2.8.x",
294 269 "source-map": "0.4.x"
295 270 },
296 271 "bin": {
297 272 "cleancss": "bin/cleancss"
298 273 },
299 274 "engines": {
300 275 "node": ">=0.10.0"
301 276 }
302 277 },
303 278 "node_modules/clean-css/node_modules/source-map": {
304 279 "version": "0.4.4",
305 280 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
306 "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
281 "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==",
307 282 "dev": true,
308 283 "dependencies": {
309 284 "amdefine": ">=0.0.4"
310 285 },
311 286 "engines": {
312 287 "node": ">=0.8.0"
313 288 }
314 289 },
315 290 "node_modules/cli-cursor": {
316 291 "version": "3.1.0",
317 292 "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
318 293 "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
319 294 "dev": true,
320 295 "dependencies": {
321 296 "restore-cursor": "^3.1.0"
322 297 },
323 298 "engines": {
324 299 "node": ">=8"
325 300 }
326 301 },
327 302 "node_modules/cli-width": {
328 "version": "2.2.0",
329 "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
330 "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
331 "dev": true
332 },
333 "node_modules/clone": {
334 "version": "2.1.2",
335 "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
336 "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
303 "version": "3.0.0",
304 "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
305 "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
337 306 "dev": true,
338 307 "engines": {
339 "node": ">=0.8"
308 "node": ">= 10"
340 309 }
341 310 },
342 311 "node_modules/codemirror": {
343 "version": "5.49.0",
344 "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.49.0.tgz",
345 "integrity": "sha512-Hyzr0HToBdZpLBN9dYFO/KlJAsKH37/cXVHPAqa+imml0R92tb9AkmsvjnXL+SluEvjjdfkDgRjc65NG5jnMYA=="
312 "version": "5.65.17",
313 "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.17.tgz",
314 "integrity": "sha512-1zOsUx3lzAOu/gnMAZkQ9kpIHcPYOc9y1Fbm2UVk5UBPkdq380nhkelG0qUwm1f7wPvTbndu9ZYlug35EwAZRQ=="
346 315 },
347 316 "node_modules/color-convert": {
348 317 "version": "1.9.3",
349 318 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
350 319 "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
351 320 "dev": true,
352 321 "dependencies": {
353 322 "color-name": "1.1.3"
354 323 }
355 324 },
356 325 "node_modules/color-name": {
357 326 "version": "1.1.3",
358 327 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
359 "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
328 "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
360 329 "dev": true
361 330 },
362 "node_modules/combined-stream": {
363 "version": "1.0.8",
364 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
365 "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
366 "dev": true,
367 "optional": true,
368 "dependencies": {
369 "delayed-stream": "~1.0.0"
370 },
371 "engines": {
372 "node": ">= 0.8"
373 }
374 },
375 331 "node_modules/commander": {
376 332 "version": "2.8.1",
377 333 "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
378 "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
334 "integrity": "sha512-+pJLBFVk+9ZZdlAOB5WuIElVPPth47hILFkmGym57aq8kwxsowvByvB0DHs1vQAhyMZzdcpTtF0VDKGkSDR4ZQ==",
379 335 "dev": true,
380 336 "dependencies": {
381 337 "graceful-readlink": ">= 1.0.0"
382 338 },
383 339 "engines": {
384 340 "node": ">= 0.6.x"
385 341 }
386 342 },
387 343 "node_modules/concat-map": {
388 344 "version": "0.0.1",
389 345 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
390 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
346 "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
391 347 "dev": true
392 348 },
393 "node_modules/core-util-is": {
394 "version": "1.0.2",
395 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
396 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
349 "node_modules/copy-anything": {
350 "version": "2.0.6",
351 "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
352 "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
397 353 "dev": true,
398 "optional": true
354 "dependencies": {
355 "is-what": "^3.14.1"
356 },
357 "funding": {
358 "url": "https://github.com/sponsors/mesqueeb"
359 }
399 360 },
400 361 "node_modules/cross-spawn": {
401 362 "version": "6.0.5",
402 363 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
403 364 "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
404 365 "dev": true,
405 366 "dependencies": {
406 367 "nice-try": "^1.0.4",
407 368 "path-key": "^2.0.1",
408 369 "semver": "^5.5.0",
409 370 "shebang-command": "^1.2.0",
410 371 "which": "^1.2.9"
411 372 },
412 373 "engines": {
413 374 "node": ">=4.8"
414 375 }
415 376 },
416 "node_modules/dashdash": {
417 "version": "1.14.1",
418 "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
419 "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
377 "node_modules/cross-spawn/node_modules/semver": {
378 "version": "5.7.2",
379 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
380 "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
420 381 "dev": true,
421 "optional": true,
422 "dependencies": {
423 "assert-plus": "^1.0.0"
424 },
425 "engines": {
426 "node": ">=0.10"
382 "bin": {
383 "semver": "bin/semver"
427 384 }
428 385 },
429 386 "node_modules/datatables.net": {
430 "version": "1.10.20",
431 "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.10.20.tgz",
432 "integrity": "sha512-4E4S7tTU607N3h0fZPkGmAtr9mwy462u+VJ6gxYZ8MxcRIjZqHy3Dv1GNry7i3zQCktTdWbULVKBbkAJkuHEnQ==",
387 "version": "1.13.11",
388 "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.13.11.tgz",
389 "integrity": "sha512-AE6RkMXziRaqzPcu/pl3SJXeRa6fmXQG/fVjuRESujvkzqDCYEeKTTpPMuVJSGYJpPi32WGSphVNNY1G4nSN/g==",
433 390 "dependencies": {
434 "jquery": ">=1.7"
391 "jquery": "1.8 - 4"
435 392 }
436 393 },
437 394 "node_modules/datatables.net-bs": {
438 "version": "1.10.20",
439 "resolved": "https://registry.npmjs.org/datatables.net-bs/-/datatables.net-bs-1.10.20.tgz",
440 "integrity": "sha512-NsMoOOYZ6NlteOpzhltw21lXsNdhjIMbIOxnqmcrb62ntl8eL9pYzk2AeiDXBlIKY4e550ZrExCq3CYKQ9myEg==",
395 "version": "1.13.11",
396 "resolved": "https://registry.npmjs.org/datatables.net-bs/-/datatables.net-bs-1.13.11.tgz",
397 "integrity": "sha512-oZeXzC2Z+pZc9Wpil6XuuwMPMfllSd+hWEauhKr8q7bTM5fGuBKzAVzSr7Tuo1OzMBZ6NkAb+HSBGCGUn5Qbhg==",
441 398 "dependencies": {
442 "datatables.net": "1.10.20",
443 "jquery": ">=1.7"
399 "datatables.net": "1.13.11",
400 "jquery": "1.8 - 4"
444 401 }
445 402 },
446 403 "node_modules/debug": {
447 "version": "3.2.6",
448 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
449 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
450 "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
404 "version": "4.3.5",
405 "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
406 "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
451 407 "dev": true,
452 408 "dependencies": {
453 "ms": "^2.1.1"
409 "ms": "2.1.2"
410 },
411 "engines": {
412 "node": ">=6.0"
413 },
414 "peerDependenciesMeta": {
415 "supports-color": {
416 "optional": true
417 }
454 418 }
455 419 },
456 420 "node_modules/debuglog": {
457 421 "version": "1.0.1",
458 422 "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
459 "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=",
423 "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==",
424 "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
460 425 "dev": true,
461 426 "engines": {
462 427 "node": "*"
463 428 }
464 429 },
465 430 "node_modules/deep-is": {
466 "version": "0.1.3",
467 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
468 "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
431 "version": "0.1.4",
432 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
433 "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
469 434 "dev": true
470 435 },
471 "node_modules/delayed-stream": {
472 "version": "1.0.0",
473 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
474 "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
475 "dev": true,
476 "optional": true,
477 "engines": {
478 "node": ">=0.4.0"
479 }
480 },
481 436 "node_modules/dezalgo": {
482 "version": "1.0.3",
483 "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
484 "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=",
437 "version": "1.0.4",
438 "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
439 "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
485 440 "dev": true,
486 441 "dependencies": {
487 442 "asap": "^2.0.0",
488 443 "wrappy": "1"
489 444 }
490 445 },
491 446 "node_modules/doctrine": {
492 447 "version": "3.0.0",
493 448 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
494 449 "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
495 450 "dev": true,
496 451 "dependencies": {
497 452 "esutils": "^2.0.2"
498 453 },
499 454 "engines": {
500 455 "node": ">=6.0.0"
501 456 }
502 457 },
503 458 "node_modules/dom-serializer": {
504 "version": "0.2.2",
505 "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
506 "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
459 "version": "1.4.1",
460 "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
461 "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
507 462 "dev": true,
508 463 "dependencies": {
509 464 "domelementtype": "^2.0.1",
465 "domhandler": "^4.2.0",
510 466 "entities": "^2.0.0"
511 }
512 467 },
513 "node_modules/dom-serializer/node_modules/domelementtype": {
514 "version": "2.0.1",
515 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz",
516 "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==",
517 "dev": true
468 "funding": {
469 "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
470 }
518 471 },
519 472 "node_modules/dom-serializer/node_modules/entities": {
520 "version": "2.0.0",
521 "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
522 "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
523 "dev": true
473 "version": "2.2.0",
474 "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
475 "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
476 "dev": true,
477 "funding": {
478 "url": "https://github.com/fb55/entities?sponsor=1"
479 }
524 480 },
525 481 "node_modules/domelementtype": {
526 "version": "1.3.1",
527 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
528 "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
529 "dev": true
482 "version": "2.3.0",
483 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
484 "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
485 "dev": true,
486 "funding": [
487 {
488 "type": "github",
489 "url": "https://github.com/sponsors/fb55"
490 }
491 ]
530 492 },
531 493 "node_modules/domhandler": {
532 "version": "2.4.2",
533 "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
534 "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
494 "version": "4.3.1",
495 "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
496 "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
535 497 "dev": true,
536 498 "dependencies": {
537 "domelementtype": "1"
499 "domelementtype": "^2.2.0"
500 },
501 "engines": {
502 "node": ">= 4"
503 },
504 "funding": {
505 "url": "https://github.com/fb55/domhandler?sponsor=1"
538 506 }
539 507 },
540 508 "node_modules/domutils": {
541 "version": "1.7.0",
542 "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
543 "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
509 "version": "2.8.0",
510 "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
511 "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
544 512 "dev": true,
545 513 "dependencies": {
546 "dom-serializer": "0",
547 "domelementtype": "1"
548 }
514 "dom-serializer": "^1.0.1",
515 "domelementtype": "^2.2.0",
516 "domhandler": "^4.2.0"
549 517 },
550 "node_modules/ecc-jsbn": {
551 "version": "0.1.2",
552 "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
553 "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
554 "dev": true,
555 "optional": true,
556 "dependencies": {
557 "jsbn": "~0.1.0",
558 "safer-buffer": "^2.1.0"
518 "funding": {
519 "url": "https://github.com/fb55/domutils?sponsor=1"
559 520 }
560 521 },
561 522 "node_modules/emoji-regex": {
562 523 "version": "8.0.0",
563 524 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
564 525 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
565 526 "dev": true
566 527 },
567 528 "node_modules/entities": {
568 "version": "1.1.2",
569 "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
570 "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
571 "dev": true
529 "version": "3.0.1",
530 "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
531 "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
532 "dev": true,
533 "engines": {
534 "node": ">=0.12"
535 },
536 "funding": {
537 "url": "https://github.com/fb55/entities?sponsor=1"
538 }
572 539 },
573 540 "node_modules/errno": {
574 "version": "0.1.7",
575 "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
576 "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
541 "version": "0.1.8",
542 "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
543 "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
577 544 "dev": true,
578 545 "optional": true,
579 546 "dependencies": {
580 547 "prr": "~1.0.1"
581 548 },
582 549 "bin": {
583 550 "errno": "cli.js"
584 551 }
585 552 },
586 553 "node_modules/escape-string-regexp": {
587 554 "version": "1.0.5",
588 555 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
589 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
556 "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
590 557 "dev": true,
591 558 "engines": {
592 559 "node": ">=0.8.0"
593 560 }
594 561 },
595 562 "node_modules/eslint": {
596 563 "version": "6.8.0",
597 564 "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
598 565 "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
599 566 "dev": true,
600 567 "dependencies": {
601 568 "@babel/code-frame": "^7.0.0",
602 569 "ajv": "^6.10.0",
603 570 "chalk": "^2.1.0",
604 571 "cross-spawn": "^6.0.5",
605 572 "debug": "^4.0.1",
606 573 "doctrine": "^3.0.0",
607 574 "eslint-scope": "^5.0.0",
608 575 "eslint-utils": "^1.4.3",
609 576 "eslint-visitor-keys": "^1.1.0",
610 577 "espree": "^6.1.2",
611 578 "esquery": "^1.0.1",
612 579 "esutils": "^2.0.2",
613 580 "file-entry-cache": "^5.0.1",
614 581 "functional-red-black-tree": "^1.0.1",
615 582 "glob-parent": "^5.0.0",
616 583 "globals": "^12.1.0",
617 584 "ignore": "^4.0.6",
618 585 "import-fresh": "^3.0.0",
619 586 "imurmurhash": "^0.1.4",
620 587 "inquirer": "^7.0.0",
621 588 "is-glob": "^4.0.0",
622 589 "js-yaml": "^3.13.1",
623 590 "json-stable-stringify-without-jsonify": "^1.0.1",
624 591 "levn": "^0.3.0",
625 592 "lodash": "^4.17.14",
626 593 "minimatch": "^3.0.4",
627 594 "mkdirp": "^0.5.1",
628 595 "natural-compare": "^1.4.0",
629 596 "optionator": "^0.8.3",
630 597 "progress": "^2.0.0",
631 598 "regexpp": "^2.0.1",
632 599 "semver": "^6.1.2",
633 600 "strip-ansi": "^5.2.0",
634 601 "strip-json-comments": "^3.0.1",
635 602 "table": "^5.2.3",
636 603 "text-table": "^0.2.0",
637 604 "v8-compile-cache": "^2.0.3"
638 605 },
639 606 "bin": {
640 607 "eslint": "bin/eslint.js"
641 608 },
642 609 "engines": {
643 610 "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
644 611 },
645 612 "funding": {
646 613 "url": "https://opencollective.com/eslint"
647 614 }
648 615 },
649 616 "node_modules/eslint-plugin-html": {
650 "version": "6.0.0",
651 "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.0.0.tgz",
652 "integrity": "sha512-PQcGippOHS+HTbQCStmH5MY1BF2MaU8qW/+Mvo/8xTa/ioeMXdSP+IiaBw2+nh0KEMfYQKuTz1Zo+vHynjwhbg==",
617 "version": "6.2.0",
618 "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.2.0.tgz",
619 "integrity": "sha512-vi3NW0E8AJombTvt8beMwkL1R/fdRWl4QSNRNMhVQKWm36/X0KF0unGNAY4mqUF06mnwVWZcIcerrCnfn9025g==",
653 620 "dev": true,
654 621 "dependencies": {
655 "htmlparser2": "^3.10.1"
622 "htmlparser2": "^7.1.2"
656 623 }
657 624 },
658 625 "node_modules/eslint-scope": {
659 "version": "5.0.0",
660 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
661 "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
626 "version": "5.1.1",
627 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
628 "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
662 629 "dev": true,
663 630 "dependencies": {
664 "esrecurse": "^4.1.0",
631 "esrecurse": "^4.3.0",
665 632 "estraverse": "^4.1.1"
666 633 },
667 634 "engines": {
668 635 "node": ">=8.0.0"
669 636 }
670 637 },
671 638 "node_modules/eslint-utils": {
672 639 "version": "1.4.3",
673 640 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
674 641 "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
675 642 "dev": true,
676 643 "dependencies": {
677 644 "eslint-visitor-keys": "^1.1.0"
678 645 },
679 646 "engines": {
680 647 "node": ">=6"
681 648 }
682 649 },
683 650 "node_modules/eslint-visitor-keys": {
684 "version": "1.1.0",
685 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
686 "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
651 "version": "1.3.0",
652 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
653 "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
687 654 "dev": true,
688 655 "engines": {
689 656 "node": ">=4"
690 657 }
691 658 },
692 "node_modules/eslint/node_modules/debug": {
693 "version": "4.1.1",
694 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
695 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
696 "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
659 "node_modules/espree": {
660 "version": "6.2.1",
661 "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
662 "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
697 663 "dev": true,
698 664 "dependencies": {
699 "ms": "^2.1.1"
700 }
701 },
702 "node_modules/eslint/node_modules/semver": {
703 "version": "6.3.0",
704 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
705 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
706 "dev": true,
707 "bin": {
708 "semver": "bin/semver.js"
709 }
710 },
711 "node_modules/espree": {
712 "version": "6.1.2",
713 "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz",
714 "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==",
715 "dev": true,
716 "dependencies": {
717 "acorn": "^7.1.0",
718 "acorn-jsx": "^5.1.0",
665 "acorn": "^7.1.1",
666 "acorn-jsx": "^5.2.0",
719 667 "eslint-visitor-keys": "^1.1.0"
720 668 },
721 669 "engines": {
722 670 "node": ">=6.0.0"
723 671 }
724 672 },
725 673 "node_modules/esprima": {
726 674 "version": "4.0.1",
727 675 "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
728 676 "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
729 677 "dev": true,
730 678 "bin": {
731 679 "esparse": "bin/esparse.js",
732 680 "esvalidate": "bin/esvalidate.js"
733 681 },
734 682 "engines": {
735 683 "node": ">=4"
736 684 }
737 685 },
738 686 "node_modules/esquery": {
739 "version": "1.1.0",
740 "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz",
741 "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==",
687 "version": "1.6.0",
688 "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
689 "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
742 690 "dev": true,
743 691 "dependencies": {
744 "estraverse": "^4.0.0"
692 "estraverse": "^5.1.0"
745 693 },
746 694 "engines": {
747 "node": ">=0.6"
695 "node": ">=0.10"
696 }
697 },
698 "node_modules/esquery/node_modules/estraverse": {
699 "version": "5.3.0",
700 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
701 "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
702 "dev": true,
703 "engines": {
704 "node": ">=4.0"
748 705 }
749 706 },
750 707 "node_modules/esrecurse": {
751 "version": "4.2.1",
752 "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
753 "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
708 "version": "4.3.0",
709 "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
710 "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
754 711 "dev": true,
755 712 "dependencies": {
756 "estraverse": "^4.1.0"
713 "estraverse": "^5.2.0"
714 },
715 "engines": {
716 "node": ">=4.0"
717 }
757 718 },
719 "node_modules/esrecurse/node_modules/estraverse": {
720 "version": "5.3.0",
721 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
722 "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
723 "dev": true,
758 724 "engines": {
759 725 "node": ">=4.0"
760 726 }
761 727 },
762 728 "node_modules/estraverse": {
763 729 "version": "4.3.0",
764 730 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
765 731 "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
766 732 "dev": true,
767 733 "engines": {
768 734 "node": ">=4.0"
769 735 }
770 736 },
771 737 "node_modules/esutils": {
772 738 "version": "2.0.3",
773 739 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
774 740 "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
775 741 "dev": true,
776 742 "engines": {
777 743 "node": ">=0.10.0"
778 744 }
779 745 },
780 "node_modules/extend": {
781 "version": "3.0.2",
782 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
783 "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
784 "dev": true,
785 "optional": true
786 },
787 746 "node_modules/external-editor": {
788 747 "version": "3.1.0",
789 748 "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
790 749 "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
791 750 "dev": true,
792 751 "dependencies": {
793 752 "chardet": "^0.7.0",
794 753 "iconv-lite": "^0.4.24",
795 754 "tmp": "^0.0.33"
796 755 },
797 756 "engines": {
798 757 "node": ">=4"
799 758 }
800 759 },
801 "node_modules/extsprintf": {
802 "version": "1.3.0",
803 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
804 "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
805 "dev": true,
806 "engines": [
807 "node >=0.6.0"
808 ],
809 "optional": true
810 },
811 760 "node_modules/fast-deep-equal": {
812 "version": "2.0.1",
813 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
814 "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
761 "version": "3.1.3",
762 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
763 "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
815 764 "dev": true
816 765 },
817 766 "node_modules/fast-json-stable-stringify": {
818 "version": "2.0.0",
819 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
820 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
767 "version": "2.1.0",
768 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
769 "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
821 770 "dev": true
822 771 },
823 772 "node_modules/fast-levenshtein": {
824 773 "version": "2.0.6",
825 774 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
826 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
775 "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
827 776 "dev": true
828 777 },
829 778 "node_modules/figures": {
830 779 "version": "3.2.0",
831 780 "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
832 781 "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
833 782 "dev": true,
834 783 "dependencies": {
835 784 "escape-string-regexp": "^1.0.5"
836 785 },
837 786 "engines": {
838 787 "node": ">=8"
839 788 },
840 789 "funding": {
841 790 "url": "https://github.com/sponsors/sindresorhus"
842 791 }
843 792 },
844 793 "node_modules/file-entry-cache": {
845 794 "version": "5.0.1",
846 795 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
847 796 "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
848 797 "dev": true,
849 798 "dependencies": {
850 799 "flat-cache": "^2.0.1"
851 800 },
852 801 "engines": {
853 802 "node": ">=4"
854 803 }
855 804 },
856 805 "node_modules/flat-cache": {
857 806 "version": "2.0.1",
858 807 "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
859 808 "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
860 809 "dev": true,
861 810 "dependencies": {
862 811 "flatted": "^2.0.0",
863 812 "rimraf": "2.6.3",
864 813 "write": "1.0.3"
865 814 },
866 815 "engines": {
867 816 "node": ">=4"
868 817 }
869 818 },
870 819 "node_modules/flatted": {
871 "version": "2.0.1",
872 "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
873 "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
820 "version": "2.0.2",
821 "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
822 "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
874 823 "dev": true
875 824 },
876 "node_modules/forever-agent": {
877 "version": "0.6.1",
878 "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
879 "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
880 "dev": true,
881 "optional": true,
882 "engines": {
883 "node": "*"
884 }
885 },
886 "node_modules/form-data": {
887 "version": "2.3.3",
888 "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
889 "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
890 "dev": true,
891 "optional": true,
892 "dependencies": {
893 "asynckit": "^0.4.0",
894 "combined-stream": "^1.0.6",
895 "mime-types": "^2.1.12"
896 },
897 "engines": {
898 "node": ">= 0.12"
899 }
900 },
901 825 "node_modules/fs.realpath": {
902 826 "version": "1.0.0",
903 827 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
904 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
828 "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
905 829 "dev": true
906 830 },
831 "node_modules/function-bind": {
832 "version": "1.1.2",
833 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
834 "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
835 "dev": true,
836 "funding": {
837 "url": "https://github.com/sponsors/ljharb"
838 }
839 },
907 840 "node_modules/functional-red-black-tree": {
908 841 "version": "1.0.1",
909 842 "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
910 "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
843 "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
911 844 "dev": true
912 845 },
913 "node_modules/getpass": {
914 "version": "0.1.7",
915 "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
916 "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
917 "dev": true,
918 "optional": true,
919 "dependencies": {
920 "assert-plus": "^1.0.0"
921 }
922 },
923 846 "node_modules/glob": {
924 "version": "7.1.6",
925 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
926 "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
847 "version": "7.2.3",
848 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
849 "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
850 "deprecated": "Glob versions prior to v9 are no longer supported",
927 851 "dev": true,
928 852 "dependencies": {
929 853 "fs.realpath": "^1.0.0",
930 854 "inflight": "^1.0.4",
931 855 "inherits": "2",
932 "minimatch": "^3.0.4",
856 "minimatch": "^3.1.1",
933 857 "once": "^1.3.0",
934 858 "path-is-absolute": "^1.0.0"
935 859 },
936 860 "engines": {
937 861 "node": "*"
938 862 },
939 863 "funding": {
940 864 "url": "https://github.com/sponsors/isaacs"
941 865 }
942 866 },
943 867 "node_modules/glob-parent": {
944 "version": "5.1.0",
945 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
946 "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
868 "version": "5.1.2",
869 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
870 "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
947 871 "dev": true,
948 872 "dependencies": {
949 873 "is-glob": "^4.0.1"
950 874 },
951 875 "engines": {
952 876 "node": ">= 6"
953 877 }
954 878 },
955 879 "node_modules/globals": {
956 "version": "12.3.0",
957 "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz",
958 "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==",
880 "version": "12.4.0",
881 "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
882 "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
959 883 "dev": true,
960 884 "dependencies": {
961 885 "type-fest": "^0.8.1"
962 886 },
963 887 "engines": {
964 888 "node": ">=8"
889 },
890 "funding": {
891 "url": "https://github.com/sponsors/sindresorhus"
965 892 }
966 893 },
967 894 "node_modules/graceful-fs": {
968 "version": "4.2.3",
969 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
970 "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
895 "version": "4.2.11",
896 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
897 "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
971 898 "dev": true
972 899 },
973 900 "node_modules/graceful-readlink": {
974 901 "version": "1.0.1",
975 902 "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
976 "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
903 "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==",
977 904 "dev": true
978 905 },
979 "node_modules/har-schema": {
980 "version": "2.0.0",
981 "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
982 "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
983 "dev": true,
984 "optional": true,
985 "engines": {
986 "node": ">=4"
987 }
988 },
989 "node_modules/har-validator": {
990 "version": "5.1.3",
991 "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
992 "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
993 "deprecated": "this library is no longer supported",
994 "dev": true,
995 "optional": true,
996 "dependencies": {
997 "ajv": "^6.5.5",
998 "har-schema": "^2.0.0"
999 },
1000 "engines": {
1001 "node": ">=6"
1002 }
1003 },
1004 906 "node_modules/has-flag": {
1005 907 "version": "3.0.0",
1006 908 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1007 "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
909 "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
1008 910 "dev": true,
1009 911 "engines": {
1010 912 "node": ">=4"
1011 913 }
1012 914 },
915 "node_modules/hasown": {
916 "version": "2.0.2",
917 "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
918 "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
919 "dev": true,
920 "dependencies": {
921 "function-bind": "^1.1.2"
922 },
923 "engines": {
924 "node": ">= 0.4"
925 }
926 },
1013 927 "node_modules/hosted-git-info": {
1014 "version": "2.8.5",
1015 "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
1016 "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
928 "version": "2.8.9",
929 "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
930 "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
1017 931 "dev": true
1018 932 },
1019 933 "node_modules/htmlparser2": {
1020 "version": "3.10.1",
1021 "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
1022 "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
934 "version": "7.2.0",
935 "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
936 "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==",
1023 937 "dev": true,
1024 "dependencies": {
1025 "domelementtype": "^1.3.1",
1026 "domhandler": "^2.3.0",
1027 "domutils": "^1.5.1",
1028 "entities": "^1.1.1",
1029 "inherits": "^2.0.1",
1030 "readable-stream": "^3.1.1"
938 "funding": [
939 "https://github.com/fb55/htmlparser2?sponsor=1",
940 {
941 "type": "github",
942 "url": "https://github.com/sponsors/fb55"
1031 943 }
1032 },
1033 "node_modules/http-signature": {
1034 "version": "1.2.0",
1035 "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
1036 "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
1037 "dev": true,
1038 "optional": true,
944 ],
1039 945 "dependencies": {
1040 "assert-plus": "^1.0.0",
1041 "jsprim": "^1.2.2",
1042 "sshpk": "^1.7.0"
1043 },
1044 "engines": {
1045 "node": ">=0.8",
1046 "npm": ">=1.3.7"
946 "domelementtype": "^2.0.1",
947 "domhandler": "^4.2.2",
948 "domutils": "^2.8.0",
949 "entities": "^3.0.1"
1047 950 }
1048 951 },
1049 952 "node_modules/iconv-lite": {
1050 953 "version": "0.4.24",
1051 954 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1052 955 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1053 956 "dev": true,
1054 957 "dependencies": {
1055 958 "safer-buffer": ">= 2.1.2 < 3"
1056 959 },
1057 960 "engines": {
1058 961 "node": ">=0.10.0"
1059 962 }
1060 963 },
1061 964 "node_modules/ignore": {
1062 965 "version": "4.0.6",
1063 966 "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
1064 967 "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
1065 968 "dev": true,
1066 969 "engines": {
1067 970 "node": ">= 4"
1068 971 }
1069 972 },
1070 973 "node_modules/image-size": {
1071 974 "version": "0.5.5",
1072 975 "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
1073 "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
976 "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
1074 977 "dev": true,
1075 978 "optional": true,
1076 979 "bin": {
1077 980 "image-size": "bin/image-size.js"
1078 981 },
1079 982 "engines": {
1080 983 "node": ">=0.10.0"
1081 984 }
1082 985 },
1083 986 "node_modules/import-fresh": {
1084 "version": "3.2.1",
1085 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
1086 "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
987 "version": "3.3.0",
988 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
989 "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
1087 990 "dev": true,
1088 991 "dependencies": {
1089 992 "parent-module": "^1.0.0",
1090 993 "resolve-from": "^4.0.0"
1091 994 },
1092 995 "engines": {
1093 996 "node": ">=6"
997 },
998 "funding": {
999 "url": "https://github.com/sponsors/sindresorhus"
1094 1000 }
1095 1001 },
1096 1002 "node_modules/imurmurhash": {
1097 1003 "version": "0.1.4",
1098 1004 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1099 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
1005 "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
1100 1006 "dev": true,
1101 1007 "engines": {
1102 1008 "node": ">=0.8.19"
1103 1009 }
1104 1010 },
1105 1011 "node_modules/inflight": {
1106 1012 "version": "1.0.6",
1107 1013 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1108 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1014 "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1015 "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
1109 1016 "dev": true,
1110 1017 "dependencies": {
1111 1018 "once": "^1.3.0",
1112 1019 "wrappy": "1"
1113 1020 }
1114 1021 },
1115 1022 "node_modules/inherits": {
1116 1023 "version": "2.0.4",
1117 1024 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1118 1025 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1119 1026 "dev": true
1120 1027 },
1121 1028 "node_modules/inquirer": {
1122 "version": "7.0.4",
1123 "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz",
1124 "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==",
1029 "version": "7.3.3",
1030 "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
1031 "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
1125 1032 "dev": true,
1126 1033 "dependencies": {
1127 1034 "ansi-escapes": "^4.2.1",
1128 "chalk": "^2.4.2",
1035 "chalk": "^4.1.0",
1129 1036 "cli-cursor": "^3.1.0",
1130 "cli-width": "^2.0.0",
1037 "cli-width": "^3.0.0",
1131 1038 "external-editor": "^3.0.3",
1132 1039 "figures": "^3.0.0",
1133 "lodash": "^4.17.15",
1040 "lodash": "^4.17.19",
1134 1041 "mute-stream": "0.0.8",
1135 "run-async": "^2.2.0",
1136 "rxjs": "^6.5.3",
1042 "run-async": "^2.4.0",
1043 "rxjs": "^6.6.0",
1137 1044 "string-width": "^4.1.0",
1138 "strip-ansi": "^5.1.0",
1045 "strip-ansi": "^6.0.0",
1139 1046 "through": "^2.3.6"
1140 1047 },
1141 1048 "engines": {
1142 "node": ">=6.0.0"
1049 "node": ">=8.0.0"
1050 }
1051 },
1052 "node_modules/inquirer/node_modules/ansi-regex": {
1053 "version": "5.0.1",
1054 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1055 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1056 "dev": true,
1057 "engines": {
1058 "node": ">=8"
1059 }
1060 },
1061 "node_modules/inquirer/node_modules/ansi-styles": {
1062 "version": "4.3.0",
1063 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1064 "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1065 "dev": true,
1066 "dependencies": {
1067 "color-convert": "^2.0.1"
1068 },
1069 "engines": {
1070 "node": ">=8"
1071 },
1072 "funding": {
1073 "url": "https://github.com/chalk/ansi-styles?sponsor=1"
1074 }
1075 },
1076 "node_modules/inquirer/node_modules/chalk": {
1077 "version": "4.1.2",
1078 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1079 "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1080 "dev": true,
1081 "dependencies": {
1082 "ansi-styles": "^4.1.0",
1083 "supports-color": "^7.1.0"
1084 },
1085 "engines": {
1086 "node": ">=10"
1087 },
1088 "funding": {
1089 "url": "https://github.com/chalk/chalk?sponsor=1"
1090 }
1091 },
1092 "node_modules/inquirer/node_modules/color-convert": {
1093 "version": "2.0.1",
1094 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1095 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1096 "dev": true,
1097 "dependencies": {
1098 "color-name": "~1.1.4"
1099 },
1100 "engines": {
1101 "node": ">=7.0.0"
1102 }
1103 },
1104 "node_modules/inquirer/node_modules/color-name": {
1105 "version": "1.1.4",
1106 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1107 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1108 "dev": true
1109 },
1110 "node_modules/inquirer/node_modules/has-flag": {
1111 "version": "4.0.0",
1112 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1113 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1114 "dev": true,
1115 "engines": {
1116 "node": ">=8"
1117 }
1118 },
1119 "node_modules/inquirer/node_modules/strip-ansi": {
1120 "version": "6.0.1",
1121 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1122 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1123 "dev": true,
1124 "dependencies": {
1125 "ansi-regex": "^5.0.1"
1126 },
1127 "engines": {
1128 "node": ">=8"
1129 }
1130 },
1131 "node_modules/inquirer/node_modules/supports-color": {
1132 "version": "7.2.0",
1133 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1134 "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1135 "dev": true,
1136 "dependencies": {
1137 "has-flag": "^4.0.0"
1138 },
1139 "engines": {
1140 "node": ">=8"
1141 }
1142 },
1143 "node_modules/is-core-module": {
1144 "version": "2.15.0",
1145 "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz",
1146 "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==",
1147 "dev": true,
1148 "dependencies": {
1149 "hasown": "^2.0.2"
1150 },
1151 "engines": {
1152 "node": ">= 0.4"
1153 },
1154 "funding": {
1155 "url": "https://github.com/sponsors/ljharb"
1143 1156 }
1144 1157 },
1145 1158 "node_modules/is-extglob": {
1146 1159 "version": "2.1.1",
1147 1160 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1148 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1161 "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1149 1162 "dev": true,
1150 1163 "engines": {
1151 1164 "node": ">=0.10.0"
1152 1165 }
1153 1166 },
1154 1167 "node_modules/is-fullwidth-code-point": {
1155 1168 "version": "3.0.0",
1156 1169 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1157 1170 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1158 1171 "dev": true,
1159 1172 "engines": {
1160 1173 "node": ">=8"
1161 1174 }
1162 1175 },
1163 1176 "node_modules/is-glob": {
1164 "version": "4.0.1",
1165 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
1166 "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
1177 "version": "4.0.3",
1178 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1179 "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1167 1180 "dev": true,
1168 1181 "dependencies": {
1169 1182 "is-extglob": "^2.1.1"
1170 1183 },
1171 1184 "engines": {
1172 1185 "node": ">=0.10.0"
1173 1186 }
1174 1187 },
1175 "node_modules/is-promise": {
1176 "version": "2.1.0",
1177 "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
1178 "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
1188 "node_modules/is-what": {
1189 "version": "3.14.1",
1190 "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
1191 "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
1179 1192 "dev": true
1180 1193 },
1181 "node_modules/is-typedarray": {
1182 "version": "1.0.0",
1183 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
1184 "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
1185 "dev": true,
1186 "optional": true
1187 },
1188 1194 "node_modules/isexe": {
1189 1195 "version": "2.0.0",
1190 1196 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1191 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1197 "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1192 1198 "dev": true
1193 1199 },
1194 "node_modules/isstream": {
1195 "version": "0.1.2",
1196 "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
1197 "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
1198 "dev": true,
1199 "optional": true
1200 },
1201 1200 "node_modules/jquery": {
1202 "version": "3.4.1",
1203 "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz",
1204 "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw=="
1201 "version": "3.7.1",
1202 "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
1203 "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg=="
1205 1204 },
1206 1205 "node_modules/jquery.caret": {
1207 1206 "version": "0.3.1",
1208 1207 "resolved": "https://registry.npmjs.org/jquery.caret/-/jquery.caret-0.3.1.tgz",
1209 "integrity": "sha1-nAkzGPrzJ+/zIugmyp8yQTaLx7g="
1208 "integrity": "sha512-nS2mjMZzP4e4tIOgeTLSs+jFhUsUVZUPgkUMpi4DlJq9SgKEg6w2jf7q8joMJp6v+voJHXrH8rzAnbyxWHwAeA=="
1210 1209 },
1211 1210 "node_modules/jquery.flot": {
1212 1211 "version": "0.8.3",
1213 1212 "resolved": "https://registry.npmjs.org/jquery.flot/-/jquery.flot-0.8.3.tgz",
1214 1213 "integrity": "sha512-/tEE8J5NjwvStHDaCHkvTJpD7wDS4hE1OEL8xEmhgQfUe0gLUem923PIceNez1mz4yBNx6Hjv7pJcowLNd+nbg=="
1215 1214 },
1216 1215 "node_modules/js-tokens": {
1217 1216 "version": "4.0.0",
1218 1217 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1219 1218 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1220 1219 "dev": true
1221 1220 },
1222 1221 "node_modules/js-yaml": {
1223 "version": "3.13.1",
1224 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
1225 "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
1222 "version": "3.14.1",
1223 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
1224 "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
1226 1225 "dev": true,
1227 1226 "dependencies": {
1228 1227 "argparse": "^1.0.7",
1229 1228 "esprima": "^4.0.0"
1230 1229 },
1231 1230 "bin": {
1232 1231 "js-yaml": "bin/js-yaml.js"
1233 1232 }
1234 1233 },
1235 "node_modules/jsbn": {
1236 "version": "0.1.1",
1237 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
1238 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
1239 "dev": true,
1240 "optional": true
1241 },
1242 "node_modules/json-parse-better-errors": {
1243 "version": "1.0.2",
1244 "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
1245 "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
1234 "node_modules/json-parse-even-better-errors": {
1235 "version": "2.3.1",
1236 "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
1237 "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
1246 1238 "dev": true
1247 1239 },
1248 "node_modules/json-schema": {
1249 "version": "0.2.3",
1250 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
1251 "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
1252 "dev": true,
1253 "optional": true
1254 },
1255 1240 "node_modules/json-schema-traverse": {
1256 1241 "version": "0.4.1",
1257 1242 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1258 1243 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1259 1244 "dev": true
1260 1245 },
1261 1246 "node_modules/json-stable-stringify-without-jsonify": {
1262 1247 "version": "1.0.1",
1263 1248 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1264 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
1249 "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
1265 1250 "dev": true
1266 1251 },
1267 "node_modules/json-stringify-safe": {
1268 "version": "5.0.1",
1269 "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1270 "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
1271 "dev": true,
1272 "optional": true
1273 },
1274 "node_modules/jsprim": {
1275 "version": "1.4.1",
1276 "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
1277 "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
1278 "dev": true,
1279 "engines": [
1280 "node >=0.6.0"
1281 ],
1282 "optional": true,
1283 "dependencies": {
1284 "assert-plus": "1.0.0",
1285 "extsprintf": "1.3.0",
1286 "json-schema": "0.2.3",
1287 "verror": "1.10.0"
1288 }
1289 },
1290 1252 "node_modules/less": {
1291 "version": "3.10.3",
1292 "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz",
1293 "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==",
1253 "version": "3.13.1",
1254 "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz",
1255 "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==",
1294 1256 "dev": true,
1295 1257 "dependencies": {
1296 "clone": "^2.1.2"
1258 "copy-anything": "^2.0.1",
1259 "tslib": "^1.10.0"
1297 1260 },
1298 1261 "bin": {
1299 1262 "lessc": "bin/lessc"
1300 1263 },
1301 1264 "engines": {
1302 1265 "node": ">=6"
1303 1266 },
1304 1267 "optionalDependencies": {
1305 1268 "errno": "^0.1.1",
1306 1269 "graceful-fs": "^4.1.2",
1307 1270 "image-size": "~0.5.0",
1271 "make-dir": "^2.1.0",
1308 1272 "mime": "^1.4.1",
1309 "mkdirp": "^0.5.0",
1310 "promise": "^7.1.1",
1311 "request": "^2.83.0",
1273 "native-request": "^1.0.5",
1312 1274 "source-map": "~0.6.0"
1313 1275 }
1314 1276 },
1315 1277 "node_modules/less-plugin-clean-css": {
1316 1278 "version": "1.5.1",
1317 1279 "resolved": "https://registry.npmjs.org/less-plugin-clean-css/-/less-plugin-clean-css-1.5.1.tgz",
1318 "integrity": "sha1-zFeveqM5iVflbezr5jy2DCNClwM=",
1280 "integrity": "sha512-Pc68AFHAEJO3aAoRvnUTW5iAiAv6y+TQsWLTTwVNqjiDno6xCvxz1AtfQl7Y0MZSpHPalFajM1EU4RB5UVINpw==",
1319 1281 "dev": true,
1320 1282 "dependencies": {
1321 1283 "clean-css": "^3.0.1"
1322 1284 },
1323 1285 "engines": {
1324 1286 "node": ">=0.4.2"
1325 1287 }
1326 1288 },
1327 1289 "node_modules/levn": {
1328 1290 "version": "0.3.0",
1329 1291 "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1330 "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
1292 "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
1331 1293 "dev": true,
1332 1294 "dependencies": {
1333 1295 "prelude-ls": "~1.1.2",
1334 1296 "type-check": "~0.3.2"
1335 1297 },
1336 1298 "engines": {
1337 1299 "node": ">= 0.8.0"
1338 1300 }
1339 1301 },
1340 1302 "node_modules/license-checker": {
1341 1303 "version": "25.0.1",
1342 1304 "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz",
1343 1305 "integrity": "sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==",
1344 1306 "dev": true,
1345 1307 "dependencies": {
1346 1308 "chalk": "^2.4.1",
1347 1309 "debug": "^3.1.0",
1348 1310 "mkdirp": "^0.5.1",
1349 1311 "nopt": "^4.0.1",
1350 1312 "read-installed": "~4.0.3",
1351 1313 "semver": "^5.5.0",
1352 1314 "spdx-correct": "^3.0.0",
1353 1315 "spdx-expression-parse": "^3.0.0",
1354 1316 "spdx-satisfies": "^4.0.0",
1355 1317 "treeify": "^1.1.0"
1356 1318 },
1357 1319 "bin": {
1358 1320 "license-checker": "bin/license-checker"
1359 1321 }
1360 1322 },
1323 "node_modules/license-checker/node_modules/debug": {
1324 "version": "3.2.7",
1325 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
1326 "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
1327 "dev": true,
1328 "dependencies": {
1329 "ms": "^2.1.1"
1330 }
1331 },
1332 "node_modules/license-checker/node_modules/semver": {
1333 "version": "5.7.2",
1334 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
1335 "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
1336 "dev": true,
1337 "bin": {
1338 "semver": "bin/semver"
1339 }
1340 },
1361 1341 "node_modules/lodash": {
1362 "version": "4.17.15",
1363 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
1364 "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
1342 "version": "4.17.21",
1343 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1344 "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
1365 1345 "dev": true
1366 1346 },
1347 "node_modules/make-dir": {
1348 "version": "2.1.0",
1349 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
1350 "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
1351 "dev": true,
1352 "optional": true,
1353 "dependencies": {
1354 "pify": "^4.0.1",
1355 "semver": "^5.6.0"
1356 },
1357 "engines": {
1358 "node": ">=6"
1359 }
1360 },
1361 "node_modules/make-dir/node_modules/semver": {
1362 "version": "5.7.2",
1363 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
1364 "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
1365 "dev": true,
1366 "optional": true,
1367 "bin": {
1368 "semver": "bin/semver"
1369 }
1370 },
1367 1371 "node_modules/mime": {
1368 1372 "version": "1.6.0",
1369 1373 "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1370 1374 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1371 1375 "dev": true,
1372 1376 "optional": true,
1373 1377 "bin": {
1374 1378 "mime": "cli.js"
1375 1379 },
1376 1380 "engines": {
1377 1381 "node": ">=4"
1378 1382 }
1379 1383 },
1380 "node_modules/mime-db": {
1381 "version": "1.40.0",
1382 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
1383 "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
1384 "dev": true,
1385 "optional": true,
1386 "engines": {
1387 "node": ">= 0.6"
1388 }
1389 },
1390 "node_modules/mime-types": {
1391 "version": "2.1.24",
1392 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
1393 "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
1394 "dev": true,
1395 "optional": true,
1396 "dependencies": {
1397 "mime-db": "1.40.0"
1398 },
1399 "engines": {
1400 "node": ">= 0.6"
1401 }
1402 },
1403 1384 "node_modules/mimic-fn": {
1404 1385 "version": "2.1.0",
1405 1386 "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
1406 1387 "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
1407 1388 "dev": true,
1408 1389 "engines": {
1409 1390 "node": ">=6"
1410 1391 }
1411 1392 },
1412 1393 "node_modules/minimatch": {
1413 "version": "3.0.4",
1414 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1415 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1394 "version": "3.1.2",
1395 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1396 "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1416 1397 "dev": true,
1417 1398 "dependencies": {
1418 1399 "brace-expansion": "^1.1.7"
1419 1400 },
1420 1401 "engines": {
1421 1402 "node": "*"
1422 1403 }
1423 1404 },
1424 1405 "node_modules/minimist": {
1425 "version": "0.0.8",
1426 "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
1427 "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
1428 "dev": true
1406 "version": "1.2.8",
1407 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
1408 "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
1409 "dev": true,
1410 "funding": {
1411 "url": "https://github.com/sponsors/ljharb"
1412 }
1429 1413 },
1430 1414 "node_modules/mkdirp": {
1431 "version": "0.5.1",
1432 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
1433 "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
1434 "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
1415 "version": "0.5.6",
1416 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
1417 "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
1435 1418 "dev": true,
1436 1419 "dependencies": {
1437 "minimist": "0.0.8"
1420 "minimist": "^1.2.6"
1438 1421 },
1439 1422 "bin": {
1440 1423 "mkdirp": "bin/cmd.js"
1441 1424 }
1442 1425 },
1443 1426 "node_modules/ms": {
1444 1427 "version": "2.1.2",
1445 1428 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1446 1429 "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1447 1430 "dev": true
1448 1431 },
1449 1432 "node_modules/mute-stream": {
1450 1433 "version": "0.0.8",
1451 1434 "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
1452 1435 "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
1453 1436 "dev": true
1454 1437 },
1438 "node_modules/native-request": {
1439 "version": "1.1.0",
1440 "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz",
1441 "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==",
1442 "dev": true,
1443 "optional": true
1444 },
1455 1445 "node_modules/natural-compare": {
1456 1446 "version": "1.4.0",
1457 1447 "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1458 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
1448 "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
1459 1449 "dev": true
1460 1450 },
1461 1451 "node_modules/nice-try": {
1462 1452 "version": "1.0.5",
1463 1453 "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
1464 1454 "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
1465 1455 "dev": true
1466 1456 },
1467 1457 "node_modules/nopt": {
1468 "version": "4.0.1",
1469 "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
1470 "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
1458 "version": "4.0.3",
1459 "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
1460 "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
1471 1461 "dev": true,
1472 1462 "dependencies": {
1473 1463 "abbrev": "1",
1474 1464 "osenv": "^0.1.4"
1475 1465 },
1476 1466 "bin": {
1477 1467 "nopt": "bin/nopt.js"
1478 1468 }
1479 1469 },
1480 1470 "node_modules/normalize-package-data": {
1481 1471 "version": "2.5.0",
1482 1472 "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
1483 1473 "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
1484 1474 "dev": true,
1485 1475 "dependencies": {
1486 1476 "hosted-git-info": "^2.1.4",
1487 1477 "resolve": "^1.10.0",
1488 1478 "semver": "2 || 3 || 4 || 5",
1489 1479 "validate-npm-package-license": "^3.0.1"
1490 1480 }
1491 1481 },
1492 "node_modules/oauth-sign": {
1493 "version": "0.9.0",
1494 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
1495 "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
1482 "node_modules/normalize-package-data/node_modules/semver": {
1483 "version": "5.7.2",
1484 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
1485 "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
1496 1486 "dev": true,
1497 "optional": true,
1498 "engines": {
1499 "node": "*"
1487 "bin": {
1488 "semver": "bin/semver"
1500 1489 }
1501 1490 },
1491 "node_modules/npm-normalize-package-bin": {
1492 "version": "1.0.1",
1493 "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
1494 "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
1495 "dev": true
1496 },
1502 1497 "node_modules/once": {
1503 1498 "version": "1.4.0",
1504 1499 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1505 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1500 "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1506 1501 "dev": true,
1507 1502 "dependencies": {
1508 1503 "wrappy": "1"
1509 1504 }
1510 1505 },
1511 1506 "node_modules/onetime": {
1512 "version": "5.1.0",
1513 "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
1514 "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
1507 "version": "5.1.2",
1508 "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
1509 "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
1515 1510 "dev": true,
1516 1511 "dependencies": {
1517 1512 "mimic-fn": "^2.1.0"
1518 1513 },
1519 1514 "engines": {
1520 1515 "node": ">=6"
1516 },
1517 "funding": {
1518 "url": "https://github.com/sponsors/sindresorhus"
1521 1519 }
1522 1520 },
1523 1521 "node_modules/optionator": {
1524 1522 "version": "0.8.3",
1525 1523 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
1526 1524 "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
1527 1525 "dev": true,
1528 1526 "dependencies": {
1529 1527 "deep-is": "~0.1.3",
1530 1528 "fast-levenshtein": "~2.0.6",
1531 1529 "levn": "~0.3.0",
1532 1530 "prelude-ls": "~1.1.2",
1533 1531 "type-check": "~0.3.2",
1534 1532 "word-wrap": "~1.2.3"
1535 1533 },
1536 1534 "engines": {
1537 1535 "node": ">= 0.8.0"
1538 1536 }
1539 1537 },
1540 1538 "node_modules/os-homedir": {
1541 1539 "version": "1.0.2",
1542 1540 "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
1543 "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
1541 "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
1544 1542 "dev": true,
1545 1543 "engines": {
1546 1544 "node": ">=0.10.0"
1547 1545 }
1548 1546 },
1549 1547 "node_modules/os-tmpdir": {
1550 1548 "version": "1.0.2",
1551 1549 "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
1552 "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
1550 "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
1553 1551 "dev": true,
1554 1552 "engines": {
1555 1553 "node": ">=0.10.0"
1556 1554 }
1557 1555 },
1558 1556 "node_modules/osenv": {
1559 1557 "version": "0.1.5",
1560 1558 "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
1561 1559 "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
1560 "deprecated": "This package is no longer supported.",
1562 1561 "dev": true,
1563 1562 "dependencies": {
1564 1563 "os-homedir": "^1.0.0",
1565 1564 "os-tmpdir": "^1.0.0"
1566 1565 }
1567 1566 },
1568 1567 "node_modules/parent-module": {
1569 1568 "version": "1.0.1",
1570 1569 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
1571 1570 "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1572 1571 "dev": true,
1573 1572 "dependencies": {
1574 1573 "callsites": "^3.0.0"
1575 1574 },
1576 1575 "engines": {
1577 1576 "node": ">=6"
1578 1577 }
1579 1578 },
1580 1579 "node_modules/path-is-absolute": {
1581 1580 "version": "1.0.1",
1582 1581 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1583 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1582 "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
1584 1583 "dev": true,
1585 1584 "engines": {
1586 1585 "node": ">=0.10.0"
1587 1586 }
1588 1587 },
1589 1588 "node_modules/path-key": {
1590 1589 "version": "2.0.1",
1591 1590 "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
1592 "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
1591 "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
1593 1592 "dev": true,
1594 1593 "engines": {
1595 1594 "node": ">=4"
1596 1595 }
1597 1596 },
1598 1597 "node_modules/path-parse": {
1599 "version": "1.0.6",
1600 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
1601 "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
1598 "version": "1.0.7",
1599 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1600 "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1602 1601 "dev": true
1603 1602 },
1604 "node_modules/performance-now": {
1605 "version": "2.1.0",
1606 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
1607 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
1603 "node_modules/picocolors": {
1604 "version": "1.0.1",
1605 "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
1606 "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
1607 "dev": true
1608 },
1609 "node_modules/pify": {
1610 "version": "4.0.1",
1611 "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
1612 "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
1608 1613 "dev": true,
1609 "optional": true
1614 "optional": true,
1615 "engines": {
1616 "node": ">=6"
1617 }
1610 1618 },
1611 1619 "node_modules/prelude-ls": {
1612 1620 "version": "1.1.2",
1613 1621 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
1614 "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
1622 "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
1615 1623 "dev": true,
1616 1624 "engines": {
1617 1625 "node": ">= 0.8.0"
1618 1626 }
1619 1627 },
1620 1628 "node_modules/progress": {
1621 1629 "version": "2.0.3",
1622 1630 "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
1623 1631 "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
1624 1632 "dev": true,
1625 1633 "engines": {
1626 1634 "node": ">=0.4.0"
1627 1635 }
1628 1636 },
1629 "node_modules/promise": {
1630 "version": "7.3.1",
1631 "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
1632 "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
1633 "dev": true,
1634 "optional": true,
1635 "dependencies": {
1636 "asap": "~2.0.3"
1637 }
1638 },
1639 1637 "node_modules/prr": {
1640 1638 "version": "1.0.1",
1641 1639 "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
1642 "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
1643 "dev": true,
1644 "optional": true
1645 },
1646 "node_modules/psl": {
1647 "version": "1.4.0",
1648 "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
1649 "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==",
1640 "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
1650 1641 "dev": true,
1651 1642 "optional": true
1652 1643 },
1653 1644 "node_modules/punycode": {
1654 "version": "2.1.1",
1655 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1656 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1645 "version": "2.3.1",
1646 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
1647 "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
1657 1648 "dev": true,
1658 1649 "engines": {
1659 1650 "node": ">=6"
1660 1651 }
1661 1652 },
1662 "node_modules/qs": {
1663 "version": "6.5.2",
1664 "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
1665 "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
1666 "dev": true,
1667 "optional": true,
1668 "engines": {
1669 "node": ">=0.6"
1670 }
1671 },
1672 1653 "node_modules/read-installed": {
1673 1654 "version": "4.0.3",
1674 1655 "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz",
1675 "integrity": "sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc=",
1656 "integrity": "sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ==",
1657 "deprecated": "This package is no longer supported.",
1676 1658 "dev": true,
1677 1659 "dependencies": {
1678 1660 "debuglog": "^1.0.1",
1679 1661 "read-package-json": "^2.0.0",
1680 1662 "readdir-scoped-modules": "^1.0.0",
1681 1663 "semver": "2 || 3 || 4 || 5",
1682 1664 "slide": "~1.1.3",
1683 1665 "util-extend": "^1.0.1"
1684 1666 },
1685 1667 "optionalDependencies": {
1686 1668 "graceful-fs": "^4.1.2"
1687 1669 }
1688 1670 },
1671 "node_modules/read-installed/node_modules/semver": {
1672 "version": "5.7.2",
1673 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
1674 "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
1675 "dev": true,
1676 "bin": {
1677 "semver": "bin/semver"
1678 }
1679 },
1689 1680 "node_modules/read-package-json": {
1690 "version": "2.1.0",
1691 "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.0.tgz",
1692 "integrity": "sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A==",
1681 "version": "2.1.2",
1682 "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz",
1683 "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==",
1684 "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.",
1693 1685 "dev": true,
1694 1686 "dependencies": {
1695 1687 "glob": "^7.1.1",
1696 "json-parse-better-errors": "^1.0.1",
1688 "json-parse-even-better-errors": "^2.3.0",
1697 1689 "normalize-package-data": "^2.0.0",
1698 "slash": "^1.0.0"
1699 },
1700 "optionalDependencies": {
1701 "graceful-fs": "^4.1.2"
1702 }
1703 },
1704 "node_modules/readable-stream": {
1705 "version": "3.6.0",
1706 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
1707 "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
1708 "dev": true,
1709 "dependencies": {
1710 "inherits": "^2.0.3",
1711 "string_decoder": "^1.1.1",
1712 "util-deprecate": "^1.0.1"
1713 },
1714 "engines": {
1715 "node": ">= 6"
1690 "npm-normalize-package-bin": "^1.0.0"
1716 1691 }
1717 1692 },
1718 1693 "node_modules/readdir-scoped-modules": {
1719 1694 "version": "1.1.0",
1720 1695 "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz",
1721 1696 "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==",
1697 "deprecated": "This functionality has been moved to @npmcli/fs",
1722 1698 "dev": true,
1723 1699 "dependencies": {
1724 1700 "debuglog": "^1.0.1",
1725 1701 "dezalgo": "^1.0.0",
1726 1702 "graceful-fs": "^4.1.2",
1727 1703 "once": "^1.3.0"
1728 1704 }
1729 1705 },
1730 1706 "node_modules/regexpp": {
1731 1707 "version": "2.0.1",
1732 1708 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
1733 1709 "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
1734 1710 "dev": true,
1735 1711 "engines": {
1736 1712 "node": ">=6.5.0"
1737 1713 }
1738 1714 },
1739 "node_modules/request": {
1740 "version": "2.88.0",
1741 "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
1742 "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
1743 "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
1744 "dev": true,
1745 "optional": true,
1746 "dependencies": {
1747 "aws-sign2": "~0.7.0",
1748 "aws4": "^1.8.0",
1749 "caseless": "~0.12.0",
1750 "combined-stream": "~1.0.6",
1751 "extend": "~3.0.2",
1752 "forever-agent": "~0.6.1",
1753 "form-data": "~2.3.2",
1754 "har-validator": "~5.1.0",
1755 "http-signature": "~1.2.0",
1756 "is-typedarray": "~1.0.0",
1757 "isstream": "~0.1.2",
1758 "json-stringify-safe": "~5.0.1",
1759 "mime-types": "~2.1.19",
1760 "oauth-sign": "~0.9.0",
1761 "performance-now": "^2.1.0",
1762 "qs": "~6.5.2",
1763 "safe-buffer": "^5.1.2",
1764 "tough-cookie": "~2.4.3",
1765 "tunnel-agent": "^0.6.0",
1766 "uuid": "^3.3.2"
1767 },
1768 "engines": {
1769 "node": ">= 4"
1770 }
1771 },
1772 1715 "node_modules/resolve": {
1773 "version": "1.12.0",
1774 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
1775 "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
1716 "version": "1.22.8",
1717 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
1718 "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
1776 1719 "dev": true,
1777 1720 "dependencies": {
1778 "path-parse": "^1.0.6"
1721 "is-core-module": "^2.13.0",
1722 "path-parse": "^1.0.7",
1723 "supports-preserve-symlinks-flag": "^1.0.0"
1724 },
1725 "bin": {
1726 "resolve": "bin/resolve"
1727 },
1728 "funding": {
1729 "url": "https://github.com/sponsors/ljharb"
1779 1730 }
1780 1731 },
1781 1732 "node_modules/resolve-from": {
1782 1733 "version": "4.0.0",
1783 1734 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
1784 1735 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
1785 1736 "dev": true,
1786 1737 "engines": {
1787 1738 "node": ">=4"
1788 1739 }
1789 1740 },
1790 1741 "node_modules/restore-cursor": {
1791 1742 "version": "3.1.0",
1792 1743 "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
1793 1744 "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
1794 1745 "dev": true,
1795 1746 "dependencies": {
1796 1747 "onetime": "^5.1.0",
1797 1748 "signal-exit": "^3.0.2"
1798 1749 },
1799 1750 "engines": {
1800 1751 "node": ">=8"
1801 1752 }
1802 1753 },
1803 1754 "node_modules/rimraf": {
1804 1755 "version": "2.6.3",
1805 1756 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
1806 1757 "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
1758 "deprecated": "Rimraf versions prior to v4 are no longer supported",
1807 1759 "dev": true,
1808 1760 "dependencies": {
1809 1761 "glob": "^7.1.3"
1810 1762 },
1811 1763 "bin": {
1812 1764 "rimraf": "bin.js"
1813 1765 }
1814 1766 },
1815 1767 "node_modules/run-async": {
1816 "version": "2.3.0",
1817 "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
1818 "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
1768 "version": "2.4.1",
1769 "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
1770 "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
1819 1771 "dev": true,
1820 "dependencies": {
1821 "is-promise": "^2.1.0"
1822 },
1823 1772 "engines": {
1824 1773 "node": ">=0.12.0"
1825 1774 }
1826 1775 },
1827 1776 "node_modules/rxjs": {
1828 "version": "6.5.4",
1829 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
1830 "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
1777 "version": "6.6.7",
1778 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
1779 "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
1831 1780 "dev": true,
1832 1781 "dependencies": {
1833 1782 "tslib": "^1.9.0"
1834 1783 },
1835 1784 "engines": {
1836 1785 "npm": ">=2.0.0"
1837 1786 }
1838 1787 },
1839 "node_modules/safe-buffer": {
1840 "version": "5.2.0",
1841 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
1842 "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
1843 "dev": true
1844 },
1845 1788 "node_modules/safer-buffer": {
1846 1789 "version": "2.1.2",
1847 1790 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1848 1791 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1849 1792 "dev": true
1850 1793 },
1851 1794 "node_modules/select2": {
1852 1795 "version": "3.5.1",
1853 1796 "resolved": "https://registry.npmjs.org/select2/-/select2-3.5.1.tgz",
1854 "integrity": "sha1-8oGUibvGX9bTKL5yu+K5XdfofP4="
1797 "integrity": "sha512-IFX3UFPpPyK1I1Kuw1R1x+upMyNAZbMlkFhiTnRCRR7ii0KU1brmJMLa3GZcrMWCHiQlm0eKqb6i4XO4pqOrGQ=="
1855 1798 },
1856 1799 "node_modules/select2-bootstrap-css": {
1857 1800 "version": "1.4.6",
1858 1801 "resolved": "https://registry.npmjs.org/select2-bootstrap-css/-/select2-bootstrap-css-1.4.6.tgz",
1859 "integrity": "sha1-XPtoJG9SmcoYWOAe/XiIBMc0mX4="
1802 "integrity": "sha512-BBsisfivUYjwhj3QdWNS15sBqC/DHoszRC4B3GIzJwMNO1pT1uVvwDm5u2TLXi7oj/3S4vIeQ6yAuMa86d7c9A=="
1860 1803 },
1861 1804 "node_modules/semver": {
1862 "version": "5.7.1",
1863 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1864 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
1805 "version": "6.3.1",
1806 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
1807 "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
1865 1808 "dev": true,
1866 1809 "bin": {
1867 "semver": "bin/semver"
1810 "semver": "bin/semver.js"
1868 1811 }
1869 1812 },
1870 1813 "node_modules/shebang-command": {
1871 1814 "version": "1.2.0",
1872 1815 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
1873 "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
1816 "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
1874 1817 "dev": true,
1875 1818 "dependencies": {
1876 1819 "shebang-regex": "^1.0.0"
1877 1820 },
1878 1821 "engines": {
1879 1822 "node": ">=0.10.0"
1880 1823 }
1881 1824 },
1882 1825 "node_modules/shebang-regex": {
1883 1826 "version": "1.0.0",
1884 1827 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
1885 "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
1828 "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
1886 1829 "dev": true,
1887 1830 "engines": {
1888 1831 "node": ">=0.10.0"
1889 1832 }
1890 1833 },
1891 1834 "node_modules/signal-exit": {
1892 "version": "3.0.2",
1893 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
1894 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
1835 "version": "3.0.7",
1836 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
1837 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
1895 1838 "dev": true
1896 1839 },
1897 "node_modules/slash": {
1898 "version": "1.0.0",
1899 "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
1900 "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
1901 "dev": true,
1902 "engines": {
1903 "node": ">=0.10.0"
1904 }
1905 },
1906 1840 "node_modules/slice-ansi": {
1907 1841 "version": "2.1.0",
1908 1842 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
1909 1843 "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
1910 1844 "dev": true,
1911 1845 "dependencies": {
1912 1846 "ansi-styles": "^3.2.0",
1913 1847 "astral-regex": "^1.0.0",
1914 1848 "is-fullwidth-code-point": "^2.0.0"
1915 1849 },
1916 1850 "engines": {
1917 1851 "node": ">=6"
1918 1852 }
1919 1853 },
1920 1854 "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
1921 1855 "version": "2.0.0",
1922 1856 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
1923 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
1857 "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
1924 1858 "dev": true,
1925 1859 "engines": {
1926 1860 "node": ">=4"
1927 1861 }
1928 1862 },
1929 1863 "node_modules/slide": {
1930 1864 "version": "1.1.6",
1931 1865 "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
1932 "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
1866 "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==",
1933 1867 "dev": true,
1934 1868 "engines": {
1935 1869 "node": "*"
1936 1870 }
1937 1871 },
1938 1872 "node_modules/source-map": {
1939 1873 "version": "0.6.1",
1940 1874 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1941 1875 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1942 1876 "dev": true,
1943 1877 "optional": true,
1944 1878 "engines": {
1945 1879 "node": ">=0.10.0"
1946 1880 }
1947 1881 },
1948 1882 "node_modules/spdx-compare": {
1949 1883 "version": "1.0.0",
1950 1884 "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz",
1951 1885 "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==",
1952 1886 "dev": true,
1953 1887 "dependencies": {
1954 1888 "array-find-index": "^1.0.2",
1955 1889 "spdx-expression-parse": "^3.0.0",
1956 1890 "spdx-ranges": "^2.0.0"
1957 1891 }
1958 1892 },
1959 1893 "node_modules/spdx-correct": {
1960 "version": "3.1.0",
1961 "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
1962 "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
1894 "version": "3.2.0",
1895 "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
1896 "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
1963 1897 "dev": true,
1964 1898 "dependencies": {
1965 1899 "spdx-expression-parse": "^3.0.0",
1966 1900 "spdx-license-ids": "^3.0.0"
1967 1901 }
1968 1902 },
1969 1903 "node_modules/spdx-exceptions": {
1970 "version": "2.2.0",
1971 "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
1972 "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
1904 "version": "2.5.0",
1905 "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
1906 "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
1973 1907 "dev": true
1974 1908 },
1975 1909 "node_modules/spdx-expression-parse": {
1976 "version": "3.0.0",
1977 "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
1978 "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
1910 "version": "3.0.1",
1911 "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
1912 "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
1979 1913 "dev": true,
1980 1914 "dependencies": {
1981 1915 "spdx-exceptions": "^2.1.0",
1982 1916 "spdx-license-ids": "^3.0.0"
1983 1917 }
1984 1918 },
1985 1919 "node_modules/spdx-license-ids": {
1986 "version": "3.0.5",
1987 "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
1988 "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
1920 "version": "3.0.18",
1921 "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz",
1922 "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==",
1989 1923 "dev": true
1990 1924 },
1991 1925 "node_modules/spdx-ranges": {
1992 1926 "version": "2.1.1",
1993 1927 "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz",
1994 1928 "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==",
1995 1929 "dev": true
1996 1930 },
1997 1931 "node_modules/spdx-satisfies": {
1998 1932 "version": "4.0.1",
1999 1933 "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz",
2000 1934 "integrity": "sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==",
2001 1935 "dev": true,
2002 1936 "dependencies": {
2003 1937 "spdx-compare": "^1.0.0",
2004 1938 "spdx-expression-parse": "^3.0.0",
2005 1939 "spdx-ranges": "^2.0.0"
2006 1940 }
2007 1941 },
2008 1942 "node_modules/sprintf-js": {
2009 1943 "version": "1.0.3",
2010 1944 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
2011 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
1945 "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
2012 1946 "dev": true
2013 1947 },
2014 "node_modules/sshpk": {
2015 "version": "1.16.1",
2016 "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
2017 "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
2018 "dev": true,
2019 "optional": true,
2020 "dependencies": {
2021 "asn1": "~0.2.3",
2022 "assert-plus": "^1.0.0",
2023 "bcrypt-pbkdf": "^1.0.0",
2024 "dashdash": "^1.12.0",
2025 "ecc-jsbn": "~0.1.1",
2026 "getpass": "^0.1.1",
2027 "jsbn": "~0.1.0",
2028 "safer-buffer": "^2.0.2",
2029 "tweetnacl": "~0.14.0"
2030 },
2031 "bin": {
2032 "sshpk-conv": "bin/sshpk-conv",
2033 "sshpk-sign": "bin/sshpk-sign",
2034 "sshpk-verify": "bin/sshpk-verify"
2035 },
2036 "engines": {
2037 "node": ">=0.10.0"
2038 }
2039 },
2040 "node_modules/string_decoder": {
2041 "version": "1.3.0",
2042 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
2043 "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
2044 "dev": true,
2045 "dependencies": {
2046 "safe-buffer": "~5.2.0"
2047 }
2048 },
2049 1948 "node_modules/string-width": {
2050 "version": "4.2.0",
2051 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
2052 "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
1949 "version": "4.2.3",
1950 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
1951 "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2053 1952 "dev": true,
2054 1953 "dependencies": {
2055 1954 "emoji-regex": "^8.0.0",
2056 1955 "is-fullwidth-code-point": "^3.0.0",
2057 "strip-ansi": "^6.0.0"
1956 "strip-ansi": "^6.0.1"
2058 1957 },
2059 1958 "engines": {
2060 1959 "node": ">=8"
2061 1960 }
2062 1961 },
1962 "node_modules/string-width/node_modules/ansi-regex": {
1963 "version": "5.0.1",
1964 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1965 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1966 "dev": true,
1967 "engines": {
1968 "node": ">=8"
1969 }
1970 },
2063 1971 "node_modules/string-width/node_modules/strip-ansi": {
2064 "version": "6.0.0",
2065 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
2066 "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
1972 "version": "6.0.1",
1973 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1974 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2067 1975 "dev": true,
2068 1976 "dependencies": {
2069 "ansi-regex": "^5.0.0"
1977 "ansi-regex": "^5.0.1"
2070 1978 },
2071 1979 "engines": {
2072 1980 "node": ">=8"
2073 1981 }
2074 1982 },
2075 1983 "node_modules/strip-ansi": {
2076 1984 "version": "5.2.0",
2077 1985 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
2078 1986 "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
2079 1987 "dev": true,
2080 1988 "dependencies": {
2081 1989 "ansi-regex": "^4.1.0"
2082 1990 },
2083 1991 "engines": {
2084 1992 "node": ">=6"
2085 1993 }
2086 1994 },
2087 "node_modules/strip-ansi/node_modules/ansi-regex": {
2088 "version": "4.1.0",
2089 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
2090 "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
2091 "dev": true,
2092 "engines": {
2093 "node": ">=6"
2094 }
2095 },
2096 1995 "node_modules/strip-json-comments": {
2097 "version": "3.0.1",
2098 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
2099 "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
1996 "version": "3.1.1",
1997 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
1998 "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
2100 1999 "dev": true,
2101 2000 "engines": {
2102 2001 "node": ">=8"
2002 },
2003 "funding": {
2004 "url": "https://github.com/sponsors/sindresorhus"
2103 2005 }
2104 2006 },
2105 2007 "node_modules/supports-color": {
2106 2008 "version": "5.5.0",
2107 2009 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2108 2010 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2109 2011 "dev": true,
2110 2012 "dependencies": {
2111 2013 "has-flag": "^3.0.0"
2112 2014 },
2113 2015 "engines": {
2114 2016 "node": ">=4"
2115 2017 }
2116 2018 },
2019 "node_modules/supports-preserve-symlinks-flag": {
2020 "version": "1.0.0",
2021 "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2022 "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2023 "dev": true,
2024 "engines": {
2025 "node": ">= 0.4"
2026 },
2027 "funding": {
2028 "url": "https://github.com/sponsors/ljharb"
2029 }
2030 },
2117 2031 "node_modules/table": {
2118 2032 "version": "5.4.6",
2119 2033 "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
2120 2034 "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
2121 2035 "dev": true,
2122 2036 "dependencies": {
2123 2037 "ajv": "^6.10.2",
2124 2038 "lodash": "^4.17.14",
2125 2039 "slice-ansi": "^2.1.0",
2126 2040 "string-width": "^3.0.0"
2127 2041 },
2128 2042 "engines": {
2129 2043 "node": ">=6.0.0"
2130 2044 }
2131 2045 },
2132 2046 "node_modules/table/node_modules/emoji-regex": {
2133 2047 "version": "7.0.3",
2134 2048 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
2135 2049 "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
2136 2050 "dev": true
2137 2051 },
2138 2052 "node_modules/table/node_modules/is-fullwidth-code-point": {
2139 2053 "version": "2.0.0",
2140 2054 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2141 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
2055 "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
2142 2056 "dev": true,
2143 2057 "engines": {
2144 2058 "node": ">=4"
2145 2059 }
2146 2060 },
2147 2061 "node_modules/table/node_modules/string-width": {
2148 2062 "version": "3.1.0",
2149 2063 "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
2150 2064 "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
2151 2065 "dev": true,
2152 2066 "dependencies": {
2153 2067 "emoji-regex": "^7.0.1",
2154 2068 "is-fullwidth-code-point": "^2.0.0",
2155 2069 "strip-ansi": "^5.1.0"
2156 2070 },
2157 2071 "engines": {
2158 2072 "node": ">=6"
2159 2073 }
2160 2074 },
2161 2075 "node_modules/text-table": {
2162 2076 "version": "0.2.0",
2163 2077 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
2164 "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
2078 "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
2165 2079 "dev": true
2166 2080 },
2167 2081 "node_modules/through": {
2168 2082 "version": "2.3.8",
2169 2083 "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
2170 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
2084 "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
2171 2085 "dev": true
2172 2086 },
2173 2087 "node_modules/tmp": {
2174 2088 "version": "0.0.33",
2175 2089 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
2176 2090 "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
2177 2091 "dev": true,
2178 2092 "dependencies": {
2179 2093 "os-tmpdir": "~1.0.2"
2180 2094 },
2181 2095 "engines": {
2182 2096 "node": ">=0.6.0"
2183 2097 }
2184 2098 },
2185 "node_modules/tough-cookie": {
2186 "version": "2.4.3",
2187 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
2188 "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
2189 "dev": true,
2190 "optional": true,
2191 "dependencies": {
2192 "psl": "^1.1.24",
2193 "punycode": "^1.4.1"
2194 },
2195 "engines": {
2196 "node": ">=0.8"
2197 }
2198 },
2199 "node_modules/tough-cookie/node_modules/punycode": {
2200 "version": "1.4.1",
2201 "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
2202 "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
2203 "dev": true,
2204 "optional": true
2205 },
2206 2099 "node_modules/treeify": {
2207 2100 "version": "1.1.0",
2208 2101 "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
2209 2102 "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
2210 2103 "dev": true,
2211 2104 "engines": {
2212 2105 "node": ">=0.6"
2213 2106 }
2214 2107 },
2215 2108 "node_modules/tslib": {
2216 "version": "1.11.0",
2217 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.0.tgz",
2218 "integrity": "sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg==",
2109 "version": "1.14.1",
2110 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
2111 "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
2219 2112 "dev": true
2220 2113 },
2221 "node_modules/tunnel-agent": {
2222 "version": "0.6.0",
2223 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
2224 "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
2225 "dev": true,
2226 "optional": true,
2227 "dependencies": {
2228 "safe-buffer": "^5.0.1"
2229 },
2230 "engines": {
2231 "node": "*"
2232 }
2233 },
2234 "node_modules/tweetnacl": {
2235 "version": "0.14.5",
2236 "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
2237 "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
2238 "dev": true,
2239 "optional": true
2240 },
2241 2114 "node_modules/type-check": {
2242 2115 "version": "0.3.2",
2243 2116 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
2244 "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
2117 "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
2245 2118 "dev": true,
2246 2119 "dependencies": {
2247 2120 "prelude-ls": "~1.1.2"
2248 2121 },
2249 2122 "engines": {
2250 2123 "node": ">= 0.8.0"
2251 2124 }
2252 2125 },
2253 2126 "node_modules/type-fest": {
2254 2127 "version": "0.8.1",
2255 2128 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
2256 2129 "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
2257 2130 "dev": true,
2258 2131 "engines": {
2259 2132 "node": ">=8"
2260 2133 }
2261 2134 },
2262 2135 "node_modules/uri-js": {
2263 "version": "4.2.2",
2264 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
2265 "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
2136 "version": "4.4.1",
2137 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
2138 "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
2266 2139 "dev": true,
2267 2140 "dependencies": {
2268 2141 "punycode": "^2.1.0"
2269 2142 }
2270 2143 },
2271 "node_modules/util-deprecate": {
2272 "version": "1.0.2",
2273 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2274 "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
2275 "dev": true
2276 },
2277 2144 "node_modules/util-extend": {
2278 2145 "version": "1.0.3",
2279 2146 "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz",
2280 "integrity": "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=",
2147 "integrity": "sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==",
2281 2148 "dev": true
2282 2149 },
2283 "node_modules/uuid": {
2284 "version": "3.3.3",
2285 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
2286 "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
2287 "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
2288 "dev": true,
2289 "optional": true,
2290 "bin": {
2291 "uuid": "bin/uuid"
2292 }
2293 },
2294 2150 "node_modules/v8-compile-cache": {
2295 "version": "2.1.0",
2296 "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
2297 "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
2151 "version": "2.4.0",
2152 "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
2153 "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==",
2298 2154 "dev": true
2299 2155 },
2300 2156 "node_modules/validate-npm-package-license": {
2301 2157 "version": "3.0.4",
2302 2158 "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
2303 2159 "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
2304 2160 "dev": true,
2305 2161 "dependencies": {
2306 2162 "spdx-correct": "^3.0.0",
2307 2163 "spdx-expression-parse": "^3.0.0"
2308 2164 }
2309 2165 },
2310 "node_modules/verror": {
2311 "version": "1.10.0",
2312 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
2313 "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
2314 "dev": true,
2315 "engines": [
2316 "node >=0.6.0"
2317 ],
2318 "optional": true,
2319 "dependencies": {
2320 "assert-plus": "^1.0.0",
2321 "core-util-is": "1.0.2",
2322 "extsprintf": "^1.2.0"
2323 }
2324 },
2325 2166 "node_modules/which": {
2326 2167 "version": "1.3.1",
2327 2168 "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
2328 2169 "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
2329 2170 "dev": true,
2330 2171 "dependencies": {
2331 2172 "isexe": "^2.0.0"
2332 2173 },
2333 2174 "bin": {
2334 2175 "which": "bin/which"
2335 2176 }
2336 2177 },
2337 2178 "node_modules/word-wrap": {
2338 "version": "1.2.3",
2339 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
2340 "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
2179 "version": "1.2.5",
2180 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
2181 "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
2341 2182 "dev": true,
2342 2183 "engines": {
2343 2184 "node": ">=0.10.0"
2344 2185 }
2345 2186 },
2346 2187 "node_modules/wrappy": {
2347 2188 "version": "1.0.2",
2348 2189 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2349 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
2190 "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
2350 2191 "dev": true
2351 2192 },
2352 2193 "node_modules/write": {
2353 2194 "version": "1.0.3",
2354 2195 "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
2355 2196 "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
2356 2197 "dev": true,
2357 2198 "dependencies": {
2358 2199 "mkdirp": "^0.5.1"
2359 2200 },
2360 2201 "engines": {
2361 2202 "node": ">=4"
2362 2203 }
2363 2204 }
2364 },
2365 "dependencies": {
2366 "@babel/code-frame": {
2367 "version": "7.8.3",
2368 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
2369 "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
2370 "dev": true,
2371 "requires": {
2372 "@babel/highlight": "^7.8.3"
2373 }
2374 },
2375 "@babel/highlight": {
2376 "version": "7.8.3",
2377 "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
2378 "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
2379 "dev": true,
2380 "requires": {
2381 "chalk": "^2.0.0",
2382 "esutils": "^2.0.2",
2383 "js-tokens": "^4.0.0"
2384 }
2385 },
2386 "abbrev": {
2387 "version": "1.1.1",
2388 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
2389 "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
2390 "dev": true
2391 },
2392 "acorn": {
2393 "version": "7.1.0",
2394 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
2395 "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
2396 "dev": true
2397 },
2398 "acorn-jsx": {
2399 "version": "5.1.0",
2400 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
2401 "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
2402 "dev": true,
2403 "requires": {}
2404 },
2405 "ajv": {
2406 "version": "6.10.2",
2407 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
2408 "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
2409 "dev": true,
2410 "requires": {
2411 "fast-deep-equal": "^2.0.1",
2412 "fast-json-stable-stringify": "^2.0.0",
2413 "json-schema-traverse": "^0.4.1",
2414 "uri-js": "^4.2.2"
2415 }
2416 },
2417 "amdefine": {
2418 "version": "1.0.1",
2419 "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
2420 "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
2421 "dev": true
2422 },
2423 "ansi-escapes": {
2424 "version": "4.3.0",
2425 "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz",
2426 "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==",
2427 "dev": true,
2428 "requires": {
2429 "type-fest": "^0.8.1"
2430 }
2431 },
2432 "ansi-regex": {
2433 "version": "5.0.0",
2434 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
2435 "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
2436 "dev": true
2437 },
2438 "ansi-styles": {
2439 "version": "3.2.1",
2440 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
2441 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
2442 "dev": true,
2443 "requires": {
2444 "color-convert": "^1.9.0"
2445 }
2446 },
2447 "argparse": {
2448 "version": "1.0.10",
2449 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
2450 "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
2451 "dev": true,
2452 "requires": {
2453 "sprintf-js": "~1.0.2"
2454 }
2455 },
2456 "array-find-index": {
2457 "version": "1.0.2",
2458 "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
2459 "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
2460 "dev": true
2461 },
2462 "asap": {
2463 "version": "2.0.6",
2464 "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
2465 "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
2466 "dev": true
2467 },
2468 "asn1": {
2469 "version": "0.2.4",
2470 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
2471 "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
2472 "dev": true,
2473 "optional": true,
2474 "requires": {
2475 "safer-buffer": "~2.1.0"
2476 }
2477 },
2478 "assert-plus": {
2479 "version": "1.0.0",
2480 "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
2481 "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
2482 "dev": true,
2483 "optional": true
2484 },
2485 "astral-regex": {
2486 "version": "1.0.0",
2487 "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
2488 "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
2489 "dev": true
2490 },
2491 "asynckit": {
2492 "version": "0.4.0",
2493 "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
2494 "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
2495 "dev": true,
2496 "optional": true
2497 },
2498 "at.js": {
2499 "version": "1.5.4",
2500 "resolved": "https://registry.npmjs.org/at.js/-/at.js-1.5.4.tgz",
2501 "integrity": "sha512-G8mgUb/PqShPoH8AyjuxsTGvIr1o716BtQUKDM44C8qN2W615y7KGJ68MlTGamd0J0D/m28emUkzagaHTdrGZw==",
2502 "requires": {}
2503 },
2504 "aws-sign2": {
2505 "version": "0.7.0",
2506 "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
2507 "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
2508 "dev": true,
2509 "optional": true
2510 },
2511 "aws4": {
2512 "version": "1.8.0",
2513 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
2514 "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
2515 "dev": true,
2516 "optional": true
2517 },
2518 "balanced-match": {
2519 "version": "1.0.0",
2520 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
2521 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
2522 "dev": true
2523 },
2524 "bcrypt-pbkdf": {
2525 "version": "1.0.2",
2526 "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
2527 "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
2528 "dev": true,
2529 "optional": true,
2530 "requires": {
2531 "tweetnacl": "^0.14.3"
2532 }
2533 },
2534 "bootstrap": {
2535 "version": "3.3.7",
2536 "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz",
2537 "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E="
2538 },
2539 "brace-expansion": {
2540 "version": "1.1.11",
2541 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
2542 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
2543 "dev": true,
2544 "requires": {
2545 "balanced-match": "^1.0.0",
2546 "concat-map": "0.0.1"
2547 }
2548 },
2549 "callsites": {
2550 "version": "3.1.0",
2551 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
2552 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
2553 "dev": true
2554 },
2555 "caseless": {
2556 "version": "0.12.0",
2557 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
2558 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
2559 "dev": true,
2560 "optional": true
2561 },
2562 "chalk": {
2563 "version": "2.4.2",
2564 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
2565 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
2566 "dev": true,
2567 "requires": {
2568 "ansi-styles": "^3.2.1",
2569 "escape-string-regexp": "^1.0.5",
2570 "supports-color": "^5.3.0"
2571 }
2572 },
2573 "chardet": {
2574 "version": "0.7.0",
2575 "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
2576 "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
2577 "dev": true
2578 },
2579 "clean-css": {
2580 "version": "3.4.28",
2581 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
2582 "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
2583 "dev": true,
2584 "requires": {
2585 "commander": "2.8.x",
2586 "source-map": "0.4.x"
2587 },
2588 "dependencies": {
2589 "source-map": {
2590 "version": "0.4.4",
2591 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
2592 "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
2593 "dev": true,
2594 "requires": {
2595 "amdefine": ">=0.0.4"
2596 }
2597 }
2598 }
2599 },
2600 "cli-cursor": {
2601 "version": "3.1.0",
2602 "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
2603 "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
2604 "dev": true,
2605 "requires": {
2606 "restore-cursor": "^3.1.0"
2607 }
2608 },
2609 "cli-width": {
2610 "version": "2.2.0",
2611 "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
2612 "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
2613 "dev": true
2614 },
2615 "clone": {
2616 "version": "2.1.2",
2617 "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
2618 "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
2619 "dev": true
2620 },
2621 "codemirror": {
2622 "version": "5.49.0",
2623 "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.49.0.tgz",
2624 "integrity": "sha512-Hyzr0HToBdZpLBN9dYFO/KlJAsKH37/cXVHPAqa+imml0R92tb9AkmsvjnXL+SluEvjjdfkDgRjc65NG5jnMYA=="
2625 },
2626 "color-convert": {
2627 "version": "1.9.3",
2628 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
2629 "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
2630 "dev": true,
2631 "requires": {
2632 "color-name": "1.1.3"
2633 }
2634 },
2635 "color-name": {
2636 "version": "1.1.3",
2637 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
2638 "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
2639 "dev": true
2640 },
2641 "combined-stream": {
2642 "version": "1.0.8",
2643 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
2644 "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
2645 "dev": true,
2646 "optional": true,
2647 "requires": {
2648 "delayed-stream": "~1.0.0"
2649 }
2650 },
2651 "commander": {
2652 "version": "2.8.1",
2653 "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
2654 "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
2655 "dev": true,
2656 "requires": {
2657 "graceful-readlink": ">= 1.0.0"
2658 }
2659 },
2660 "concat-map": {
2661 "version": "0.0.1",
2662 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
2663 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
2664 "dev": true
2665 },
2666 "core-util-is": {
2667 "version": "1.0.2",
2668 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
2669 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
2670 "dev": true,
2671 "optional": true
2672 },
2673 "cross-spawn": {
2674 "version": "6.0.5",
2675 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
2676 "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
2677 "dev": true,
2678 "requires": {
2679 "nice-try": "^1.0.4",
2680 "path-key": "^2.0.1",
2681 "semver": "^5.5.0",
2682 "shebang-command": "^1.2.0",
2683 "which": "^1.2.9"
2684 }
2685 },
2686 "dashdash": {
2687 "version": "1.14.1",
2688 "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
2689 "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
2690 "dev": true,
2691 "optional": true,
2692 "requires": {
2693 "assert-plus": "^1.0.0"
2694 }
2695 },
2696 "datatables.net": {
2697 "version": "1.10.20",
2698 "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.10.20.tgz",
2699 "integrity": "sha512-4E4S7tTU607N3h0fZPkGmAtr9mwy462u+VJ6gxYZ8MxcRIjZqHy3Dv1GNry7i3zQCktTdWbULVKBbkAJkuHEnQ==",
2700 "requires": {
2701 "jquery": ">=1.7"
2702 }
2703 },
2704 "datatables.net-bs": {
2705 "version": "1.10.20",
2706 "resolved": "https://registry.npmjs.org/datatables.net-bs/-/datatables.net-bs-1.10.20.tgz",
2707 "integrity": "sha512-NsMoOOYZ6NlteOpzhltw21lXsNdhjIMbIOxnqmcrb62ntl8eL9pYzk2AeiDXBlIKY4e550ZrExCq3CYKQ9myEg==",
2708 "requires": {
2709 "datatables.net": "1.10.20",
2710 "jquery": ">=1.7"
2711 }
2712 },
2713 "debug": {
2714 "version": "3.2.6",
2715 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
2716 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
2717 "dev": true,
2718 "requires": {
2719 "ms": "^2.1.1"
2720 }
2721 },
2722 "debuglog": {
2723 "version": "1.0.1",
2724 "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
2725 "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=",
2726 "dev": true
2727 },
2728 "deep-is": {
2729 "version": "0.1.3",
2730 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
2731 "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
2732 "dev": true
2733 },
2734 "delayed-stream": {
2735 "version": "1.0.0",
2736 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
2737 "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
2738 "dev": true,
2739 "optional": true
2740 },
2741 "dezalgo": {
2742 "version": "1.0.3",
2743 "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
2744 "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=",
2745 "dev": true,
2746 "requires": {
2747 "asap": "^2.0.0",
2748 "wrappy": "1"
2749 }
2750 },
2751 "doctrine": {
2752 "version": "3.0.0",
2753 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
2754 "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
2755 "dev": true,
2756 "requires": {
2757 "esutils": "^2.0.2"
2758 }
2759 },
2760 "dom-serializer": {
2761 "version": "0.2.2",
2762 "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
2763 "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
2764 "dev": true,
2765 "requires": {
2766 "domelementtype": "^2.0.1",
2767 "entities": "^2.0.0"
2768 },
2769 "dependencies": {
2770 "domelementtype": {
2771 "version": "2.0.1",
2772 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz",
2773 "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==",
2774 "dev": true
2775 },
2776 "entities": {
2777 "version": "2.0.0",
2778 "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
2779 "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
2780 "dev": true
2781 }
2782 }
2783 },
2784 "domelementtype": {
2785 "version": "1.3.1",
2786 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
2787 "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
2788 "dev": true
2789 },
2790 "domhandler": {
2791 "version": "2.4.2",
2792 "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
2793 "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
2794 "dev": true,
2795 "requires": {
2796 "domelementtype": "1"
2797 }
2798 },
2799 "domutils": {
2800 "version": "1.7.0",
2801 "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
2802 "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
2803 "dev": true,
2804 "requires": {
2805 "dom-serializer": "0",
2806 "domelementtype": "1"
2807 }
2808 },
2809 "ecc-jsbn": {
2810 "version": "0.1.2",
2811 "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
2812 "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
2813 "dev": true,
2814 "optional": true,
2815 "requires": {
2816 "jsbn": "~0.1.0",
2817 "safer-buffer": "^2.1.0"
2818 }
2819 },
2820 "emoji-regex": {
2821 "version": "8.0.0",
2822 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2823 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2824 "dev": true
2825 },
2826 "entities": {
2827 "version": "1.1.2",
2828 "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
2829 "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
2830 "dev": true
2831 },
2832 "errno": {
2833 "version": "0.1.7",
2834 "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
2835 "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
2836 "dev": true,
2837 "optional": true,
2838 "requires": {
2839 "prr": "~1.0.1"
2840 }
2841 },
2842 "escape-string-regexp": {
2843 "version": "1.0.5",
2844 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
2845 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
2846 "dev": true
2847 },
2848 "eslint": {
2849 "version": "6.8.0",
2850 "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
2851 "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
2852 "dev": true,
2853 "requires": {
2854 "@babel/code-frame": "^7.0.0",
2855 "ajv": "^6.10.0",
2856 "chalk": "^2.1.0",
2857 "cross-spawn": "^6.0.5",
2858 "debug": "^4.0.1",
2859 "doctrine": "^3.0.0",
2860 "eslint-scope": "^5.0.0",
2861 "eslint-utils": "^1.4.3",
2862 "eslint-visitor-keys": "^1.1.0",
2863 "espree": "^6.1.2",
2864 "esquery": "^1.0.1",
2865 "esutils": "^2.0.2",
2866 "file-entry-cache": "^5.0.1",
2867 "functional-red-black-tree": "^1.0.1",
2868 "glob-parent": "^5.0.0",
2869 "globals": "^12.1.0",
2870 "ignore": "^4.0.6",
2871 "import-fresh": "^3.0.0",
2872 "imurmurhash": "^0.1.4",
2873 "inquirer": "^7.0.0",
2874 "is-glob": "^4.0.0",
2875 "js-yaml": "^3.13.1",
2876 "json-stable-stringify-without-jsonify": "^1.0.1",
2877 "levn": "^0.3.0",
2878 "lodash": "^4.17.14",
2879 "minimatch": "^3.0.4",
2880 "mkdirp": "^0.5.1",
2881 "natural-compare": "^1.4.0",
2882 "optionator": "^0.8.3",
2883 "progress": "^2.0.0",
2884 "regexpp": "^2.0.1",
2885 "semver": "^6.1.2",
2886 "strip-ansi": "^5.2.0",
2887 "strip-json-comments": "^3.0.1",
2888 "table": "^5.2.3",
2889 "text-table": "^0.2.0",
2890 "v8-compile-cache": "^2.0.3"
2891 },
2892 "dependencies": {
2893 "debug": {
2894 "version": "4.1.1",
2895 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
2896 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
2897 "dev": true,
2898 "requires": {
2899 "ms": "^2.1.1"
2900 }
2901 },
2902 "semver": {
2903 "version": "6.3.0",
2904 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
2905 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
2906 "dev": true
2907 2205 }
2908 2206 }
2909 },
2910 "eslint-plugin-html": {
2911 "version": "6.0.0",
2912 "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.0.0.tgz",
2913 "integrity": "sha512-PQcGippOHS+HTbQCStmH5MY1BF2MaU8qW/+Mvo/8xTa/ioeMXdSP+IiaBw2+nh0KEMfYQKuTz1Zo+vHynjwhbg==",
2914 "dev": true,
2915 "requires": {
2916 "htmlparser2": "^3.10.1"
2917 }
2918 },
2919 "eslint-scope": {
2920 "version": "5.0.0",
2921 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
2922 "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
2923 "dev": true,
2924 "requires": {
2925 "esrecurse": "^4.1.0",
2926 "estraverse": "^4.1.1"
2927 }
2928 },
2929 "eslint-utils": {
2930 "version": "1.4.3",
2931 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
2932 "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
2933 "dev": true,
2934 "requires": {
2935 "eslint-visitor-keys": "^1.1.0"
2936 }
2937 },
2938 "eslint-visitor-keys": {
2939 "version": "1.1.0",
2940 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
2941 "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
2942 "dev": true
2943 },
2944 "espree": {
2945 "version": "6.1.2",
2946 "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz",
2947 "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==",
2948 "dev": true,
2949 "requires": {
2950 "acorn": "^7.1.0",
2951 "acorn-jsx": "^5.1.0",
2952 "eslint-visitor-keys": "^1.1.0"
2953 }
2954 },
2955 "esprima": {
2956 "version": "4.0.1",
2957 "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
2958 "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
2959 "dev": true
2960 },
2961 "esquery": {
2962 "version": "1.1.0",
2963 "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz",
2964 "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==",
2965 "dev": true,
2966 "requires": {
2967 "estraverse": "^4.0.0"
2968 }
2969 },
2970 "esrecurse": {
2971 "version": "4.2.1",
2972 "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
2973 "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
2974 "dev": true,
2975 "requires": {
2976 "estraverse": "^4.1.0"
2977 }
2978 },
2979 "estraverse": {
2980 "version": "4.3.0",
2981 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
2982 "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
2983 "dev": true
2984 },
2985 "esutils": {
2986 "version": "2.0.3",
2987 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
2988 "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
2989 "dev": true
2990 },
2991 "extend": {
2992 "version": "3.0.2",
2993 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
2994 "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
2995 "dev": true,
2996 "optional": true
2997 },
2998 "external-editor": {
2999 "version": "3.1.0",
3000 "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
3001 "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
3002 "dev": true,
3003 "requires": {
3004 "chardet": "^0.7.0",
3005 "iconv-lite": "^0.4.24",
3006 "tmp": "^0.0.33"
3007 }
3008 },
3009 "extsprintf": {
3010 "version": "1.3.0",
3011 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
3012 "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
3013 "dev": true,
3014 "optional": true
3015 },
3016 "fast-deep-equal": {
3017 "version": "2.0.1",
3018 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
3019 "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
3020 "dev": true
3021 },
3022 "fast-json-stable-stringify": {
3023 "version": "2.0.0",
3024 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
3025 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
3026 "dev": true
3027 },
3028 "fast-levenshtein": {
3029 "version": "2.0.6",
3030 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
3031 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
3032 "dev": true
3033 },
3034 "figures": {
3035 "version": "3.2.0",
3036 "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
3037 "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
3038 "dev": true,
3039 "requires": {
3040 "escape-string-regexp": "^1.0.5"
3041 }
3042 },
3043 "file-entry-cache": {
3044 "version": "5.0.1",
3045 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
3046 "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
3047 "dev": true,
3048 "requires": {
3049 "flat-cache": "^2.0.1"
3050 }
3051 },
3052 "flat-cache": {
3053 "version": "2.0.1",
3054 "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
3055 "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
3056 "dev": true,
3057 "requires": {
3058 "flatted": "^2.0.0",
3059 "rimraf": "2.6.3",
3060 "write": "1.0.3"
3061 }
3062 },
3063 "flatted": {
3064 "version": "2.0.1",
3065 "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
3066 "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
3067 "dev": true
3068 },
3069 "forever-agent": {
3070 "version": "0.6.1",
3071 "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
3072 "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
3073 "dev": true,
3074 "optional": true
3075 },
3076 "form-data": {
3077 "version": "2.3.3",
3078 "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
3079 "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
3080 "dev": true,
3081 "optional": true,
3082 "requires": {
3083 "asynckit": "^0.4.0",
3084 "combined-stream": "^1.0.6",
3085 "mime-types": "^2.1.12"
3086 }
3087 },
3088 "fs.realpath": {
3089 "version": "1.0.0",
3090 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
3091 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
3092 "dev": true
3093 },
3094 "functional-red-black-tree": {
3095 "version": "1.0.1",
3096 "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
3097 "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
3098 "dev": true
3099 },
3100 "getpass": {
3101 "version": "0.1.7",
3102 "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
3103 "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
3104 "dev": true,
3105 "optional": true,
3106 "requires": {
3107 "assert-plus": "^1.0.0"
3108 }
3109 },
3110 "glob": {
3111 "version": "7.1.6",
3112 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
3113 "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
3114 "dev": true,
3115 "requires": {
3116 "fs.realpath": "^1.0.0",
3117 "inflight": "^1.0.4",
3118 "inherits": "2",
3119 "minimatch": "^3.0.4",
3120 "once": "^1.3.0",
3121 "path-is-absolute": "^1.0.0"
3122 }
3123 },
3124 "glob-parent": {
3125 "version": "5.1.0",
3126 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
3127 "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
3128 "dev": true,
3129 "requires": {
3130 "is-glob": "^4.0.1"
3131 }
3132 },
3133 "globals": {
3134 "version": "12.3.0",
3135 "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz",
3136 "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==",
3137 "dev": true,
3138 "requires": {
3139 "type-fest": "^0.8.1"
3140 }
3141 },
3142 "graceful-fs": {
3143 "version": "4.2.3",
3144 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
3145 "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
3146 "dev": true
3147 },
3148 "graceful-readlink": {
3149 "version": "1.0.1",
3150 "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
3151 "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
3152 "dev": true
3153 },
3154 "har-schema": {
3155 "version": "2.0.0",
3156 "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
3157 "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
3158 "dev": true,
3159 "optional": true
3160 },
3161 "har-validator": {
3162 "version": "5.1.3",
3163 "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
3164 "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
3165 "dev": true,
3166 "optional": true,
3167 "requires": {
3168 "ajv": "^6.5.5",
3169 "har-schema": "^2.0.0"
3170 }
3171 },
3172 "has-flag": {
3173 "version": "3.0.0",
3174 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
3175 "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
3176 "dev": true
3177 },
3178 "hosted-git-info": {
3179 "version": "2.8.5",
3180 "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
3181 "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
3182 "dev": true
3183 },
3184 "htmlparser2": {
3185 "version": "3.10.1",
3186 "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
3187 "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
3188 "dev": true,
3189 "requires": {
3190 "domelementtype": "^1.3.1",
3191 "domhandler": "^2.3.0",
3192 "domutils": "^1.5.1",
3193 "entities": "^1.1.1",
3194 "inherits": "^2.0.1",
3195 "readable-stream": "^3.1.1"
3196 }
3197 },
3198 "http-signature": {
3199 "version": "1.2.0",
3200 "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
3201 "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
3202 "dev": true,
3203 "optional": true,
3204 "requires": {
3205 "assert-plus": "^1.0.0",
3206 "jsprim": "^1.2.2",
3207 "sshpk": "^1.7.0"
3208 }
3209 },
3210 "iconv-lite": {
3211 "version": "0.4.24",
3212 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
3213 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
3214 "dev": true,
3215 "requires": {
3216 "safer-buffer": ">= 2.1.2 < 3"
3217 }
3218 },
3219 "ignore": {
3220 "version": "4.0.6",
3221 "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
3222 "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
3223 "dev": true
3224 },
3225 "image-size": {
3226 "version": "0.5.5",
3227 "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
3228 "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
3229 "dev": true,
3230 "optional": true
3231 },
3232 "import-fresh": {
3233 "version": "3.2.1",
3234 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
3235 "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
3236 "dev": true,
3237 "requires": {
3238 "parent-module": "^1.0.0",
3239 "resolve-from": "^4.0.0"
3240 }
3241 },
3242 "imurmurhash": {
3243 "version": "0.1.4",
3244 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
3245 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
3246 "dev": true
3247 },
3248 "inflight": {
3249 "version": "1.0.6",
3250 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
3251 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
3252 "dev": true,
3253 "requires": {
3254 "once": "^1.3.0",
3255 "wrappy": "1"
3256 }
3257 },
3258 "inherits": {
3259 "version": "2.0.4",
3260 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
3261 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
3262 "dev": true
3263 },
3264 "inquirer": {
3265 "version": "7.0.4",
3266 "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz",
3267 "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==",
3268 "dev": true,
3269 "requires": {
3270 "ansi-escapes": "^4.2.1",
3271 "chalk": "^2.4.2",
3272 "cli-cursor": "^3.1.0",
3273 "cli-width": "^2.0.0",
3274 "external-editor": "^3.0.3",
3275 "figures": "^3.0.0",
3276 "lodash": "^4.17.15",
3277 "mute-stream": "0.0.8",
3278 "run-async": "^2.2.0",
3279 "rxjs": "^6.5.3",
3280 "string-width": "^4.1.0",
3281 "strip-ansi": "^5.1.0",
3282 "through": "^2.3.6"
3283 }
3284 },
3285 "is-extglob": {
3286 "version": "2.1.1",
3287 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
3288 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
3289 "dev": true
3290 },
3291 "is-fullwidth-code-point": {
3292 "version": "3.0.0",
3293 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
3294 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
3295 "dev": true
3296 },
3297 "is-glob": {
3298 "version": "4.0.1",
3299 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
3300 "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
3301 "dev": true,
3302 "requires": {
3303 "is-extglob": "^2.1.1"
3304 }
3305 },
3306 "is-promise": {
3307 "version": "2.1.0",
3308 "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
3309 "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
3310 "dev": true
3311 },
3312 "is-typedarray": {
3313 "version": "1.0.0",
3314 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
3315 "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
3316 "dev": true,
3317 "optional": true
3318 },
3319 "isexe": {
3320 "version": "2.0.0",
3321 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
3322 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
3323 "dev": true
3324 },
3325 "isstream": {
3326 "version": "0.1.2",
3327 "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
3328 "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
3329 "dev": true,
3330 "optional": true
3331 },
3332 "jquery": {
3333 "version": "3.4.1",
3334 "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz",
3335 "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw=="
3336 },
3337 "jquery.caret": {
3338 "version": "0.3.1",
3339 "resolved": "https://registry.npmjs.org/jquery.caret/-/jquery.caret-0.3.1.tgz",
3340 "integrity": "sha1-nAkzGPrzJ+/zIugmyp8yQTaLx7g="
3341 },
3342 "jquery.flot": {
3343 "version": "0.8.3",
3344 "resolved": "https://registry.npmjs.org/jquery.flot/-/jquery.flot-0.8.3.tgz",
3345 "integrity": "sha512-/tEE8J5NjwvStHDaCHkvTJpD7wDS4hE1OEL8xEmhgQfUe0gLUem923PIceNez1mz4yBNx6Hjv7pJcowLNd+nbg=="
3346 },
3347 "js-tokens": {
3348 "version": "4.0.0",
3349 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
3350 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
3351 "dev": true
3352 },
3353 "js-yaml": {
3354 "version": "3.13.1",
3355 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
3356 "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
3357 "dev": true,
3358 "requires": {
3359 "argparse": "^1.0.7",
3360 "esprima": "^4.0.0"
3361 }
3362 },
3363 "jsbn": {
3364 "version": "0.1.1",
3365 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
3366 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
3367 "dev": true,
3368 "optional": true
3369 },
3370 "json-parse-better-errors": {
3371 "version": "1.0.2",
3372 "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
3373 "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
3374 "dev": true
3375 },
3376 "json-schema": {
3377 "version": "0.2.3",
3378 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
3379 "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
3380 "dev": true,
3381 "optional": true
3382 },
3383 "json-schema-traverse": {
3384 "version": "0.4.1",
3385 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
3386 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
3387 "dev": true
3388 },
3389 "json-stable-stringify-without-jsonify": {
3390 "version": "1.0.1",
3391 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
3392 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
3393 "dev": true
3394 },
3395 "json-stringify-safe": {
3396 "version": "5.0.1",
3397 "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
3398 "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
3399 "dev": true,
3400 "optional": true
3401 },
3402 "jsprim": {
3403 "version": "1.4.1",
3404 "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
3405 "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
3406 "dev": true,
3407 "optional": true,
3408 "requires": {
3409 "assert-plus": "1.0.0",
3410 "extsprintf": "1.3.0",
3411 "json-schema": "0.2.3",
3412 "verror": "1.10.0"
3413 }
3414 },
3415 "less": {
3416 "version": "3.10.3",
3417 "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz",
3418 "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==",
3419 "dev": true,
3420 "requires": {
3421 "clone": "^2.1.2",
3422 "errno": "^0.1.1",
3423 "graceful-fs": "^4.1.2",
3424 "image-size": "~0.5.0",
3425 "mime": "^1.4.1",
3426 "mkdirp": "^0.5.0",
3427 "promise": "^7.1.1",
3428 "request": "^2.83.0",
3429 "source-map": "~0.6.0"
3430 }
3431 },
3432 "less-plugin-clean-css": {
3433 "version": "1.5.1",
3434 "resolved": "https://registry.npmjs.org/less-plugin-clean-css/-/less-plugin-clean-css-1.5.1.tgz",
3435 "integrity": "sha1-zFeveqM5iVflbezr5jy2DCNClwM=",
3436 "dev": true,
3437 "requires": {
3438 "clean-css": "^3.0.1"
3439 }
3440 },
3441 "levn": {
3442 "version": "0.3.0",
3443 "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
3444 "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
3445 "dev": true,
3446 "requires": {
3447 "prelude-ls": "~1.1.2",
3448 "type-check": "~0.3.2"
3449 }
3450 },
3451 "license-checker": {
3452 "version": "25.0.1",
3453 "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz",
3454 "integrity": "sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==",
3455 "dev": true,
3456 "requires": {
3457 "chalk": "^2.4.1",
3458 "debug": "^3.1.0",
3459 "mkdirp": "^0.5.1",
3460 "nopt": "^4.0.1",
3461 "read-installed": "~4.0.3",
3462 "semver": "^5.5.0",
3463 "spdx-correct": "^3.0.0",
3464 "spdx-expression-parse": "^3.0.0",
3465 "spdx-satisfies": "^4.0.0",
3466 "treeify": "^1.1.0"
3467 }
3468 },
3469 "lodash": {
3470 "version": "4.17.15",
3471 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
3472 "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
3473 "dev": true
3474 },
3475 "mime": {
3476 "version": "1.6.0",
3477 "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
3478 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
3479 "dev": true,
3480 "optional": true
3481 },
3482 "mime-db": {
3483 "version": "1.40.0",
3484 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
3485 "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
3486 "dev": true,
3487 "optional": true
3488 },
3489 "mime-types": {
3490 "version": "2.1.24",
3491 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
3492 "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
3493 "dev": true,
3494 "optional": true,
3495 "requires": {
3496 "mime-db": "1.40.0"
3497 }
3498 },
3499 "mimic-fn": {
3500 "version": "2.1.0",
3501 "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
3502 "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
3503 "dev": true
3504 },
3505 "minimatch": {
3506 "version": "3.0.4",
3507 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
3508 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
3509 "dev": true,
3510 "requires": {
3511 "brace-expansion": "^1.1.7"
3512 }
3513 },
3514 "minimist": {
3515 "version": "0.0.8",
3516 "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
3517 "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
3518 "dev": true
3519 },
3520 "mkdirp": {
3521 "version": "0.5.1",
3522 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
3523 "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
3524 "dev": true,
3525 "requires": {
3526 "minimist": "0.0.8"
3527 }
3528 },
3529 "ms": {
3530 "version": "2.1.2",
3531 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
3532 "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
3533 "dev": true
3534 },
3535 "mute-stream": {
3536 "version": "0.0.8",
3537 "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
3538 "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
3539 "dev": true
3540 },
3541 "natural-compare": {
3542 "version": "1.4.0",
3543 "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
3544 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
3545 "dev": true
3546 },
3547 "nice-try": {
3548 "version": "1.0.5",
3549 "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
3550 "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
3551 "dev": true
3552 },
3553 "nopt": {
3554 "version": "4.0.1",
3555 "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
3556 "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
3557 "dev": true,
3558 "requires": {
3559 "abbrev": "1",
3560 "osenv": "^0.1.4"
3561 }
3562 },
3563 "normalize-package-data": {
3564 "version": "2.5.0",
3565 "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
3566 "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
3567 "dev": true,
3568 "requires": {
3569 "hosted-git-info": "^2.1.4",
3570 "resolve": "^1.10.0",
3571 "semver": "2 || 3 || 4 || 5",
3572 "validate-npm-package-license": "^3.0.1"
3573 }
3574 },
3575 "oauth-sign": {
3576 "version": "0.9.0",
3577 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
3578 "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
3579 "dev": true,
3580 "optional": true
3581 },
3582 "once": {
3583 "version": "1.4.0",
3584 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
3585 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
3586 "dev": true,
3587 "requires": {
3588 "wrappy": "1"
3589 }
3590 },
3591 "onetime": {
3592 "version": "5.1.0",
3593 "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
3594 "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
3595 "dev": true,
3596 "requires": {
3597 "mimic-fn": "^2.1.0"
3598 }
3599 },
3600 "optionator": {
3601 "version": "0.8.3",
3602 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
3603 "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
3604 "dev": true,
3605 "requires": {
3606 "deep-is": "~0.1.3",
3607 "fast-levenshtein": "~2.0.6",
3608 "levn": "~0.3.0",
3609 "prelude-ls": "~1.1.2",
3610 "type-check": "~0.3.2",
3611 "word-wrap": "~1.2.3"
3612 }
3613 },
3614 "os-homedir": {
3615 "version": "1.0.2",
3616 "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
3617 "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
3618 "dev": true
3619 },
3620 "os-tmpdir": {
3621 "version": "1.0.2",
3622 "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
3623 "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
3624 "dev": true
3625 },
3626 "osenv": {
3627 "version": "0.1.5",
3628 "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
3629 "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
3630 "dev": true,
3631 "requires": {
3632 "os-homedir": "^1.0.0",
3633 "os-tmpdir": "^1.0.0"
3634 }
3635 },
3636 "parent-module": {
3637 "version": "1.0.1",
3638 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
3639 "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
3640 "dev": true,
3641 "requires": {
3642 "callsites": "^3.0.0"
3643 }
3644 },
3645 "path-is-absolute": {
3646 "version": "1.0.1",
3647 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
3648 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
3649 "dev": true
3650 },
3651 "path-key": {
3652 "version": "2.0.1",
3653 "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
3654 "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
3655 "dev": true
3656 },
3657 "path-parse": {
3658 "version": "1.0.6",
3659 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
3660 "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
3661 "dev": true
3662 },
3663 "performance-now": {
3664 "version": "2.1.0",
3665 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
3666 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
3667 "dev": true,
3668 "optional": true
3669 },
3670 "prelude-ls": {
3671 "version": "1.1.2",
3672 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
3673 "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
3674 "dev": true
3675 },
3676 "progress": {
3677 "version": "2.0.3",
3678 "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
3679 "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
3680 "dev": true
3681 },
3682 "promise": {
3683 "version": "7.3.1",
3684 "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
3685 "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
3686 "dev": true,
3687 "optional": true,
3688 "requires": {
3689 "asap": "~2.0.3"
3690 }
3691 },
3692 "prr": {
3693 "version": "1.0.1",
3694 "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
3695 "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
3696 "dev": true,
3697 "optional": true
3698 },
3699 "psl": {
3700 "version": "1.4.0",
3701 "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
3702 "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==",
3703 "dev": true,
3704 "optional": true
3705 },
3706 "punycode": {
3707 "version": "2.1.1",
3708 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
3709 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
3710 "dev": true
3711 },
3712 "qs": {
3713 "version": "6.5.2",
3714 "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
3715 "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
3716 "dev": true,
3717 "optional": true
3718 },
3719 "read-installed": {
3720 "version": "4.0.3",
3721 "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz",
3722 "integrity": "sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc=",
3723 "dev": true,
3724 "requires": {
3725 "debuglog": "^1.0.1",
3726 "graceful-fs": "^4.1.2",
3727 "read-package-json": "^2.0.0",
3728 "readdir-scoped-modules": "^1.0.0",
3729 "semver": "2 || 3 || 4 || 5",
3730 "slide": "~1.1.3",
3731 "util-extend": "^1.0.1"
3732 }
3733 },
3734 "read-package-json": {
3735 "version": "2.1.0",
3736 "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.0.tgz",
3737 "integrity": "sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A==",
3738 "dev": true,
3739 "requires": {
3740 "glob": "^7.1.1",
3741 "graceful-fs": "^4.1.2",
3742 "json-parse-better-errors": "^1.0.1",
3743 "normalize-package-data": "^2.0.0",
3744 "slash": "^1.0.0"
3745 }
3746 },
3747 "readable-stream": {
3748 "version": "3.6.0",
3749 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
3750 "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
3751 "dev": true,
3752 "requires": {
3753 "inherits": "^2.0.3",
3754 "string_decoder": "^1.1.1",
3755 "util-deprecate": "^1.0.1"
3756 }
3757 },
3758 "readdir-scoped-modules": {
3759 "version": "1.1.0",
3760 "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz",
3761 "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==",
3762 "dev": true,
3763 "requires": {
3764 "debuglog": "^1.0.1",
3765 "dezalgo": "^1.0.0",
3766 "graceful-fs": "^4.1.2",
3767 "once": "^1.3.0"
3768 }
3769 },
3770 "regexpp": {
3771 "version": "2.0.1",
3772 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
3773 "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
3774 "dev": true
3775 },
3776 "request": {
3777 "version": "2.88.0",
3778 "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
3779 "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
3780 "dev": true,
3781 "optional": true,
3782 "requires": {
3783 "aws-sign2": "~0.7.0",
3784 "aws4": "^1.8.0",
3785 "caseless": "~0.12.0",
3786 "combined-stream": "~1.0.6",
3787 "extend": "~3.0.2",
3788 "forever-agent": "~0.6.1",
3789 "form-data": "~2.3.2",
3790 "har-validator": "~5.1.0",
3791 "http-signature": "~1.2.0",
3792 "is-typedarray": "~1.0.0",
3793 "isstream": "~0.1.2",
3794 "json-stringify-safe": "~5.0.1",
3795 "mime-types": "~2.1.19",
3796 "oauth-sign": "~0.9.0",
3797 "performance-now": "^2.1.0",
3798 "qs": "~6.5.2",
3799 "safe-buffer": "^5.1.2",
3800 "tough-cookie": "~2.4.3",
3801 "tunnel-agent": "^0.6.0",
3802 "uuid": "^3.3.2"
3803 }
3804 },
3805 "resolve": {
3806 "version": "1.12.0",
3807 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
3808 "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
3809 "dev": true,
3810 "requires": {
3811 "path-parse": "^1.0.6"
3812 }
3813 },
3814 "resolve-from": {
3815 "version": "4.0.0",
3816 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
3817 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
3818 "dev": true
3819 },
3820 "restore-cursor": {
3821 "version": "3.1.0",
3822 "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
3823 "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
3824 "dev": true,
3825 "requires": {
3826 "onetime": "^5.1.0",
3827 "signal-exit": "^3.0.2"
3828 }
3829 },
3830 "rimraf": {
3831 "version": "2.6.3",
3832 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
3833 "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
3834 "dev": true,
3835 "requires": {
3836 "glob": "^7.1.3"
3837 }
3838 },
3839 "run-async": {
3840 "version": "2.3.0",
3841 "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
3842 "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
3843 "dev": true,
3844 "requires": {
3845 "is-promise": "^2.1.0"
3846 }
3847 },
3848 "rxjs": {
3849 "version": "6.5.4",
3850 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
3851 "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
3852 "dev": true,
3853 "requires": {
3854 "tslib": "^1.9.0"
3855 }
3856 },
3857 "safe-buffer": {
3858 "version": "5.2.0",
3859 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
3860 "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
3861 "dev": true
3862 },
3863 "safer-buffer": {
3864 "version": "2.1.2",
3865 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
3866 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
3867 "dev": true
3868 },
3869 "select2": {
3870 "version": "3.5.1",
3871 "resolved": "https://registry.npmjs.org/select2/-/select2-3.5.1.tgz",
3872 "integrity": "sha1-8oGUibvGX9bTKL5yu+K5XdfofP4="
3873 },
3874 "select2-bootstrap-css": {
3875 "version": "1.4.6",
3876 "resolved": "https://registry.npmjs.org/select2-bootstrap-css/-/select2-bootstrap-css-1.4.6.tgz",
3877 "integrity": "sha1-XPtoJG9SmcoYWOAe/XiIBMc0mX4="
3878 },
3879 "semver": {
3880 "version": "5.7.1",
3881 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
3882 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
3883 "dev": true
3884 },
3885 "shebang-command": {
3886 "version": "1.2.0",
3887 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
3888 "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
3889 "dev": true,
3890 "requires": {
3891 "shebang-regex": "^1.0.0"
3892 }
3893 },
3894 "shebang-regex": {
3895 "version": "1.0.0",
3896 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
3897 "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
3898 "dev": true
3899 },
3900 "signal-exit": {
3901 "version": "3.0.2",
3902 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
3903 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
3904 "dev": true
3905 },
3906 "slash": {
3907 "version": "1.0.0",
3908 "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
3909 "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
3910 "dev": true
3911 },
3912 "slice-ansi": {
3913 "version": "2.1.0",
3914 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
3915 "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
3916 "dev": true,
3917 "requires": {
3918 "ansi-styles": "^3.2.0",
3919 "astral-regex": "^1.0.0",
3920 "is-fullwidth-code-point": "^2.0.0"
3921 },
3922 "dependencies": {
3923 "is-fullwidth-code-point": {
3924 "version": "2.0.0",
3925 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
3926 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
3927 "dev": true
3928 }
3929 }
3930 },
3931 "slide": {
3932 "version": "1.1.6",
3933 "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
3934 "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
3935 "dev": true
3936 },
3937 "source-map": {
3938 "version": "0.6.1",
3939 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
3940 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
3941 "dev": true,
3942 "optional": true
3943 },
3944 "spdx-compare": {
3945 "version": "1.0.0",
3946 "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz",
3947 "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==",
3948 "dev": true,
3949 "requires": {
3950 "array-find-index": "^1.0.2",
3951 "spdx-expression-parse": "^3.0.0",
3952 "spdx-ranges": "^2.0.0"
3953 }
3954 },
3955 "spdx-correct": {
3956 "version": "3.1.0",
3957 "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
3958 "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
3959 "dev": true,
3960 "requires": {
3961 "spdx-expression-parse": "^3.0.0",
3962 "spdx-license-ids": "^3.0.0"
3963 }
3964 },
3965 "spdx-exceptions": {
3966 "version": "2.2.0",
3967 "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
3968 "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
3969 "dev": true
3970 },
3971 "spdx-expression-parse": {
3972 "version": "3.0.0",
3973 "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
3974 "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
3975 "dev": true,
3976 "requires": {
3977 "spdx-exceptions": "^2.1.0",
3978 "spdx-license-ids": "^3.0.0"
3979 }
3980 },
3981 "spdx-license-ids": {
3982 "version": "3.0.5",
3983 "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
3984 "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
3985 "dev": true
3986 },
3987 "spdx-ranges": {
3988 "version": "2.1.1",
3989 "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz",
3990 "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==",
3991 "dev": true
3992 },
3993 "spdx-satisfies": {
3994 "version": "4.0.1",
3995 "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz",
3996 "integrity": "sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==",
3997 "dev": true,
3998 "requires": {
3999 "spdx-compare": "^1.0.0",
4000 "spdx-expression-parse": "^3.0.0",
4001 "spdx-ranges": "^2.0.0"
4002 }
4003 },
4004 "sprintf-js": {
4005 "version": "1.0.3",
4006 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
4007 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
4008 "dev": true
4009 },
4010 "sshpk": {
4011 "version": "1.16.1",
4012 "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
4013 "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
4014 "dev": true,
4015 "optional": true,
4016 "requires": {
4017 "asn1": "~0.2.3",
4018 "assert-plus": "^1.0.0",
4019 "bcrypt-pbkdf": "^1.0.0",
4020 "dashdash": "^1.12.0",
4021 "ecc-jsbn": "~0.1.1",
4022 "getpass": "^0.1.1",
4023 "jsbn": "~0.1.0",
4024 "safer-buffer": "^2.0.2",
4025 "tweetnacl": "~0.14.0"
4026 }
4027 },
4028 "string_decoder": {
4029 "version": "1.3.0",
4030 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
4031 "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
4032 "dev": true,
4033 "requires": {
4034 "safe-buffer": "~5.2.0"
4035 }
4036 },
4037 "string-width": {
4038 "version": "4.2.0",
4039 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
4040 "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
4041 "dev": true,
4042 "requires": {
4043 "emoji-regex": "^8.0.0",
4044 "is-fullwidth-code-point": "^3.0.0",
4045 "strip-ansi": "^6.0.0"
4046 },
4047 "dependencies": {
4048 "strip-ansi": {
4049 "version": "6.0.0",
4050 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
4051 "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
4052 "dev": true,
4053 "requires": {
4054 "ansi-regex": "^5.0.0"
4055 }
4056 }
4057 }
4058 },
4059 "strip-ansi": {
4060 "version": "5.2.0",
4061 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
4062 "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
4063 "dev": true,
4064 "requires": {
4065 "ansi-regex": "^4.1.0"
4066 },
4067 "dependencies": {
4068 "ansi-regex": {
4069 "version": "4.1.0",
4070 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
4071 "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
4072 "dev": true
4073 }
4074 }
4075 },
4076 "strip-json-comments": {
4077 "version": "3.0.1",
4078 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
4079 "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
4080 "dev": true
4081 },
4082 "supports-color": {
4083 "version": "5.5.0",
4084 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
4085 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
4086 "dev": true,
4087 "requires": {
4088 "has-flag": "^3.0.0"
4089 }
4090 },
4091 "table": {
4092 "version": "5.4.6",
4093 "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
4094 "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
4095 "dev": true,
4096 "requires": {
4097 "ajv": "^6.10.2",
4098 "lodash": "^4.17.14",
4099 "slice-ansi": "^2.1.0",
4100 "string-width": "^3.0.0"
4101 },
4102 "dependencies": {
4103 "emoji-regex": {
4104 "version": "7.0.3",
4105 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
4106 "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
4107 "dev": true
4108 },
4109 "is-fullwidth-code-point": {
4110 "version": "2.0.0",
4111 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
4112 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
4113 "dev": true
4114 },
4115 "string-width": {
4116 "version": "3.1.0",
4117 "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
4118 "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
4119 "dev": true,
4120 "requires": {
4121 "emoji-regex": "^7.0.1",
4122 "is-fullwidth-code-point": "^2.0.0",
4123 "strip-ansi": "^5.1.0"
4124 }
4125 }
4126 }
4127 },
4128 "text-table": {
4129 "version": "0.2.0",
4130 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
4131 "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
4132 "dev": true
4133 },
4134 "through": {
4135 "version": "2.3.8",
4136 "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
4137 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
4138 "dev": true
4139 },
4140 "tmp": {
4141 "version": "0.0.33",
4142 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
4143 "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
4144 "dev": true,
4145 "requires": {
4146 "os-tmpdir": "~1.0.2"
4147 }
4148 },
4149 "tough-cookie": {
4150 "version": "2.4.3",
4151 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
4152 "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
4153 "dev": true,
4154 "optional": true,
4155 "requires": {
4156 "psl": "^1.1.24",
4157 "punycode": "^1.4.1"
4158 },
4159 "dependencies": {
4160 "punycode": {
4161 "version": "1.4.1",
4162 "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
4163 "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
4164 "dev": true,
4165 "optional": true
4166 }
4167 }
4168 },
4169 "treeify": {
4170 "version": "1.1.0",
4171 "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
4172 "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
4173 "dev": true
4174 },
4175 "tslib": {
4176 "version": "1.11.0",
4177 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.0.tgz",
4178 "integrity": "sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg==",
4179 "dev": true
4180 },
4181 "tunnel-agent": {
4182 "version": "0.6.0",
4183 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
4184 "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
4185 "dev": true,
4186 "optional": true,
4187 "requires": {
4188 "safe-buffer": "^5.0.1"
4189 }
4190 },
4191 "tweetnacl": {
4192 "version": "0.14.5",
4193 "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
4194 "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
4195 "dev": true,
4196 "optional": true
4197 },
4198 "type-check": {
4199 "version": "0.3.2",
4200 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
4201 "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
4202 "dev": true,
4203 "requires": {
4204 "prelude-ls": "~1.1.2"
4205 }
4206 },
4207 "type-fest": {
4208 "version": "0.8.1",
4209 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
4210 "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
4211 "dev": true
4212 },
4213 "uri-js": {
4214 "version": "4.2.2",
4215 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
4216 "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
4217 "dev": true,
4218 "requires": {
4219 "punycode": "^2.1.0"
4220 }
4221 },
4222 "util-deprecate": {
4223 "version": "1.0.2",
4224 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
4225 "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
4226 "dev": true
4227 },
4228 "util-extend": {
4229 "version": "1.0.3",
4230 "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz",
4231 "integrity": "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=",
4232 "dev": true
4233 },
4234 "uuid": {
4235 "version": "3.3.3",
4236 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
4237 "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
4238 "dev": true,
4239 "optional": true
4240 },
4241 "v8-compile-cache": {
4242 "version": "2.1.0",
4243 "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
4244 "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
4245 "dev": true
4246 },
4247 "validate-npm-package-license": {
4248 "version": "3.0.4",
4249 "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
4250 "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
4251 "dev": true,
4252 "requires": {
4253 "spdx-correct": "^3.0.0",
4254 "spdx-expression-parse": "^3.0.0"
4255 }
4256 },
4257 "verror": {
4258 "version": "1.10.0",
4259 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
4260 "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
4261 "dev": true,
4262 "optional": true,
4263 "requires": {
4264 "assert-plus": "^1.0.0",
4265 "core-util-is": "1.0.2",
4266 "extsprintf": "^1.2.0"
4267 }
4268 },
4269 "which": {
4270 "version": "1.3.1",
4271 "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
4272 "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
4273 "dev": true,
4274 "requires": {
4275 "isexe": "^2.0.0"
4276 }
4277 },
4278 "word-wrap": {
4279 "version": "1.2.3",
4280 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
4281 "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
4282 "dev": true
4283 },
4284 "wrappy": {
4285 "version": "1.0.2",
4286 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
4287 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
4288 "dev": true
4289 },
4290 "write": {
4291 "version": "1.0.3",
4292 "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
4293 "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
4294 "dev": true,
4295 "requires": {
4296 "mkdirp": "^0.5.1"
4297 }
4298 }
4299 }
4300 }
@@ -1,23 +1,23 b''
1 1 {
2 2 "name": "kallithea",
3 3 "private": true,
4 4 "dependencies": {
5 "at.js": "1.5.4",
6 "bootstrap": "3.3.7",
7 "codemirror": "5.49.0",
8 "datatables.net": "1.10.20",
9 "datatables.net-bs": "1.10.20",
10 "jquery": "3.4.1",
11 "jquery.caret": "0.3.1",
12 "jquery.flot": "0.8.3",
13 "select2": "3.5.1",
5 "at.js": "1.5",
6 "bootstrap": "3",
7 "codemirror": "5",
8 "datatables.net": "1",
9 "datatables.net-bs": "1",
10 "jquery": "3",
11 "jquery.caret": "0.3",
12 "jquery.flot": "0.8",
13 "select2": "3",
14 14 "select2-bootstrap-css": "1.4.6"
15 15 },
16 16 "devDependencies": {
17 "eslint": "6.8.0",
18 "eslint-plugin-html": "6.0.0",
19 "less": "3.10.3",
20 "less-plugin-clean-css": "1.5.1",
21 "license-checker": "25.0.1"
17 "eslint": "6",
18 "eslint-plugin-html": "6",
19 "less": "3",
20 "less-plugin-clean-css": "1.5",
21 "license-checker": "25"
22 22 }
23 23 }
@@ -1,2539 +1,2539 b''
1 1 # Copyright (C) 2016 Various authors, licensing as GPLv3
2 2 # This file is distributed under the same license as the Kallithea project.
3 3
4 4 msgid ""
5 5 msgstr ""
6 6 "Report-Msgid-Bugs-To: translations@kallithea-scm.org\n"
7 7 "Language: be\n"
8 8 "MIME-Version: 1.0\n"
9 9 "Content-Type: text/plain; charset=UTF-8\n"
10 10 "Content-Transfer-Encoding: 8bit\n"
11 11 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
12 12 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
13 13
14 14 msgid "Repository not found in the filesystem"
15 15 msgstr "Рэпазітар не знойдзены на файлавай сістэме"
16 16
17 17 msgid "There are no changesets yet"
18 18 msgstr "Яшчэ не было змен"
19 19
20 20 msgid "Changeset for %s %s not found in %s"
21 21 msgstr "Набор змен для %s %s не знойдзены ў %s"
22 22
23 23 msgid "None"
24 24 msgstr "Нічога"
25 25
26 26 msgid "(closed)"
27 27 msgstr "(зачынена)"
28 28
29 29 msgid "Successfully deleted pull request %s"
30 30 msgstr "Pull-запыт %s паспяхова выдалены"
31 31
32 32 msgid "Such revision does not exist for this repository"
33 33 msgstr "Няма такой рэвізіі ў гэтым рэпазітары"
34 34
35 35 msgid "Could not find other repository %s"
36 36 msgstr "Не атрымалася знайсці іншы рэпазітар %s"
37 37
38 38 msgid "Cannot compare repositories of different types"
39 39 msgstr "Немагчыма параўноўваць рэпазітары розных тыпаў"
40 40
41 41 msgid "Cannot compare repositories without using common ancestor"
42 42 msgstr "Немагчыма параўноўваць рэпазітары без агульнага продка"
43 43
44 44 msgid "No response"
45 45 msgstr "Няма адказу"
46 46
47 47 msgid "Unknown error"
48 48 msgstr "Невядомая памылка"
49 49
50 50 msgid ""
51 51 "The request could not be understood by the server due to malformed syntax."
52 52 msgstr "Запыт не распазнаны серверам з-за няправільнага сінтаксісу."
53 53
54 54 msgid "Unauthorized access to resource"
55 55 msgstr "Несанкцыянаваны доступ да рэсурсу"
56 56
57 57 msgid "You don't have permission to view this page"
58 58 msgstr "У вас няма правоў для прагляду гэтай старонкі"
59 59
60 60 msgid "The resource could not be found"
61 61 msgstr "Рэсурс не знойдзены"
62 62
63 63 msgid ""
64 64 "The server encountered an unexpected condition which prevented it from "
65 65 "fulfilling the request."
66 66 msgstr ""
67 67 "Сервер не можа выканаць запыт з-за нечаканых умоваў, якія ўзніклі падчас "
68 68 "яго спрацавання."
69 69
70 70 msgid "%s committed on %s"
71 71 msgstr "%s выканаў каміт у %s"
72 72
73 73 msgid "Changeset was too big and was cut off..."
74 74 msgstr "Змены апынуліся занадта вялікімі і былі скарочаныя..."
75 75
76 76 msgid "%s %s feed"
77 77 msgstr "Стужка навін %s %s"
78 78
79 79 msgid "Changes on %s repository"
80 80 msgstr "Змены ў рэпазітары %s"
81 81
82 82 msgid "Click here to add new file"
83 83 msgstr "Націсніце каб дадаць новы файл"
84 84
85 85 msgid "%s at %s"
86 86 msgstr "%s (%s)"
87 87
88 88 msgid "You can only delete files with revision being a valid branch"
89 89 msgstr "Вы можаце выдаляць файлы толькі ў рэвізіі, злучанай з існай галінай"
90 90
91 91 msgid "Deleted file %s via Kallithea"
92 92 msgstr "Файл %s выдалены з дапамогай Kallithea"
93 93
94 94 msgid "Successfully deleted file %s"
95 95 msgstr "Файл %s выдалены"
96 96
97 97 msgid "Error occurred during commit"
98 98 msgstr "Падчас каміта адбылася памылка"
99 99
100 100 msgid "You can only edit files with revision being a valid branch"
101 101 msgstr ""
102 102 "Вы можаце рэдагаваць файлы толькі ў рэвізіі, злучанай з існай галінай"
103 103
104 104 msgid "Edited file %s via Kallithea"
105 105 msgstr "Файл %s адрэдагаваны з дапамогай Kallithea"
106 106
107 107 msgid "No changes"
108 108 msgstr "Без змен"
109 109
110 110 msgid "Successfully committed to %s"
111 111 msgstr "Змены захаваныя ў %s"
112 112
113 113 msgid "Added file via Kallithea"
114 114 msgstr "Файл дададзены з дапамогай Kallithea"
115 115
116 116 msgid "No content"
117 117 msgstr "Пуста"
118 118
119 119 msgid "No filename"
120 120 msgstr "Безназоўны"
121 121
122 122 msgid "Location must be relative path and must not contain .. in path"
123 123 msgstr ""
124 124 "Размяшчэнне павінна быць адносным шляхам, і не можа ўтрымліваць \"..\" у "
125 125 "шляхі"
126 126
127 127 msgid "Downloads disabled"
128 128 msgstr "Магчымасць спампоўваць адключаная"
129 129
130 130 msgid "Unknown revision %s"
131 131 msgstr "Невядомая рэвізія %s"
132 132
133 133 msgid "Empty repository"
134 134 msgstr "Пусты рэпазітар"
135 135
136 136 msgid "Unknown archive type"
137 137 msgstr "Невядомы тып архіва"
138 138
139 139 msgid "Changesets"
140 140 msgstr "Набор змен"
141 141
142 142 msgid "Branches"
143 143 msgstr "Галіны"
144 144
145 145 msgid "Tags"
146 146 msgstr "Тэгі"
147 147
148 148 msgid "An error occurred during repository forking %s"
149 149 msgstr "Памылка падчас стварэння форка рэпазітара %s"
150 150
151 151 msgid "Groups"
152 152 msgstr "Групы"
153 153
154 154 msgid "Repositories"
155 155 msgstr "Рэпазітары"
156 156
157 157 msgid "Branch"
158 158 msgstr "Галіна"
159 159
160 160 msgid "Closed Branches"
161 161 msgstr "Зачыненыя галіны"
162 162
163 163 msgid "Tag"
164 164 msgstr "Тэгі"
165 165
166 166 msgid "Bookmark"
167 167 msgstr "Закладкі"
168 168
169 169 msgid "Public Journal"
170 170 msgstr "Публічны журнал"
171 171
172 172 msgid "Journal"
173 173 msgstr "Журнал"
174 174
175 175 msgid "Bad captcha"
176 176 msgstr "Няслушная капча"
177 177
178 178 msgid "You have successfully registered with %s"
179 179 msgstr "Рэгістрацыя ў %s прайшла паспяхова"
180 180
181 181 msgid "A password reset confirmation code has been sent"
182 182 msgstr "Код для скідання пароля адпраўлены"
183 183
184 184 msgid "Invalid password reset token"
185 185 msgstr "Няслушны код скідання пароля"
186 186
187 187 msgid "Successfully updated password"
188 188 msgstr "Пароль абноўлены"
189 189
190 190 msgid "Invalid reviewer \"%s\" specified"
191 191 msgstr "Няслушны рэцэнзент \"%s\""
192 192
193 193 msgid "%s (closed)"
194 194 msgstr "%s (зачынена)"
195 195
196 196 msgid "Changeset"
197 197 msgstr "Змены"
198 198
199 199 msgid "Special"
200 200 msgstr "Адмысловы"
201 201
202 202 msgid "Peer branches"
203 203 msgstr "Галіны ўдзельніка"
204 204
205 205 msgid "Bookmarks"
206 206 msgstr "Закладкі"
207 207
208 208 msgid "Error creating pull request: %s"
209 209 msgstr "Памылка пры стварэнні pull-запыту: %s"
210 210
211 211 msgid "Error occurred while creating pull request"
212 212 msgstr "Адбылася памылка пры стварэнні pull-запыту"
213 213
214 214 msgid "Successfully opened new pull request"
215 215 msgstr "Pull-запыт створаны паспяхова"
216 216
217 217 msgid "No description"
218 218 msgstr "Няма апісання"
219 219
220 220 msgid "Pull request updated"
221 221 msgstr "Pull-запыт абноўлены"
222 222
223 223 msgid "Successfully deleted pull request"
224 224 msgstr "Pull-запыт паспяхова выдалены"
225 225
226 226 msgid "This pull request has already been merged to %s."
227 227 msgstr "Гэты pull-запыт ужо прыняты на галіну %s."
228 228
229 229 msgid "This pull request has been closed and can not be updated."
230 230 msgstr "Гэты pull-запыт быў зачынены і не можа быць абноўлены."
231 231
232 232 msgid "Note: Branch %s has another head: %s."
233 233 msgstr "Увага: Галіна %s мае яшчэ адну верхавіну: %s."
234 234
235 235 msgid "Invalid search query. Try quoting it."
236 236 msgstr "Недапушчальны пошукавы запыт. Паспрабуйце скласці яго ў двукоссі."
237 237
238 238 msgid "An error occurred during search operation."
239 239 msgstr "Памылка пры выкананні гэтага пошуку."
240 240
241 241 msgid "No data ready yet"
242 242 msgstr "Няма дадзеных"
243 243
244 244 msgid "Statistics are disabled for this repository"
245 245 msgstr "Статыстычныя дадзеныя адключаны для гэтага рэпазітара"
246 246
247 247 msgid "Auth settings updated successfully"
248 248 msgstr "Налады аўтарызацыі паспяхова абноўлены"
249 249
250 250 msgid "error occurred during update of auth settings"
251 251 msgstr "памылка пры абнаўленні налад аўтарызацыі"
252 252
253 253 msgid "Default settings updated successfully"
254 254 msgstr "Стандартныя налады паспяхова абноўлены"
255 255
256 256 msgid "Error occurred during update of defaults"
257 257 msgstr "Памылка пры абнаўленні стандартных налад"
258 258
259 259 msgid "Forever"
260 260 msgstr "Назаўжды"
261 261
262 262 msgid "5 minutes"
263 263 msgstr "5 хвілін"
264 264
265 265 msgid "1 hour"
266 266 msgstr "1 гадзіна"
267 267
268 268 msgid "1 day"
269 269 msgstr "1 дзень"
270 270
271 271 msgid "1 month"
272 272 msgstr "1 месяц"
273 273
274 274 msgid "Lifetime"
275 275 msgstr "Тэрмін"
276 276
277 277 msgid "Error occurred during gist creation"
278 278 msgstr "Адбылася памылка падчас стварэння gist-запіса"
279 279
280 280 msgid "Deleted gist %s"
281 281 msgstr "Gist-запіс %s выдалены"
282 282
283 283 msgid "Unmodified"
284 284 msgstr "Без змен"
285 285
286 286 msgid "Successfully updated gist content"
287 287 msgstr "Gist-запіс абноўлены"
288 288
289 289 msgid "Successfully updated gist data"
290 290 msgstr "Gist-запіс абноўлены"
291 291
292 292 msgid "Error occurred during update of gist %s"
293 293 msgstr "Памылка пры абнаўленні gist-запісу %s"
294 294
295 295 msgid "You can't edit this user since it's crucial for entire application"
296 296 msgstr ""
297 297 "Вы не можаце змяніць дадзеныя гэтага карыстальніка, паколькі ён важны для "
298 298 "працы ўсёй праграмы"
299 299
300 300 msgid "Your account was updated successfully"
301 301 msgstr "Ваш уліковы запіс паспяхова абноўлены"
302 302
303 303 msgid "Error occurred during update of user %s"
304 304 msgstr "Памылка пры абнаўленні карыстальніка %s"
305 305
306 306 msgid "Error occurred during update of user password"
307 307 msgstr "Памылка пры абнаўленні пароля"
308 308
309 309 msgid "Added email %s to user"
310 310 msgstr "Карыстальніку дададзены e-mail %s"
311 311
312 312 msgid "An error occurred during email saving"
313 313 msgstr "Памылка пры захаванні e-mail"
314 314
315 315 msgid "Removed email from user"
316 316 msgstr "E-mail карыстальніка выдалены"
317 317
318 318 msgid "API key successfully created"
319 319 msgstr "API-ключ паспяхова створаны"
320 320
321 321 msgid "API key successfully reset"
322 322 msgstr "API-ключ паспяхова скінуты"
323 323
324 324 msgid "API key successfully deleted"
325 325 msgstr "API-ключ паспяхова выдалены"
326 326
327 327 msgid "Read"
328 328 msgstr "Чытанне"
329 329
330 330 msgid "Write"
331 331 msgstr "Запіс"
332 332
333 333 msgid "Admin"
334 334 msgstr "Адміністратар"
335 335
336 336 msgid "Disabled"
337 337 msgstr "Адключана"
338 338
339 339 msgid "Allowed with manual account activation"
340 340 msgstr "Дазволена, з ручной актывацыяй уліковага запісу"
341 341
342 342 msgid "Allowed with automatic account activation"
343 343 msgstr "Дазволена, з аўтаматычнай актывацыяй уліковага запісу"
344 344
345 345 msgid "Manual activation of external account"
346 346 msgstr "Ручная актывацыя вонкавага ўліковага запісу"
347 347
348 348 msgid "Automatic activation of external account"
349 349 msgstr "Аўтаматычная актывацыя вонкавага ўліковага запісу"
350 350
351 351 msgid "Enabled"
352 352 msgstr "Уключана"
353 353
354 354 msgid "Global permissions updated successfully"
355 355 msgstr "Глабальныя прывілеі паспяхова абноўленыя"
356 356
357 357 msgid "Error occurred during update of permissions"
358 358 msgstr "Адбылася памылка падчас абнаўлення прывілеяў"
359 359
360 360 msgid "Error occurred during creation of repository group %s"
361 361 msgstr "Адбылася памылка пры стварэнні групы рэпазітароў %s"
362 362
363 363 msgid "Created repository group %s"
364 364 msgstr "Створаная новая група рэпазітароў %s"
365 365
366 366 msgid "Updated repository group %s"
367 367 msgstr "Група рэпазітароў %s абноўленая"
368 368
369 369 msgid "Error occurred during update of repository group %s"
370 370 msgstr "Адбылася памылка пры абнаўленні групы рэпазітароў %s"
371 371
372 372 msgid "This group contains %s repositories and cannot be deleted"
373 373 msgstr "Група ўтрымлівае %s рэпазітароў і не можа быць выдаленая"
374 374
375 375 msgid "This group contains %s subgroups and cannot be deleted"
376 376 msgstr "Група ўтрымлівае ў сабе %s падгруп і не можа быць выдаленая"
377 377
378 378 msgid "Removed repository group %s"
379 379 msgstr "Група рэпазітароў %s выдаленая"
380 380
381 381 msgid "Error occurred during deletion of repository group %s"
382 382 msgstr "Памылка пры выдаленні групы рэпазітароў %s"
383 383
384 msgid "Cannot revoke permission for yourself as admin"
385 msgstr "Адміністратар не можа адклікаць свае прывелеі"
386
387 384 msgid "Repository group permissions updated"
388 385 msgstr "Прывілеі групы рэпазітароў абноўленыя"
389 386
390 387 msgid "An error occurred during revoking of permission"
391 388 msgstr "Памылка пры водгуку прывелея"
392 389
393 390 msgid "Error creating repository %s"
394 391 msgstr "Памылка пры стварэнні рэпазітара %s"
395 392
396 393 msgid "Created repository %s from %s"
397 394 msgstr "Рэпазітар %s створаны з %s"
398 395
399 396 msgid "Forked repository %s as %s"
400 397 msgstr "Зроблены форк рэпазітара %s на %s"
401 398
402 399 msgid "Created repository %s"
403 400 msgstr "Рэпазітар %s створаны"
404 401
405 402 msgid "Repository %s updated successfully"
406 403 msgstr "Рэпазітар %s паспяхова абноўлены"
407 404
408 405 msgid "Error occurred during update of repository %s"
409 406 msgstr "Памылка падчас абнаўлення рэпазітара %s"
410 407
411 408 msgid "Detached %s forks"
412 409 msgstr "Форкі %s адлучаныя"
413 410
414 411 msgid "Deleted %s forks"
415 412 msgstr "Выдаленыя форки рэпазітара %s"
416 413
417 414 msgid "Deleted repository %s"
418 415 msgstr "Рэпазітар %s выдалены"
419 416
420 417 msgid "Cannot delete repository %s which still has forks"
421 418 msgstr "Немагчыма выдаліць %s, ён усё яшчэ мае форкі"
422 419
423 420 msgid "An error occurred during deletion of %s"
424 421 msgstr "Памылка падчас выдалення %s"
425 422
426 423 msgid "Repository permissions updated"
427 424 msgstr "Прывілеі рэпазітара абноўленыя"
428 425
429 426 msgid "An error occurred during removal of field"
430 427 msgstr "Памылка пры выдаленні поля"
431 428
432 429 msgid "-- Not a fork --"
433 430 msgstr "-- Не форк --"
434 431
435 432 msgid "Updated repository visibility in public journal"
436 433 msgstr "Бачнасць рэпазітара ў публічным часопісе абноўлена"
437 434
438 435 msgid "An error occurred during setting this repository in public journal"
439 436 msgstr "Памылка пры даданні рэпазітара ў агульнадаступны часопіс"
440 437
441 438 msgid "Nothing"
442 439 msgstr "Нічога"
443 440
444 441 msgid "Marked repository %s as fork of %s"
445 442 msgstr "Рэпазітар %s адзначаны як форк %s"
446 443
447 444 msgid "An error occurred during this operation"
448 445 msgstr "Памылка пры выкананні аперацыі"
449 446
450 447 msgid "Pulled from remote location"
451 448 msgstr "Занесеныя змены з аддаленага рэпазітара"
452 449
453 450 msgid "An error occurred during pull from remote location"
454 451 msgstr "Памылка пры занясенні змен з аддаленага рэпазітара"
455 452
456 453 msgid "An error occurred during deletion of repository stats"
457 454 msgstr "Адбылася памылка пры выдаленні статыстыкі рэпазітара"
458 455
459 456 msgid "Updated VCS settings"
460 457 msgstr "Абноўлены налады VCS"
461 458
462 459 msgid "Error occurred while updating application settings"
463 460 msgstr "Памылка пры абнаўленні наладаў праграмы"
464 461
465 462 msgid "Repositories successfully rescanned. Added: %s. Removed: %s."
466 463 msgstr "Рэпазітары паспяхова перасканаваныя, дададзена: %s, выдалена: %s."
467 464
468 465 msgid "Invalidated %s repositories"
469 466 msgstr "Скінуць кэш для %s рэпазітароў"
470 467
471 468 msgid "Updated application settings"
472 469 msgstr "Абноўленыя налады праграмы"
473 470
474 471 msgid "Updated visualisation settings"
475 472 msgstr "Налады візуалізацыі абноўленыя"
476 473
477 474 msgid "Error occurred during updating visualisation settings"
478 475 msgstr "Адбылася памылка пры абнаўленні наладаў візуалізацыі"
479 476
480 477 msgid "Please enter email address"
481 478 msgstr "Калі ласка, увядзіце e-mail-адрас"
482 479
483 480 msgid "Send email task created"
484 481 msgstr "Задача адпраўкі e-mail створаная"
485 482
486 483 msgid "Added new hook"
487 484 msgstr "Дададзены новы хук"
488 485
489 486 msgid "Updated hooks"
490 487 msgstr "Абноўленыя хукі"
491 488
492 489 msgid "Error occurred during hook creation"
493 490 msgstr "Памылка пры стварэнні хука"
494 491
495 492 msgid "Whoosh reindex task scheduled"
496 493 msgstr "Запланаванае пераіндэксаванне базы Whoosh"
497 494
498 495 msgid "Created user group %s"
499 496 msgstr "Створана група карыстальнікаў %s"
500 497
501 498 msgid "Error occurred during creation of user group %s"
502 499 msgstr "Памылка пры стварэнні групы карыстальнікаў %s"
503 500
504 501 msgid "Updated user group %s"
505 502 msgstr "Група карыстальнікаў %s абноўленая"
506 503
507 504 msgid "Error occurred during update of user group %s"
508 505 msgstr "Памылка пры абнаўленні групы карыстальнікаў %s"
509 506
510 507 msgid "Successfully deleted user group"
511 508 msgstr "Група карыстальнікаў паспяхова выдаленая"
512 509
513 510 msgid "An error occurred during deletion of user group"
514 511 msgstr "Памылка пры выдаленні групы карыстальнікаў"
515 512
516 513 msgid "Target group cannot be the same"
517 514 msgstr "Мэтавая група не можа быць той жа самай"
518 515
519 516 msgid "User group permissions updated"
520 517 msgstr "Прывілеі групы карыстальнікаў абноўленыя"
521 518
519 msgid "Cannot revoke permission for yourself as admin"
520 msgstr "Адміністратар не можа адклікаць свае прывелеі"
521
522 522 msgid "Updated permissions"
523 523 msgstr "Абноўленыя прывілеі"
524 524
525 525 msgid "An error occurred during permissions saving"
526 526 msgstr "Памылка пры захаванні прывілеяў"
527 527
528 528 msgid "Created user %s"
529 529 msgstr "Карыстальнік %s створаны"
530 530
531 531 msgid "Error occurred during creation of user %s"
532 532 msgstr "Памылка пры стварэнні карыстальніка %s"
533 533
534 534 msgid "User updated successfully"
535 535 msgstr "Карыстальнік паспяхова абноўлены"
536 536
537 537 msgid "Successfully deleted user"
538 538 msgstr "Карыстальнік паспяхова выдалены"
539 539
540 540 msgid "An error occurred during deletion of user"
541 541 msgstr "Памылка пры выдаленні карыстальніка"
542 542
543 543 msgid "Added IP address %s to user whitelist"
544 544 msgstr "Дададзены IP %s у белы спіс карыстальніка"
545 545
546 546 msgid "An error occurred while adding IP address"
547 547 msgstr "Адбылася памылка пры захаванні IP"
548 548
549 549 msgid "Removed IP address from user whitelist"
550 550 msgstr "Выдалены IP %s з белага спісу карыстальніка"
551 551
552 552 msgid "You need to be a registered user to perform this action"
553 553 msgstr ""
554 554 "Вы павінны быць зарэгістраваным карыстальнікам, каб выканаць гэта дзеянне"
555 555
556 556 msgid "You need to be signed in to view this page"
557 557 msgstr "Старонка даступная толькі аўтарызаваным карыстальнікам"
558 558
559 559 msgid "Binary file"
560 560 msgstr "Двайковы файл"
561 561
562 562 msgid ""
563 563 "Changeset was too big and was cut off, use diff menu to display this diff"
564 564 msgstr ""
565 565 "Набор змены апынуўся занадта вялікімі і быў падрэзаны, выкарыстоўвайце "
566 566 "меню параўнання для паказу выніку параўнання"
567 567
568 568 msgid "No changes detected"
569 569 msgstr "Змен не выяўлена"
570 570
571 571 msgid "Increase diff context to %(num)s lines"
572 572 msgstr "Павялічыць кантэкст да %(num)s радкоў"
573 573
574 574 msgid "Deleted branch: %s"
575 575 msgstr "Выдаленая галіна: %s"
576 576
577 577 msgid "Created tag: %s"
578 578 msgstr "Створаны тэг: %s"
579 579
580 580 msgid "Changeset %s not found"
581 581 msgstr "Набор змен %s не знойдзены"
582 582
583 583 msgid "Show all combined changesets %s->%s"
584 584 msgstr "Паказаць адрозненні разам %s->%s"
585 585
586 586 msgid "Compare view"
587 587 msgstr "Параўнанне"
588 588
589 589 msgid "and"
590 590 msgstr "і"
591 591
592 592 msgid "%s more"
593 593 msgstr "на %s больш"
594 594
595 595 msgid "revisions"
596 596 msgstr "версіі"
597 597
598 598 msgid "Fork name %s"
599 599 msgstr "Імя форка %s"
600 600
601 601 msgid "Pull request %s"
602 602 msgstr "Pull-запыт %s"
603 603
604 604 msgid "[deleted] repository"
605 605 msgstr "[выдалены] рэпазітар"
606 606
607 607 msgid "[created] repository"
608 608 msgstr "[створаны] рэпазітар"
609 609
610 610 msgid "[created] repository as fork"
611 611 msgstr "[створаны] рэпазітар як форк"
612 612
613 613 msgid "[forked] repository"
614 614 msgstr "[форкнуты] рэпазітар"
615 615
616 616 msgid "[updated] repository"
617 617 msgstr "[абноўлены] рэпазітар"
618 618
619 619 msgid "[downloaded] archive from repository"
620 620 msgstr "[загружаны] архіў з рэпазітара"
621 621
622 622 msgid "[delete] repository"
623 623 msgstr "[выдалены] рэпазітар"
624 624
625 625 msgid "[created] user"
626 626 msgstr "[створаны] карыстальнік"
627 627
628 628 msgid "[updated] user"
629 629 msgstr "[абноўлены] карыстальнік"
630 630
631 631 msgid "[created] user group"
632 632 msgstr "[створана] група карыстальнікаў"
633 633
634 634 msgid "[updated] user group"
635 635 msgstr "[абноўлена] група карыстальнікаў"
636 636
637 637 msgid "[commented] on revision in repository"
638 638 msgstr "[каментар] да рэвізіі ў рэпазітары"
639 639
640 640 msgid "[commented] on pull request for"
641 641 msgstr "[каментар] у pull-запыце для"
642 642
643 643 msgid "[closed] pull request for"
644 644 msgstr "[зачынены] pull-запыт для"
645 645
646 646 msgid "[pushed] into"
647 647 msgstr "[адпраўлена] у"
648 648
649 649 msgid "[committed via Kallithea] into repository"
650 650 msgstr "[каміт праз Kallithea] у рэпазітары"
651 651
652 652 msgid "[pulled from remote] into repository"
653 653 msgstr "[занесены з аддаленага рэпазітара] у рэпазітар"
654 654
655 655 msgid "[pulled] from"
656 656 msgstr "[занесены] з"
657 657
658 658 msgid "[started following] repository"
659 659 msgstr "[дададзены ў назіранні] рэпазітар"
660 660
661 661 msgid "[stopped following] repository"
662 662 msgstr "[выдалены з назірання] рэпазітар"
663 663
664 664 msgid " and %s more"
665 665 msgstr " і на %s больш"
666 666
667 667 msgid "No files"
668 668 msgstr "Няма файлаў"
669 669
670 670 msgid "new file"
671 671 msgstr "новы файл"
672 672
673 673 msgid "mod"
674 674 msgstr "зменены"
675 675
676 676 msgid "del"
677 677 msgstr "выдалены"
678 678
679 679 msgid "rename"
680 680 msgstr "пераназваны"
681 681
682 682 msgid "chmod"
683 683 msgstr "chmod"
684 684
685 685 msgid "%d year"
686 686 msgid_plural "%d years"
687 687 msgstr[0] "%d год"
688 688 msgstr[1] "%d гады"
689 689 msgstr[2] "%d гадоў"
690 690
691 691 msgid "%d month"
692 692 msgid_plural "%d months"
693 693 msgstr[0] "%d месяц"
694 694 msgstr[1] "%d месяцы"
695 695 msgstr[2] "%d месяцаў"
696 696
697 697 msgid "%d day"
698 698 msgid_plural "%d days"
699 699 msgstr[0] "%d дзень"
700 700 msgstr[1] "%d дні"
701 701 msgstr[2] "%d дзён"
702 702
703 703 msgid "%d hour"
704 704 msgid_plural "%d hours"
705 705 msgstr[0] "%d гадзіна"
706 706 msgstr[1] "%d гадзіны"
707 707 msgstr[2] "%d гадзін"
708 708
709 709 msgid "%d minute"
710 710 msgid_plural "%d minutes"
711 711 msgstr[0] "%d хвіліна"
712 712 msgstr[1] "%d хвіліны"
713 713 msgstr[2] "%d хвілін"
714 714
715 715 msgid "%d second"
716 716 msgid_plural "%d seconds"
717 717 msgstr[0] "%d секунда"
718 718 msgstr[1] "%d секунды"
719 719 msgstr[2] "%d секунд"
720 720
721 721 msgid "in %s"
722 722 msgstr "у %s"
723 723
724 724 msgid "%s ago"
725 725 msgstr "%s назад"
726 726
727 727 msgid "in %s and %s"
728 728 msgstr "у %s і %s"
729 729
730 730 msgid "%s and %s ago"
731 731 msgstr "%s і %s назад"
732 732
733 733 msgid "just now"
734 734 msgstr "цяпер"
735 735
736 736 msgid "top level"
737 737 msgstr "верхні ўзровень"
738 738
739 739 msgid "Kallithea Administrator"
740 740 msgstr "Адміністратар Kallithea"
741 741
742 742 msgid "Only admins can create user groups"
743 743 msgstr "Толькі адміністратары могуць ствараць групы карыстальнікаў"
744 744
745 745 msgid "Non-admins can create user groups"
746 746 msgstr "Неадміністратары могуць ствараць групы карыстальнікаў"
747 747
748 748 msgid "Only admins can create top level repositories"
749 749 msgstr "Толькі адміністратары могуць ствараць рэпазітары верхняга ўзроўню"
750 750
751 751 msgid "Non-admins can create top level repositories"
752 752 msgstr "Неадміністратары могуць ствараць рэпазітары верхняга ўзроўню"
753 753
754 754 msgid "Only admins can fork repositories"
755 755 msgstr "Месцазнаходжанне рэпазітароў"
756 756
757 757 msgid "Registration disabled"
758 758 msgstr "Рэгістрацыя адключаная"
759 759
760 760 msgid "User registration with manual account activation"
761 761 msgstr "Рэгістрацыя карыстальніка з ручной актывацыяй уліковага запісу"
762 762
763 763 msgid "User registration with automatic account activation"
764 764 msgstr "Рэгістрацыя карыстальніка з аўтаматычнай актывацыяй"
765 765
766 766 msgid "Not reviewed"
767 767 msgstr "Не прагледжана"
768 768
769 769 msgid "Under review"
770 770 msgstr "На разглядзе"
771 771
772 772 msgid "Approved"
773 773 msgstr "Ухвалена"
774 774
775 775 msgid "Please enter a login"
776 776 msgstr "Калі ласка, увядзіце лагін"
777 777
778 778 msgid "Enter a value %(min)i characters long or more"
779 779 msgstr "Увядзіце значэнне даўжынёй не меней %(min)i знакаў"
780 780
781 781 msgid "Please enter a password"
782 782 msgstr "Калі ласка, увядзіце пароль"
783 783
784 784 msgid "Enter %(min)i characters or more"
785 785 msgstr "Увядзіце не меней %(min)i знакаў"
786 786
787 787 msgid "Name must not contain only digits"
788 788 msgstr "Імя не можа ўтрымліваць толькі лічбы"
789 789
790 790 msgid "New user %(new_username)s registered"
791 791 msgstr "Новы карыстальнік \"%(new_username)s\" зарэгістраваны"
792 792
793 793 msgid "Closing"
794 794 msgstr "Зачынены"
795 795
796 796 msgid "latest tip"
797 797 msgstr "апошняя версія"
798 798
799 799 msgid ""
800 800 "You can't remove this user since it is crucial for the entire application"
801 801 msgstr ""
802 802 "Вы не можаце выдаліць карыстальніка, паколькі гэта крытычна для працы "
803 803 "ўсёй праграмы"
804 804
805 805 msgid ""
806 806 "User \"%s\" still owns %s repositories and cannot be removed. Switch "
807 807 "owners or remove those repositories: %s"
808 808 msgstr ""
809 809 "Карыстальнік \"%s\" усё яшчэ з'яўляецца ўладальнікам %s рэпазітароў і "
810 810 "таму не можа быць выдалены. Змяніце ўладальніка ці выдаліце гэтыя "
811 811 "рэпазітары: %s"
812 812
813 813 msgid ""
814 814 "User \"%s\" still owns %s repository groups and cannot be removed. Switch "
815 815 "owners or remove those repository groups: %s"
816 816 msgstr ""
817 817 "Карыстальнік \"%s\" усё яшчэ з'яўляецца ўладальнікам %s груп рэпазітароў "
818 818 "і таму не можа быць выдалены. Змяніце ўладальніка ці выдаліце гэтая "
819 819 "групы: %s"
820 820
821 821 msgid ""
822 822 "User \"%s\" still owns %s user groups and cannot be removed. Switch "
823 823 "owners or remove those user groups: %s"
824 824 msgstr ""
825 825 "Карыстальнік \"%s\" усё яшчэ з'яўляецца ўладальнікам %s груп "
826 826 "карыстальнікаў і таму не можа быць выдалены. Змяніце ўладальніка ці "
827 827 "выдаліце гэтыя групы: %s"
828 828
829 829 msgid "Password reset link"
830 830 msgstr "Спасылка скіду пароля"
831 831
832 832 msgid "Password reset notification"
833 833 msgstr "Паведамленне пра скіданне пароля"
834 834
835 835 msgid "Value cannot be an empty list"
836 836 msgstr "Значэнне не можа быць пустым спісам"
837 837
838 838 msgid "Username \"%(username)s\" already exists"
839 839 msgstr "Карыстальнік з імем \"%(username)s\" ужо існуе"
840 840
841 841 msgid "Username \"%(username)s\" cannot be used"
842 842 msgstr "Імя \"%(username)s\" недапушчальнае"
843 843
844 844 msgid ""
845 845 "Username may only contain alphanumeric characters underscores, periods or "
846 846 "dashes and must begin with an alphanumeric character or underscore"
847 847 msgstr ""
848 848 "Імя карыстальніка можа ўтрымоўваць толькі літары, лічбы, знакі "
849 849 "падкрэслення, кропкі і працяжнік; а гэтак жа павінна пачынацца з літары, "
850 850 "лічбы або са знака падкрэслення"
851 851
852 852 msgid "Username %(username)s is not valid"
853 853 msgstr "Імя \"%(username)s\" недапушчальнае"
854 854
855 855 msgid "Invalid user group name"
856 856 msgstr "Няслушнае імя групы карыстальнікаў"
857 857
858 858 msgid "User group \"%(usergroup)s\" already exists"
859 859 msgstr "Група карыстальнікаў \"%(usergroup)s\" ужо існуе"
860 860
861 861 msgid ""
862 862 "user group name may only contain alphanumeric characters underscores, "
863 863 "periods or dashes and must begin with alphanumeric character"
864 864 msgstr ""
865 865 "імя групы карыстальнікаў можа ўтрымоўваць толькі літары, лічбы, знакі "
866 866 "падкрэслення, кропкі і працяжнік; а гэтак жа павінна пачынацца з літары "
867 867 "ці лічбы"
868 868
869 869 msgid "Cannot assign this group as parent"
870 870 msgstr "Немагчыма выкарыстоўваць гэту групу як бацькоўскую"
871 871
872 872 msgid "Group \"%(group_name)s\" already exists"
873 873 msgstr "Група \"%(group_name)s\" ужо існуе"
874 874
875 875 msgid "Repository with name \"%(group_name)s\" already exists"
876 876 msgstr "Рэпазітар з імем \"%(group_name)s\" ужо існуе"
877 877
878 878 msgid "Invalid characters (non-ascii) in password"
879 879 msgstr "Недапушчальныя знакі (не ascii) у паролі"
880 880
881 881 msgid "Invalid old password"
882 882 msgstr "Няслушна зададзены стары пароль"
883 883
884 884 msgid "Passwords do not match"
885 885 msgstr "Паролі не супадаюць"
886 886
887 887 msgid "Invalid username or password"
888 888 msgstr "Няслушнае імя ці пароль"
889 889
890 890 msgid "Repository name %(repo)s is not allowed"
891 891 msgstr "Імя рэпазітара %(repo)s забароненае"
892 892
893 893 msgid "Repository named %(repo)s already exists"
894 894 msgstr "Рэпазітар %(repo)s ужо існуе"
895 895
896 896 msgid "Repository \"%(repo)s\" already exists in group \"%(group)s\""
897 897 msgstr "Рэпазітар \"%(repo)s\" ужо існуе ў групе \"%(group)s\""
898 898
899 899 msgid "Repository group with name \"%(repo)s\" already exists"
900 900 msgstr "Група рэпазітароў \"%(repo)s\" ужо існуе"
901 901
902 902 msgid "Invalid repository URL"
903 903 msgstr "Няслушны URL рэпазітара"
904 904
905 905 msgid "Fork has to be the same type as parent"
906 906 msgstr "Тып форка будзе супадаць з бацькоўскім"
907 907
908 908 msgid "You don't have permissions to create repository in this group"
909 909 msgstr "У вас недастаткова правоў для стварэння рэпазітароў у гэтай групе"
910 910
911 911 msgid "no permission to create repository in root location"
912 912 msgstr "недастаткова правоў для стварэння рэпазітара ў каранёвым каталогу"
913 913
914 914 msgid "You don't have permissions to create a group in this location"
915 915 msgstr "У Вас недастаткова прывілеяў для стварэння групы ў гэтым месцы"
916 916
917 917 msgid "This username or user group name is not valid"
918 918 msgstr "Дадзенае імя карыстальніка ці групы карыстальнікаў недапушчальна"
919 919
920 920 msgid "This is not a valid path"
921 921 msgstr "Гэты шлях хібны"
922 922
923 923 msgid "This email address is already in use"
924 924 msgstr "Гэты e-mail ужо ўжываецца"
925 925
926 926 msgid "Email address \"%(email)s\" not found"
927 927 msgstr "Email-адрас \"%(email)s\" не знойдзены"
928 928
929 929 msgid ""
930 930 "The LDAP Login attribute of the CN must be specified - this is the name "
931 931 "of the attribute that is equivalent to \"username\""
932 932 msgstr ""
933 933 "Для ўваходу па LDAP павінна быць паказана значэнне атрыбута CN - гэта "
934 934 "эквівалент імя карыстальніка"
935 935
936 936 msgid "Please enter a valid IPv4 or IPv6 address"
937 937 msgstr "Калі ласка, увядзіце існы IPv4 ці IPv6 адрас"
938 938
939 939 msgid ""
940 940 "The network size (bits) must be within the range of 0-32 (not %(bits)r)"
941 941 msgstr ""
942 942 "Значэнне маскі падсеткі павінна быць у межах ад 0 да 32 (%(bits)r - "
943 943 "няслушна)"
944 944
945 945 msgid "Key name can only consist of letters, underscore, dash or numbers"
946 946 msgstr ""
947 947 "Ключавое імя можа толькі складацца з літар, знака падкрэслення, працяжнік "
948 948 "ці лікаў"
949 949
950 950 msgid "Filename cannot be inside a directory"
951 951 msgstr "Файла няма ў каталогу"
952 952
953 953 msgid "About"
954 954 msgstr "Пра праграму"
955 955
956 956 msgid "Add Repository"
957 957 msgstr "Дадаць рэпазітар"
958 958
959 959 msgid "Add Repository Group"
960 960 msgstr "Дадаць групу рэпазітароў"
961 961
962 962 msgid "You have admin right to this group, and can edit it"
963 963 msgstr ""
964 964 "Вы маеце адміністратарскія правы на гэту групу і можаце рэдагаваць яе"
965 965
966 966 msgid "Edit Repository Group"
967 967 msgstr "Змяніць групу рэпазітароў"
968 968
969 969 msgid "Repository"
970 970 msgstr "Рэпазітар"
971 971
972 972 msgid "Description"
973 973 msgstr "Апісанне"
974 974
975 975 msgid "Last Change"
976 976 msgstr "Апошняя змена"
977 977
978 978 msgid "Tip"
979 979 msgstr "Стан"
980 980
981 981 msgid "Owner"
982 982 msgstr "Уладальнік"
983 983
984 984 msgid "Log In"
985 985 msgstr "Увайсці"
986 986
987 987 msgid "Log In to %s"
988 988 msgstr "Увайсці ў %s"
989 989
990 990 msgid "Username"
991 991 msgstr "Імя карыстальніка"
992 992
993 993 msgid "Password"
994 994 msgstr "Пароль"
995 995
996 996 msgid "Forgot your password?"
997 997 msgstr "Забыліся на пароль?"
998 998
999 999 msgid "Don't have an account?"
1000 1000 msgstr "Няма акаўнта?"
1001 1001
1002 1002 msgid "Sign In"
1003 1003 msgstr "Увайсці"
1004 1004
1005 1005 msgid "Password Reset"
1006 1006 msgstr "Скінуць пароль"
1007 1007
1008 1008 msgid "Reset Your Password to %s"
1009 1009 msgstr "Забыліся на пароль для %s?"
1010 1010
1011 1011 msgid "Reset Your Password"
1012 1012 msgstr "Скінуць Ваш пароль"
1013 1013
1014 1014 msgid "Email Address"
1015 1015 msgstr "Паштовы адрас"
1016 1016
1017 1017 msgid "Captcha"
1018 1018 msgstr "Капча"
1019 1019
1020 1020 msgid "Send Password Reset Email"
1021 1021 msgstr "Паслаць спасылку для скідання пароля"
1022 1022
1023 1023 msgid ""
1024 1024 "A password reset link will be sent to the specified email address if it "
1025 1025 "is registered in the system."
1026 1026 msgstr ""
1027 1027 "Спасылка для скіду пароля будзе адпраўленая на адпаведны email-адрас, "
1028 1028 "калі ён зарэгістраваны ў сістэме."
1029 1029
1030 1030 msgid "New Password"
1031 1031 msgstr "Новы пароль"
1032 1032
1033 1033 msgid "Confirm New Password"
1034 1034 msgstr "Пацвердзіце новы пароль"
1035 1035
1036 1036 msgid "Sign Up"
1037 1037 msgstr "Рэгістрацыя"
1038 1038
1039 1039 msgid "Sign Up to %s"
1040 1040 msgstr "Рэгістрацыя на %s"
1041 1041
1042 1042 msgid "Re-enter password"
1043 1043 msgstr "Паўтарыце пароль"
1044 1044
1045 1045 msgid "First Name"
1046 1046 msgstr "Імя"
1047 1047
1048 1048 msgid "Last Name"
1049 1049 msgstr "Прозвішча"
1050 1050
1051 1051 msgid "Email"
1052 1052 msgstr "E-mail"
1053 1053
1054 1054 msgid "Please wait for an administrator to activate your account."
1055 1055 msgstr ""
1056 1056 "Калі ласка, пачакайце, пакуль адміністратар пацвердзіць Вашу рэгістрацыю."
1057 1057
1058 1058 msgid "Admin Journal"
1059 1059 msgstr "Журнал адміністратара"
1060 1060
1061 1061 msgid "journal filter..."
1062 1062 msgstr "Фільтр журнала..."
1063 1063
1064 1064 msgid "Filter"
1065 1065 msgstr "Адфільтраваць"
1066 1066
1067 1067 msgid "%s Entry"
1068 1068 msgid_plural "%s Entries"
1069 1069 msgstr[0] "%s запіс"
1070 1070 msgstr[1] "%s запісаў"
1071 1071 msgstr[2] "%s запісы"
1072 1072
1073 1073 msgid "Action"
1074 1074 msgstr "Дзеянне"
1075 1075
1076 1076 msgid "Date"
1077 1077 msgstr "Дата"
1078 1078
1079 1079 msgid "From IP"
1080 1080 msgstr "З IP"
1081 1081
1082 1082 msgid "No actions yet"
1083 1083 msgstr "Няма інфармацыі"
1084 1084
1085 1085 msgid "Authentication Settings"
1086 1086 msgstr "Налады аўтэнтыфікацыі"
1087 1087
1088 1088 msgid "Authentication"
1089 1089 msgstr "Аўтэнтыфікацыя"
1090 1090
1091 1091 msgid "Authentication Plugins"
1092 1092 msgstr "Плагіны аўтэнтыфікацыі"
1093 1093
1094 1094 msgid "Enabled Plugins"
1095 1095 msgstr "Уключаныя плагіны"
1096 1096
1097 1097 msgid ""
1098 1098 "Comma-separated list of plugins; Kallithea will try user authentication "
1099 1099 "in plugin order"
1100 1100 msgstr ""
1101 1101 "Спіс плагінаў, падзеленых коскамі. Kallithea будзе спрабаваць "
1102 1102 "аўтэнтыфікаваць карыстальніка ў парадку ўказання плагінаў"
1103 1103
1104 1104 msgid "Available built-in plugins"
1105 1105 msgstr "Даступныя ўбудаваныя плагіны"
1106 1106
1107 1107 msgid "Plugin"
1108 1108 msgstr "Плагін"
1109 1109
1110 1110 msgid "Save"
1111 1111 msgstr "Захаваць"
1112 1112
1113 1113 msgid "Repository Defaults"
1114 1114 msgstr "Значэнні па змоўчанні"
1115 1115
1116 1116 msgid "Type"
1117 1117 msgstr "Тып"
1118 1118
1119 1119 msgid "Private repository"
1120 1120 msgstr "Прыватны рэпазітар"
1121 1121
1122 1122 msgid ""
1123 1123 "Private repositories are only visible to people explicitly added as "
1124 1124 "collaborators."
1125 1125 msgstr "Прыватныя рэпазітары бачныя толькі іх удзельнікам."
1126 1126
1127 1127 msgid "Enable statistics"
1128 1128 msgstr "Уключыць статыстыку"
1129 1129
1130 1130 msgid "Enable statistics window on summary page."
1131 1131 msgstr "Уключыць акно статыстыкі на старонцы «Агульныя звесткі»."
1132 1132
1133 1133 msgid "Enable downloads"
1134 1134 msgstr "Уключыць спампоўку"
1135 1135
1136 1136 msgid "Enable download menu on summary page."
1137 1137 msgstr "Уключыць меню спампоўкі на старонцы «Агульныя звесткі»."
1138 1138
1139 1139 msgid "Edit Gist"
1140 1140 msgstr "Правіць gist-запіс"
1141 1141
1142 1142 msgid "Gist description ..."
1143 1143 msgstr "Апісанне..."
1144 1144
1145 1145 msgid "Expires"
1146 1146 msgstr "Мінае"
1147 1147
1148 1148 msgid "Never"
1149 1149 msgstr "Ніколі"
1150 1150
1151 1151 msgid "Update Gist"
1152 1152 msgstr "Абнавіць"
1153 1153
1154 1154 msgid "Cancel"
1155 1155 msgstr "Адмена"
1156 1156
1157 1157 msgid "Private Gists for User %s"
1158 1158 msgstr "Прыватны gist-запіс для карыстальніка %s"
1159 1159
1160 1160 msgid "Public Gists for User %s"
1161 1161 msgstr "Публічны gist-запіс для карыстальніка %s"
1162 1162
1163 1163 msgid "Public Gists"
1164 1164 msgstr "Публічныя gist-запісы"
1165 1165
1166 1166 msgid "Create New Gist"
1167 1167 msgstr "Стварыць новы gist-запіс"
1168 1168
1169 1169 msgid "Created"
1170 1170 msgstr "Створаны"
1171 1171
1172 1172 msgid "There are no gists yet"
1173 1173 msgstr "Gist-запісы адсутнічаюць"
1174 1174
1175 1175 msgid "New Gist"
1176 1176 msgstr "Новы gist-запіс"
1177 1177
1178 1178 msgid "Reset"
1179 1179 msgstr "Скінуць"
1180 1180
1181 1181 msgid "URL"
1182 1182 msgstr "URL"
1183 1183
1184 1184 msgid "Delete"
1185 1185 msgstr "Выдаліць"
1186 1186
1187 1187 msgid "Confirm to delete this Gist"
1188 1188 msgstr "Пацвердзіце выдаленне гэтага gist-запісу"
1189 1189
1190 1190 msgid "Edit"
1191 1191 msgstr "Рэдагаваць"
1192 1192
1193 1193 msgid "Show as Raw"
1194 1194 msgstr "Паказаць толькі тэкст"
1195 1195
1196 1196 msgid "created"
1197 1197 msgstr "створана"
1198 1198
1199 1199 msgid "Show as raw"
1200 1200 msgstr "Паказаць толькі тэкст"
1201 1201
1202 1202 msgid "My Account"
1203 1203 msgstr "Мой Акаўнт"
1204 1204
1205 1205 msgid "Profile"
1206 1206 msgstr "Профіль"
1207 1207
1208 1208 msgid "Email Addresses"
1209 1209 msgstr "E-mail адрэсы"
1210 1210
1211 1211 msgid "API Keys"
1212 1212 msgstr "API-ключы"
1213 1213
1214 1214 msgid "Owned Repositories"
1215 1215 msgstr "Мае рэпазітары"
1216 1216
1217 1217 msgid "Show Permissions"
1218 1218 msgstr "Паказаць прывілеі"
1219 1219
1220 1220 msgid "Built-in"
1221 1221 msgstr "Убудаваны"
1222 1222
1223 1223 msgid "Confirm to reset this API key: %s"
1224 1224 msgstr "Пацвердзіць скіданне гэтага API-ключа: %s"
1225 1225
1226 1226 msgid "Expired"
1227 1227 msgstr "Ануляваны"
1228 1228
1229 1229 msgid "Confirm to remove this API key: %s"
1230 1230 msgstr "Пацвердзіце выдаленне гэтага API-ключа: %s"
1231 1231
1232 1232 msgid "Remove"
1233 1233 msgstr "Выдаліць"
1234 1234
1235 1235 msgid "No additional API keys specified"
1236 1236 msgstr "Дадатковыя API-ключы не пазначаныя"
1237 1237
1238 1238 msgid "New API key"
1239 1239 msgstr "Новы API-ключ"
1240 1240
1241 1241 msgid "Add"
1242 1242 msgstr "Дадаць"
1243 1243
1244 1244 msgid "Primary"
1245 1245 msgstr "Асноўны"
1246 1246
1247 1247 msgid "Confirm to delete this email: %s"
1248 1248 msgstr "Пацвердзіце выдаленне e-mail: %s"
1249 1249
1250 1250 msgid "No additional emails specified."
1251 1251 msgstr "Дадатковыя адрасы e-mail не пазначаны."
1252 1252
1253 1253 msgid "New email address"
1254 1254 msgstr "Новы e-mail"
1255 1255
1256 1256 msgid "Change Your Account Password"
1257 1257 msgstr "Змена пароля"
1258 1258
1259 1259 msgid "Current password"
1260 1260 msgstr "Цяперашні пароль"
1261 1261
1262 1262 msgid "New password"
1263 1263 msgstr "Новы пароль"
1264 1264
1265 1265 msgid "Confirm new password"
1266 1266 msgstr "Пацвердзіце новы пароль"
1267 1267
1268 1268 msgid "Current IP"
1269 1269 msgstr "Цяперашні IP-адрас"
1270 1270
1271 1271 msgid "Avatars are disabled"
1272 1272 msgstr "Аватары адключаныя"
1273 1273
1274 1274 msgid "Repositories You Own"
1275 1275 msgstr "Рэпазітары, дзе Вы — уладальнік"
1276 1276
1277 1277 msgid "Name"
1278 1278 msgstr "Імя"
1279 1279
1280 1280 msgid "Repositories You are Watching"
1281 1281 msgstr "Рэпазітары, за якімі Вы назіраеце"
1282 1282
1283 1283 msgid "Default Permissions"
1284 1284 msgstr "Стандартныя прывілеі"
1285 1285
1286 1286 msgid "Global"
1287 1287 msgstr "Глабальныя"
1288 1288
1289 1289 msgid "IP Whitelist"
1290 1290 msgstr "Белы спіс IP"
1291 1291
1292 1292 msgid "Anonymous access"
1293 1293 msgstr "Ананімны доступ"
1294 1294
1295 1295 msgid ""
1296 1296 "All default permissions on each repository will be reset to chosen "
1297 1297 "permission, note that all custom default permission on repositories will "
1298 1298 "be lost"
1299 1299 msgstr ""
1300 1300 "Выбраныя прывілеі будуць усталяваныя па змоўчанні для кожнага рэпазітара. "
1301 1301 "Улічыце, што раней усталяваныя прывілеі па змоўчанні будуць скінутыя"
1302 1302
1303 1303 msgid "Repository group"
1304 1304 msgstr "Група рэпазітароў"
1305 1305
1306 1306 msgid ""
1307 1307 "All default permissions on each repository group will be reset to chosen "
1308 1308 "permission, note that all custom default permission on repository groups "
1309 1309 "will be lost"
1310 1310 msgstr ""
1311 1311 "Выбраныя прывілеі будуць усталяваныя па змоўчанні для кожнай групы "
1312 1312 "рэпазітароў. Улічыце, што раней усталяваныя прывілеі па змоўчанні для "
1313 1313 "груп рэпазітароў будуць скінутыя"
1314 1314
1315 1315 msgid "User group"
1316 1316 msgstr "Група карыстальнікаў"
1317 1317
1318 1318 msgid ""
1319 1319 "All default permissions on each user group will be reset to chosen "
1320 1320 "permission, note that all custom default permission on user groups will "
1321 1321 "be lost"
1322 1322 msgstr ""
1323 1323 "Выбраныя прывілеі будуць усталяваныя па змоўчанні для кожнай групы "
1324 1324 "карыстальнікаў. Улічыце, што раней усталяваныя прывілеі па змоўчанні для "
1325 1325 "груп карыстальнікаў будуць скінутыя"
1326 1326
1327 1327 msgid "User group creation"
1328 1328 msgstr "Стварэнне груп карыстальнікаў"
1329 1329
1330 1330 msgid "Repository forking"
1331 1331 msgstr "Стварэнне форка рэпазітара"
1332 1332
1333 1333 msgid "Registration"
1334 1334 msgstr "Рэгістрацыя"
1335 1335
1336 1336 msgid "External auth account activation"
1337 1337 msgstr "Актывацыя іншага ўліковага запісу"
1338 1338
1339 1339 msgid "Confirm to delete this IP address: %s"
1340 1340 msgstr "Пацвердзіце выдаленне IP %s"
1341 1341
1342 1342 msgid "All IP addresses are allowed."
1343 1343 msgstr "Дазволены любыя IP-адрасы."
1344 1344
1345 1345 msgid "New IP address"
1346 1346 msgstr "Новы IP-адрас"
1347 1347
1348 1348 msgid "Repository Groups"
1349 1349 msgstr "Групы рэпазітароў"
1350 1350
1351 1351 msgid "Group name"
1352 1352 msgstr "Імя групы"
1353 1353
1354 1354 msgid "Group parent"
1355 1355 msgstr "Бацькоўская група"
1356 1356
1357 1357 msgid "%s Repository Group Settings"
1358 1358 msgstr "Налады групы рэпазітароў %s"
1359 1359
1360 1360 msgid "Add Child Group"
1361 1361 msgstr "Дадаць падгрупу"
1362 1362
1363 1363 msgid "Settings"
1364 1364 msgstr "Налады"
1365 1365
1366 1366 msgid "Advanced"
1367 1367 msgstr "Дадаткова"
1368 1368
1369 1369 msgid "Permissions"
1370 1370 msgstr "Прывілеі"
1371 1371
1372 1372 msgid "Repository Group: %s"
1373 1373 msgstr "Група рэпазітароў: %s"
1374 1374
1375 1375 msgid "Top level repositories"
1376 1376 msgstr "Рэпазітары верхняга ўзроўню"
1377 1377
1378 1378 msgid "Created on"
1379 1379 msgstr "Створана"
1380 1380
1381 1381 msgid "Confirm to delete this group: %s with %s repository"
1382 1382 msgid_plural "Confirm to delete this group: %s with %s repositories"
1383 1383 msgstr[0] "Пацвердзіце выдаленне групы %s, утрымоўвалай %s рэпазітар"
1384 1384 msgstr[1] "Пацвердзіце выдаленне групы %s, утрымоўвалай %s рэпазітара"
1385 1385 msgstr[2] "Пацвердзіце выдаленне групы %s, утрымоўвалай %s рэпазітароў"
1386 1386
1387 1387 msgid "Delete this repository group"
1388 1388 msgstr "Выдаліць гэту групу рэпазітароў"
1389 1389
1390 1390 msgid "User/User Group"
1391 1391 msgstr "Карыстальнік/група карыстальнікаў"
1392 1392
1393 1393 msgid "Default"
1394 1394 msgstr "Па змоўчанні"
1395 1395
1396 1396 msgid "Revoke"
1397 1397 msgstr "Адклікаць"
1398 1398
1399 1399 msgid "Add new"
1400 1400 msgstr "Дадаць новы"
1401 1401
1402 1402 msgid "Both"
1403 1403 msgstr "Абедзьве"
1404 1404
1405 1405 msgid "Remove this group"
1406 1406 msgstr "Выдаліць гэту групу"
1407 1407
1408 1408 msgid "Confirm to delete this group"
1409 1409 msgstr "Пацвердзіце выдаленне гэтай групы карыстальнікаў"
1410 1410
1411 1411 msgid "Repository Groups Administration"
1412 1412 msgstr "Адміністраванне груп рэпазітароў"
1413 1413
1414 1414 msgid "Number of Top-level Repositories"
1415 1415 msgstr "Лік рэпазітароў верхняга ўзроўня"
1416 1416
1417 1417 msgid "Type of repository to create."
1418 1418 msgstr "Тып стваранага рэпазітара."
1419 1419
1420 1420 msgid "Repository URL"
1421 1421 msgstr "URL рэпазітара"
1422 1422
1423 1423 msgid ""
1424 1424 "Keep it short and to the point. Use a README file for longer descriptions."
1425 1425 msgstr ""
1426 1426 "Кароткае і асэнсаванае. Для разгорнутага апісання выкарыстоўвайце файл "
1427 1427 "README."
1428 1428
1429 1429 msgid "Optionally select a group to put this repository into."
1430 1430 msgstr "Апцыянальна абраць групу, у якую змясціць дадзены рэпазітар."
1431 1431
1432 1432 msgid "Landing revision"
1433 1433 msgstr "Рэвізія для выгрузкі"
1434 1434
1435 1435 msgid "%s Creating Repository"
1436 1436 msgstr "Стварэнне рэпазітара %s"
1437 1437
1438 1438 msgid "Creating repository"
1439 1439 msgstr "Стварэнне рэпазітара"
1440 1440
1441 1441 msgid "%s Repository Settings"
1442 1442 msgstr "Налады рэпазітара %s"
1443 1443
1444 1444 msgid "Extra Fields"
1445 1445 msgstr "Дадатковыя палі"
1446 1446
1447 1447 msgid "Remote"
1448 1448 msgstr "Выдалены"
1449 1449
1450 1450 msgid "Statistics"
1451 1451 msgstr "Статыстыка"
1452 1452
1453 1453 msgid "Parent"
1454 1454 msgstr "Бацькоўская група"
1455 1455
1456 1456 msgid "Set"
1457 1457 msgstr "Набор"
1458 1458
1459 1459 msgid "Manually set this repository as a fork of another from the list."
1460 1460 msgstr "Уручную зрабіць гэты рэпазітар форкам выбранага са спісу."
1461 1461
1462 1462 msgid "Public Journal Visibility"
1463 1463 msgstr "Доступ да публічнага журналу"
1464 1464
1465 1465 msgid "Remove from public journal"
1466 1466 msgstr "Выдаліць з агульнадаступнага журналу"
1467 1467
1468 1468 msgid "Add to Public Journal"
1469 1469 msgstr "Дадаць у публічны журнал"
1470 1470
1471 1471 msgid ""
1472 1472 "All actions done in this repository will be visible to everyone in the "
1473 1473 "public journal."
1474 1474 msgstr ""
1475 1475 "Усе выконваемыя з гэтым рэпазітаром дзеянні будуць адлюстроўвацца ў "
1476 1476 "публічным журнал."
1477 1477
1478 1478 msgid "Confirm to delete this repository: %s"
1479 1479 msgstr "Пацвердзіце выдаленне гэтага рэпазітара: %s"
1480 1480
1481 1481 msgid "Delete this Repository"
1482 1482 msgstr "Выдаліць гэты рэпазітар"
1483 1483
1484 1484 msgid "This repository has %s fork"
1485 1485 msgid_plural "This repository has %s forks"
1486 1486 msgstr[0] "Дадзены рэпазітар мае %s копію"
1487 1487 msgstr[1] "Дадзены рэпазітар мае %s копіі"
1488 1488 msgstr[2] "Дадзены рэпазітар мае %s копій"
1489 1489
1490 1490 msgid "Detach forks"
1491 1491 msgstr "Адлучыць форкі"
1492 1492
1493 1493 msgid "Delete forks"
1494 1494 msgstr "Выдаліць форкі"
1495 1495
1496 1496 msgid "Key"
1497 1497 msgstr "Ключ"
1498 1498
1499 1499 msgid "Confirm to delete this field: %s"
1500 1500 msgstr "Пацвердзіце выдаленне гэтага поля: %s"
1501 1501
1502 1502 msgid "New field key"
1503 1503 msgstr "Ключ"
1504 1504
1505 1505 msgid "New field label"
1506 1506 msgstr "Імя поля"
1507 1507
1508 1508 msgid "Enter short label"
1509 1509 msgstr "Увядзіце кароткае імя поля"
1510 1510
1511 1511 msgid "New field description"
1512 1512 msgstr "Апісанне поля"
1513 1513
1514 1514 msgid "Enter description of a field"
1515 1515 msgstr "Увядзіце апісанне поля"
1516 1516
1517 1517 msgid "Extra fields are disabled."
1518 1518 msgstr "Дадатковыя палі адключаныя."
1519 1519
1520 1520 msgid "Private Repository"
1521 1521 msgstr "Прыватны рэпазітар"
1522 1522
1523 1523 msgid "Remote repository URL"
1524 1524 msgstr "URL аддаленага рэпазітара"
1525 1525
1526 1526 msgid "Pull Changes from Remote Repository"
1527 1527 msgstr "Занесці змены з аддаленага рэпазітара"
1528 1528
1529 1529 msgid "Confirm to pull changes from remote repository."
1530 1530 msgstr "Пацвердзіце спампоўку змен з аддаленага рэпазітара."
1531 1531
1532 1532 msgid "Remote repository"
1533 1533 msgstr "Аддалены рэпазітар"
1534 1534
1535 1535 msgid "Change owner of this repository."
1536 1536 msgstr "Змяніць уладальніка рэпазітара."
1537 1537
1538 1538 msgid "Reset Statistics"
1539 1539 msgstr "Скід статыстыкі"
1540 1540
1541 1541 msgid "Confirm to remove current statistics."
1542 1542 msgstr "Пацвердзіце скіданне статыстыкі."
1543 1543
1544 1544 msgid "Repositories Administration"
1545 1545 msgstr "Адміністраванне рэпазітароў"
1546 1546
1547 1547 msgid "State"
1548 1548 msgstr "Стан"
1549 1549
1550 1550 msgid "Settings Administration"
1551 1551 msgstr "Адміністраванне налад"
1552 1552
1553 1553 msgid "Hooks"
1554 1554 msgstr "Хукі"
1555 1555
1556 1556 msgid "Full Text Search"
1557 1557 msgstr "Паўнатэкставы пошук"
1558 1558
1559 1559 msgid "System Info"
1560 1560 msgstr "Інфармацыя пра сістэму"
1561 1561
1562 1562 msgid "Send test email to"
1563 1563 msgstr "Адаслаць тэставае паведамленне на"
1564 1564
1565 1565 msgid "Send"
1566 1566 msgstr "Адправіць"
1567 1567
1568 1568 msgid "Site branding"
1569 1569 msgstr "Брэндынг сайта"
1570 1570
1571 1571 msgid "HTTP authentication realm"
1572 1572 msgstr "Прывітанне для HTTP-аўтэнтыфікацыі"
1573 1573
1574 1574 msgid "Save Settings"
1575 1575 msgstr "Захаваць налады"
1576 1576
1577 1577 msgid "Failed to remove hook"
1578 1578 msgstr "Не атрымалася выдаліць хук"
1579 1579
1580 1580 msgid "Delete records of missing repositories"
1581 1581 msgstr "Сцерці запісы пра выдаленыя рэпазітары"
1582 1582
1583 1583 msgid "Invalidate cache for all repositories"
1584 1584 msgstr "Скінуць кэш для ўсіх рэпазітароў"
1585 1585
1586 1586 msgid "Check this to reload data and clear cache keys for all repositories."
1587 1587 msgstr "Скінуць кэш для ўсіх рэпазітароў."
1588 1588
1589 1589 msgid "Index build option"
1590 1590 msgstr "Опцыі стварэння індэксу"
1591 1591
1592 1592 msgid "Build from scratch"
1593 1593 msgstr "Зборка з нуля"
1594 1594
1595 1595 msgid "Reindex"
1596 1596 msgstr "Перабудаваць індэкс"
1597 1597
1598 1598 msgid "Checking for updates..."
1599 1599 msgstr "Праверка абнаўленняў..."
1600 1600
1601 1601 msgid "Kallithea version"
1602 1602 msgstr "Версія Kallithea"
1603 1603
1604 1604 msgid "Platform"
1605 1605 msgstr "Платформа"
1606 1606
1607 1607 msgid "Git version"
1608 1608 msgstr "Версія Git"
1609 1609
1610 1610 msgid "Show repository size after push"
1611 1611 msgstr "Паказваць памер рэпазітара пасля адпраўкі"
1612 1612
1613 1613 msgid "Update repository after push (hg update)"
1614 1614 msgstr "Абнаўляць рэпазітар пасля адпраўкі (hg update)"
1615 1615
1616 1616 msgid "Mercurial extensions"
1617 1617 msgstr "Пашырэнні Mercurial"
1618 1618
1619 1619 msgid "Enable largefiles extension"
1620 1620 msgstr "Уключыць падтрымку вялікіх файлаў"
1621 1621
1622 1622 msgid "Location of repositories"
1623 1623 msgstr "Месцазнаходжанне рэпазітароў"
1624 1624
1625 1625 msgid ""
1626 1626 "Click to unlock. You must restart Kallithea in order to make this setting "
1627 1627 "take effect."
1628 1628 msgstr ""
1629 1629 "Націсніце для разблакавання. Змены набудуць моц пасля перазагрузкі "
1630 1630 "Kallithea."
1631 1631
1632 1632 msgid "General"
1633 1633 msgstr "Галоўнае"
1634 1634
1635 1635 msgid "Use repository extra fields"
1636 1636 msgstr "Выкарыстоўваць дадатковыя палі ў рэпазітарах"
1637 1637
1638 1638 msgid "Allows storing additional customized fields per repository."
1639 1639 msgstr "Дазваляе захоўваць дадатковыя палі ў рэпазітарах."
1640 1640
1641 1641 msgid "Show Kallithea version"
1642 1642 msgstr "Адлюстроўваць версію Kallithea"
1643 1643
1644 1644 msgid ""
1645 1645 "Shows or hides a version number of Kallithea displayed in the footer."
1646 1646 msgstr "Паказвае або хавае нумар версіі Kallithea ў ніжняй частцы старонкі."
1647 1647
1648 1648 msgid "Icons"
1649 1649 msgstr "Абразкі"
1650 1650
1651 1651 msgid "Show public repository icon on repositories"
1652 1652 msgstr "Паказваць абразкі публічных рэпазітароў"
1653 1653
1654 1654 msgid "Show private repository icon on repositories"
1655 1655 msgstr "Паказваць абразкі прыватных рэпазітароў"
1656 1656
1657 1657 msgid "Show public/private icons next to repository names."
1658 1658 msgstr "Паказваць абразкі публічных рэпазітароў."
1659 1659
1660 1660 msgid "Meta Tagging"
1661 1661 msgstr "Метатэгаванне"
1662 1662
1663 1663 msgid "Add user group"
1664 1664 msgstr "Дадаць групу карыстальнікаў"
1665 1665
1666 1666 msgid "User Groups"
1667 1667 msgstr "Групы карыстальнікаў"
1668 1668
1669 1669 msgid "Add User Group"
1670 1670 msgstr "Дадаць групу карыстальнікаў"
1671 1671
1672 1672 msgid "Short, optional description for this user group."
1673 1673 msgstr "Кароткае дадатковае апісанне для гэтай групы карыстальнікаў."
1674 1674
1675 1675 msgid "Active"
1676 1676 msgstr "Актыўны"
1677 1677
1678 1678 msgid "Show Members"
1679 1679 msgstr "Паказаць удзельнікаў"
1680 1680
1681 1681 msgid "Members"
1682 1682 msgstr "Удзельнікі"
1683 1683
1684 1684 msgid "Confirm to delete this user group: %s"
1685 1685 msgstr "Пацвердзіце выдаленне наступнай групы карыстальнікаў: %s"
1686 1686
1687 1687 msgid "Delete this user group"
1688 1688 msgstr "Выдаліць гэтую групу карыстальнікаў"
1689 1689
1690 1690 msgid "No members yet"
1691 1691 msgstr "Няма ўдзельнікаў"
1692 1692
1693 1693 msgid "Chosen group members"
1694 1694 msgstr "Абраныя ўдзельнікі групы"
1695 1695
1696 1696 msgid "Available members"
1697 1697 msgstr "Даступныя ўдзельнікі"
1698 1698
1699 1699 msgid "User Groups Administration"
1700 1700 msgstr "Адміністраванне груп карыстальнікаў"
1701 1701
1702 1702 msgid "Add user"
1703 1703 msgstr "Дадаць карыстальніка"
1704 1704
1705 1705 msgid "Users"
1706 1706 msgstr "Карыстальнікі"
1707 1707
1708 1708 msgid "Add User"
1709 1709 msgstr "Дадаць карыстальніка"
1710 1710
1711 1711 msgid "Password confirmation"
1712 1712 msgstr "Пацверджанне пароля"
1713 1713
1714 1714 msgid "User: %s"
1715 1715 msgstr "Карыстальнік: %s"
1716 1716
1717 1717 msgid "Last Login"
1718 1718 msgstr "Апошні ўваход"
1719 1719
1720 1720 msgid "Confirm to delete this user: %s"
1721 1721 msgstr "Пацвердзіце выдаленне карыстальніка %s"
1722 1722
1723 1723 msgid "Delete this user"
1724 1724 msgstr "Выдаліць гэтага карыстальніка"
1725 1725
1726 1726 msgid "New password confirmation"
1727 1727 msgstr "Пацвердзіце новы пароль"
1728 1728
1729 1729 msgid "Users Administration"
1730 1730 msgstr "Адміністраванне карыстальнікаў"
1731 1731
1732 1732 msgid "Server instance: %s"
1733 1733 msgstr "Асобнік сервера: %s"
1734 1734
1735 1735 msgid "Support"
1736 1736 msgstr "Падтрымка"
1737 1737
1738 1738 msgid "Mercurial repository"
1739 1739 msgstr "Рэпазітар Mercurial"
1740 1740
1741 1741 msgid "Git repository"
1742 1742 msgstr "Git рэпазітар"
1743 1743
1744 1744 msgid "Create Fork"
1745 1745 msgstr "Стварыць форк"
1746 1746
1747 1747 msgid "Summary"
1748 1748 msgstr "Агульныя звесткі"
1749 1749
1750 1750 msgid "Changelog"
1751 1751 msgstr "Гісторыя змен"
1752 1752
1753 1753 msgid "Files"
1754 1754 msgstr "Файлы"
1755 1755
1756 1756 msgid "Show Pull Requests for %s"
1757 1757 msgstr "Паказаць pull-запыты для %s"
1758 1758
1759 1759 msgid "Pull Requests"
1760 1760 msgstr "Pull-запыты"
1761 1761
1762 1762 msgid "Options"
1763 1763 msgstr "Опцыі"
1764 1764
1765 1765 msgid "Compare Fork"
1766 1766 msgstr "Параўнаць форк"
1767 1767
1768 1768 msgid "Compare"
1769 1769 msgstr "Параўнаць"
1770 1770
1771 1771 msgid "Search"
1772 1772 msgstr "Пошук"
1773 1773
1774 1774 msgid "Follow"
1775 1775 msgstr "Назіраць"
1776 1776
1777 1777 msgid "Unfollow"
1778 1778 msgstr "Не назіраць"
1779 1779
1780 1780 msgid "Fork"
1781 1781 msgstr "Форк"
1782 1782
1783 1783 msgid "Create Pull Request"
1784 1784 msgstr "Стварыць pull-запыт"
1785 1785
1786 1786 msgid "Switch To"
1787 1787 msgstr "Пераключыцца на"
1788 1788
1789 1789 msgid "No matches found"
1790 1790 msgstr "Супадзенняў не знойдзена"
1791 1791
1792 1792 msgid "Show recent activity"
1793 1793 msgstr "Паказаць апошнюю актыўнасць"
1794 1794
1795 1795 msgid "Public journal"
1796 1796 msgstr "Агульнадаступны журнал"
1797 1797
1798 1798 msgid "Show public gists"
1799 1799 msgstr "Паказаць публічныя запісы"
1800 1800
1801 1801 msgid "Gists"
1802 1802 msgstr "Gist"
1803 1803
1804 1804 msgid "All Public Gists"
1805 1805 msgstr "Усе публічныя Gist-запісы"
1806 1806
1807 1807 msgid "My Public Gists"
1808 1808 msgstr "Мае публічныя Gist-запісы"
1809 1809
1810 1810 msgid "My Private Gists"
1811 1811 msgstr "Мае прыватныя Gist-запісы"
1812 1812
1813 1813 msgid "Search in repositories"
1814 1814 msgstr "Пошук па рэпазітарах"
1815 1815
1816 1816 msgid "My Pull Requests"
1817 1817 msgstr "Мае pull-запыты"
1818 1818
1819 1819 msgid "Not Logged In"
1820 1820 msgstr "Не аўтарызаваны"
1821 1821
1822 1822 msgid "Login to Your Account"
1823 1823 msgstr "Аўтарызавацца"
1824 1824
1825 1825 msgid "Log Out"
1826 1826 msgstr "Выйсці"
1827 1827
1828 1828 msgid "Create repositories"
1829 1829 msgstr "Стварыць рэпазітары"
1830 1830
1831 1831 msgid "Select this option to allow repository creation for this user"
1832 1832 msgstr "Опцыя дазваляе карыстальніку ствараць рэпазітары"
1833 1833
1834 1834 msgid "Create user groups"
1835 1835 msgstr "Ствараць групы карыстальнікаў"
1836 1836
1837 1837 msgid "Select this option to allow user group creation for this user"
1838 1838 msgstr "Опцыя дазваляе карыстальніку ствараць групы карыстальнікаў"
1839 1839
1840 1840 msgid "Fork repositories"
1841 1841 msgstr "Ствараць fork ад рэпазітароў"
1842 1842
1843 1843 msgid "Select this option to allow repository forking for this user"
1844 1844 msgstr ""
1845 1845 "Абярыце гэту опцыю каб дазволіць дадзенаму карыстальніку ствараць форкі "
1846 1846 "рэпазітароў"
1847 1847
1848 1848 msgid "Show"
1849 1849 msgstr "Паказаць"
1850 1850
1851 1851 msgid "No permissions defined yet"
1852 1852 msgstr "Прывілеі яшчэ не прызначаныя"
1853 1853
1854 1854 msgid "Permission"
1855 1855 msgstr "Прывілей"
1856 1856
1857 1857 msgid "Edit Permission"
1858 1858 msgstr "Змяніць прывілеі"
1859 1859
1860 1860 msgid "Submitting ..."
1861 1861 msgstr "Адпраўка..."
1862 1862
1863 1863 msgid "Add Another Comment"
1864 1864 msgstr "Дадаць яшчэ адзін каментар"
1865 1865
1866 1866 msgid "Stop following this repository"
1867 1867 msgstr "Адмяніць назіранне за рэпазітаром"
1868 1868
1869 1869 msgid "Start following this repository"
1870 1870 msgstr "Назіраць за рэпазітаром"
1871 1871
1872 1872 msgid "Group"
1873 1873 msgstr "Група"
1874 1874
1875 1875 msgid "Loading ..."
1876 1876 msgstr "Загрузка..."
1877 1877
1878 1878 msgid "loading ..."
1879 1879 msgstr "загрузка..."
1880 1880
1881 1881 msgid "Search truncated"
1882 1882 msgstr "Пошук усечаны"
1883 1883
1884 1884 msgid "No matching files"
1885 1885 msgstr "Няма супадзенняў"
1886 1886
1887 1887 msgid "Open New Pull Request from {0}"
1888 1888 msgstr "Стварыць новы pull-запыт з {0}"
1889 1889
1890 1890 msgid "Open New Pull Request for {0}"
1891 1891 msgstr "Стварыць новы pull-запыт для {0}"
1892 1892
1893 1893 msgid "Show Selected Changesets {0}"
1894 1894 msgstr "Паказаць выбраныя наборы змен {0}"
1895 1895
1896 1896 msgid "Selection Link"
1897 1897 msgstr "Спасылка выбару"
1898 1898
1899 1899 msgid "Collapse Diff"
1900 1900 msgstr "Згарнуць параўнанне"
1901 1901
1902 1902 msgid "Expand Diff"
1903 1903 msgstr "Разгарнуць параўнанне"
1904 1904
1905 1905 msgid "No revisions"
1906 1906 msgstr "Няма рэвізій"
1907 1907
1908 1908 msgid "Failed to revoke permission"
1909 1909 msgstr "Не атрымалася адклікаць прывілеі"
1910 1910
1911 1911 msgid "Confirm to revoke permission for {0}: {1}?"
1912 1912 msgstr "Пацвердзіце выдаленне прывілею для {0}: {1}?"
1913 1913
1914 1914 msgid "Select changeset"
1915 1915 msgstr "Выбраць набор змен"
1916 1916
1917 1917 msgid "Specify changeset"
1918 1918 msgstr "Выбраць набор змен"
1919 1919
1920 1920 msgid "Click to sort ascending"
1921 1921 msgstr "Па ўзрастанні"
1922 1922
1923 1923 msgid "Click to sort descending"
1924 1924 msgstr "Па змяншэнні"
1925 1925
1926 1926 msgid "No records found."
1927 1927 msgstr "Запісы не знойдзеныя."
1928 1928
1929 1929 msgid "Data error."
1930 1930 msgstr "Памылка дадзеных."
1931 1931
1932 1932 msgid "Loading..."
1933 1933 msgstr "Загрузка..."
1934 1934
1935 1935 msgid "%s Changelog"
1936 1936 msgstr "Логі змен %s"
1937 1937
1938 1938 msgid "showing %d out of %d revision"
1939 1939 msgid_plural "showing %d out of %d revisions"
1940 1940 msgstr[0] "Паказана %d з %d рэвізій"
1941 1941 msgstr[1] "Паказаны %d з %d рэвізій"
1942 1942 msgstr[2] "Паказаны %d з %d рэвізій"
1943 1943
1944 1944 msgid "Clear selection"
1945 1945 msgstr "Ачысціць выбар"
1946 1946
1947 1947 msgid "Go to tip of repository"
1948 1948 msgstr "Перайсці на верхавіну рэпазітара"
1949 1949
1950 1950 msgid "Compare fork with %s"
1951 1951 msgstr "Параўнаць fork з %s"
1952 1952
1953 1953 msgid "Compare fork with parent repository (%s)"
1954 1954 msgstr "Параўнаць форк з бацькоўскім рэпазітаром (%s)"
1955 1955
1956 1956 msgid "Branch filter:"
1957 1957 msgstr "Адфільтраваць галіну:"
1958 1958
1959 1959 msgid "There are no changes yet"
1960 1960 msgstr "Змен яшчэ няма"
1961 1961
1962 1962 msgid "Removed"
1963 1963 msgstr "Выдалена"
1964 1964
1965 1965 msgid "Changed"
1966 1966 msgstr "Зменена"
1967 1967
1968 1968 msgid "Added"
1969 1969 msgstr "Дададзена"
1970 1970
1971 1971 msgid "Affected %s files"
1972 1972 msgstr "Закранае %s файлаў"
1973 1973
1974 1974 msgid ""
1975 1975 "Changeset status: %s by %s\n"
1976 1976 "Click to open associated pull request %s"
1977 1977 msgstr ""
1978 1978 "Статус набору змен: %s ад %s\n"
1979 1979 "Клікніце, каб адкрыць адпаведны pull-запыт %s"
1980 1980
1981 1981 msgid "Changeset status: %s by %s"
1982 1982 msgstr "Статус набору змен: %s ад %s"
1983 1983
1984 1984 msgid "Expand commit message"
1985 1985 msgstr "Разгарнуць паведамленне"
1986 1986
1987 1987 msgid "Bookmark %s"
1988 1988 msgstr "Закладка %s"
1989 1989
1990 1990 msgid "Tag %s"
1991 1991 msgstr "Тэг %s"
1992 1992
1993 1993 msgid "Branch %s"
1994 1994 msgstr "Галіна %s"
1995 1995
1996 1996 msgid "%s Changeset"
1997 1997 msgstr "%s Змены"
1998 1998
1999 1999 msgid "Changeset status"
2000 2000 msgstr "Статус змен"
2001 2001
2002 2002 msgid "Raw diff"
2003 2003 msgstr "Адлюстраваць у фармаце diff"
2004 2004
2005 2005 msgid "Patch diff"
2006 2006 msgstr "Patch diff"
2007 2007
2008 2008 msgid "Download diff"
2009 2009 msgstr "Спампаваць diff"
2010 2010
2011 2011 msgid "Grafted from:"
2012 2012 msgstr "Перанесена з:"
2013 2013
2014 2014 msgid "Replaced by:"
2015 2015 msgstr "Заменена:"
2016 2016
2017 2017 msgid "Preceded by:"
2018 2018 msgstr "Замяняе:"
2019 2019
2020 2020 msgid "%s file changed"
2021 2021 msgid_plural "%s files changed"
2022 2022 msgstr[0] "%s файл зменены"
2023 2023 msgstr[1] "%s файлы зменена"
2024 2024 msgstr[2] "%s файлаў зменена"
2025 2025
2026 2026 msgid "%s file changed with %s insertions and %s deletions"
2027 2027 msgid_plural "%s files changed with %s insertions and %s deletions"
2028 2028 msgstr[0] "%s файл зменены: %s даданне, %s выдаленне"
2029 2029 msgstr[1] "%s файлы зменена: %s даданні, %s выдаленні"
2030 2030 msgstr[2] "%s файлаў зменена: %s даданняў, %s выдаленняў"
2031 2031
2032 2032 msgid "Show full diff anyway"
2033 2033 msgstr "Паказаць поўны diff"
2034 2034
2035 2035 msgid "on pull request"
2036 2036 msgstr "у pull-запыце"
2037 2037
2038 2038 msgid "No title"
2039 2039 msgstr "Няма загалоўка"
2040 2040
2041 2041 msgid "on this changeset"
2042 2042 msgstr "на змене"
2043 2043
2044 2044 msgid "Delete comment?"
2045 2045 msgstr "Выдаліць каментар?"
2046 2046
2047 2047 msgid "Status change"
2048 2048 msgstr "Змена статусу"
2049 2049
2050 2050 msgid "Set changeset status"
2051 2051 msgstr "Змяніць статус рэвізіі"
2052 2052
2053 2053 msgid "No change"
2054 2054 msgstr "Без змен"
2055 2055
2056 2056 msgid "Finish pull request"
2057 2057 msgstr "Завяршыць pull-запыт"
2058 2058
2059 2059 msgid "Close"
2060 2060 msgstr "Закрыць"
2061 2061
2062 2062 msgid "Comment"
2063 2063 msgstr "Каментаваць"
2064 2064
2065 2065 msgid "You need to be logged in to comment."
2066 2066 msgstr "Вам неабходна аўтарызавацца, каб пакідаць каментары."
2067 2067
2068 2068 msgid "Login now"
2069 2069 msgstr "Аўтарызавацца зараз"
2070 2070
2071 2071 msgid "Hide"
2072 2072 msgstr "Схаваць"
2073 2073
2074 2074 msgid "%d comment"
2075 2075 msgid_plural "%d comments"
2076 2076 msgstr[0] "%d каментар"
2077 2077 msgstr[1] "%d каментары"
2078 2078 msgstr[2] "%d каментароў"
2079 2079
2080 2080 msgid "%s Changesets"
2081 2081 msgstr "%s Змены"
2082 2082
2083 2083 msgid "Changeset status: %s"
2084 2084 msgstr "Статус набору змен: %s"
2085 2085
2086 2086 msgid "Files affected"
2087 2087 msgstr "Закранутыя файлы"
2088 2088
2089 2089 msgid "Deleted"
2090 2090 msgstr "Выдалены"
2091 2091
2092 2092 msgid "Renamed"
2093 2093 msgstr "Пераназваны"
2094 2094
2095 2095 msgid "Show full diff for this file"
2096 2096 msgstr "Паказаць поўны diff для гэтага файла"
2097 2097
2098 2098 msgid "Show full side-by-side diff for this file"
2099 2099 msgstr "Паказаць поўны diff для гэтага файла"
2100 2100
2101 2101 msgid "Show inline comments"
2102 2102 msgstr "Паказаць каментары ў радках"
2103 2103
2104 2104 msgid "No changesets"
2105 2105 msgstr "Няма змен"
2106 2106
2107 2107 msgid "Show merge diff"
2108 2108 msgstr "Паказаць merge diff"
2109 2109
2110 2110 msgid "is"
2111 2111 msgstr "адстае на"
2112 2112
2113 2113 msgid "%s changesets"
2114 2114 msgstr "%s змен"
2115 2115
2116 2116 msgid "behind"
2117 2117 msgstr "ад"
2118 2118
2119 2119 msgid "%s Compare"
2120 2120 msgstr "%s Параўнаць"
2121 2121
2122 2122 msgid "Compare Revisions"
2123 2123 msgstr "Параўнаць рэвізіі"
2124 2124
2125 2125 msgid "Showing %s commit"
2126 2126 msgid_plural "Showing %s commits"
2127 2127 msgstr[0] "Паказаць %s commit"
2128 2128 msgstr[1] "Паказаць %s commit'ы"
2129 2129 msgstr[2] "Паказаць %s commit'аў"
2130 2130
2131 2131 msgid "Show full diff"
2132 2132 msgstr "Паказаць поўны diff"
2133 2133
2134 2134 msgid "Public repository"
2135 2135 msgstr "Публічны рэпазітар"
2136 2136
2137 2137 msgid "No changesets yet"
2138 2138 msgstr "Змен яшчэ не было"
2139 2139
2140 2140 msgid "Subscribe to %s rss feed"
2141 2141 msgstr "Падпісацца на стужку RSS %s"
2142 2142
2143 2143 msgid "Subscribe to %s atom feed"
2144 2144 msgstr "Падпісацца на стужку Atom %s"
2145 2145
2146 2146 msgid "Creating"
2147 2147 msgstr "Ствараецца"
2148 2148
2149 2149 msgid "Hello %s"
2150 2150 msgstr "Добры дзень, %s"
2151 2151
2152 2152 msgid "We have received a request to reset the password for your account."
2153 2153 msgstr "Мы атрымалі запыт на скіданне пароля для вашага акаўнта."
2154 2154
2155 2155 msgid "File diff"
2156 2156 msgstr "Параўнанне файлаў"
2157 2157
2158 2158 msgid "Ignore whitespace"
2159 2159 msgstr "Ігнараваць прабелы"
2160 2160
2161 2161 msgid "%s File Diff"
2162 2162 msgstr "Параўнанне файла %s"
2163 2163
2164 2164 msgid "%s Files"
2165 2165 msgstr "%s Файлы"
2166 2166
2167 2167 msgid "%s Files Add"
2168 2168 msgstr "%s Файлаў дададзена"
2169 2169
2170 2170 msgid "Add New File"
2171 2171 msgstr "Дадаць новы файл"
2172 2172
2173 2173 msgid "Location"
2174 2174 msgstr "Размяшчэнне"
2175 2175
2176 2176 msgid "Enter filename..."
2177 2177 msgstr "Увядзіце імя файла..."
2178 2178
2179 2179 msgid "or"
2180 2180 msgstr "ці"
2181 2181
2182 2182 msgid "Upload File"
2183 2183 msgstr "Адаслаць файл"
2184 2184
2185 2185 msgid "Create New File"
2186 2186 msgstr "Стварыць новы файл"
2187 2187
2188 2188 msgid "New file type"
2189 2189 msgstr "Тып новага файла"
2190 2190
2191 2191 msgid "Commit Changes"
2192 2192 msgstr "Захаваць змены"
2193 2193
2194 2194 msgid "Loading file list..."
2195 2195 msgstr "Загружаецца спіс файлаў..."
2196 2196
2197 2197 msgid "Size"
2198 2198 msgstr "Памер"
2199 2199
2200 2200 msgid "Last Revision"
2201 2201 msgstr "Апошняя версія"
2202 2202
2203 2203 msgid "Last Modified"
2204 2204 msgstr "Апошняя змена"
2205 2205
2206 2206 msgid "Last Committer"
2207 2207 msgstr "Аўтар апошняй рэвізіі"
2208 2208
2209 2209 msgid "Delete file"
2210 2210 msgstr "Выдаліць файл"
2211 2211
2212 2212 msgid "Edit file"
2213 2213 msgstr "Рэдагаваць файл"
2214 2214
2215 2215 msgid "Source"
2216 2216 msgstr "Зыходны код"
2217 2217
2218 2218 msgid "%s author"
2219 2219 msgid_plural "%s authors"
2220 2220 msgstr[0] "%s аўтар"
2221 2221 msgstr[1] "%s аўтараў"
2222 2222 msgstr[2] "%s аўтара"
2223 2223
2224 2224 msgid "Show Full History"
2225 2225 msgstr "Паказаць ўсю гісторыю"
2226 2226
2227 2227 msgid "Show Authors"
2228 2228 msgstr "Паказаць аўтараў"
2229 2229
2230 2230 msgid "Editing binary files not allowed"
2231 2231 msgstr "Рэдагаванне бінарных файлаў забароненае"
2232 2232
2233 2233 msgid "Editing files allowed only when on branch head revision"
2234 2234 msgstr "Рэдагаванне файлаў дазволенае толькі ў HEAD-рэвізіі дадзенай галіны"
2235 2235
2236 2236 msgid "Binary file (%s)"
2237 2237 msgstr "Бінарны файл (%s)"
2238 2238
2239 2239 msgid "File is too big to display."
2240 2240 msgstr "Файл занадта вялікі для адлюстравання."
2241 2241
2242 2242 msgid "Show full annotation anyway."
2243 2243 msgstr "Паказаць поўныя анатацыі."
2244 2244
2245 2245 msgid "Show as raw."
2246 2246 msgstr "Паказаць сырым."
2247 2247
2248 2248 msgid "annotation"
2249 2249 msgstr "анатацыя"
2250 2250
2251 2251 msgid "Go Back"
2252 2252 msgstr "Вярнуцца"
2253 2253
2254 2254 msgid "No files at given path"
2255 2255 msgstr "Па зададзеным шляху файлы адсутнічаюць"
2256 2256
2257 2257 msgid "%s Followers"
2258 2258 msgstr "%s Назіральнікі"
2259 2259
2260 2260 msgid "Followers"
2261 2261 msgstr "Назіральнікі"
2262 2262
2263 2263 msgid "Started following -"
2264 2264 msgstr "Назіраць за рэпазітаром"
2265 2265
2266 2266 msgid "Fork name"
2267 2267 msgstr "Імя форка"
2268 2268
2269 2269 msgid "Default revision for files page, downloads, whoosh, and readme."
2270 2270 msgstr ""
2271 2271 "Рэвізія па змаўчанні, з якой будзе вырабляцца выгрузка файлаў пры "
2272 2272 "спампоўцы."
2273 2273
2274 2274 msgid "Private"
2275 2275 msgstr "Прыватны"
2276 2276
2277 2277 msgid "Copy permissions"
2278 2278 msgstr "Скапіяваць прывілеі"
2279 2279
2280 2280 msgid "Copy permissions from forked repository"
2281 2281 msgstr "Скапіяваць прывілеі з форкнутага рэпазітара"
2282 2282
2283 2283 msgid "Update after clone"
2284 2284 msgstr "Абнаўляць пасля кланавання"
2285 2285
2286 2286 msgid "Checkout source after making a clone"
2287 2287 msgstr "Спампоўваць зыходнікі пасля стварэння клона"
2288 2288
2289 2289 msgid "%s Forks"
2290 2290 msgstr "Форкі %s"
2291 2291
2292 2292 msgid "Forks"
2293 2293 msgstr "Адгалінаванні"
2294 2294
2295 2295 msgid "Forked"
2296 2296 msgstr "Форкнута"
2297 2297
2298 2298 msgid "There are no forks yet"
2299 2299 msgstr "Форкі яшчэ не створаныя"
2300 2300
2301 2301 msgid "ATOM journal feed"
2302 2302 msgstr "Стужка часопіса Atom"
2303 2303
2304 2304 msgid "RSS journal feed"
2305 2305 msgstr "Стужка часопіса RSS"
2306 2306
2307 2307 msgid "My Repositories"
2308 2308 msgstr "Мае рэпазітары"
2309 2309
2310 2310 msgid "No entries yet"
2311 2311 msgstr "Запісы адсутнічаюць"
2312 2312
2313 2313 msgid "ATOM public journal feed"
2314 2314 msgstr "Агульная стужка часопіса Atom"
2315 2315
2316 2316 msgid "RSS public journal feed"
2317 2317 msgstr "Агульная стужка часопіса RSS"
2318 2318
2319 2319 msgid "New Pull Request"
2320 2320 msgstr "Новы pull-запыт"
2321 2321
2322 2322 msgid "Title"
2323 2323 msgstr "Загаловак"
2324 2324
2325 2325 msgid "Write a short description on this pull request"
2326 2326 msgstr "Напісаць кароткае пісанне па гэтым запыце"
2327 2327
2328 2328 msgid "Changeset flow"
2329 2329 msgstr "Струмень змен"
2330 2330
2331 2331 msgid "Origin repository"
2332 2332 msgstr "Першапачатковы рэпазітар"
2333 2333
2334 2334 msgid "Revision"
2335 2335 msgstr "Рэвізія"
2336 2336
2337 2337 msgid "Destination repository"
2338 2338 msgstr "Рэпазітар прызначэння"
2339 2339
2340 2340 msgid "No entries"
2341 2341 msgstr "Запісы отсуствуют"
2342 2342
2343 2343 msgid "Vote"
2344 2344 msgstr "Галасаваць"
2345 2345
2346 2346 msgid "Age"
2347 2347 msgstr "Узрост"
2348 2348
2349 2349 msgid "From"
2350 2350 msgstr "Ад"
2351 2351
2352 2352 msgid "To"
2353 2353 msgstr "Да"
2354 2354
2355 2355 msgid "You voted: %s"
2356 2356 msgstr "Вы прагаласавалі: %s"
2357 2357
2358 2358 msgid "You didn't vote"
2359 2359 msgstr "Вы не галасавалі"
2360 2360
2361 2361 msgid "(no title)"
2362 2362 msgstr "(няма загалоўка)"
2363 2363
2364 2364 msgid "Closed"
2365 2365 msgstr "Зачынена"
2366 2366
2367 2367 msgid "Delete Pull Request"
2368 2368 msgstr "Выдаліць pull-запыт"
2369 2369
2370 2370 msgid "Confirm to delete this pull request"
2371 2371 msgstr "Пацвердзіце выдаленне гэтага pull-request'а"
2372 2372
2373 2373 msgid "Confirm again to delete this pull request with %s comments"
2374 2374 msgstr "Пацвердзіце выдаленне гэтага pull-запыту з %s каментарамі"
2375 2375
2376 2376 msgid "%s Pull Request %s"
2377 2377 msgstr "%s зull-запыт %s"
2378 2378
2379 2379 msgid "Pull request %s from %s#%s"
2380 2380 msgstr "Pull-запыт %s ад %s#%s"
2381 2381
2382 2382 msgid "on"
2383 2383 msgstr "на"
2384 2384
2385 2385 msgid "Target"
2386 2386 msgstr "Цэль"
2387 2387
2388 2388 msgid "Pull changes"
2389 2389 msgstr "Прыняць змены"
2390 2390
2391 2391 msgid "Save Changes"
2392 2392 msgstr "Захаваць змены"
2393 2393
2394 2394 msgid "Cancel Changes"
2395 2395 msgstr "Адмяніць змены"
2396 2396
2397 2397 msgid "Remove reviewer"
2398 2398 msgstr "Выдаліць рэцэнзента"
2399 2399
2400 2400 msgid "Potential Reviewers"
2401 2401 msgstr "Патэнцыйныя рэцэнзенты"
2402 2402
2403 2403 msgid "Common ancestor"
2404 2404 msgstr "Агульны продак"
2405 2405
2406 2406 msgid "%s Pull Requests"
2407 2407 msgstr "%s pull-запыты"
2408 2408
2409 2409 msgid "Pull Requests from '%s'"
2410 2410 msgstr "Pull-запыты ад '%s'"
2411 2411
2412 2412 msgid "Pull Requests to '%s'"
2413 2413 msgstr "Pull-запыты да '%s'"
2414 2414
2415 2415 msgid "Open New Pull Request"
2416 2416 msgstr "Стварыць новы pull-запыт"
2417 2417
2418 2418 msgid "Show Pull Requests to %s"
2419 2419 msgstr "Паказаць pull-запыты да %s"
2420 2420
2421 2421 msgid "Show Pull Requests from '%s'"
2422 2422 msgstr "Паказаць pull-запыты ад %s"
2423 2423
2424 2424 msgid "Search in All Repositories"
2425 2425 msgstr "Пошук па ўсіх рэпазітарах"
2426 2426
2427 2427 msgid "Search term"
2428 2428 msgstr "Фраза для пошуку"
2429 2429
2430 2430 msgid "Search in"
2431 2431 msgstr "Крытэр пошуку"
2432 2432
2433 2433 msgid "File contents"
2434 2434 msgstr "Змест файлаў"
2435 2435
2436 2436 msgid "Commit messages"
2437 2437 msgstr "Паведамленні камітаў"
2438 2438
2439 2439 msgid "File names"
2440 2440 msgstr "Імя файла"
2441 2441
2442 2442 msgid "Permission denied"
2443 2443 msgstr "Недастаткова правоў"
2444 2444
2445 2445 msgid "%s ATOM feed"
2446 2446 msgstr "Atom стужка рэпазітара %s"
2447 2447
2448 2448 msgid "%s RSS feed"
2449 2449 msgstr "RSS стужка рэпазітара %s"
2450 2450
2451 2451 msgid "Enable"
2452 2452 msgstr "Уключана"
2453 2453
2454 2454 msgid "Stats gathered: "
2455 2455 msgstr "Атрыманая статыстыка: "
2456 2456
2457 2457 msgid "files"
2458 2458 msgstr "файлы"
2459 2459
2460 2460 msgid "Show more"
2461 2461 msgstr "Паказаць яшчэ"
2462 2462
2463 2463 msgid "commits"
2464 2464 msgstr "commit'ы"
2465 2465
2466 2466 msgid "files added"
2467 2467 msgstr "файлы дададзены"
2468 2468
2469 2469 msgid "files changed"
2470 2470 msgstr "файлы зменены"
2471 2471
2472 2472 msgid "files removed"
2473 2473 msgstr "файлы выдалены"
2474 2474
2475 2475 msgid "commit"
2476 2476 msgstr "commit"
2477 2477
2478 2478 msgid "file added"
2479 2479 msgstr "файл выдалены"
2480 2480
2481 2481 msgid "file changed"
2482 2482 msgstr "файл зменены"
2483 2483
2484 2484 msgid "file removed"
2485 2485 msgstr "файл выдалены"
2486 2486
2487 2487 msgid "%s Summary"
2488 2488 msgstr "%s агульныя звесткі"
2489 2489
2490 2490 msgid "Fork of"
2491 2491 msgstr "Форк ад"
2492 2492
2493 2493 msgid "Clone from"
2494 2494 msgstr "Кланаваць з"
2495 2495
2496 2496 msgid "Clone URL"
2497 2497 msgstr "URL для кланавання"
2498 2498
2499 2499 msgid "Trending files"
2500 2500 msgstr "Папулярныя файлы"
2501 2501
2502 2502 msgid "Download"
2503 2503 msgstr "Спампаваць"
2504 2504
2505 2505 msgid "There are no downloads yet"
2506 2506 msgstr "Спамповак яшчэ няма"
2507 2507
2508 2508 msgid "Downloads are disabled for this repository"
2509 2509 msgstr "Спампоўванне адключанае ў гэтым рэпазітары"
2510 2510
2511 2511 msgid "Download as zip"
2512 2512 msgstr "Спампаваць у zip"
2513 2513
2514 2514 msgid "Check this to download archive with subrepos"
2515 2515 msgstr "Адзначце для спампоўкі архіва з даччынымі рэпазітарамі"
2516 2516
2517 2517 msgid "With subrepos"
2518 2518 msgstr "З даччынымі рэпазітарамі"
2519 2519
2520 2520 msgid "Feed"
2521 2521 msgstr "Стужка навін"
2522 2522
2523 2523 msgid "Latest Changes"
2524 2524 msgstr "Апошнія змены"
2525 2525
2526 2526 msgid "Quick Start"
2527 2527 msgstr "Хуткі старт"
2528 2528
2529 2529 msgid "Add or upload files directly via Kallithea"
2530 2530 msgstr "Дадаць ці загрузіць файлы праз Kallithea"
2531 2531
2532 2532 msgid "Push new repository"
2533 2533 msgstr "Адправіць новы рэпазітар"
2534 2534
2535 2535 msgid "Existing repository?"
2536 2536 msgstr "Існы рэпазітар?"
2537 2537
2538 2538 msgid "Download %s as %s"
2539 2539 msgstr "Спампаваць %s як %s"
@@ -1,856 +1,856 b''
1 1 # Copyright (C) 2017 Various authors, licensing as GPLv3
2 2 # This file is distributed under the same license as the Kallithea project.
3 3
4 4 msgid ""
5 5 msgstr ""
6 6 "Report-Msgid-Bugs-To: translations@kallithea-scm.org\n"
7 7 "Language: da\n"
8 8 "MIME-Version: 1.0\n"
9 9 "Content-Type: text/plain; charset=UTF-8\n"
10 10 "Content-Transfer-Encoding: 8bit\n"
11 11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12 12
13 13 msgid ""
14 14 "CSRF token leak has been detected - all form tokens have been expired"
15 15 msgstr "CSRF-token lækage opdaget, alle form-tokens er invalideret"
16 16
17 17 msgid "Repository not found in the filesystem"
18 18 msgstr "Repository ikke fundet i filsystemet"
19 19
20 20 msgid "There are no changesets yet"
21 21 msgstr "Der er ingen changesets endnu"
22 22
23 23 msgid "Changeset for %s %s not found in %s"
24 24 msgstr "Changeset for %s %s ikke fundet i %s"
25 25
26 26 msgid "None"
27 27 msgstr "Ingen"
28 28
29 29 msgid "(closed)"
30 30 msgstr "(lukket)"
31 31
32 32 msgid "Successfully deleted pull request %s"
33 33 msgstr "Pull-forespørgsel %s slettet successfuldt"
34 34
35 35 msgid "Such revision does not exist for this repository"
36 36 msgstr "En sådan revision findes ikke for dette repository"
37 37
38 38 msgid "Could not find other repository %s"
39 39 msgstr "Kunne ikke finde andet repository %s"
40 40
41 41 msgid "Cannot compare repositories of different types"
42 42 msgstr "Kan ikke sammenligne repositories af forskellige typer"
43 43
44 44 msgid "Cannot show empty diff"
45 45 msgstr "Kan ikke vise en tom diff"
46 46
47 47 msgid "No ancestor found for merge diff"
48 48 msgstr "Ingen forfader fundet for merge diff"
49 49
50 50 msgid "Multiple merge ancestors found for merge compare"
51 51 msgstr "Flere merge forfædre fundet for merge sammenligning"
52 52
53 53 msgid "Cannot compare repositories without using common ancestor"
54 54 msgstr "Kan ikke sammenligne repositories uden en fælles forfader"
55 55
56 56 msgid "No response"
57 57 msgstr "Intet svar"
58 58
59 59 msgid "Unknown error"
60 60 msgstr "Ukendt fejl"
61 61
62 62 msgid ""
63 63 "The request could not be understood by the server due to malformed syntax."
64 64 msgstr ""
65 65 "Forespørgslen kunne ikke forstås af serveren på grund af fejlformet "
66 66 "syntaks."
67 67
68 68 msgid "Unauthorized access to resource"
69 69 msgstr "Uautoriseret adgang til ressource"
70 70
71 71 msgid "You don't have permission to view this page"
72 72 msgstr "Du har ikke tilladelse til at se denne side"
73 73
74 74 msgid "The resource could not be found"
75 75 msgstr "Kunne ikke finde ressourcen"
76 76
77 77 msgid ""
78 78 "The server encountered an unexpected condition which prevented it from "
79 79 "fulfilling the request."
80 80 msgstr ""
81 81 "Serveren stødte på en uventet tilstand, som forhindrede den i at opfylde "
82 82 "anmodningen."
83 83
84 84 msgid "%s committed on %s"
85 85 msgstr "%s committed den %s"
86 86
87 87 msgid "Changeset was too big and was cut off..."
88 88 msgstr "Changesettet var for stor og blev afskåret..."
89 89
90 90 msgid "%s %s feed"
91 91 msgstr "Feed for %s %s"
92 92
93 93 msgid "Changes on %s repository"
94 94 msgstr "Ændringer på repository %s"
95 95
96 96 msgid "Click here to add new file"
97 97 msgstr "Klik her for at tilføje en ny fil"
98 98
99 99 msgid "%s at %s"
100 100 msgstr "%s fra %s"
101 101
102 102 msgid "You can only delete files with revision being a valid branch"
103 103 msgstr "Du kan kun slette filer, hvor revisionen er en gyldig branch"
104 104
105 105 msgid "Deleted file %s via Kallithea"
106 106 msgstr "Slettet fil %s via Kallithea"
107 107
108 108 msgid "Successfully deleted file %s"
109 109 msgstr "Successfuldt slettet filen %s"
110 110
111 111 msgid "Error occurred during commit"
112 112 msgstr "Fejl opstået under commit"
113 113
114 114 msgid "You can only edit files with revision being a valid branch"
115 115 msgstr "Du kan kun redigere filer, hvor revisionen er en gyldig branch"
116 116
117 117 msgid "Edited file %s via Kallithea"
118 118 msgstr "Redigeret fil %s via Kallithea"
119 119
120 120 msgid "No changes"
121 121 msgstr "Ingen ændringer"
122 122
123 123 msgid "Successfully committed to %s"
124 124 msgstr "Successfuldt committed til %s"
125 125
126 126 msgid "Added file via Kallithea"
127 127 msgstr "Tilføjet fil via Kallithea"
128 128
129 129 msgid "No content"
130 130 msgstr "Intet indhold"
131 131
132 132 msgid "No filename"
133 133 msgstr "Intet filnavn"
134 134
135 135 msgid "Location must be relative path and must not contain .. in path"
136 136 msgstr ""
137 137 "Placeringen skal være en relativ sti og må ikke indeholde .. i stien"
138 138
139 139 msgid "Downloads disabled"
140 140 msgstr "Downloads er deaktiveret"
141 141
142 142 msgid "Unknown revision %s"
143 143 msgstr "Ukendt revision %s"
144 144
145 145 msgid "Empty repository"
146 146 msgstr "Tomt repository"
147 147
148 148 msgid "Unknown archive type"
149 149 msgstr "Ukendt arkivtype"
150 150
151 151 msgid "Tags"
152 152 msgstr "Tags"
153 153
154 154 msgid "An error occurred during repository forking %s"
155 155 msgstr "Der opstod en fejl under repository forking %s"
156 156
157 157 msgid "Groups"
158 158 msgstr "Grupper"
159 159
160 160 msgid "Closed Branches"
161 161 msgstr "Lukkede Branches"
162 162
163 163 msgid "Tag"
164 164 msgstr "Tag"
165 165
166 166 msgid "Bookmark"
167 167 msgstr "Bogmærke"
168 168
169 169 msgid "Public Journal"
170 170 msgstr "Offentlig journal"
171 171
172 172 msgid "Journal"
173 173 msgstr "Journal"
174 174
175 175 msgid "Bad captcha"
176 176 msgstr "Dårlig captcha"
177 177
178 178 msgid "You have successfully registered with %s"
179 179 msgstr "Du har succesfuldt registreret med %s"
180 180
181 181 msgid "A password reset confirmation code has been sent"
182 182 msgstr "En bekræftelseskode til ændring af adgangskode er sendt"
183 183
184 184 msgid "Invalid password reset token"
185 185 msgstr "Ugyldig token for ændring af adgangskode"
186 186
187 187 msgid "Successfully updated password"
188 188 msgstr "Successfuld ændring af adgangskode"
189 189
190 190 msgid "Invalid reviewer \"%s\" specified"
191 191 msgstr "Ugyldig reviewer \"%s\" angivet"
192 192
193 193 msgid "%s (closed)"
194 194 msgstr "%s (lukket)"
195 195
196 196 msgid "Special"
197 197 msgstr "Speciel"
198 198
199 199 msgid "Bookmarks"
200 200 msgstr "Bogmærker"
201 201
202 202 msgid "Error creating pull request: %s"
203 203 msgstr "Fejl ved oprettelse af pull-forespørgsel: %s"
204 204
205 205 msgid "Error occurred while creating pull request"
206 206 msgstr "Der opstod en fejl under oprettelse af pull-forespørgsel"
207 207
208 208 msgid "Successfully opened new pull request"
209 209 msgstr "Åbnede ny pull-forespørgsel med success"
210 210
211 211 msgid "New pull request iteration created"
212 212 msgstr "Ny pull-forespørgsel iteration oprettet"
213 213
214 214 msgid "Meanwhile, the following reviewers have been added: %s"
215 215 msgstr "I mellemtiden er de følgende reviewers tilføjet: %s"
216 216
217 217 msgid "Meanwhile, the following reviewers have been removed: %s"
218 218 msgstr "I mellemtiden er de følgende reviewers fjernet: %s"
219 219
220 220 msgid "No description"
221 221 msgstr "Ingen beskrivelse"
222 222
223 223 msgid "Pull request updated"
224 224 msgstr "Pull-forespørgsel opdateret"
225 225
226 226 msgid "Successfully deleted pull request"
227 227 msgstr "Slettede pull-forespørgsel med success"
228 228
229 229 msgid "Revision %s not found in %s"
230 230 msgstr "Revision %s er ikke fundet i %s"
231 231
232 232 msgid "Error: changesets not found when displaying pull request from %s."
233 233 msgstr ""
234 234 "Fejl: Changesets ikke fundet, ved visning af pull-forespørgsel fra %s."
235 235
236 236 msgid "This pull request has already been merged to %s."
237 237 msgstr "Denne pull-forespørgsel er allerede merged til %s."
238 238
239 239 msgid "This pull request has been closed and can not be updated."
240 240 msgstr "Denne pull-forespørgsel er lukket og kan ikke opdateres."
241 241
242 242 msgid "The following additional changes are available on %s:"
243 243 msgstr "Følgende yderligere ændringer er tilgængelige på %s:"
244 244
245 245 msgid "No additional changesets found for iterating on this pull request."
246 246 msgstr ""
247 247 "Ingen yderligere changesets fundet ved iteration på denne pull-"
248 248 "forespørgsel."
249 249
250 250 msgid "Note: Branch %s has another head: %s."
251 251 msgstr "Bemærk: Branch %s har et andet head: %s."
252 252
253 253 msgid "Git pull requests don't support iterating yet."
254 254 msgstr "Git pull-forespørgsler supportere ej iteration endnu."
255 255
256 256 msgid ""
257 257 "Error: some changesets not found when displaying pull request from %s."
258 258 msgstr ""
259 259 "Fejl: Nogle changesets kunne ikke findes ved visning af pull-forespørgsel "
260 260 "fra %s."
261 261
262 262 msgid "The diff can't be shown - the PR revisions could not be found."
263 263 msgstr ""
264 264 "Diff'en kunne ikke vises - pull-forespørgslens revisions kunne ikke "
265 265 "findes."
266 266
267 267 msgid "Invalid search query. Try quoting it."
268 268 msgstr "Ugyldig søgning. Prøv at citere det."
269 269
270 270 msgid "An error occurred during search operation."
271 271 msgstr "Der opstod en fejl under søgning."
272 272
273 273 msgid "No data ready yet"
274 274 msgstr "Ingen data er klar endnu"
275 275
276 276 msgid "Statistics are disabled for this repository"
277 277 msgstr "Statistik er slået fra for dette repository"
278 278
279 279 msgid "Auth settings updated successfully"
280 280 msgstr "Auth-indstillinger opdateret successfuldt"
281 281
282 282 msgid "error occurred during update of auth settings"
283 283 msgstr "Der opstod en fejl under opdatering af auth-indstillinger"
284 284
285 285 msgid "Default settings updated successfully"
286 286 msgstr "Standard-indstillinger opdateret successfuldt"
287 287
288 288 msgid "Error occurred during update of defaults"
289 289 msgstr "Der opstod en fejl under opdatering af standarder"
290 290
291 291 msgid "Forever"
292 292 msgstr "For evigt"
293 293
294 294 msgid "5 minutes"
295 295 msgstr "5 minutter"
296 296
297 297 msgid "1 hour"
298 298 msgstr "1 time"
299 299
300 300 msgid "1 day"
301 301 msgstr "1 dag"
302 302
303 303 msgid "1 month"
304 304 msgstr "1 måned"
305 305
306 306 msgid "Lifetime"
307 307 msgstr "Levetid"
308 308
309 309 msgid "Error occurred during gist creation"
310 310 msgstr "Der opstod en fejl under oprettelse af gist"
311 311
312 312 msgid "Deleted gist %s"
313 313 msgstr "Slettet gist %s"
314 314
315 315 msgid "Unmodified"
316 316 msgstr "Uændret"
317 317
318 318 msgid "Successfully updated gist content"
319 319 msgstr "Opdateret gist-indhold successfuldt"
320 320
321 321 msgid "Successfully updated gist data"
322 322 msgstr "Opdateret gist-data successfuldt"
323 323
324 324 msgid "Error occurred during update of gist %s"
325 325 msgstr "Der opstod en fejl under opdatering af gist %s"
326 326
327 327 msgid "You can't edit this user since it's crucial for entire application"
328 328 msgstr ""
329 329 "Du kan ikke redigere denne bruger, da den er afgørende for hele "
330 330 "applikationen"
331 331
332 332 msgid "Your account was updated successfully"
333 333 msgstr "Din konto er blevet opdateret successfuldt"
334 334
335 335 msgid "Error occurred during update of user %s"
336 336 msgstr "Der opstod en fejl under opdatering af bruger %s"
337 337
338 338 msgid "Error occurred during update of user password"
339 339 msgstr "Der opstod en fejl under opdatering af bruger adgangskode"
340 340
341 341 msgid "Added email %s to user"
342 342 msgstr "Tilføjet email %s til bruger"
343 343
344 344 msgid "An error occurred during email saving"
345 345 msgstr "Der opstod en fejl under tilføjelse af email"
346 346
347 347 msgid "Removed email from user"
348 348 msgstr "Fjernet email fra brugeren"
349 349
350 350 msgid "API key successfully created"
351 351 msgstr "API-nøgle oprettet successfuldt"
352 352
353 353 msgid "API key successfully reset"
354 354 msgstr "API-nøgle nulstillet successfuldt"
355 355
356 356 msgid "API key successfully deleted"
357 357 msgstr "API-nøgle slettet successfuldt"
358 358
359 359 msgid "Read"
360 360 msgstr "Læs"
361 361
362 362 msgid "Write"
363 363 msgstr "Skriv"
364 364
365 365 msgid "Admin"
366 366 msgstr "Admin"
367 367
368 368 msgid "Disabled"
369 369 msgstr "Deaktiveret"
370 370
371 371 msgid "Allowed with manual account activation"
372 372 msgstr "Tilladt med manuel kontoaktivering"
373 373
374 374 msgid "Allowed with automatic account activation"
375 375 msgstr "Tilladt med automatisk kontoaktivering"
376 376
377 377 msgid "Manual activation of external account"
378 378 msgstr "Manuel aktivering af ekstern konto"
379 379
380 380 msgid "Automatic activation of external account"
381 381 msgstr "Automatisk aktivering af ekstern konto"
382 382
383 383 msgid "Enabled"
384 384 msgstr "Aktiveret"
385 385
386 386 msgid "Global permissions updated successfully"
387 387 msgstr "Globale tilladelser opdateret"
388 388
389 389 msgid "Error occurred during update of permissions"
390 390 msgstr "Der opstod en fejl under opdatering af tilladelser"
391 391
392 392 msgid "Error occurred during creation of repository group %s"
393 393 msgstr "Der opstod en fejl under oprettelse af repository-gruppen %s"
394 394
395 395 msgid "Created repository group %s"
396 396 msgstr "Oprettet repository-gruppen %s"
397 397
398 398 msgid "Updated repository group %s"
399 399 msgstr "Opdateret repository-gruppen %s"
400 400
401 401 msgid "Error occurred during update of repository group %s"
402 402 msgstr "Der opstod en fejl under opdatering af repository-gruppen %s"
403 403
404 404 msgid "This group contains %s repositories and cannot be deleted"
405 405 msgstr "Denne gruppe indeholder %s repositories og kan ikke slettes"
406 406
407 407 msgid "This group contains %s subgroups and cannot be deleted"
408 408 msgstr "Denne gruppe indeholder %s undergrupper og kan ikke slettes"
409 409
410 410 msgid "Removed repository group %s"
411 411 msgstr "Fjernet repository-gruppen %s"
412 412
413 413 msgid "Error occurred during deletion of repository group %s"
414 414 msgstr "Der opstod en fejl under sletning af repository-gruppen %s"
415 415
416 msgid "Cannot revoke permission for yourself as admin"
417 msgstr "Kan ikke tilbagekalde tilladelse for én selv som admin"
418
419 416 msgid "Repository group permissions updated"
420 417 msgstr "Repository-gruppe tilladelser opdateret"
421 418
422 419 msgid "An error occurred during revoking of permission"
423 420 msgstr "Der opstod en fejl under tilbagekaldelse af tilladelse"
424 421
425 422 msgid "Error creating repository %s"
426 423 msgstr "Fejl ved oprettelse af repository %s"
427 424
428 425 msgid "Created repository %s from %s"
429 426 msgstr "Oprettet repository %s fra %s"
430 427
431 428 msgid "Forked repository %s as %s"
432 429 msgstr "Forked repository %s som %s"
433 430
434 431 msgid "Created repository %s"
435 432 msgstr "Oprettet repository %s"
436 433
437 434 msgid "Repository %s updated successfully"
438 435 msgstr "Repository %s opdateret"
439 436
440 437 msgid "Error occurred during update of repository %s"
441 438 msgstr "Der opstod en fejl under opdatering af repository %s"
442 439
443 440 msgid "Detached %s forks"
444 441 msgstr "Fraskilt %s forks"
445 442
446 443 msgid "Deleted %s forks"
447 444 msgstr "Slettet %s forks"
448 445
449 446 msgid "Deleted repository %s"
450 447 msgstr "Slettet repository %s"
451 448
452 449 msgid "Cannot delete repository %s which still has forks"
453 450 msgstr "Kan ikke slette repository %s, da den stadig har forks"
454 451
455 452 msgid "An error occurred during deletion of %s"
456 453 msgstr "Der opstod en fejl under sletning af %s"
457 454
458 455 msgid "Repository permissions updated"
459 456 msgstr "Repository tilladelser opdateret"
460 457
461 458 msgid "Field validation error: %s"
462 459 msgstr "Feltvaliderings fejl: %s"
463 460
464 461 msgid "An error occurred during creation of field: %r"
465 462 msgstr "Der opstod en fejl under oprettelse af felt: %r"
466 463
467 464 msgid "An error occurred during removal of field"
468 465 msgstr "Der opstod en fejl under fjernelse af feltet"
469 466
470 467 msgid "-- Not a fork --"
471 468 msgstr "-- Ikke en fork --"
472 469
473 470 msgid "Updated repository visibility in public journal"
474 471 msgstr "Opdateret repository's synlighed i den offentlige journal"
475 472
476 473 msgid "An error occurred during setting this repository in public journal"
477 474 msgstr ""
478 475 "Der opstod en fejl under indstilling af dette repository, i den "
479 476 "offentlige journal"
480 477
481 478 msgid "Nothing"
482 479 msgstr "Intet"
483 480
484 481 msgid "Marked repository %s as fork of %s"
485 482 msgstr "Mærket repository %s som fork af %s"
486 483
487 484 msgid "An error occurred during this operation"
488 485 msgstr "Der opstod en fejl under denne operation"
489 486
490 487 msgid "An error occurred during pull from remote location"
491 488 msgstr "Der opstod en fejl under pull fra remote placering"
492 489
493 490 msgid "An error occurred during deletion of repository stats"
494 491 msgstr "Der opstod en fejl under sletning af repository statistik"
495 492
496 493 msgid "Updated VCS settings"
497 494 msgstr "Opdateret VCS-indstillinger"
498 495
499 496 msgid "Error occurred while updating application settings"
500 497 msgstr "Der opstod en fejl ved opdatering af applikationsindstillinger"
501 498
502 499 msgid "Repositories successfully rescanned. Added: %s. Removed: %s."
503 500 msgstr "Repositories genscannet successfuldt. Tilføjet: %s. Fjernet: %s."
504 501
505 502 msgid "Invalidated %s repositories"
506 503 msgstr "Ugyldiggjort %s repositories"
507 504
508 505 msgid "Updated application settings"
509 506 msgstr "Opdateret applikationsindstillinger"
510 507
511 508 msgid "Updated visualisation settings"
512 509 msgstr "Opdateret visualiseringsindstillinger"
513 510
514 511 msgid "Error occurred during updating visualisation settings"
515 512 msgstr "Der opstod en fejl under opdatering af visualiseringsindstillinger"
516 513
517 514 msgid "Please enter email address"
518 515 msgstr "Indtast email-adresse"
519 516
520 517 msgid "Send email task created"
521 518 msgstr "Send email-opgave oprettet"
522 519
523 520 msgid "Added new hook"
524 521 msgstr "Tilføjet nyt hook"
525 522
526 523 msgid "Updated hooks"
527 524 msgstr "Opdateret hooks"
528 525
529 526 msgid "Error occurred during hook creation"
530 527 msgstr "Der opstod en fejl under oprettelse af et hook"
531 528
532 529 msgid "Whoosh reindex task scheduled"
533 530 msgstr "Whoosh reindex-opgave skeduleret"
534 531
535 532 msgid "Created user group %s"
536 533 msgstr "Oprettet brugergruppe %s"
537 534
538 535 msgid "Error occurred during creation of user group %s"
539 536 msgstr "Der opstod en fejl under oprettelse af brugergruppe %s"
540 537
541 538 msgid "Updated user group %s"
542 539 msgstr "Opdateret brugergruppe %s"
543 540
544 541 msgid "Error occurred during update of user group %s"
545 542 msgstr "Der opstod en fejl under opdatering af brugergruppe %s"
546 543
547 544 msgid "Successfully deleted user group"
548 545 msgstr "Brugergruppe slettet succesfuldt"
549 546
550 547 msgid "An error occurred during deletion of user group"
551 548 msgstr "Der opstod en fejl under sletning af brugergruppe"
552 549
553 550 msgid "User group permissions updated"
554 551 msgstr "Brugergrupper-tilladelser opdateret"
555 552
553 msgid "Cannot revoke permission for yourself as admin"
554 msgstr "Kan ikke tilbagekalde tilladelse for én selv som admin"
555
556 556 msgid "Updated permissions"
557 557 msgstr "Tilladelser opdateret"
558 558
559 559 msgid "An error occurred during permissions saving"
560 560 msgstr "Der opstod en fejl under gemning af tilladelser"
561 561
562 562 msgid "Created user %s"
563 563 msgstr "Bruger %s oprettet"
564 564
565 565 msgid "Error occurred during creation of user %s"
566 566 msgstr "Der opstod en fejl under oprettelse af bruger %s"
567 567
568 568 msgid "User updated successfully"
569 569 msgstr "Bruger opdateret"
570 570
571 571 msgid "Successfully deleted user"
572 572 msgstr "Slettet bruger"
573 573
574 574 msgid "An error occurred during deletion of user"
575 575 msgstr "Der opstod en fejl under sletning af bruger %s"
576 576
577 577 msgid "The default user cannot be edited"
578 578 msgstr "Standardbrugeren kan ikke redigeres"
579 579
580 580 msgid "Added IP address %s to user whitelist"
581 581 msgstr "Tilføjet IP-adresse %s til bruger-whitelist"
582 582
583 583 msgid "An error occurred while adding IP address"
584 584 msgstr "Der opstod en fejl under tilføjelse af IP-adresse"
585 585
586 586 msgid "Removed IP address from user whitelist"
587 587 msgstr "Fjernet IP-adresse fra bruger-whitelist"
588 588
589 589 msgid "You need to be a registered user to perform this action"
590 590 msgstr "Du skal være registreret bruger for at kunne udføre denne handling"
591 591
592 592 msgid "You need to be signed in to view this page"
593 593 msgstr "Du skal være logget ind for at se denne side"
594 594
595 595 msgid "Binary file"
596 596 msgstr "Binær fil"
597 597
598 598 msgid ""
599 599 "Changeset was too big and was cut off, use diff menu to display this diff"
600 600 msgstr ""
601 601 "Changeset var for stor, og blev afskåret, brug diff menu for at få vist "
602 602 "denne diff"
603 603
604 604 msgid "No changes detected"
605 605 msgstr "Ingen ændringer fundet"
606 606
607 607 msgid "Increase diff context to %(num)s lines"
608 608 msgstr "Øg diff konteksten med %(num)s linjer"
609 609
610 610 msgid "Deleted branch: %s"
611 611 msgstr "Slettet branch: %s"
612 612
613 613 msgid "Created tag: %s"
614 614 msgstr "Oprettet tag: %s"
615 615
616 616 msgid "Changeset %s not found"
617 617 msgstr "Changeset %s ikke fundet"
618 618
619 619 msgid "Show all combined changesets %s->%s"
620 620 msgstr "Vis alle kombineret changesets %s->%s"
621 621
622 622 msgid "Compare view"
623 623 msgstr "Sammenlign visning"
624 624
625 625 msgid "and"
626 626 msgstr "og"
627 627
628 628 msgid "%s more"
629 629 msgstr "%s flere"
630 630
631 631 msgid "revisions"
632 632 msgstr "revisioner"
633 633
634 634 msgid "Fork name %s"
635 635 msgstr "Fork-navn %s"
636 636
637 637 msgid "Pull request %s"
638 638 msgstr "Pull-forespørgsel %s"
639 639
640 640 msgid "[deleted] repository"
641 641 msgstr "[slettet] repository"
642 642
643 643 msgid "[created] repository"
644 644 msgstr "[oprettet] repository"
645 645
646 646 msgid "[created] repository as fork"
647 647 msgstr "[oprettet] repository som fork"
648 648
649 649 msgid "[forked] repository"
650 650 msgstr "[forked] repository"
651 651
652 652 msgid "[updated] repository"
653 653 msgstr "[opdateret] repository"
654 654
655 655 msgid "[downloaded] archive from repository"
656 656 msgstr "[hentet] arkiv fra repository"
657 657
658 658 msgid "[delete] repository"
659 659 msgstr "[slettet] repository"
660 660
661 661 msgid "[created] user"
662 662 msgstr "[oprettet] bruger"
663 663
664 664 msgid "[updated] user"
665 665 msgstr "[opdateret] bruger"
666 666
667 667 msgid "[created] user group"
668 668 msgstr "[oprettet] brugergruppe"
669 669
670 670 msgid "[updated] user group"
671 671 msgstr "[opdateret] brugergruppe"
672 672
673 673 msgid "[commented] on revision in repository"
674 674 msgstr "[kommenterede] på revision i repository"
675 675
676 676 msgid "[commented] on pull request for"
677 677 msgstr "[kommenterede] på pull-forespørgsel for"
678 678
679 679 msgid "[closed] pull request for"
680 680 msgstr "[lukket] pull-forespørgsel for"
681 681
682 682 msgid "[pushed] into"
683 683 msgstr "[pushed] ind i"
684 684
685 685 msgid "[committed via Kallithea] into repository"
686 686 msgstr "[committed via kallithea] ind i repository"
687 687
688 688 msgid "[pulled from remote] into repository"
689 689 msgstr "[pulled fra remote] ind i repository"
690 690
691 691 msgid "[pulled] from"
692 692 msgstr "[pulled] fra"
693 693
694 694 msgid "[started following] repository"
695 695 msgstr "[begyndt at følge] repository"
696 696
697 697 msgid "[stopped following] repository"
698 698 msgstr "[stoppet at følge] repository"
699 699
700 700 msgid " and %s more"
701 701 msgstr " og %s flere"
702 702
703 703 msgid "No files"
704 704 msgstr "Ingen filer"
705 705
706 706 msgid "new file"
707 707 msgstr "ny fil"
708 708
709 709 msgid "mod"
710 710 msgstr "mod"
711 711
712 712 msgid "del"
713 713 msgstr "del"
714 714
715 715 msgid "rename"
716 716 msgstr "omdøb"
717 717
718 718 msgid "chmod"
719 719 msgstr "chmod"
720 720
721 721 msgid "in %s"
722 722 msgstr "i %s"
723 723
724 724 msgid "%s ago"
725 725 msgstr "%s siden"
726 726
727 727 msgid "in %s and %s"
728 728 msgstr "i %s og %s"
729 729
730 730 msgid "%s and %s ago"
731 731 msgstr "%s og %s siden"
732 732
733 733 msgid "just now"
734 734 msgstr "lige nu"
735 735
736 736 msgid "top level"
737 737 msgstr "top-niveau"
738 738
739 739 msgid "Kallithea Administrator"
740 740 msgstr "Kallithea Administrator"
741 741
742 742 msgid "Default user has no access to new repositories"
743 743 msgstr "Standard-bruger har ikke adgang til nye repositories"
744 744
745 745 msgid "Default user has read access to new repositories"
746 746 msgstr "Standard-bruger har læse-adgang til nye repositories"
747 747
748 748 msgid "Default user has write access to new repositories"
749 749 msgstr "Standard-bruger har skrive-adgang til nye repositories"
750 750
751 751 msgid "Default user has admin access to new repositories"
752 752 msgstr "Standard-bruger har admin-adgang til nye repositories"
753 753
754 754 msgid "Default user has no access to new repository groups"
755 755 msgstr "Standard-bruger har ikke adgang til nye repository-grupper"
756 756
757 757 msgid "Default user has read access to new repository groups"
758 758 msgstr "Standard-bruger har læse-adgang til nye repository-grupper"
759 759
760 760 msgid "Default user has write access to new repository groups"
761 761 msgstr "Standard-bruger har skrive-adgang til nye repository-grupper"
762 762
763 763 msgid "Default user has admin access to new repository groups"
764 764 msgstr "Standard-bruger har admin-adgang til nye repository-grupper"
765 765
766 766 msgid "Default user has no access to new user groups"
767 767 msgstr "Standard-bruger har ikke adgang til nye brugergrupper"
768 768
769 769 msgid "Default user has read access to new user groups"
770 770 msgstr "Standard-bruger har læse-adgang til nye brugergrupper"
771 771
772 772 msgid "Default user has write access to new user groups"
773 773 msgstr "Standard-bruger har skrive-adgang til nye brugergrupper"
774 774
775 775 msgid "Default user has admin access to new user groups"
776 776 msgstr "Standard-bruger har admin-adgang til nye brugergrupper"
777 777
778 778 msgid "Only admins can create user groups"
779 779 msgstr "Kun administratorer kan oprette brugergrupper"
780 780
781 781 msgid "Non-admins can create user groups"
782 782 msgstr "Ikke-administratorer kan oprette brugergrupper"
783 783
784 784 msgid "Only admins can create top level repositories"
785 785 msgstr "Kun administratorer kan oprette top-niveau repositories"
786 786
787 787 msgid "Non-admins can create top level repositories"
788 788 msgstr "Ikke-administratorer kan oprette top-niveau repositories"
789 789
790 790 msgid "Only admins can fork repositories"
791 791 msgstr "Kun admins kan fork repositories"
792 792
793 793 msgid "Non-admins can fork repositories"
794 794 msgstr "Ikke-administratorer kan forke repositories"
795 795
796 796 msgid "Registration disabled"
797 797 msgstr "Registrering deaktiveret"
798 798
799 799 msgid "User registration with manual account activation"
800 800 msgstr "Brugerregistrering med manuel kontoaktivering"
801 801
802 802 msgid "User registration with automatic account activation"
803 803 msgstr "Brugerregistrering med automatisk kontoaktivering"
804 804
805 805 msgid "Not reviewed"
806 806 msgstr "Ikke gennemgået"
807 807
808 808 msgid "Under review"
809 809 msgstr "Under gennemgang"
810 810
811 811 msgid "Not approved"
812 812 msgstr "Ikke godkendt"
813 813
814 814 msgid "Approved"
815 815 msgstr "Godkendt"
816 816
817 817 msgid "Please enter a login"
818 818 msgstr "Indtast venligst et login"
819 819
820 820 msgid "Enter a value %(min)i characters long or more"
821 821 msgstr "Indtast en værdi med mindst %(min)i tegn"
822 822
823 823 msgid "Please enter a password"
824 824 msgstr "Skriv venligst et kodeord"
825 825
826 826 msgid "Enter %(min)i characters or more"
827 827 msgstr "Indtast %(min)i tegn eller flere"
828 828
829 829 msgid "Name must not contain only digits"
830 830 msgstr "Navn må ikke kun indeholde cifre"
831 831
832 832 msgid "New user %(new_username)s registered"
833 833 msgstr "Ny bruger %(new_username)s registreret"
834 834
835 835 msgid ""
836 836 "[Review] %(repo_name)s PR %(pr_nice_id)s \"%(pr_title_short)s\" from "
837 837 "%(pr_source_branch)s by %(pr_owner_username)s"
838 838 msgstr ""
839 839 "[Gennemgang] %(repo_name)s PR %(pr_nice_id)s \"%(pr_title_short)s\" fra "
840 840 "%(pr_source_branch)s af %(pr_owner_username)s"
841 841
842 842 msgid ""
843 843 "[Comment] %(repo_name)s PR %(pr_nice_id)s \"%(pr_title_short)s\" from "
844 844 "%(pr_source_branch)s by %(pr_owner_username)s"
845 845 msgstr ""
846 846 "[Kommentar] %(repo_name)s PR %(pr_nice_id)s \"%(pr_title_short)s\" fra "
847 847 "%(pr_source_branch)s af %(pr_owner_username)s"
848 848
849 849 msgid "Closing"
850 850 msgstr "Lukning"
851 851
852 852 msgid "Cannot create empty pull request"
853 853 msgstr "Kan ikke oprette en tom pull-forespørgsel"
854 854
855 855 msgid "Ignore whitespace"
856 856 msgstr "Ignorer mellemrum"
@@ -1,2482 +1,2482 b''
1 1 # Copyright (C) 2014 RhodeCode GmbH, and others.
2 2 # This file is distributed under the same license as the Kallithea project.
3 3
4 4 msgid ""
5 5 msgstr ""
6 6 "Report-Msgid-Bugs-To: translations@kallithea-scm.org\n"
7 7 "Language: de\n"
8 8 "MIME-Version: 1.0\n"
9 9 "Content-Type: text/plain; charset=UTF-8\n"
10 10 "Content-Transfer-Encoding: 8bit\n"
11 11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12 12
13 13 msgid ""
14 14 "CSRF token leak has been detected - all form tokens have been expired"
15 15 msgstr ""
16 16 "Es wurde ein CSRF Leck entdeckt. Alle Formular Token sind abgelaufen"
17 17
18 18 msgid "Repository not found in the filesystem"
19 19 msgstr "Das Repository konnte nicht im Filesystem gefunden werden"
20 20
21 21 msgid "There are no changesets yet"
22 22 msgstr "Es gibt noch keine Änderungssätze"
23 23
24 24 msgid "None"
25 25 msgstr "Keine"
26 26
27 27 msgid "(closed)"
28 28 msgstr "(geschlossen)"
29 29
30 30 msgid "Successfully deleted pull request %s"
31 31 msgstr "Pull-Request %s erfolgreich gelöscht"
32 32
33 33 msgid "Such revision does not exist for this repository"
34 34 msgstr "Die angegebene Version existiert nicht in diesem Repository"
35 35
36 36 msgid "Cannot show empty diff"
37 37 msgstr "Kann leeren diff nicht anzeigen"
38 38
39 39 msgid "No ancestor found for merge diff"
40 40 msgstr "Es konnte kein Vorfahre für den merge diff gefunden werden"
41 41
42 42 msgid "Multiple merge ancestors found for merge compare"
43 43 msgstr "Es wurden mehrere merge Vorfahren für den merge Vergleich gefunden"
44 44
45 45 msgid "Cannot compare repositories without using common ancestor"
46 46 msgstr ""
47 47 "Ohne einen gemeinsamen Vorfahren ist ein Vergleich der Repositories nicht "
48 48 "möglich"
49 49
50 50 msgid "No response"
51 51 msgstr "Keine Rückmeldung"
52 52
53 53 msgid "Unknown error"
54 54 msgstr "Unbekannter Fehler"
55 55
56 56 msgid ""
57 57 "The request could not be understood by the server due to malformed syntax."
58 58 msgstr ""
59 59 "Die Anfrage konnte wegen ungültiger Syntax vom Server nicht ausgewertet "
60 60 "werden."
61 61
62 62 msgid "Unauthorized access to resource"
63 63 msgstr "Unauthorisierter Zugang zur Ressource"
64 64
65 65 msgid "You don't have permission to view this page"
66 66 msgstr "Du hast keine Rechte, um diese Seite zu betrachten"
67 67
68 68 msgid "The resource could not be found"
69 69 msgstr "Die Ressource konnte nicht gefunden werden"
70 70
71 71 msgid ""
72 72 "The server encountered an unexpected condition which prevented it from "
73 73 "fulfilling the request."
74 74 msgstr ""
75 75 "Aufgrund einer unerwarteten Gegebenheit konnte der Server diese Anfrage "
76 76 "nicht vollenden."
77 77
78 78 msgid "%s committed on %s"
79 79 msgstr "%s committed am %s"
80 80
81 81 msgid "Changeset was too big and was cut off..."
82 82 msgstr "Der Änderungssatz war zu groß und wurde abgeschnitten..."
83 83
84 84 msgid "%s %s feed"
85 85 msgstr "%s %s Feed"
86 86
87 87 msgid "Changes on %s repository"
88 88 msgstr "Änderungen im %s Repository"
89 89
90 90 msgid "Click here to add new file"
91 91 msgstr "Hier klicken, um eine neue Datei hinzuzufügen"
92 92
93 93 msgid "%s at %s"
94 94 msgstr "%s auf %s"
95 95
96 96 msgid "Deleted file %s via Kallithea"
97 97 msgstr "Datei %s via Kallithea gelöscht"
98 98
99 99 msgid "Successfully deleted file %s"
100 100 msgstr "Datei %s erfolgreich gelöscht"
101 101
102 102 msgid "Error occurred during commit"
103 103 msgstr "Während des Commits trat ein Fehler auf"
104 104
105 105 msgid "Edited file %s via Kallithea"
106 106 msgstr "Datei %s via Kallithea editiert"
107 107
108 108 msgid "No changes"
109 109 msgstr "Keine Änderungen"
110 110
111 111 msgid "Successfully committed to %s"
112 112 msgstr "Der Commit zu %s war erfolgreich"
113 113
114 114 msgid "Added file via Kallithea"
115 115 msgstr "Datei via Kallithea hinzugefügt"
116 116
117 117 msgid "No content"
118 118 msgstr "Kein Inhalt"
119 119
120 120 msgid "No filename"
121 121 msgstr "Kein Dateiname"
122 122
123 123 msgid "Location must be relative path and must not contain .. in path"
124 124 msgstr "Der Ort muss ein relativer Pfad sein und darf nicht .. enthalten"
125 125
126 126 msgid "Downloads disabled"
127 127 msgstr "Downloads gesperrt"
128 128
129 129 msgid "Unknown revision %s"
130 130 msgstr "Unbekannte Revision %s"
131 131
132 132 msgid "Empty repository"
133 133 msgstr "Leeres Repository"
134 134
135 135 msgid "Unknown archive type"
136 136 msgstr "Unbekannter Archivtyp"
137 137
138 138 msgid "Changesets"
139 139 msgstr "Änderungssätze"
140 140
141 141 msgid "Branches"
142 142 msgstr "Entwicklungszweige"
143 143
144 144 msgid "Tags"
145 145 msgstr "Tags"
146 146
147 147 msgid "An error occurred during repository forking %s"
148 148 msgstr "Während des Forkens des Repositorys trat ein Fehler auf: %s"
149 149
150 150 msgid "Groups"
151 151 msgstr "Gruppen"
152 152
153 153 msgid "Repositories"
154 154 msgstr "Repositories"
155 155
156 156 msgid "Branch"
157 157 msgstr "Zweig"
158 158
159 159 msgid "Closed Branches"
160 160 msgstr "Geschlossene Branches"
161 161
162 162 msgid "Tag"
163 163 msgstr "Marke"
164 164
165 165 msgid "Bookmark"
166 166 msgstr "Lesezeichen"
167 167
168 168 msgid "Public Journal"
169 169 msgstr "Öffentliches Logbuch"
170 170
171 171 msgid "Journal"
172 172 msgstr "Logbuch"
173 173
174 174 msgid "Bad captcha"
175 175 msgstr "Falsches Captcha"
176 176
177 177 msgid "You have successfully registered with %s"
178 178 msgstr "Sie haben sich erfolgreich bei %s registriert"
179 179
180 180 msgid "A password reset confirmation code has been sent"
181 181 msgstr "Ihr Link um das Passwort zurückzusetzen wurde versendet"
182 182
183 183 msgid "Invalid password reset token"
184 184 msgstr "Ungültiges Token zum Zurücksetzen des Passworts."
185 185
186 186 msgid "Successfully updated password"
187 187 msgstr "Erfolgreich Kennwort geändert"
188 188
189 189 msgid "Invalid reviewer \"%s\" specified"
190 190 msgstr "Ungültigen Begutachter \"%s\" angegeben"
191 191
192 192 msgid "%s (closed)"
193 193 msgstr "%s (geschlossen)"
194 194
195 195 msgid "Changeset"
196 196 msgstr "Änderungssatz"
197 197
198 198 msgid "Special"
199 199 msgstr "Spezial"
200 200
201 201 msgid "Peer branches"
202 202 msgstr "Branches anderer"
203 203
204 204 msgid "Bookmarks"
205 205 msgstr "Lesezeichen"
206 206
207 207 msgid "Error creating pull request: %s"
208 208 msgstr "Fehler beim Erstellen des Pull-Requests: %s"
209 209
210 210 msgid "Error occurred while creating pull request"
211 211 msgstr "Während des Erstellens des Pull Requests trat ein Fehler auf"
212 212
213 213 msgid "Successfully opened new pull request"
214 214 msgstr "Es wurde erfolgreich ein neuer Pullrequest eröffnet"
215 215
216 216 msgid "Meanwhile, the following reviewers have been added: %s"
217 217 msgstr "Es wurden inzwischen folgende Begutachter hinzugefügt: %s"
218 218
219 219 msgid "Meanwhile, the following reviewers have been removed: %s"
220 220 msgstr "Es wurden inzwischen folgende Begutachter entfernt: %s"
221 221
222 222 msgid "No description"
223 223 msgstr "Keine Beschreibung"
224 224
225 225 msgid "Pull request updated"
226 226 msgstr "Pull Request aktualisiert"
227 227
228 228 msgid "Successfully deleted pull request"
229 229 msgstr "Erfolgreich Pull-Request gelöscht"
230 230
231 231 msgid "Revision %s not found in %s"
232 232 msgstr "Die Revision %s konnte in %s nicht gefunden werden"
233 233
234 234 msgid "This pull request has already been merged to %s."
235 235 msgstr "Dieser Pull Request wurde bereits in %s integriert."
236 236
237 237 msgid "This pull request has been closed and can not be updated."
238 238 msgstr ""
239 239 "Dieser Pull Request wurde geschlossen und kann daher nicht aktualisiert "
240 240 "werden."
241 241
242 242 msgid "Note: Branch %s has another head: %s."
243 243 msgstr "Hinweis: Branch %s hat einen anderen Head: %s."
244 244
245 245 msgid "The diff can't be shown - the PR revisions could not be found."
246 246 msgstr ""
247 247 "Der diff kann nicht angezeigt werden. Die Pull Request Revisionen konnten "
248 248 "nicht gefunden werden."
249 249
250 250 msgid "Invalid search query. Try quoting it."
251 251 msgstr ""
252 252 "Ungültige Suchanfrage. Versuchen sie es in Anführungzeichen zu setzen."
253 253
254 254 msgid "The server has no search index."
255 255 msgstr "Der Server hat keinen Suchindex."
256 256
257 257 msgid "An error occurred during search operation."
258 258 msgstr "Während der Suchoperation trat ein Fehler auf."
259 259
260 260 msgid "No data ready yet"
261 261 msgstr "Es stehen noch keine Daten zur Verfügung"
262 262
263 263 msgid "Statistics are disabled for this repository"
264 264 msgstr "Statistiken sind deaktiviert für dieses Repository"
265 265
266 266 msgid "Auth settings updated successfully"
267 267 msgstr "Anmeldeeinstellungen erfolgreich geändert"
268 268
269 269 msgid "error occurred during update of auth settings"
270 270 msgstr "Fehler bei der Änderung der Anmeldeeinstellungen aufgetreten"
271 271
272 272 msgid "Default settings updated successfully"
273 273 msgstr "Standardeinstellungen erfolgreich geupdated"
274 274
275 275 msgid "Error occurred during update of defaults"
276 276 msgstr "Ein Fehler trat beim updaten der Standardeinstellungen auf"
277 277
278 278 msgid "Forever"
279 279 msgstr "Immer"
280 280
281 281 msgid "5 minutes"
282 282 msgstr "5 Minuten"
283 283
284 284 msgid "1 hour"
285 285 msgstr "1 Stunde"
286 286
287 287 msgid "1 day"
288 288 msgstr "1 Tag"
289 289
290 290 msgid "1 month"
291 291 msgstr "1 Monat"
292 292
293 293 msgid "Lifetime"
294 294 msgstr "Lebenszeit"
295 295
296 296 msgid "Error occurred during gist creation"
297 297 msgstr "Ein fehler trat auf bei der Erstellung des gist"
298 298
299 299 msgid "Deleted gist %s"
300 300 msgstr "gist %s gelöscht"
301 301
302 302 msgid "Unmodified"
303 303 msgstr "Ungeändert"
304 304
305 305 msgid "Successfully updated gist content"
306 306 msgstr "Erfolgreich Kerninhalt aktualisiert"
307 307
308 308 msgid "Successfully updated gist data"
309 309 msgstr "Erfolgreich Kerndaten aktualisiert"
310 310
311 311 msgid "Error occurred during update of gist %s"
312 312 msgstr "Fehler beim Aktualisieren der Kerndaten %s"
313 313
314 314 msgid "You can't edit this user since it's crucial for entire application"
315 315 msgstr ""
316 316 "Sie können diesen Benutzer nicht editieren, da er von entscheidender "
317 317 "Bedeutung für die ganze Applikation ist"
318 318
319 319 msgid "Your account was updated successfully"
320 320 msgstr "Ihr Konto wurde erfolgreich aktualisiert"
321 321
322 322 msgid "Error occurred during update of user %s"
323 323 msgstr "Fehler beim Aktualisieren der Benutzer %s"
324 324
325 325 msgid "Error occurred during update of user password"
326 326 msgstr "Fehler bei der Änderung des Kennworts"
327 327
328 328 msgid "Added email %s to user"
329 329 msgstr "Die E-Mail-Addresse %s wurde zum Benutzer hinzugefügt"
330 330
331 331 msgid "An error occurred during email saving"
332 332 msgstr "Währen der Speicherung der E-Mail-Addresse trat ein Fehler auf"
333 333
334 334 msgid "Removed email from user"
335 335 msgstr "Die E-Mail-Addresse wurde vom Benutzer entfernt"
336 336
337 337 msgid "API key successfully created"
338 338 msgstr "API Key wurde erfolgreich erstellt"
339 339
340 340 msgid "API key successfully reset"
341 341 msgstr "API-Schlüssel erfolgreich zurückgesetzt"
342 342
343 343 msgid "API key successfully deleted"
344 344 msgstr "API-Schlüssel erfolgreich gelöscht"
345 345
346 346 msgid "Read"
347 347 msgstr "Lesen"
348 348
349 349 msgid "Write"
350 350 msgstr "Schreiben"
351 351
352 352 msgid "Admin"
353 353 msgstr "Admin"
354 354
355 355 msgid "Disabled"
356 356 msgstr "Deaktiviert"
357 357
358 358 msgid "Allowed with manual account activation"
359 359 msgstr "Erlaubt mit manueller Kontoaktivierung"
360 360
361 361 msgid "Allowed with automatic account activation"
362 362 msgstr "Erlaubt mit automatischer Kontoaktivierung"
363 363
364 364 msgid "Manual activation of external account"
365 365 msgstr "Manuelle Aktivierung externen Kontos"
366 366
367 367 msgid "Automatic activation of external account"
368 368 msgstr "Automatische Aktivierung externen Kontos"
369 369
370 370 msgid "Enabled"
371 371 msgstr "Aktiviert"
372 372
373 373 msgid "Global permissions updated successfully"
374 374 msgstr "Globale Berechtigungen erfolgreich geändert"
375 375
376 376 msgid "Error occurred during update of permissions"
377 377 msgstr "Fehler bei der Änderung der globalen Berechtigungen"
378 378
379 379 msgid "Error occurred during creation of repository group %s"
380 380 msgstr "Fehler bei der Erstellung der Repositoriumsgruppe %s"
381 381
382 382 msgid "Created repository group %s"
383 383 msgstr "Repositoriumsgruppe %s erstellt"
384 384
385 385 msgid "Updated repository group %s"
386 386 msgstr "Repositoriumsgruppe %s aktualisiert"
387 387
388 388 msgid "Error occurred during update of repository group %s"
389 389 msgstr "Fehler bei der Aktualisierung der Repositoriumsgruppe %s"
390 390
391 391 msgid "This group contains %s repositories and cannot be deleted"
392 392 msgstr "Die Gruppe enthält %s Repositorys und kann nicht gelöscht werden"
393 393
394 394 msgid "This group contains %s subgroups and cannot be deleted"
395 395 msgstr "Diese Gruppe enthält %s Untergruppen und kann nicht gelöscht werden"
396 396
397 397 msgid "Removed repository group %s"
398 398 msgstr "Repositoriumsgruppe %s entfernt"
399 399
400 400 msgid "Error occurred during deletion of repository group %s"
401 401 msgstr "Fehler beim Löschen der Repositoriumsgruppe %s"
402 402
403 msgid "Cannot revoke permission for yourself as admin"
404 msgstr "Als Administrator kann man sich keine Berechtigungen entziehen"
405
406 403 msgid "Repository group permissions updated"
407 404 msgstr "Berechtigungen der Repositoriumsgruppe aktualisiert"
408 405
409 406 msgid "An error occurred during revoking of permission"
410 407 msgstr "Fehler beim Entzug der Berechtigungen"
411 408
412 409 msgid "Error creating repository %s"
413 410 msgstr "Fehler beim Erstellen des Repositoriums %s"
414 411
415 412 msgid "Created repository %s from %s"
416 413 msgstr "Repositorium %s von %s erstellt"
417 414
418 415 msgid "Forked repository %s as %s"
419 416 msgstr "Aufgespaltenes Repositorium %s zu %s"
420 417
421 418 msgid "Created repository %s"
422 419 msgstr "Repositorium erzeugt %s"
423 420
424 421 msgid "Repository %s updated successfully"
425 422 msgstr "Repository %s wurde erfolgreich aktualisiert"
426 423
427 424 msgid "Error occurred during update of repository %s"
428 425 msgstr "Fehler bei der Aktualisierung des Repositoriums %s"
429 426
430 427 msgid "Detached %s forks"
431 428 msgstr "%s Spaltung abgetrennt"
432 429
433 430 msgid "Deleted %s forks"
434 431 msgstr "%s Spaltung gelöscht"
435 432
436 433 msgid "Deleted repository %s"
437 434 msgstr "Repositorium %s gelöscht"
438 435
439 436 msgid "Cannot delete repository %s which still has forks"
440 437 msgstr "%s konnte nicht gelöscht werden, da es noch Forks besitzt"
441 438
442 439 msgid "An error occurred during deletion of %s"
443 440 msgstr "Beim Löschen von %s trat ein Fehler auf"
444 441
445 442 msgid "Repository permissions updated"
446 443 msgstr "Repositoriumsberechtigungen aktualisiert"
447 444
448 445 msgid "Field validation error: %s"
449 446 msgstr "Feldvalidierung fehlgeschlagen: %s"
450 447
451 448 msgid "An error occurred during removal of field"
452 449 msgstr "Fehler beim Entfernen des Feldes"
453 450
454 451 msgid "-- Not a fork --"
455 452 msgstr "-- Keine Abspaltung --"
456 453
457 454 msgid "Updated repository visibility in public journal"
458 455 msgstr "Sichtbarkeit des Repositorys im Öffentlichen Logbuch aktualisiert"
459 456
460 457 msgid "An error occurred during setting this repository in public journal"
461 458 msgstr ""
462 459 "Es trat ein Fehler während der Aktualisierung der Sicherbarkeit dieses "
463 460 "Repositorys im Öffentlichen Logbuch auf"
464 461
465 462 msgid "Nothing"
466 463 msgstr "Nichts"
467 464
468 465 msgid "Marked repository %s as fork of %s"
469 466 msgstr "Markiere Repository %s als Abzweig von Repository %s"
470 467
471 468 msgid "An error occurred during this operation"
472 469 msgstr "Während dieser operation trat ein Fehler auf"
473 470
474 471 msgid "Pulled from remote location"
475 472 msgstr "Von entferntem Ort übertragen"
476 473
477 474 msgid "An error occurred during pull from remote location"
478 475 msgstr ""
479 476 "Es trat ein Fehler auf während das Repository von einem Entfernten "
480 477 "Speicherort übertragen wurde"
481 478
482 479 msgid "An error occurred during deletion of repository stats"
483 480 msgstr "Während des löschens der Repository Statistiken trat ein Fehler auf"
484 481
485 482 msgid "Updated VCS settings"
486 483 msgstr "VCS-Einstellungen aktualisiert"
487 484
488 485 msgid "Error occurred while updating application settings"
489 486 msgstr ""
490 487 "Ein Fehler ist während der Aktualisierung der Applikationseinstellungen "
491 488 "aufgetreten"
492 489
493 490 msgid "Repositories successfully rescanned. Added: %s. Removed: %s."
494 491 msgstr ""
495 492 "Die Repositories wurden erfolgreich überprüft. Hinzugefügt: %s. Entfernt: "
496 493 "%s."
497 494
498 495 msgid "Updated application settings"
499 496 msgstr "Anwendungseinstellungen aktualisiert"
500 497
501 498 msgid "Updated visualisation settings"
502 499 msgstr "Visualisierungseinstellungen aktualisiert"
503 500
504 501 msgid "Error occurred during updating visualisation settings"
505 502 msgstr ""
506 503 "Es ist ein Fehler während der Aktualisierung der Layouteinstellung "
507 504 "aufgetreten"
508 505
509 506 msgid "Please enter email address"
510 507 msgstr "Bitte geben Sie eine E-Mail-Adresse an"
511 508
512 509 msgid "Send email task created"
513 510 msgstr "Task zum Versenden von E-Mails erstellt"
514 511
515 512 msgid "Added new hook"
516 513 msgstr "Neuer Hook hinzugefügt"
517 514
518 515 msgid "Updated hooks"
519 516 msgstr "Die Hooks wurden aktutalisiert"
520 517
521 518 msgid "Error occurred during hook creation"
522 519 msgstr "Während der Erzeugung des Hooks ist ein Fehler aufgetreten"
523 520
524 521 msgid "Whoosh reindex task scheduled"
525 522 msgstr "Whoosh Reindizierungs Aufgabe wurde zur Ausführung geplant"
526 523
527 524 msgid "Created user group %s"
528 525 msgstr "Nutzergruppe %s erstellt"
529 526
530 527 msgid "Error occurred during creation of user group %s"
531 528 msgstr ""
532 529 "Es ist ein Fehler während der Erstellung der Nutzergruppe %s aufgetreten"
533 530
534 531 msgid "Updated user group %s"
535 532 msgstr "Aktualisierte Nutzergruppe %s"
536 533
537 534 msgid "Error occurred during update of user group %s"
538 535 msgstr ""
539 536 "Während des Updates der Benutzergruppe %s ist ein Fehler aufgetreten"
540 537
541 538 msgid "Successfully deleted user group"
542 539 msgstr "Die Nutzergruppe wurde erfolgreich entfernt"
543 540
544 541 msgid "An error occurred during deletion of user group"
545 542 msgstr "Während des Löschens der Benutzergruppe ist ein Fehler aufgetreten"
546 543
547 544 msgid "Target group cannot be the same"
548 545 msgstr "Zielgruppe kann nicht die gleiche Gruppe sein"
549 546
550 547 msgid "User group permissions updated"
551 548 msgstr "Berechtigungen der Benutzergruppe wurden aktualisiert"
552 549
550 msgid "Cannot revoke permission for yourself as admin"
551 msgstr "Als Administrator kann man sich keine Berechtigungen entziehen"
552
553 553 msgid "Updated permissions"
554 554 msgstr "Berechtigungen wurden aktualisiert"
555 555
556 556 msgid "An error occurred during permissions saving"
557 557 msgstr ""
558 558 "Es ist ein Fehler während des Speicherns der Berechtigungen aufgetreten"
559 559
560 560 msgid "Created user %s"
561 561 msgstr "Nutzer %s erstellt"
562 562
563 563 msgid "Error occurred during creation of user %s"
564 564 msgstr "Während des Erstellens des Benutzers %s ist ein Fehler aufgetreten"
565 565
566 566 msgid "User updated successfully"
567 567 msgstr "Der Benutzer wurde erfolgreich aktualisiert"
568 568
569 569 msgid "Successfully deleted user"
570 570 msgstr "Der Nutzer wurde erfolgreich gelöscht"
571 571
572 572 msgid "An error occurred during deletion of user"
573 573 msgstr "Während der Löschen des Benutzers trat ein Fehler auf"
574 574
575 575 msgid "The default user cannot be edited"
576 576 msgstr "Der Standard-Benutzer kann nicht bearbeitet werden"
577 577
578 578 msgid "Added IP address %s to user whitelist"
579 579 msgstr "Die IP-Adresse %s wurde zur Nutzerwhitelist hinzugefügt"
580 580
581 581 msgid "An error occurred while adding IP address"
582 582 msgstr "Während des Speicherns der IP-Adresse ist ein Fehler aufgetreten"
583 583
584 584 msgid "Removed IP address from user whitelist"
585 585 msgstr "IP-Adresse wurde von der Nutzerwhitelist entfernt"
586 586
587 587 msgid "You need to be a registered user to perform this action"
588 588 msgstr ""
589 589 "Sie müssen ein Registrierter Nutzer sein um diese Aktion durchzuführen"
590 590
591 591 msgid "You need to be signed in to view this page"
592 592 msgstr "Sie müssen sich anmelden um diese Seite aufzurufen"
593 593
594 594 msgid "Binary file"
595 595 msgstr "Binäre Datei"
596 596
597 597 msgid ""
598 598 "Changeset was too big and was cut off, use diff menu to display this diff"
599 599 msgstr ""
600 600 "Der Änderungssatz war zu groß und wurde abgeschnitten, benutzen sie das "
601 601 "Diff Menü um die Unterschiede anzuzeigen"
602 602
603 603 msgid "No changes detected"
604 604 msgstr "Keine Änderungen erkannt"
605 605
606 606 msgid "Increase diff context to %(num)s lines"
607 607 msgstr "Erhöhe diff-Kontext auf %(num)s Zeilen"
608 608
609 609 msgid "Deleted branch: %s"
610 610 msgstr "Branch %s gelöscht"
611 611
612 612 msgid "Created tag: %s"
613 613 msgstr "Tag %s erstellt"
614 614
615 615 msgid "Show all combined changesets %s->%s"
616 616 msgstr "Zeige alle Kombinierten Änderungensätze %s->%s"
617 617
618 618 msgid "Compare view"
619 619 msgstr "Vergleichsansicht"
620 620
621 621 msgid "and"
622 622 msgstr "und"
623 623
624 624 msgid "%s more"
625 625 msgstr "%s mehr"
626 626
627 627 msgid "revisions"
628 628 msgstr "revisionen"
629 629
630 630 msgid "Fork name %s"
631 631 msgstr "Fork Name %s"
632 632
633 633 msgid "Pull request %s"
634 634 msgstr "Pull Request %s"
635 635
636 636 msgid "[deleted] repository"
637 637 msgstr "[gelöscht] Repository"
638 638
639 639 msgid "[created] repository"
640 640 msgstr "[erstellt] Repository"
641 641
642 642 msgid "[created] repository as fork"
643 643 msgstr "[erstellt] Repository als Fork"
644 644
645 645 msgid "[forked] repository"
646 646 msgstr "[forked] Repository"
647 647
648 648 msgid "[updated] repository"
649 649 msgstr "[aktualisiert] Repository"
650 650
651 651 msgid "[downloaded] archive from repository"
652 652 msgstr "Archiv von Repository [heruntergeladen]"
653 653
654 654 msgid "[delete] repository"
655 655 msgstr "Repository [gelöscht]"
656 656
657 657 msgid "[created] user"
658 658 msgstr "Benutzer [erstellt]"
659 659
660 660 msgid "[updated] user"
661 661 msgstr "Benutzer [akutalisiert]"
662 662
663 663 msgid "[created] user group"
664 664 msgstr "Benutzergruppe [erstellt]"
665 665
666 666 msgid "[updated] user group"
667 667 msgstr "Benutzergruppe [aktualisiert]"
668 668
669 669 msgid "[commented] on revision in repository"
670 670 msgstr "Revision [kommentiert] in Repository"
671 671
672 672 msgid "[commented] on pull request for"
673 673 msgstr "Pull Request [kommentiert] für"
674 674
675 675 msgid "[closed] pull request for"
676 676 msgstr "Pull Request [geschlossen] für"
677 677
678 678 msgid "[pushed] into"
679 679 msgstr "[Pushed] in"
680 680
681 681 msgid "[committed via Kallithea] into repository"
682 682 msgstr "[via Kallithea] in Repository [committed]"
683 683
684 684 msgid "[pulled from remote] into repository"
685 685 msgstr "[Pulled von Remote] in Repository"
686 686
687 687 msgid "[pulled] from"
688 688 msgstr "[Pulled] von"
689 689
690 690 msgid "[started following] repository"
691 691 msgstr "[Following gestartet] für Repository"
692 692
693 693 msgid "[stopped following] repository"
694 694 msgstr "[Following gestoppt] für Repository"
695 695
696 696 msgid " and %s more"
697 697 msgstr " und %s weitere"
698 698
699 699 msgid "No files"
700 700 msgstr "Keine Dateien"
701 701
702 702 msgid "new file"
703 703 msgstr "neue Datei"
704 704
705 705 msgid "mod"
706 706 msgstr "mod"
707 707
708 708 msgid "del"
709 709 msgstr "entf"
710 710
711 711 msgid "rename"
712 712 msgstr "umbenennen"
713 713
714 714 msgid "chmod"
715 715 msgstr "chmod"
716 716
717 717 msgid "%d year"
718 718 msgid_plural "%d years"
719 719 msgstr[0] "%d Jahr"
720 720 msgstr[1] "%d Jahre"
721 721
722 722 msgid "%d month"
723 723 msgid_plural "%d months"
724 724 msgstr[0] "%d Monat"
725 725 msgstr[1] "%d Monate"
726 726
727 727 msgid "%d day"
728 728 msgid_plural "%d days"
729 729 msgstr[0] "%d Tag"
730 730 msgstr[1] "%d Tage"
731 731
732 732 msgid "%d hour"
733 733 msgid_plural "%d hours"
734 734 msgstr[0] "%d Stunde"
735 735 msgstr[1] "%d Stunden"
736 736
737 737 msgid "%d minute"
738 738 msgid_plural "%d minutes"
739 739 msgstr[0] "%d Minute"
740 740 msgstr[1] "%d Minuten"
741 741
742 742 msgid "%d second"
743 743 msgid_plural "%d seconds"
744 744 msgstr[0] "%d Sekunde"
745 745 msgstr[1] "%d Sekunden"
746 746
747 747 msgid "in %s"
748 748 msgstr "in %s"
749 749
750 750 msgid "%s ago"
751 751 msgstr "vor %s"
752 752
753 753 msgid "in %s and %s"
754 754 msgstr "in %s und %s"
755 755
756 756 msgid "%s and %s ago"
757 757 msgstr "%s und %s her"
758 758
759 759 msgid "just now"
760 760 msgstr "jetzt gerade"
761 761
762 762 msgid "top level"
763 763 msgstr "höchste Ebene"
764 764
765 765 msgid "Kallithea Administrator"
766 766 msgstr "Kallithea Administrator"
767 767
768 768 msgid "Default user has no access to new repositories"
769 769 msgstr "Der Standard-Benutzer hat keinen Zugriff auf neue Repositories"
770 770
771 771 msgid "Default user has read access to new repositories"
772 772 msgstr "Der Standard-Benutzer hat Leserechte auf neuen Repositories"
773 773
774 774 msgid "Default user has write access to new repositories"
775 775 msgstr "Der Standard-Benutzer hat Schreibrechte auf neuen Repositories"
776 776
777 777 msgid "Default user has admin access to new repositories"
778 778 msgstr "Der Standard-Benutzer hat Admin-Rechte auf neuen Repositories"
779 779
780 780 msgid "Default user has no access to new repository groups"
781 781 msgstr ""
782 782 "Der Standard-Benutzer hat keinen Zugriff auf neue Repository-Gruppen"
783 783
784 784 msgid "Default user has read access to new repository groups"
785 785 msgstr "Der Standard-Benutzer hat Leserechte auf neuen Repository-Gruppen"
786 786
787 787 msgid "Default user has write access to new repository groups"
788 788 msgstr "Der Standard-Benutzer Schreibrechte auf neuen Repository-Gruppen"
789 789
790 790 msgid "Default user has admin access to new repository groups"
791 791 msgstr "Der Standard-Benutzer Admin-Rechte auf neuen Repository-Gruppen"
792 792
793 793 msgid "Default user has no access to new user groups"
794 794 msgstr "Der Standard-Benutzer hat keinen Zugriff auf neue Benutzer-Gruppen"
795 795
796 796 msgid "Default user has read access to new user groups"
797 797 msgstr "Der Standard-Benutzer hat Leserechte auf neuen Benutzer-Gruppen"
798 798
799 799 msgid "Default user has write access to new user groups"
800 800 msgstr "Der Standard-Benutzer hat Schreibrechte auf neuen Benutzer-Gruppen"
801 801
802 802 msgid "Default user has admin access to new user groups"
803 803 msgstr "Der Standard-Benutzer hat Admin-Rechte auf neuen Benutzer-Gruppen"
804 804
805 805 msgid "Only admins can create user groups"
806 806 msgstr "Nur Admins können Benutzer-Gruppen erstellen"
807 807
808 808 msgid "Non-admins can create user groups"
809 809 msgstr "Nicht-Admins können Benutzer-Gruppen erstellen"
810 810
811 811 msgid "Only admins can create top level repositories"
812 812 msgstr "Nur Admins können Repositories auf oberster Ebene erstellen"
813 813
814 814 msgid "Non-admins can create top level repositories"
815 815 msgstr "Nicht-Admins können Repositories oberster Ebene erstellen"
816 816
817 817 msgid "Only admins can fork repositories"
818 818 msgstr "Nur Admins können Repositories forken"
819 819
820 820 msgid "Non-admins can fork repositories"
821 821 msgstr "Nicht-Admins können Repositorys forken"
822 822
823 823 msgid "Registration disabled"
824 824 msgstr "Registrierung deaktiviert"
825 825
826 826 msgid "User registration with manual account activation"
827 827 msgstr "Benutzerregistrierung mit manueller Kontoaktivierung"
828 828
829 829 msgid "User registration with automatic account activation"
830 830 msgstr "Benutzerregistrierung mit automatischer Kontoaktivierung"
831 831
832 832 msgid "Not reviewed"
833 833 msgstr "Nicht Begutachtet"
834 834
835 835 msgid "Under review"
836 836 msgstr "In Begutachtung"
837 837
838 838 msgid "Approved"
839 839 msgstr "Akzeptiert"
840 840
841 841 msgid "Please enter a login"
842 842 msgstr "Bitte einen Benutzernamen eingeben"
843 843
844 844 msgid "Enter a value %(min)i characters long or more"
845 845 msgstr "Bitte einen Wert mit mindestens %(min)i Zeichen eingeben"
846 846
847 847 msgid "Please enter a password"
848 848 msgstr "Bitte ein Passwort eingeben"
849 849
850 850 msgid "Enter %(min)i characters or more"
851 851 msgstr "Bitte mindestens %(min)i Zeichen eingeben"
852 852
853 853 msgid "Name must not contain only digits"
854 854 msgstr "Name darf nicht nur Ziffern enthalten"
855 855
856 856 msgid "New user %(new_username)s registered"
857 857 msgstr "Neuer Benutzer %(new_username)s registriert"
858 858
859 859 msgid "Closing"
860 860 msgstr "Schließen"
861 861
862 862 msgid ""
863 863 "Cannot create pull request - criss cross merge detected, please merge a "
864 864 "later %s revision to %s"
865 865 msgstr ""
866 866 "Pull-Request kann nicht erstellt werden - Criss Cross Merge erkannt, "
867 867 "bitte eine spätere %s-Revision in %s zusammenführen."
868 868
869 869 msgid "You are not authorized to create the pull request"
870 870 msgstr "Sie sind nicht berechtigt, den Pull-Request anzulegen."
871 871
872 872 msgid "Closed, next iteration: %s ."
873 873 msgstr "Geschlossen, nächste Iteration: %s ."
874 874
875 875 msgid "latest tip"
876 876 msgstr "Letzter Tip"
877 877
878 878 msgid ""
879 879 "User \"%s\" still owns %s repositories and cannot be removed. Switch "
880 880 "owners or remove those repositories: %s"
881 881 msgstr ""
882 882 "Der Benutzer \"%s\" besitzt noch immer %s Repositories und kann daher "
883 883 "nicht entfernt werden. Entweder muss der Besitzer geändert oder das "
884 884 "Repository entfernt werden: %s"
885 885
886 886 msgid ""
887 887 "User \"%s\" still owns %s repository groups and cannot be removed. Switch "
888 888 "owners or remove those repository groups: %s"
889 889 msgstr ""
890 890 "Der Benutzer \"%s\" ist noch der Besitzer von %s Repositorygruppen und "
891 891 "kann daher nicht entfernt werden. Entweder muss der Besitzer geändert "
892 892 "oder die Repositorygruppen müssen entfernt werden: %s"
893 893
894 894 msgid ""
895 895 "User \"%s\" still owns %s user groups and cannot be removed. Switch "
896 896 "owners or remove those user groups: %s"
897 897 msgstr ""
898 898 "Der Benutzer \"%s\" besitzt noch immer %s Benutzergruppen und kann daher "
899 899 "nicht entfernt werden. Entweder muss der Besitzer geändert oder die "
900 900 "Benutzergruppen müssen gelöscht werden: %s"
901 901
902 902 msgid "Password reset link"
903 903 msgstr "Link zum Zurücksetzen des Passworts"
904 904
905 905 msgid ""
906 906 "The password to your account %s has been changed using password reset "
907 907 "form."
908 908 msgstr ""
909 909 "Das Passwort für dein Konto %s wurde mit dem Formular zum Zurücksetzen "
910 910 "des Passworts geändert."
911 911
912 912 msgid "Value cannot be an empty list"
913 913 msgstr "Eine leere Liste ist kein gültiger Wert"
914 914
915 915 msgid "Username \"%(username)s\" already exists"
916 916 msgstr "Benutezrname \"%(username)s\" existiert bereits"
917 917
918 918 msgid "The input is not valid"
919 919 msgstr "Die Eingabe ist nicht gültig"
920 920
921 921 msgid "Username %(username)s is not valid"
922 922 msgstr "Benutzername \"%(username)s\" ist ungültig"
923 923
924 924 msgid "Invalid user group name"
925 925 msgstr "Ungültiger Benutzergruppenname"
926 926
927 927 msgid "User group \"%(usergroup)s\" already exists"
928 928 msgstr "Benutzergruppe \"%(usergroup)s\" existiert bereits"
929 929
930 930 msgid ""
931 931 "user group name may only contain alphanumeric characters underscores, "
932 932 "periods or dashes and must begin with alphanumeric character"
933 933 msgstr ""
934 934 "Der Name einer Benutzergruppe darf nur alphanumerische Zeichen, "
935 935 "Unterstriche, Punkte oder Bindestriche enthalten und muss mit einem "
936 936 "alphanumerischen Zeichen beginnen"
937 937
938 938 msgid "Cannot assign this group as parent"
939 939 msgstr "Kann diese Gruppe nicht als vorgesetzt setzen"
940 940
941 941 msgid "Group \"%(group_name)s\" already exists"
942 942 msgstr "Gruppe \"%(group_name)s\" existiert bereits"
943 943
944 944 msgid "Repository with name \"%(group_name)s\" already exists"
945 945 msgstr "Es gibt bereits ein Repository mit \"%(group_name)s\""
946 946
947 947 msgid "Invalid characters (non-ascii) in password"
948 948 msgstr "Üngültige(nicht ASCII) Zeichen im Passwort"
949 949
950 950 msgid "Invalid old password"
951 951 msgstr "Ungültiges altes Passwort"
952 952
953 953 msgid "Passwords do not match"
954 954 msgstr "Die Passwörter stimmen nicht überein"
955 955
956 956 msgid "Repository named %(repo)s already exists"
957 957 msgstr "Es gibt bereits ein Repository mit \"%(repo)s\""
958 958
959 959 msgid "Repository \"%(repo)s\" already exists in group \"%(group)s\""
960 960 msgstr ""
961 961 "Es gibt bereits ein Repository mit \"%(repo)s\" in der Gruppe "
962 962 "\"%(group)s\""
963 963
964 964 msgid "Repository group with name \"%(repo)s\" already exists"
965 965 msgstr "Eine Repositorygruppe mit dem Namen \"%(repo)s\" existiert bereits"
966 966
967 967 msgid "Invalid repository URL"
968 968 msgstr "Ungültige Repository-URL"
969 969
970 970 msgid "Fork has to be the same type as parent"
971 971 msgstr "Forke um den selben typ wie der Vorgesetze zu haben"
972 972
973 973 msgid "You don't have permissions to create repository in this group"
974 974 msgstr ""
975 975 "Du hast nicht die erforderlichen Berechtigungen, um in dieser Gruppe ein "
976 976 "Repository zu erzeugen"
977 977
978 978 msgid "no permission to create repository in root location"
979 979 msgstr "keine Berechtigung, um ein Repository auf höchster Ebene anzulegen"
980 980
981 981 msgid "You don't have permissions to create a group in this location"
982 982 msgstr ""
983 983 "Sie haben keine Berechtigung, um an diesem Ort ein Repository anzulegen"
984 984
985 985 msgid "This username or user group name is not valid"
986 986 msgstr "Dieser Benutzername oder Benutzergruppenname ist nicht gültig"
987 987
988 988 msgid "This is not a valid path"
989 989 msgstr "Dies ist ein Ungültiger Pfad"
990 990
991 991 msgid "This email address is already in use"
992 992 msgstr "Diese E-Mail-Addresse ist bereits in Benutzung"
993 993
994 994 msgid "Email address \"%(email)s\" not found"
995 995 msgstr "E-Mail-Addresse „%(email)s“ existiert nicht."
996 996
997 997 msgid ""
998 998 "The LDAP Login attribute of the CN must be specified - this is the name "
999 999 "of the attribute that is equivalent to \"username\""
1000 1000 msgstr ""
1001 1001 "Das LDAP-Login-Attribut des CN muss angeben werden - Es ist der Name des "
1002 1002 "Attributes äquivalent zu \"Benutzername\""
1003 1003
1004 1004 msgid "Please enter a valid IPv4 or IPv6 address"
1005 1005 msgstr "Bitte eine gültige IPv4- oder IPv6-Adresse angeben"
1006 1006
1007 1007 msgid ""
1008 1008 "The network size (bits) must be within the range of 0-32 (not %(bits)r)"
1009 1009 msgstr ""
1010 1010 "Die Größe (in Bits) des Netzwerks muss im Bereich 0-32 liegen (nicht "
1011 1011 "%(bits)r)"
1012 1012
1013 1013 msgid "Key name can only consist of letters, underscore, dash or numbers"
1014 1014 msgstr ""
1015 1015 "Der Name eines Schlüssels darf nur aus Buchstaben, Ziffern, Unterstrich "
1016 1016 "und Bindestrich bestehen"
1017 1017
1018 1018 msgid "Filename cannot be inside a directory"
1019 1019 msgstr "Dateiname darf kein Unterverzeichnis enthalten"
1020 1020
1021 1021 msgid "Plugins %(loaded)s and %(next_to_load)s both export the same name"
1022 1022 msgstr ""
1023 1023 "Die Plug-Ins %(loaded)s und %(next_to_load)s exportieren beide den selben "
1024 1024 "Namen"
1025 1025
1026 1026 msgid "About"
1027 1027 msgstr "Über"
1028 1028
1029 1029 msgid "Add Repository"
1030 1030 msgstr "Repository hinzufügen"
1031 1031
1032 1032 msgid "Add Repository Group"
1033 1033 msgstr "Repositorygruppe hinzufügen"
1034 1034
1035 1035 msgid "You have admin right to this group, and can edit it"
1036 1036 msgstr "Du hast Adminrechte für diese Gruppe und kannst sie editieren"
1037 1037
1038 1038 msgid "Edit Repository Group"
1039 1039 msgstr "Repositorygruppe bearbeiten"
1040 1040
1041 1041 msgid "Repository"
1042 1042 msgstr "Repository"
1043 1043
1044 1044 msgid "Description"
1045 1045 msgstr "Beschreibung"
1046 1046
1047 1047 msgid "Last Change"
1048 1048 msgstr "Letzte Änderung"
1049 1049
1050 1050 msgid "Tip"
1051 1051 msgstr "Tipp"
1052 1052
1053 1053 msgid "Owner"
1054 1054 msgstr "Besitzer"
1055 1055
1056 1056 msgid "Log In"
1057 1057 msgstr "Log In"
1058 1058
1059 1059 msgid "Log In to %s"
1060 1060 msgstr "Log In in %s"
1061 1061
1062 1062 msgid "Username"
1063 1063 msgstr "Benutzername"
1064 1064
1065 1065 msgid "Password"
1066 1066 msgstr "Passwort"
1067 1067
1068 1068 msgid "Stay logged in after browser restart"
1069 1069 msgstr "Nach dem Neustart des Browsers eingeloggt bleiben"
1070 1070
1071 1071 msgid "Forgot your password?"
1072 1072 msgstr "Passwort vergessen?"
1073 1073
1074 1074 msgid "Don't have an account?"
1075 1075 msgstr "Kein Account?"
1076 1076
1077 1077 msgid "Sign In"
1078 1078 msgstr "Einloggen"
1079 1079
1080 1080 msgid "Password Reset"
1081 1081 msgstr "Passwort zurücksetzen"
1082 1082
1083 1083 msgid "Reset Your Password to %s"
1084 1084 msgstr "Setze dein Passwort auf %s zurück"
1085 1085
1086 1086 msgid "Reset Your Password"
1087 1087 msgstr "Setze dein Passwort zurück"
1088 1088
1089 1089 msgid "Email Address"
1090 1090 msgstr "E-Mail-Adresse"
1091 1091
1092 1092 msgid "Captcha"
1093 1093 msgstr "CAPTCHA"
1094 1094
1095 1095 msgid "Send Password Reset Email"
1096 1096 msgstr "E-Mail zum Zurücksetzen des Passworts anfordern"
1097 1097
1098 1098 msgid ""
1099 1099 "A password reset link will be sent to the specified email address if it "
1100 1100 "is registered in the system."
1101 1101 msgstr ""
1102 1102 "Ein Link zum Zurücksetzen des Passworts wird an die angegebene E-Mail-"
1103 1103 "Adresse gesendet, wenn diese im System registriert ist."
1104 1104
1105 1105 msgid "You are about to set a new password for the email address %s."
1106 1106 msgstr ""
1107 1107 "Du bist dabei, ein neues Passwort für die E-Mail-Adresse %s festzulegen."
1108 1108
1109 1109 msgid ""
1110 1110 "Note that you must use the same browser session for this as the one used "
1111 1111 "to request the password reset."
1112 1112 msgstr ""
1113 1113 "Beachten Sie, dass Sie dafür die gleiche Browsersitzung verwenden müssen, "
1114 1114 "mit der Sie das Zurücksetzen des Passworts beantragt haben."
1115 1115
1116 1116 msgid "Code you received in the email"
1117 1117 msgstr "Code, den du in der E-Mail erhalten hast"
1118 1118
1119 1119 msgid "Confirm"
1120 1120 msgstr "Bestätigen"
1121 1121
1122 1122 msgid "Sign Up"
1123 1123 msgstr "Registrieren"
1124 1124
1125 1125 msgid "Sign Up to %s"
1126 1126 msgstr "Registrieren für %s"
1127 1127
1128 1128 msgid "Re-enter password"
1129 1129 msgstr "Passwort erneut eingeben"
1130 1130
1131 1131 msgid "First Name"
1132 1132 msgstr "Vorname"
1133 1133
1134 1134 msgid "Last Name"
1135 1135 msgstr "Nachname"
1136 1136
1137 1137 msgid "Email"
1138 1138 msgstr "E-Mail"
1139 1139
1140 1140 msgid "Registered accounts are ready to use and need no further action."
1141 1141 msgstr "Registrierte Konten können ohne weitere Aktion genutzt werden."
1142 1142
1143 1143 msgid "Please wait for an administrator to activate your account."
1144 1144 msgstr ""
1145 1145 "Bitte warten Sie auf die Aktivierung Ihres Benutzerkontos durch einen "
1146 1146 "Administrator."
1147 1147
1148 1148 msgid "Admin Journal"
1149 1149 msgstr "Admin-Logbuch"
1150 1150
1151 1151 msgid "journal filter..."
1152 1152 msgstr "Logbuch filter..."
1153 1153
1154 1154 msgid "Filter"
1155 1155 msgstr "Filter"
1156 1156
1157 1157 msgid "%s Entry"
1158 1158 msgid_plural "%s Entries"
1159 1159 msgstr[0] "%s Eintrag"
1160 1160 msgstr[1] "%s Einträge"
1161 1161
1162 1162 msgid "Action"
1163 1163 msgstr "Aktion"
1164 1164
1165 1165 msgid "Date"
1166 1166 msgstr "Datum"
1167 1167
1168 1168 msgid "From IP"
1169 1169 msgstr "Von IP"
1170 1170
1171 1171 msgid "No actions yet"
1172 1172 msgstr "Es sind bisher keine Aktionen passiert"
1173 1173
1174 1174 msgid "Authentication Settings"
1175 1175 msgstr "Authentifizierungseinstellungen"
1176 1176
1177 1177 msgid "Authentication"
1178 1178 msgstr "Authentifizierung"
1179 1179
1180 1180 msgid "Authentication Plugins"
1181 1181 msgstr "Plug-Ins zur Authentifizierung"
1182 1182
1183 1183 msgid "Enabled Plugins"
1184 1184 msgstr "Aktivierte Plugins"
1185 1185
1186 1186 msgid "Available built-in plugins"
1187 1187 msgstr "Verfügbare mitgelieferte Plug-Ins"
1188 1188
1189 1189 msgid "Plugin"
1190 1190 msgstr "Plugin"
1191 1191
1192 1192 msgid "Save"
1193 1193 msgstr "Speichern"
1194 1194
1195 1195 msgid "Repository Defaults"
1196 1196 msgstr "Repositorystandards"
1197 1197
1198 1198 msgid "Type"
1199 1199 msgstr "Typ"
1200 1200
1201 1201 msgid "Private repository"
1202 1202 msgstr "Privates Repository"
1203 1203
1204 1204 msgid ""
1205 1205 "Private repositories are only visible to people explicitly added as "
1206 1206 "collaborators."
1207 1207 msgstr ""
1208 1208 "Private Repositories sind nur für explizit hinzugefügte Mitarbeiter "
1209 1209 "sichtbar."
1210 1210
1211 1211 msgid "Enable statistics"
1212 1212 msgstr "Aktiviere Statistiken"
1213 1213
1214 1214 msgid "Enable statistics window on summary page."
1215 1215 msgstr "Statistik-Fenster in der Zusammenfassungsseite aktivieren."
1216 1216
1217 1217 msgid "Enable downloads"
1218 1218 msgstr "Aktiviere Downloads"
1219 1219
1220 1220 msgid "Enable download menu on summary page."
1221 1221 msgstr "Download-Menü auf der Zusammenfassungsseite aktivieren."
1222 1222
1223 1223 msgid "Edit Gist"
1224 1224 msgstr "Gist editieren"
1225 1225
1226 1226 msgid ""
1227 1227 "Gist was updated since you started editing. Copy your changes and click "
1228 1228 "%(here)s to reload new version."
1229 1229 msgstr ""
1230 1230 "Gist wurde während der Änderung aktualisiert. Änderungen kopieren und "
1231 1231 "%(here)s klicken um die neue Version nachzuladen."
1232 1232
1233 1233 msgid "here"
1234 1234 msgstr "hier"
1235 1235
1236 1236 msgid "Gist description ..."
1237 1237 msgstr "Gist Beschreibung ..."
1238 1238
1239 1239 msgid "Gist lifetime"
1240 1240 msgstr "Gist Lebenszeit"
1241 1241
1242 1242 msgid "Expires"
1243 1243 msgstr "Verfällt"
1244 1244
1245 1245 msgid "Update Gist"
1246 1246 msgstr "Gist aktualisieren"
1247 1247
1248 1248 msgid "Cancel"
1249 1249 msgstr "Abbrechen"
1250 1250
1251 1251 msgid "Private Gists for User %s"
1252 1252 msgstr "Privater Gist für Benutzer %s"
1253 1253
1254 1254 msgid "Public Gists for User %s"
1255 1255 msgstr "Öffentlicher Gist für Benutzer %s"
1256 1256
1257 1257 msgid "Public Gists"
1258 1258 msgstr "Öffentliche Gists"
1259 1259
1260 1260 msgid "Create New Gist"
1261 1261 msgstr "Neuen Gist erstellen"
1262 1262
1263 1263 msgid "Created"
1264 1264 msgstr "Erstellt"
1265 1265
1266 1266 msgid "There are no gists yet"
1267 1267 msgstr "Bisher sind keine Gists vorhanden"
1268 1268
1269 1269 msgid "New Gist"
1270 1270 msgstr "Neuer Gist"
1271 1271
1272 1272 msgid "Create Private Gist"
1273 1273 msgstr "Privaten Gist erstellen"
1274 1274
1275 1275 msgid "Create Public Gist"
1276 1276 msgstr "Öffentlichen Gist erstellen"
1277 1277
1278 1278 msgid "Reset"
1279 1279 msgstr "Zurücksetzen"
1280 1280
1281 1281 msgid "Gist"
1282 1282 msgstr "Gist"
1283 1283
1284 1284 msgid "URL"
1285 1285 msgstr "URL"
1286 1286
1287 1287 msgid "Public Gist"
1288 1288 msgstr "Öffentlicher Gist"
1289 1289
1290 1290 msgid "Private Gist"
1291 1291 msgstr "Privater Gist"
1292 1292
1293 1293 msgid "Delete"
1294 1294 msgstr "Löschen"
1295 1295
1296 1296 msgid "Confirm to delete this Gist"
1297 1297 msgstr "Löschen des Gists bestätigen"
1298 1298
1299 1299 msgid "Edit"
1300 1300 msgstr "Bearbeiten"
1301 1301
1302 1302 msgid "Show as Raw"
1303 1303 msgstr "Als Raw anzeigen"
1304 1304
1305 1305 msgid "created"
1306 1306 msgstr "erstellt"
1307 1307
1308 1308 msgid "Show as raw"
1309 1309 msgstr "Als Raw anzeigen"
1310 1310
1311 1311 msgid "My Account"
1312 1312 msgstr "Mein Account"
1313 1313
1314 1314 msgid "Profile"
1315 1315 msgstr "Profil"
1316 1316
1317 1317 msgid "Email Addresses"
1318 1318 msgstr "E-Mail-Adressen"
1319 1319
1320 1320 msgid "API Keys"
1321 1321 msgstr "API Keys"
1322 1322
1323 1323 msgid "Owned Repositories"
1324 1324 msgstr "Eigene Repositories"
1325 1325
1326 1326 msgid "Watched Repositories"
1327 1327 msgstr "Beobachtete Repositories"
1328 1328
1329 1329 msgid "Show Permissions"
1330 1330 msgstr "Berechtigungen anzeigen"
1331 1331
1332 1332 msgid "Built-in"
1333 1333 msgstr "Mitgeliefert"
1334 1334
1335 1335 msgid "Confirm to reset this API key: %s"
1336 1336 msgstr "Zurücksetzen des API-Schlüssels \"%s\" bestätigen"
1337 1337
1338 1338 msgid "Expired"
1339 1339 msgstr "Verfallen"
1340 1340
1341 1341 msgid "Confirm to remove this API key: %s"
1342 1342 msgstr "Entfernen des API-Schlüssels \"%s\" bestätigen"
1343 1343
1344 1344 msgid "Remove"
1345 1345 msgstr "Entfernen"
1346 1346
1347 1347 msgid "No additional API keys specified"
1348 1348 msgstr "Keine weiteren API-Schlüssel angegeben"
1349 1349
1350 1350 msgid "New API key"
1351 1351 msgstr "Neuer API-Schlüssel"
1352 1352
1353 1353 msgid "Add"
1354 1354 msgstr "Hinzufügen"
1355 1355
1356 1356 msgid ""
1357 1357 "\n"
1358 1358 "API keys are used to let scripts or services access %s using your\n"
1359 1359 "account, as if you had provided the script or service with your actual\n"
1360 1360 "password.\n"
1361 1361 msgstr ""
1362 1362 "\n"
1363 1363 "API-Schlüssel werden verwendet, um Skripten oder Diensten denselben\n"
1364 1364 "Zugang zu %s zu gewähren, den Sie mit Eingabe Ihres Passworts\n"
1365 1365 "erlangen würden.\n"
1366 1366
1367 1367 msgid ""
1368 1368 "\n"
1369 1369 "Like passwords, API keys should therefore never be shared with others,\n"
1370 1370 "nor passed to untrusted scripts or services. If such sharing should\n"
1371 1371 "happen anyway, reset the API key on this page to prevent further use.\n"
1372 1372 msgstr ""
1373 1373 "\n"
1374 1374 "Ebenso wie Passworte, sollten API-Schlüssel somit niemals mit anderen\n"
1375 1375 "geteilt oder von nicht-vertrauenswürdigen Skripten oder Diensten\n"
1376 1376 "verwendet werden. Falls ein solcher Zugriff zwischenzeitlich passiert "
1377 1377 "sein\n"
1378 1378 "sollte, dann können Sie hier den API-Schlüssel zurücksetzen, um weiteren\n"
1379 1379 "Missbrauchen zu verhindern.\n"
1380 1380
1381 1381 msgid "Primary"
1382 1382 msgstr "Primär"
1383 1383
1384 1384 msgid "Confirm to delete this email: %s"
1385 1385 msgstr "Löschen der E-Mail „%s“ bestätigen"
1386 1386
1387 1387 msgid "No additional emails specified."
1388 1388 msgstr "Keine weiteren E-Mails spezifiziert."
1389 1389
1390 1390 msgid "New email address"
1391 1391 msgstr "Neue E-Mailadresse"
1392 1392
1393 1393 msgid "Change Your Account Password"
1394 1394 msgstr "Passwort des Benutzerkontos ändern"
1395 1395
1396 1396 msgid "Current password"
1397 1397 msgstr "Aktuelles Passwort"
1398 1398
1399 1399 msgid "New password"
1400 1400 msgstr "Neues Passwort"
1401 1401
1402 1402 msgid "Confirm new password"
1403 1403 msgstr "Bestätige neues Passwort"
1404 1404
1405 1405 msgid ""
1406 1406 "This account is managed with %s and the password cannot be changed here"
1407 1407 msgstr ""
1408 1408 "Dieser Account wird mit %s verwaltet - daher kann das Passwort nicht "
1409 1409 "geändert werden"
1410 1410
1411 1411 msgid "Gravatar"
1412 1412 msgstr "Gravatar"
1413 1413
1414 1414 msgid "Change %s avatar at"
1415 1415 msgstr "Benutzerbild %s ändern unter"
1416 1416
1417 1417 msgid "Avatars are disabled"
1418 1418 msgstr "Avatare sind deaktiviert"
1419 1419
1420 1420 msgid "Repositories You Own"
1421 1421 msgstr "Repositories in Ihrem Besitz"
1422 1422
1423 1423 msgid "Name"
1424 1424 msgstr "Name"
1425 1425
1426 1426 msgid "Repositories You are Watching"
1427 1427 msgstr "Repositories, denen Sie folgen"
1428 1428
1429 1429 msgid "Default Permissions"
1430 1430 msgstr "Standardrechte"
1431 1431
1432 1432 msgid "Global"
1433 1433 msgstr "Global"
1434 1434
1435 1435 msgid "IP Whitelist"
1436 1436 msgstr "IP Whitelist"
1437 1437
1438 1438 msgid "Anonymous access"
1439 1439 msgstr "Anonymer Zugang"
1440 1440
1441 1441 msgid ""
1442 1442 "Allow access to Kallithea without needing to log in. Anonymous users use "
1443 1443 "%s user permissions."
1444 1444 msgstr ""
1445 1445 "Unauthentifizierten Zugriff auf Kallithea erlauben. Anonyme Benutzer "
1446 1446 "verwenden %s Benutzerrechte."
1447 1447
1448 1448 msgid ""
1449 1449 "All default permissions on each repository will be reset to chosen "
1450 1450 "permission, note that all custom default permission on repositories will "
1451 1451 "be lost"
1452 1452 msgstr ""
1453 1453 "Alle Standardrechte jedes Repositorys werden auf die gewählten Rechte "
1454 1454 "gesetzt. Beachten Sie, dass alle spezifischen Standardrechte der "
1455 1455 "Repositories verloren gehen"
1456 1456
1457 1457 msgid "Apply to all existing repositories"
1458 1458 msgstr "Auf alle bestehenden Repositories anwenden"
1459 1459
1460 1460 msgid "Permissions for the Default user on new repositories."
1461 1461 msgstr "Berechtigungen für neue Repositories des Vorgabe-Benutzers."
1462 1462
1463 1463 msgid "Repository group"
1464 1464 msgstr "Repository Gruppe"
1465 1465
1466 1466 msgid ""
1467 1467 "All default permissions on each repository group will be reset to chosen "
1468 1468 "permission, note that all custom default permission on repository groups "
1469 1469 "will be lost"
1470 1470 msgstr ""
1471 1471 "Alle Standardrechte jeder Repositorygruppe werden auf die gewählten "
1472 1472 "Rechte gesetzt. Beachten Sie, dass all spezifischen Standardrechte der "
1473 1473 "Repositorygruppen verloren gehen"
1474 1474
1475 1475 msgid "Apply to all existing repository groups"
1476 1476 msgstr "Auf alle bestehenden Repository-Gruppen anwenden"
1477 1477
1478 1478 msgid "Permissions for the Default user on new repository groups."
1479 1479 msgstr "Berechtigungen des Vorgabe-Benutzers für neue Repository-Gruppen."
1480 1480
1481 1481 msgid "User group"
1482 1482 msgstr "Benutzergruppe"
1483 1483
1484 1484 msgid ""
1485 1485 "All default permissions on each user group will be reset to chosen "
1486 1486 "permission, note that all custom default permission on user groups will "
1487 1487 "be lost"
1488 1488 msgstr ""
1489 1489 "Alle Vorgabe-Berechtigungen jeder Benutzergruppe werden auf die gewählten "
1490 1490 "Berechtigungen zurückgesetzt. Beachten Sie, dass dabei alle Anpassungen "
1491 1491 "von Vorgabe-Berechtigungen für Benutzergruppen verloren gehen"
1492 1492
1493 1493 msgid "Apply to all existing user groups"
1494 1494 msgstr "Auf alle bestehenden Benutzergruppen anwenden"
1495 1495
1496 1496 msgid "Permissions for the Default user on new user groups."
1497 1497 msgstr "Berechtigungen für neue Benutzergruppen des den Vorgabe-Benutzer."
1498 1498
1499 1499 msgid "Top level repository creation"
1500 1500 msgstr "Erstellung eines übergeordneten Repositories"
1501 1501
1502 1502 msgid ""
1503 1503 "Enable this to allow non-admins to create repositories at the top level."
1504 1504 msgstr ""
1505 1505 "Aktiviere dies, damit Nicht-Administratoren Repositories auf der obersten "
1506 1506 "Ebene erstellen können."
1507 1507
1508 1508 msgid "User group creation"
1509 1509 msgstr "Benutzergruppen Erstellung"
1510 1510
1511 1511 msgid "Enable this to allow non-admins to create user groups."
1512 1512 msgstr ""
1513 1513 "Aktivieren Sie dies, damit Nicht-Administratoren Benutzergruppen "
1514 1514 "erstellen können."
1515 1515
1516 1516 msgid "Repository forking"
1517 1517 msgstr "Repository-forking"
1518 1518
1519 1519 msgid "Enable this to allow non-admins to fork repositories."
1520 1520 msgstr ""
1521 1521 "Aktivieren Sie dies, um Nichtadministratoren zu erlauben, Repositories zu "
1522 1522 "forken."
1523 1523
1524 1524 msgid "Registration"
1525 1525 msgstr "Registrierung"
1526 1526
1527 1527 msgid "All IP addresses are allowed."
1528 1528 msgstr "Alle IP-Adressen sind zulässig."
1529 1529
1530 1530 msgid "New IP address"
1531 1531 msgstr "Neue IP-Adresse"
1532 1532
1533 1533 msgid "Repository Groups"
1534 1534 msgstr "Repositorygruppen"
1535 1535
1536 1536 msgid "Group name"
1537 1537 msgstr "Gruppen name"
1538 1538
1539 1539 msgid "Group parent"
1540 1540 msgstr "Übergeordnete Gruppe"
1541 1541
1542 1542 msgid "Copy parent group permissions"
1543 1543 msgstr "Rechte der übergeordneten Gruppe kopieren"
1544 1544
1545 1545 msgid "Copy permission set from parent repository group."
1546 1546 msgstr "Rechte der übergeordneten Repositorygruppe kopieren."
1547 1547
1548 1548 msgid "%s Repository Group Settings"
1549 1549 msgstr "%s Einstellungen für Repositorygruppen"
1550 1550
1551 1551 msgid "Add Child Group"
1552 1552 msgstr "Untergruppe hinzufügen"
1553 1553
1554 1554 msgid "Settings"
1555 1555 msgstr "Einstellungen"
1556 1556
1557 1557 msgid "Advanced"
1558 1558 msgstr "Erweitert"
1559 1559
1560 1560 msgid "Permissions"
1561 1561 msgstr "Rechte"
1562 1562
1563 1563 msgid "Repository Group: %s"
1564 1564 msgstr "Repositorygruppe: %s"
1565 1565
1566 1566 msgid "Top level repositories"
1567 1567 msgstr "Repositories oberster Ebene"
1568 1568
1569 1569 msgid "Total repositories"
1570 1570 msgstr "Alle Repositories"
1571 1571
1572 1572 msgid "Children groups"
1573 1573 msgstr "Untergruppen"
1574 1574
1575 1575 msgid "Created on"
1576 1576 msgstr "Erstellt am"
1577 1577
1578 1578 msgid "Confirm to delete this group: %s with %s repository"
1579 1579 msgid_plural "Confirm to delete this group: %s with %s repositories"
1580 1580 msgstr[0] "Löschen der Gruppe bestätigen: %s mit %s Repository"
1581 1581 msgstr[1] "Löschen der Gruppe bestätigen: %s mit %s Repositories"
1582 1582
1583 1583 msgid "Delete this repository group"
1584 1584 msgstr "Diese Repositorygruppe löschen"
1585 1585
1586 1586 msgid "Not visible"
1587 1587 msgstr "Nicht sichtbar"
1588 1588
1589 1589 msgid "Visible"
1590 1590 msgstr "Sichtbar"
1591 1591
1592 1592 msgid "Add/Edit groups"
1593 1593 msgstr "Benutzergruppen hinzufügen oder ändern"
1594 1594
1595 1595 msgid "Default"
1596 1596 msgstr "Vorgabe"
1597 1597
1598 1598 msgid "Revoke"
1599 1599 msgstr "Zurückziehen"
1600 1600
1601 1601 msgid "Add new"
1602 1602 msgstr "Neues hinzufügen"
1603 1603
1604 1604 msgid "Apply to children"
1605 1605 msgstr "Auf untergeordnete Elemente anwenden"
1606 1606
1607 1607 msgid "Both"
1608 1608 msgstr "Beide"
1609 1609
1610 1610 msgid ""
1611 1611 "Set or revoke permission to all children of that group, including non-"
1612 1612 "private repositories and other groups if selected."
1613 1613 msgstr ""
1614 1614 "Setzen oder zurückziehen von Berechtigungen bezüglich aller "
1615 1615 "untergeordneten Elemente, einschließlich nicht-privater Repositories und "
1616 1616 "anderer Gruppen, falls ausgewählt."
1617 1617
1618 1618 msgid "Type name of user"
1619 1619 msgstr "Typname des Benutzers"
1620 1620
1621 1621 msgid "Remove this group"
1622 1622 msgstr "Diese Gruppe löschen"
1623 1623
1624 1624 msgid "Confirm to delete this group"
1625 1625 msgstr "Löschen der Gruppe bestätigen"
1626 1626
1627 1627 msgid "Repository group %s"
1628 1628 msgstr "Repository-Gruppe %s"
1629 1629
1630 1630 msgid "Repository Groups Administration"
1631 1631 msgstr "Repositorygruppenverwaltung"
1632 1632
1633 1633 msgid "Number of Top-level Repositories"
1634 1634 msgstr "Anzahl der Repositories oberster Ebene"
1635 1635
1636 1636 msgid "Type of repository to create."
1637 1637 msgstr "Repository Typ der erstellt werden soll."
1638 1638
1639 1639 msgid "Clone remote repository"
1640 1640 msgstr "Entferntes Repository clonen"
1641 1641
1642 1642 msgid "Repository URL"
1643 1643 msgstr "Repository URL"
1644 1644
1645 1645 msgid ""
1646 1646 "Optional: URL of a remote repository. If set, the repository will be "
1647 1647 "created as a clone from this URL."
1648 1648 msgstr ""
1649 1649 "Optional: URL eines entfernten Repositories. Falls gesetzt, dann wird das "
1650 1650 "Repository als Clon von dieser URL erstellt."
1651 1651
1652 1652 msgid ""
1653 1653 "Keep it short and to the point. Use a README file for longer descriptions."
1654 1654 msgstr ""
1655 1655 "Halten Sie es kurz und prägnant. Benutzen Sie eine README-Datei für "
1656 1656 "längere Beschreibungen."
1657 1657
1658 1658 msgid "Optionally select a group to put this repository into."
1659 1659 msgstr ""
1660 1660 "Wähle bei Bedarf eine Gruppe, der dieses Repository zugeordnet werden "
1661 1661 "soll."
1662 1662
1663 1663 msgid "Landing revision"
1664 1664 msgstr "Start Revision"
1665 1665
1666 1666 msgid ""
1667 1667 "Default revision for files page, downloads, full text search index and "
1668 1668 "readme generation"
1669 1669 msgstr ""
1670 1670 "Vorgabe-Revision für Datei-Seiten, Downloads, Volltext-Indizierung und "
1671 1671 "Doku-Erzeugung"
1672 1672
1673 1673 msgid "%s Creating Repository"
1674 1674 msgstr "%s Erstelle Repository"
1675 1675
1676 1676 msgid "Creating repository"
1677 1677 msgstr "Repository erzeugen"
1678 1678
1679 1679 msgid ""
1680 1680 "Repository \"%(repo_name)s\" is being created, you will be redirected "
1681 1681 "when this process is finished.repo_name"
1682 1682 msgstr ""
1683 1683 "Repository \"%(repo_name)s\" wird erzeugt. Sie werden dorthin umgeleitet, "
1684 1684 "sobald der Prozess abgeschlossen ist."
1685 1685
1686 1686 msgid ""
1687 1687 "We're sorry but error occurred during this operation. Please check your "
1688 1688 "Kallithea server logs, or contact administrator."
1689 1689 msgstr ""
1690 1690 "Bedauerlicherweise ist bei dieser Operation ein Fehler aufgetreten. Bitte "
1691 1691 "prüfen Sie die Kallithea-Server-Logs or kontaktieren Sie die "
1692 1692 "Administrierenden."
1693 1693
1694 1694 msgid "%s Repository Settings"
1695 1695 msgstr "%s Repositoryeinstellungen"
1696 1696
1697 1697 msgid "Extra Fields"
1698 1698 msgstr "Extra-Feld"
1699 1699
1700 1700 msgid "Remote"
1701 1701 msgstr "Entfernt"
1702 1702
1703 1703 msgid "Statistics"
1704 1704 msgstr "Statistiken"
1705 1705
1706 1706 msgid "Parent"
1707 1707 msgstr "Übergeordnet"
1708 1708
1709 1709 msgid "Set"
1710 1710 msgstr "Setzen"
1711 1711
1712 1712 msgid "Manually set this repository as a fork of another from the list."
1713 1713 msgstr ""
1714 1714 "Manuell dieses Repository als Fork einem anderen aus der List zuordnen."
1715 1715
1716 1716 msgid "Public Journal Visibility"
1717 1717 msgstr "Sichtbarkeit des öffentlichen Logbuches"
1718 1718
1719 1719 msgid "Remove from public journal"
1720 1720 msgstr "Entferne aus dem Öffentlichen Logbuch"
1721 1721
1722 1722 msgid "Add to Public Journal"
1723 1723 msgstr "Zum öffentlichen Logbuch hinzufügen"
1724 1724
1725 1725 msgid ""
1726 1726 "All actions done in this repository will be visible to everyone in the "
1727 1727 "public journal."
1728 1728 msgstr ""
1729 1729 "Alle Aktionen, die in diesem Repository ausgeführt wurden, sind im "
1730 1730 "öffentlichen Logbuch für jeden einsehbar."
1731 1731
1732 1732 msgid "Confirm to delete this repository: %s"
1733 1733 msgstr "Löschen des Repositorys bestätigen: %s"
1734 1734
1735 1735 msgid "Delete this Repository"
1736 1736 msgstr "Dieses Repository löschen"
1737 1737
1738 1738 msgid "This repository has %s fork"
1739 1739 msgid_plural "This repository has %s forks"
1740 1740 msgstr[0] "Dieses Repository hat %s Fork"
1741 1741 msgstr[1] "Dieses Repository hat %s Forks"
1742 1742
1743 1743 msgid "Detach forks"
1744 1744 msgstr "Fork abtrennen"
1745 1745
1746 1746 msgid "Delete forks"
1747 1747 msgstr "Forks löschen"
1748 1748
1749 1749 msgid ""
1750 1750 "The deleted repository will be moved away and hidden until the "
1751 1751 "administrator expires it. The administrator can both permanently delete "
1752 1752 "it or restore it."
1753 1753 msgstr ""
1754 1754 "Das gelöschte Repository wird beiseitegelegt und versteckt, bis ein "
1755 1755 "Administrierender es verfallen lässt. Der Administrierende kann es sowohl "
1756 1756 "permanent löschen oder wiederherstellen."
1757 1757
1758 1758 msgid "Label"
1759 1759 msgstr "Bezeichnung"
1760 1760
1761 1761 msgid "Key"
1762 1762 msgstr "Schlüssel"
1763 1763
1764 1764 msgid "Confirm to delete this field: %s"
1765 1765 msgstr "Löschen des Felds bestätigen: %s"
1766 1766
1767 1767 msgid "New field key"
1768 1768 msgstr "Eindeutiges Kennzeichen des neuen Felds"
1769 1769
1770 1770 msgid "New field label"
1771 1771 msgstr "Neue Bezeichnung des Felds"
1772 1772
1773 1773 msgid "Enter short label"
1774 1774 msgstr "Eingabe einer kurzen Bezeichnung"
1775 1775
1776 1776 msgid "New field description"
1777 1777 msgstr "Beschreibung des neuen Felds"
1778 1778
1779 1779 msgid "Enter description of a field"
1780 1780 msgstr "Beschreibung eines Felds eingeben"
1781 1781
1782 1782 msgid "Extra fields are disabled."
1783 1783 msgstr "Zusatzfelder sind deaktiviert."
1784 1784
1785 1785 msgid "Private Repository"
1786 1786 msgstr "Privates Repository"
1787 1787
1788 1788 msgid "Fork of repository"
1789 1789 msgstr "Fork des Repository"
1790 1790
1791 1791 msgid "Remote repository URL"
1792 1792 msgstr "URL des entfernten Repository"
1793 1793
1794 1794 msgid "Pull Changes from Remote Repository"
1795 1795 msgstr "Hole Änderungen vom entfernten Repository"
1796 1796
1797 1797 msgid "Confirm to pull changes from remote repository."
1798 1798 msgstr "Bestätige die Abholung von Änderungen vom entfernten Repository."
1799 1799
1800 1800 msgid "This repository does not have a remote repository URL."
1801 1801 msgstr "Für dieses Repository ist keine nicht-lokale URL angegeben."
1802 1802
1803 1803 msgid "Remote repository"
1804 1804 msgstr "Entferntes Repository"
1805 1805
1806 1806 msgid ""
1807 1807 "Optional: URL of a remote repository. If set, the repository can be "
1808 1808 "pulled from this URL."
1809 1809 msgstr ""
1810 1810 "Optional: URL eines entfernten Repositories. Falls gesetzt, dann kann das "
1811 1811 "Repository von dieser URL bezogen werden."
1812 1812
1813 1813 msgid "Change owner of this repository."
1814 1814 msgstr "Besitzer des Repositorys ändern."
1815 1815
1816 1816 msgid "Processed commits"
1817 1817 msgstr "Verarbeitete Commits"
1818 1818
1819 1819 msgid "Processed progress"
1820 1820 msgstr "Verarbeiteter Fortschritt"
1821 1821
1822 1822 msgid "Reset Statistics"
1823 1823 msgstr "Statistiken zurücksetzen"
1824 1824
1825 1825 msgid "Confirm to remove current statistics."
1826 1826 msgstr "Bestätigen Sie, um die aktuellen Statistiken zu entfernen."
1827 1827
1828 1828 msgid "Repositories Administration"
1829 1829 msgstr "Repositoryverwaltung"
1830 1830
1831 1831 msgid "State"
1832 1832 msgstr "Zustand"
1833 1833
1834 1834 msgid "Settings Administration"
1835 1835 msgstr "Einstellungsverwaltung"
1836 1836
1837 1837 msgid "VCS"
1838 1838 msgstr "VCS"
1839 1839
1840 1840 msgid "Remap and Rescan"
1841 1841 msgstr "Neu zuordnen und neu scannen"
1842 1842
1843 1843 msgid "Visual"
1844 1844 msgstr "Visuell"
1845 1845
1846 1846 msgid "Hooks"
1847 1847 msgstr "Hooks"
1848 1848
1849 1849 msgid "Full Text Search"
1850 1850 msgstr "Volltextsuche"
1851 1851
1852 1852 msgid "System Info"
1853 1853 msgstr "Systeminfo"
1854 1854
1855 1855 msgid "Send test email to"
1856 1856 msgstr "Test-E-Mail senden an"
1857 1857
1858 1858 msgid "Send"
1859 1859 msgstr "Senden"
1860 1860
1861 1861 msgid "Site branding"
1862 1862 msgstr "Website-Branding"
1863 1863
1864 1864 msgid "Set a custom title for your Kallithea Service."
1865 1865 msgstr ""
1866 1866 "Legen Sie einen benutzerdefinierten Titel für Ihren Kallithea-Dienst fest."
1867 1867
1868 1868 msgid "HTTP authentication realm"
1869 1869 msgstr "HTTP-Authentifizierungsrealm"
1870 1870
1871 1871 msgid "HTML/JavaScript/CSS customization block"
1872 1872 msgstr "HTML/JavaScript/CSS Anpassungsblock"
1873 1873
1874 1874 msgid "ReCaptcha public key"
1875 1875 msgstr "ReCaptcha öffentlicher Schlüssel"
1876 1876
1877 1877 msgid "Public key for reCaptcha system."
1878 1878 msgstr "Öffentlicher Schlüssel für das reCaptcha-System."
1879 1879
1880 1880 msgid "ReCaptcha private key"
1881 1881 msgstr "ReCaptcha privater Schlüssel"
1882 1882
1883 1883 msgid ""
1884 1884 "Private key for reCaptcha system. Setting this value will enable captcha "
1885 1885 "on registration."
1886 1886 msgstr ""
1887 1887 "Privater Schlüssel für das reCaptcha-System. Wenn Sie diesen Wert "
1888 1888 "einstellen, wird das Captcha bei der Registrierung aktiviert."
1889 1889
1890 1890 msgid "Save Settings"
1891 1891 msgstr "Einstellungen speichern"
1892 1892
1893 1893 msgid ""
1894 1894 "Hooks can be used to trigger actions on certain events such as push / "
1895 1895 "pull. They can trigger Python functions or external applications."
1896 1896 msgstr ""
1897 1897 "Mit Hilfe von Hooks können bei bestimmten Ereignissen, wie z.B. Push / "
1898 1898 "Pull, Aktionen ausgelöst werden. Sie können Python-Funktionen oder "
1899 1899 "externe Anwendungen auslösen."
1900 1900
1901 1901 msgid "Failed to remove hook"
1902 1902 msgstr "Hook konnte nicht entfernt werden"
1903 1903
1904 1904 msgid "Delete records of missing repositories"
1905 1905 msgstr "Datensätze fehlender Repositories löschen"
1906 1906
1907 1907 msgid ""
1908 1908 "Check this option to remove all comments, pull requests and other records "
1909 1909 "related to repositories that no longer exist in the filesystem."
1910 1910 msgstr ""
1911 1911 "Aktivieren Sie diese Option, um alle Kommentare, Pull-Requests und andere "
1912 1912 "Datensätze zu entfernen, die sich auf Repositories beziehen, die nicht "
1913 1913 "mehr im Dateisystem vorhanden sind."
1914 1914
1915 1915 msgid "Invalidate cache for all repositories"
1916 1916 msgstr "Cache für alle Repositories entwerten"
1917 1917
1918 1918 msgid "Check this to reload data and clear cache keys for all repositories."
1919 1919 msgstr ""
1920 1920 "Aktivieren Sie dies, um Daten neu zu laden und Cache-Schlüssel für alle "
1921 1921 "Repositories zu löschen."
1922 1922
1923 1923 msgid "Install Git hooks"
1924 1924 msgstr "Git-Hooks installieren"
1925 1925
1926 1926 msgid "Rescan Repositories"
1927 1927 msgstr "Repositories erneut scannen"
1928 1928
1929 1929 msgid "Index build option"
1930 1930 msgstr "Option zum Aufbau eines Index"
1931 1931
1932 1932 msgid "Build from scratch"
1933 1933 msgstr "Von Grund auf neu bauen"
1934 1934
1935 1935 msgid ""
1936 1936 "This option completely reindexes all of the repositories for proper "
1937 1937 "fulltext search capabilities."
1938 1938 msgstr ""
1939 1939 "Diese Option führt zu einer vollständigen Neuindizierung aller "
1940 1940 "Repositories für eine korrekte Volltextsuche."
1941 1941
1942 1942 msgid "Reindex"
1943 1943 msgstr "Erneut Indizieren"
1944 1944
1945 1945 msgid "Checking for updates..."
1946 1946 msgstr "Prüfe auf Updates..."
1947 1947
1948 1948 msgid "Kallithea version"
1949 1949 msgstr "Kallithea-Version"
1950 1950
1951 1951 msgid "Kallithea configuration file"
1952 1952 msgstr "Kallithea Konfigurationsdatei"
1953 1953
1954 1954 msgid "Python version"
1955 1955 msgstr "Python-Version"
1956 1956
1957 1957 msgid "Platform"
1958 1958 msgstr "Plattform"
1959 1959
1960 1960 msgid "Git version"
1961 1961 msgstr "Git-Version"
1962 1962
1963 1963 msgid "Git path"
1964 1964 msgstr "Git-Pfad"
1965 1965
1966 1966 msgid "Python Packages"
1967 1967 msgstr "Python-Pakete"
1968 1968
1969 1969 msgid "Show repository size after push"
1970 1970 msgstr "Zeigt die Größe des Repositories nach dem Push an"
1971 1971
1972 1972 msgid "Update repository after push (hg update)"
1973 1973 msgstr "Repository nach dem Push aktualisieren (hg update)"
1974 1974
1975 1975 msgid "Mercurial extensions"
1976 1976 msgstr "Mercurial-Erweiterungen"
1977 1977
1978 1978 msgid "Enable largefiles extension"
1979 1979 msgstr "Erweiterung largefiles aktivieren"
1980 1980
1981 1981 msgid "Location of repositories"
1982 1982 msgstr "Ort der Repositories"
1983 1983
1984 1984 msgid ""
1985 1985 "Click to unlock. You must restart Kallithea in order to make this setting "
1986 1986 "take effect."
1987 1987 msgstr ""
1988 1988 "Zum Entsperren klicken. Sie müssen Kallithea neu starten, damit diese "
1989 1989 "Einstellung wirksam wird."
1990 1990
1991 1991 msgid ""
1992 1992 "Filesystem location where repositories are stored. After changing this "
1993 1993 "value, a restart and rescan of the repository folder are both required."
1994 1994 msgstr ""
1995 1995 "Dateisystem-Speicherort, an dem die Repositories gespeichert sind. Nach "
1996 1996 "dem Ändern dieses Wertes sind sowohl ein Neustart als auch ein erneuter "
1997 1997 "Scan des Repository-Ordners erforderlich."
1998 1998
1999 1999 msgid "General"
2000 2000 msgstr "Allgemein"
2001 2001
2002 2002 msgid "Use repository extra fields"
2003 2003 msgstr "Zusätzliche Repository-Felder verwenden"
2004 2004
2005 2005 msgid "Allows storing additional customized fields per repository."
2006 2006 msgstr ""
2007 2007 "Ermöglicht die Speicherung zusätzlicher benutzerdefinierter Felder pro "
2008 2008 "Repository."
2009 2009
2010 2010 msgid "Show Kallithea version"
2011 2011 msgstr "Zeige Kallithea-Version"
2012 2012
2013 2013 msgid ""
2014 2014 "Shows or hides a version number of Kallithea displayed in the footer."
2015 2015 msgstr ""
2016 2016 "Zeigt oder verbirgt eine Versionsnummer von Kallithea, die in der "
2017 2017 "Fußzeile angezeigt wird."
2018 2018
2019 2019 msgid "Show user Gravatars"
2020 2020 msgstr "Benutzer Gravatare anzeigen"
2021 2021
2022 2022 msgid ""
2023 2023 "Gravatar URL allows you to use another avatar server application.\n"
2024 2024 " The following "
2025 2025 "variables of the URL will be replaced accordingly.\n"
2026 2026 " {scheme} "
2027 2027 "'http' or 'https' sent from running Kallithea server,\n"
2028 2028 " {email} user "
2029 2029 "email,\n"
2030 2030 " {md5email} md5 "
2031 2031 "hash of the user email (like at gravatar.com),\n"
2032 2032 " {size} size "
2033 2033 "of the image that is expected from the server application,\n"
2034 2034 " {netloc} "
2035 2035 "network location/server host of running Kallithea server"
2036 2036 msgstr ""
2037 2037 "Gravatar URL ermöglicht es Ihnen, eine andere Avatar-Serveranwendung zu "
2038 2038 "verwenden.\n"
2039 2039 " Die folgenden "
2040 2040 "Variablen der URL werden entsprechend ersetzt.\n"
2041 2041 " {scheme} "
2042 2042 "'http' oder'https', die vom laufenden Kallithea-Server gesendet werden,\n"
2043 2043 " {email} "
2044 2044 "Benutzer-E-Mail,\n"
2045 2045 " {md5email} md5 "
2046 2046 "Hash der Benutzer-E-Mail (wie bei gravatar.com),\n"
2047 2047 " {size} "
2048 2048 "Größe des Bildes, das von der Serveranwendung erwartet wird,\n"
2049 2049 " {netloc} "
2050 2050 "Netzwerkstandort/Server-Host des laufenden Kallithea-Servers"
2051 2051
2052 2052 msgid ""
2053 2053 "Number of items displayed in the repository pages before pagination is "
2054 2054 "shown."
2055 2055 msgstr ""
2056 2056 "Anzahl der Elemente, die auf den Repository-Seiten angezeigt werden, "
2057 2057 "bevor der Seitenumbruch angezeigt wird."
2058 2058
2059 2059 msgid "Admin page size"
2060 2060 msgstr "Größe der Admin-Seite"
2061 2061
2062 2062 msgid ""
2063 2063 "Number of items displayed in the admin pages grids before pagination is "
2064 2064 "shown."
2065 2065 msgstr ""
2066 2066 "Anzahl der Elemente, die in den Gittern der Admin-Seiten angezeigt "
2067 2067 "werden, bevor der Seitenumbruch angezeigt wird."
2068 2068
2069 2069 msgid "Icons"
2070 2070 msgstr "Icons"
2071 2071
2072 2072 msgid "Show public repository icon on repositories"
2073 2073 msgstr "Öffentliches Repository-Symbol in Repositories anzeigen"
2074 2074
2075 2075 msgid "Show private repository icon on repositories"
2076 2076 msgstr "Privates Repository-Symbol in Repositories anzeigen"
2077 2077
2078 2078 msgid "Show public/private icons next to repository names."
2079 2079 msgstr ""
2080 2080 "Zeigt öffentliche/private Symbole neben den Namen der Repositories an."
2081 2081
2082 2082 msgid ""
2083 2083 "Parses meta tags from the repository description field and turns them "
2084 2084 "into colored tags."
2085 2085 msgstr ""
2086 2086 "Analysiert Meta-Tags aus dem Beschreibungsfeld des Repositorys und "
2087 2087 "verwandelt sie in farbige Tags."
2088 2088
2089 2089 msgid "Stylify recognised meta tags:"
2090 2090 msgstr "Erkannte Meta-Tags stilisieren:"
2091 2091
2092 2092 msgid "Add user group"
2093 2093 msgstr "Benutzergruppe hinzufügen"
2094 2094
2095 2095 msgid "User Groups"
2096 2096 msgstr "Benutzergruppen"
2097 2097
2098 2098 msgid "Add User Group"
2099 2099 msgstr "Benutzergruppe hinzufügen"
2100 2100
2101 2101 msgid "Short, optional description for this user group."
2102 2102 msgstr "Kurze, optionale Beschreibung für diese Benutzergruppe."
2103 2103
2104 2104 msgid "Active"
2105 2105 msgstr "Aktiv"
2106 2106
2107 2107 msgid "User Group: %s"
2108 2108 msgstr "Benutzergruppe: %s"
2109 2109
2110 2110 msgid "Members"
2111 2111 msgstr "Mitglieder"
2112 2112
2113 2113 msgid "Confirm to delete this user group: %s"
2114 2114 msgstr "Bestätigen, um diese Benutzergruppe zu löschen: %s"
2115 2115
2116 2116 msgid "Delete this user group"
2117 2117 msgstr "Diese Benutzergruppe löschen"
2118 2118
2119 2119 msgid "No members yet"
2120 2120 msgstr "Noch keine Mitglieder"
2121 2121
2122 2122 msgid "Chosen group members"
2123 2123 msgstr "Ausgewählte Grppenmitglieder"
2124 2124
2125 2125 msgid "Available members"
2126 2126 msgstr "Verfügbare Mitglieder"
2127 2127
2128 2128 msgid "User Groups Administration"
2129 2129 msgstr "Benutzergruppenverwaltung"
2130 2130
2131 2131 msgid "Add user"
2132 2132 msgstr "Benutzer hinzufügen"
2133 2133
2134 2134 msgid "Users"
2135 2135 msgstr "Benutzer"
2136 2136
2137 2137 msgid "Add User"
2138 2138 msgstr "Benutzer hinzufügen"
2139 2139
2140 2140 msgid "Password confirmation"
2141 2141 msgstr "Passwortbestätigung"
2142 2142
2143 2143 msgid "Emails"
2144 2144 msgstr "E-Mails"
2145 2145
2146 2146 msgid "User: %s"
2147 2147 msgstr "Benutzer: %s"
2148 2148
2149 2149 msgid "Last Login"
2150 2150 msgstr "Letzter Login"
2151 2151
2152 2152 msgid "Member of User Groups"
2153 2153 msgstr "Mitglieder der Benutzergruppe"
2154 2154
2155 2155 msgid "Delete this user"
2156 2156 msgstr "Diesen Benutzer löschen"
2157 2157
2158 2158 msgid "Users Administration"
2159 2159 msgstr "Benutzerverwaltung"
2160 2160
2161 2161 msgid "Auth Type"
2162 2162 msgstr "Authentifizierungsart"
2163 2163
2164 2164 msgid "Support"
2165 2165 msgstr "Support"
2166 2166
2167 2167 msgid "Mercurial repository"
2168 2168 msgstr "Mercurial Repository"
2169 2169
2170 2170 msgid "Git repository"
2171 2171 msgstr "Git Repository"
2172 2172
2173 2173 msgid "Create Fork"
2174 2174 msgstr "Fork erstellen"
2175 2175
2176 2176 msgid "Summary"
2177 2177 msgstr "Zusammenfassung"
2178 2178
2179 2179 msgid "Files"
2180 2180 msgstr "Dateien"
2181 2181
2182 2182 msgid "Pull Requests"
2183 2183 msgstr "Pull Requests"
2184 2184
2185 2185 msgid "Options"
2186 2186 msgstr "Optionen"
2187 2187
2188 2188 msgid "Compare Fork"
2189 2189 msgstr "Fork vergleichen"
2190 2190
2191 2191 msgid "No matches found"
2192 2192 msgstr "Keine Übereinstimmungen gefunden"
2193 2193
2194 2194 msgid "Public journal"
2195 2195 msgstr "Öffentliches Logbuch"
2196 2196
2197 2197 msgid "My Pull Requests"
2198 2198 msgstr "Meine Pull Requests"
2199 2199
2200 2200 msgid "Not Logged In"
2201 2201 msgstr "Nicht eingeloggt"
2202 2202
2203 2203 msgid "Forgot password?"
2204 2204 msgstr "Passwort vergessen?"
2205 2205
2206 2206 msgid "Permission"
2207 2207 msgstr "Rechte"
2208 2208
2209 2209 msgid "Edit Permission"
2210 2210 msgstr "Berechtigungen editieren"
2211 2211
2212 2212 msgid "Add Another Comment"
2213 2213 msgstr "Einen weiteren Kommentar hinzufügen"
2214 2214
2215 2215 msgid "Group"
2216 2216 msgstr "Gruppe"
2217 2217
2218 2218 msgid "Confirm to revoke permission for {0}: {1}?"
2219 2219 msgstr "Widerruf der Rechte für {0}: {1} bestätigen?"
2220 2220
2221 2221 msgid "Select changeset"
2222 2222 msgstr "Änderungssätze auswählen"
2223 2223
2224 2224 msgid "Specify changeset"
2225 2225 msgstr "Changeset angeben"
2226 2226
2227 2227 msgid "Click to sort ascending"
2228 2228 msgstr "Klicken um Aufsteigend zu Sortieren"
2229 2229
2230 2230 msgid "Click to sort descending"
2231 2231 msgstr "Klicken um Absteigend zu Sortieren"
2232 2232
2233 2233 msgid "No records found."
2234 2234 msgstr "Keine Datensätze gefunden."
2235 2235
2236 2236 msgid "Data error."
2237 2237 msgstr "Datenfehler."
2238 2238
2239 2239 msgid "Loading..."
2240 2240 msgstr "Lade..."
2241 2241
2242 2242 msgid "Go to tip of repository"
2243 2243 msgstr "Gehe zum Tip des Repositorys"
2244 2244
2245 2245 msgid "There are no changes yet"
2246 2246 msgstr "Bisher gibt es keine Änderungen"
2247 2247
2248 2248 msgid "Branch %s"
2249 2249 msgstr "Branch %s"
2250 2250
2251 2251 msgid "No title"
2252 2252 msgstr "Kein Titel"
2253 2253
2254 2254 msgid "Delete comment?"
2255 2255 msgstr "Kommentar löschen?"
2256 2256
2257 2257 msgid "Set changeset status"
2258 2258 msgstr "Setze Changesetstatus"
2259 2259
2260 2260 msgid "No change"
2261 2261 msgstr "Keine Änderungen"
2262 2262
2263 2263 msgid "Close"
2264 2264 msgstr "Schließen"
2265 2265
2266 2266 msgid "Comment"
2267 2267 msgstr "Kommentar"
2268 2268
2269 2269 msgid "%d comment"
2270 2270 msgid_plural "%d comments"
2271 2271 msgstr[0] "%d Kommentar"
2272 2272 msgstr[1] "%d Kommentare"
2273 2273
2274 2274 msgid "%d inline"
2275 2275 msgid_plural "%d inline"
2276 2276 msgstr[0] "%d inline"
2277 2277 msgstr[1] "%d inline"
2278 2278
2279 2279 msgid "%d general"
2280 2280 msgid_plural "%d general"
2281 2281 msgstr[0] "%d generell"
2282 2282 msgstr[1] "%d generell"
2283 2283
2284 2284 msgid "Deleted"
2285 2285 msgstr "Gelöscht"
2286 2286
2287 2287 msgid "Renamed"
2288 2288 msgstr "Umbenannt"
2289 2289
2290 2290 msgid "%s changesets"
2291 2291 msgstr "%s Changesets"
2292 2292
2293 2293 msgid "behind"
2294 2294 msgstr "zurück"
2295 2295
2296 2296 msgid "Public repository"
2297 2297 msgstr "Öffenentliches Repository"
2298 2298
2299 2299 msgid "Subscribe to %s rss feed"
2300 2300 msgstr "Abonniere den %s RSS Feed"
2301 2301
2302 2302 msgid "Subscribe to %s atom feed"
2303 2303 msgstr "Abonniere den %s ATOM Feed"
2304 2304
2305 2305 msgid "Hello %s"
2306 2306 msgstr "Hallo %s"
2307 2307
2308 2308 msgid "Ignore whitespace"
2309 2309 msgstr "Ignoriere unsichtbare Zeichen"
2310 2310
2311 2311 msgid "or"
2312 2312 msgstr "oder"
2313 2313
2314 2314 msgid "Upload File"
2315 2315 msgstr "Datei hochladen"
2316 2316
2317 2317 msgid "Commit Changes"
2318 2318 msgstr "Änderungen einchecken"
2319 2319
2320 2320 msgid "Size"
2321 2321 msgstr "Größe"
2322 2322
2323 2323 msgid "Last Modified"
2324 2324 msgstr "Zuletzt geändert"
2325 2325
2326 2326 msgid "Delete file"
2327 2327 msgstr "Datei löschen"
2328 2328
2329 2329 msgid "%s author"
2330 2330 msgid_plural "%s authors"
2331 2331 msgstr[0] "%s Autor"
2332 2332 msgstr[1] "%s Autoren"
2333 2333
2334 2334 msgid "Go Back"
2335 2335 msgstr "Zurück"
2336 2336
2337 2337 msgid "Private"
2338 2338 msgstr "Privat"
2339 2339
2340 2340 msgid "Copy permissions"
2341 2341 msgstr "Berechtigungen kopieren"
2342 2342
2343 2343 msgid "ATOM journal feed"
2344 2344 msgstr "ATOM Logbuch Feed"
2345 2345
2346 2346 msgid "RSS journal feed"
2347 2347 msgstr "RSS Logbuch Feed"
2348 2348
2349 2349 msgid "My Repositories"
2350 2350 msgstr "Meine Repositories"
2351 2351
2352 2352 msgid "ATOM public journal feed"
2353 2353 msgstr "ATOM Feed für das Öffentliche Logbuch"
2354 2354
2355 2355 msgid "RSS public journal feed"
2356 2356 msgstr "RSS Feed für das Öffentliche Logbuch"
2357 2357
2358 2358 msgid "New Pull Request"
2359 2359 msgstr "Neuer Pull Request"
2360 2360
2361 2361 msgid "Title"
2362 2362 msgstr "Titel"
2363 2363
2364 2364 msgid "Revision"
2365 2365 msgstr "Revision"
2366 2366
2367 2367 msgid "Age"
2368 2368 msgstr "Alter"
2369 2369
2370 2370 msgid "Delete Pull Request"
2371 2371 msgstr "Pull Request löschen"
2372 2372
2373 2373 msgid "Summarize the changes"
2374 2374 msgstr "Zusammenfassung der Änderungen"
2375 2375
2376 2376 msgid "on"
2377 2377 msgstr "in"
2378 2378
2379 2379 msgid "Cancel Changes"
2380 2380 msgstr "Änderungen verwerfen"
2381 2381
2382 2382 msgid "Remove reviewer"
2383 2383 msgstr "Reviewer entfernen"
2384 2384
2385 2385 msgid "Potential Reviewers"
2386 2386 msgstr "Potentielle Reviewer"
2387 2387
2388 2388 msgid "Pull Request Content"
2389 2389 msgstr "Inhalt des Pull Requests"
2390 2390
2391 2391 msgid "Pull Requests to '%s'"
2392 2392 msgstr "Pull Requests für '%s'"
2393 2393
2394 2394 msgid "Open New Pull Request"
2395 2395 msgstr "Einen neuen Pull Request eröffnen"
2396 2396
2397 2397 msgid "Show Pull Requests to %s"
2398 2398 msgstr "Zeige Pull Requests für '%s'"
2399 2399
2400 2400 msgid "Show Pull Requests from '%s'"
2401 2401 msgstr "Zeige Pull Requests von '%s'"
2402 2402
2403 2403 msgid "Pull Requests Created by Me"
2404 2404 msgstr "Von mir erstellte Pull Requests"
2405 2405
2406 2406 msgid "Search in All Repositories"
2407 2407 msgstr "Suche in allen Repositories"
2408 2408
2409 2409 msgid "Search term"
2410 2410 msgstr "Suchbegriff"
2411 2411
2412 2412 msgid "Search in"
2413 2413 msgstr "Suchen in"
2414 2414
2415 2415 msgid "File contents"
2416 2416 msgstr "Dateiinhalt"
2417 2417
2418 2418 msgid "Commit messages"
2419 2419 msgstr "Commit Nachrichten"
2420 2420
2421 2421 msgid "File names"
2422 2422 msgstr "Dateinamen"
2423 2423
2424 2424 msgid "Permission denied"
2425 2425 msgstr "Zugriff verweigert"
2426 2426
2427 2427 msgid "Enable"
2428 2428 msgstr "Aktiviere"
2429 2429
2430 2430 msgid "files"
2431 2431 msgstr "Dateien"
2432 2432
2433 2433 msgid "Show more"
2434 2434 msgstr "Mehr anzeigen"
2435 2435
2436 2436 msgid "commits"
2437 2437 msgstr "Commits"
2438 2438
2439 2439 msgid "files added"
2440 2440 msgstr "Dateien hinzugefügt"
2441 2441
2442 2442 msgid "files changed"
2443 2443 msgstr "Dateien geändert"
2444 2444
2445 2445 msgid "files removed"
2446 2446 msgstr "Dateien entfernt"
2447 2447
2448 2448 msgid "commit"
2449 2449 msgstr "Commit"
2450 2450
2451 2451 msgid "file added"
2452 2452 msgstr "Datei hinzugefügt"
2453 2453
2454 2454 msgid "file changed"
2455 2455 msgstr "Datei geändert"
2456 2456
2457 2457 msgid "file removed"
2458 2458 msgstr "Datei entfernt"
2459 2459
2460 2460 msgid "Clone from"
2461 2461 msgstr "Clone von"
2462 2462
2463 2463 msgid "Clone URL"
2464 2464 msgstr "Clone-URL"
2465 2465
2466 2466 msgid "Download as zip"
2467 2467 msgstr "Herunterladen als zip"
2468 2468
2469 2469 msgid "Feed"
2470 2470 msgstr "Feed"
2471 2471
2472 2472 msgid "Latest Changes"
2473 2473 msgstr "Letzte Änderungen"
2474 2474
2475 2475 msgid "Quick Start"
2476 2476 msgstr "Schnelleinstieg"
2477 2477
2478 2478 msgid "Add or upload files directly via Kallithea"
2479 2479 msgstr "Dateien direkt über Kallithea hinzufügen oder hochladen"
2480 2480
2481 2481 msgid "Download %s as %s"
2482 2482 msgstr "%s als %s herunterladen"
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now