on master help sign in
Deploying to gh-pages from @ 606aa79e4949cd29d207443a3f82c368fbae2faf 🚀
commite561c4864cd943717e8794a1c7f95a5532b830db authordalf <alex@al-f.net> dateWed 24 Feb 2021, 12:55 (6 years ago) parent163f216
56 files changed+2128−1112
_modules/index.html+1−1 _modules/standalone_searx.html+1−1 _static/basic.css+1−1 _static/doctools.js+7−2 _static/language_data.js+3−3 _static/searchtools.js+18−10 _static/underscore-1.12.0.js+2027 _static/underscore-1.3.1.js−999 _static/underscore.js+6−31 admin/api.html+1−1 admin/architecture.html+1−1 admin/buildhosts.html+1−1 admin/engines.html+1−1 admin/engines/recoll.html+1−1 admin/filtron.html+1−1 admin/index.html+1−1 admin/installation-apache.html+1−1 admin/installation-docker.html+1−1 admin/installation-nginx.html+1−1 admin/installation-searx.html+1−1 admin/installation-uwsgi.html+1−1 admin/installation.html+1−1 admin/morty.html+1−1 admin/plugins.html+1−1 admin/settings.html+1−1 admin/update-searx.html+1−1 blog/admin.html+1−1 blog/command-line-engines.html+1−1 blog/index.html+1−1 blog/intro-offline.html+1−1 blog/lxcdev-202006.html+1−1 blog/private-engines.html+1−1 blog/python3.html+1−1 dev/contribution_guide.html+1−1 dev/engine_overview.html+1−1 dev/index.html+1−1 dev/makefile.html+1−1 dev/plugins.html+1−1 dev/quickstart.html+1−1 dev/reST.html+2−2 dev/search_api.html+1−1 dev/translation.html+1−1 genindex.html+1−1 index.html+1−1 py-modindex.html+1−1 search.html+1−1 searchindex.js+1−1 user/index.html+1−1 user/own-instance.html+1−1 user/search_syntax.html+1−1 utils/filtron.sh.html+5−5 utils/index.html+1−1 utils/lxc.sh.html+2−2 utils/morty.sh.html+5−5 utils/searx.sh.html+3−3 utils/standalone_searx.py.html+6−6
_modules/index.html+1−1
@@ -91,7 +91,7 @@
9191
9292 <div class="footer" role="contentinfo">
9393 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
94− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
94+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
9595 </div>
9696 <script src="../_static/version_warning_offset.js"></script>
9797
_modules/standalone_searx.html+1−1
@@ -314,7 +314,7 @@ if __name__ == &#39;__main__&#39;:
314314
315315 <div class="footer" role="contentinfo">
316316 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
317− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
317+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
318318 </div>
319319 <script src="../_static/version_warning_offset.js"></script>
320320
_static/basic.css+1−1
@@ -4,7 +4,7 @@
44 *
55 * Sphinx stylesheet -- basic theme.
66 *
7− * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
7+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
88 * :license: BSD, see LICENSE for details.
99 *
1010 */
_static/doctools.js+7−2
@@ -4,7 +4,7 @@
44 *
55 * Sphinx JavaScript utilities for all documentation.
66 *
7− * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
7+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
88 * :license: BSD, see LICENSE for details.
99 *
1010 */
@@ -29,9 +29,14 @@ if (!window.console || !console.firebug) {
2929
3030/**
3131 * small helper function to urldecode strings
32+ *
33+ * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
3234 */
3335jQuery.urldecode = function(x) {
34− return decodeURIComponent(x).replace(/\+/g, ' ');
36+ if (!x) {
37+ return x
38+ }
39+ return decodeURIComponent(x.replace(/\+/g, ' '));
3540};
3641
3742/**
_static/language_data.js+3−3
@@ -5,7 +5,7 @@
55 * This script contains the language-specific data used by searchtools.js,
66 * namely the list of stopwords, stemmer, scorer and splitter.
77 *
8− * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
8+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
99 * :license: BSD, see LICENSE for details.
1010 *
1111 */
@@ -13,7 +13,8 @@
1313var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
1414
1515
16−/* Non-minified version JS is _stemmer.js if file is provided */
16+/* Non-minified version is copied as a separate JS file, is available */
17+
1718/**
1819 * Porter Stemmer
1920 */
@@ -199,7 +200,6 @@ var Stemmer = function() {
199200
200201
201202
202−
203203var splitChars = (function() {
204204 var result = {};
205205 var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
_static/searchtools.js+18−10
@@ -4,7 +4,7 @@
44 *
55 * Sphinx JavaScript utilities for the full-text search.
66 *
7− * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
7+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
88 * :license: BSD, see LICENSE for details.
99 *
1010 */
@@ -248,7 +248,7 @@ var Search = {
248248 // results left, load the summary and display it
249249 if (results.length) {
250250 var item = results.pop();
251− var listItem = $('<li style="display:none"></li>');
251+ var listItem = $('<li></li>');
252252 var requestUrl = "";
253253 var linkUrl = "";
254254 if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') {
@@ -273,9 +273,9 @@ var Search = {
273273 if (item[3]) {
274274 listItem.append($('<span> (' + item[3] + ')</span>'));
275275 Search.output.append(listItem);
276− listItem.slideDown(5, function() {
276+ setTimeout(function() {
277277 displayNextItem();
278− });
278+ }, 5);
279279 } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
280280 $.ajax({url: requestUrl,
281281 dataType: "text",
@@ -285,16 +285,16 @@ var Search = {
285285 listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
286286 }
287287 Search.output.append(listItem);
288− listItem.slideDown(5, function() {
288+ setTimeout(function() {
289289 displayNextItem();
290− });
290+ }, 5);
291291 }});
292292 } else {
293293 // no source available, just display title
294294 Search.output.append(listItem);
295− listItem.slideDown(5, function() {
295+ setTimeout(function() {
296296 displayNextItem();
297− });
297+ }, 5);
298298 }
299299 }
300300 // search finished, update title and status message
@@ -379,6 +379,13 @@ var Search = {
379379 return results;
380380 },
381381
382+ /**
383+ * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
384+ */
385+ escapeRegExp : function(string) {
386+ return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
387+ },
388+
382389 /**
383390 * search for full-text terms in the index
384391 */
@@ -402,13 +409,14 @@ var Search = {
402409 ];
403410 // add support for partial matches
404411 if (word.length > 2) {
412+ var word_regex = this.escapeRegExp(word);
405413 for (var w in terms) {
406− if (w.match(word) && !terms[word]) {
414+ if (w.match(word_regex) && !terms[word]) {
407415 _o.push({files: terms[w], score: Scorer.partialTerm})
408416 }
409417 }
410418 for (var w in titleterms) {
411− if (w.match(word) && !titleterms[word]) {
419+ if (w.match(word_regex) && !titleterms[word]) {
412420 _o.push({files: titleterms[w], score: Scorer.partialTitle})
413421 }
414422 }
_static/underscore-1.12.0.jsnew file+2027
@@ -0,0 +1,2027 @@
1+(function (global, factory) {
2+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3+ typeof define === 'function' && define.amd ? define('underscore', factory) :
4+ (global = global || self, (function () {
5+ var current = global._;
6+ var exports = global._ = factory();
7+ exports.noConflict = function () { global._ = current; return exports; };
8+ }()));
9+}(this, (function () {
10+ // Underscore.js 1.12.0
11+ // https://underscorejs.org
12+ // (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
13+ // Underscore may be freely distributed under the MIT license.
14+
15+ // Current version.
16+ var VERSION = '1.12.0';
17+
18+ // Establish the root object, `window` (`self`) in the browser, `global`
19+ // on the server, or `this` in some virtual machines. We use `self`
20+ // instead of `window` for `WebWorker` support.
21+ var root = typeof self == 'object' && self.self === self && self ||
22+ typeof global == 'object' && global.global === global && global ||
23+ Function('return this')() ||
24+ {};
25+
26+ // Save bytes in the minified (but not gzipped) version:
27+ var ArrayProto = Array.prototype, ObjProto = Object.prototype;
28+ var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;
29+
30+ // Create quick reference variables for speed access to core prototypes.
31+ var push = ArrayProto.push,
32+ slice = ArrayProto.slice,
33+ toString = ObjProto.toString,
34+ hasOwnProperty = ObjProto.hasOwnProperty;
35+
36+ // Modern feature detection.
37+ var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',
38+ supportsDataView = typeof DataView !== 'undefined';
39+
40+ // All **ECMAScript 5+** native function implementations that we hope to use
41+ // are declared here.
42+ var nativeIsArray = Array.isArray,
43+ nativeKeys = Object.keys,
44+ nativeCreate = Object.create,
45+ nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;
46+
47+ // Create references to these builtin functions because we override them.
48+ var _isNaN = isNaN,
49+ _isFinite = isFinite;
50+
51+ // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.
52+ var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');
53+ var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',
54+ 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];
55+
56+ // The largest integer that can be represented exactly.
57+ var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;
58+
59+ // Some functions take a variable number of arguments, or a few expected
60+ // arguments at the beginning and then a variable number of values to operate
61+ // on. This helper accumulates all remaining arguments past the function’s
62+ // argument length (or an explicit `startIndex`), into an array that becomes
63+ // the last argument. Similar to ES6’s "rest parameter".
64+ function restArguments(func, startIndex) {
65+ startIndex = startIndex == null ? func.length - 1 : +startIndex;
66+ return function() {
67+ var length = Math.max(arguments.length - startIndex, 0),
68+ rest = Array(length),
69+ index = 0;
70+ for (; index < length; index++) {
71+ rest[index] = arguments[index + startIndex];
72+ }
73+ switch (startIndex) {
74+ case 0: return func.call(this, rest);
75+ case 1: return func.call(this, arguments[0], rest);
76+ case 2: return func.call(this, arguments[0], arguments[1], rest);
77+ }
78+ var args = Array(startIndex + 1);
79+ for (index = 0; index < startIndex; index++) {
80+ args[index] = arguments[index];
81+ }
82+ args[startIndex] = rest;
83+ return func.apply(this, args);
84+ };
85+ }
86+
87+ // Is a given variable an object?
88+ function isObject(obj) {
89+ var type = typeof obj;
90+ return type === 'function' || type === 'object' && !!obj;
91+ }
92+
93+ // Is a given value equal to null?
94+ function isNull(obj) {
95+ return obj === null;
96+ }
97+
98+ // Is a given variable undefined?
99+ function isUndefined(obj) {
100+ return obj === void 0;
101+ }
102+
103+ // Is a given value a boolean?
104+ function isBoolean(obj) {
105+ return obj === true || obj === false || toString.call(obj) === '[object Boolean]';
106+ }
107+
108+ // Is a given value a DOM element?
109+ function isElement(obj) {
110+ return !!(obj && obj.nodeType === 1);
111+ }
112+
113+ // Internal function for creating a `toString`-based type tester.
114+ function tagTester(name) {
115+ var tag = '[object ' + name + ']';
116+ return function(obj) {
117+ return toString.call(obj) === tag;
118+ };
119+ }
120+
121+ var isString = tagTester('String');
122+
123+ var isNumber = tagTester('Number');
124+
125+ var isDate = tagTester('Date');
126+
127+ var isRegExp = tagTester('RegExp');
128+
129+ var isError = tagTester('Error');
130+
131+ var isSymbol = tagTester('Symbol');
132+
133+ var isArrayBuffer = tagTester('ArrayBuffer');
134+
135+ var isFunction = tagTester('Function');
136+
137+ // Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old
138+ // v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).
139+ var nodelist = root.document && root.document.childNodes;
140+ if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {
141+ isFunction = function(obj) {
142+ return typeof obj == 'function' || false;
143+ };
144+ }
145+
146+ var isFunction$1 = isFunction;
147+
148+ var hasObjectTag = tagTester('Object');
149+
150+ // In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.
151+ // In IE 11, the most common among them, this problem also applies to
152+ // `Map`, `WeakMap` and `Set`.
153+ var hasStringTagBug = (
154+ supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))
155+ ),
156+ isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));
157+
158+ var isDataView = tagTester('DataView');
159+
160+ // In IE 10 - Edge 13, we need a different heuristic
161+ // to determine whether an object is a `DataView`.
162+ function ie10IsDataView(obj) {
163+ return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer);
164+ }
165+
166+ var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView);
167+
168+ // Is a given value an array?
169+ // Delegates to ECMA5's native `Array.isArray`.
170+ var isArray = nativeIsArray || tagTester('Array');
171+
172+ // Internal function to check whether `key` is an own property name of `obj`.
173+ function has(obj, key) {
174+ return obj != null && hasOwnProperty.call(obj, key);
175+ }
176+
177+ var isArguments = tagTester('Arguments');
178+
179+ // Define a fallback version of the method in browsers (ahem, IE < 9), where
180+ // there isn't any inspectable "Arguments" type.
181+ (function() {
182+ if (!isArguments(arguments)) {
183+ isArguments = function(obj) {
184+ return has(obj, 'callee');
185+ };
186+ }
187+ }());
188+
189+ var isArguments$1 = isArguments;
190+
191+ // Is a given object a finite number?
192+ function isFinite$1(obj) {
193+ return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));
194+ }
195+
196+ // Is the given value `NaN`?
197+ function isNaN$1(obj) {
198+ return isNumber(obj) && _isNaN(obj);
199+ }
200+
201+ // Predicate-generating function. Often useful outside of Underscore.
202+ function constant(value) {
203+ return function() {
204+ return value;
205+ };
206+ }
207+
208+ // Common internal logic for `isArrayLike` and `isBufferLike`.
209+ function createSizePropertyCheck(getSizeProperty) {
210+ return function(collection) {
211+ var sizeProperty = getSizeProperty(collection);
212+ return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;
213+ }
214+ }
215+
216+ // Internal helper to generate a function to obtain property `key` from `obj`.
217+ function shallowProperty(key) {
218+ return function(obj) {
219+ return obj == null ? void 0 : obj[key];
220+ };
221+ }
222+
223+ // Internal helper to obtain the `byteLength` property of an object.
224+ var getByteLength = shallowProperty('byteLength');
225+
226+ // Internal helper to determine whether we should spend extensive checks against
227+ // `ArrayBuffer` et al.
228+ var isBufferLike = createSizePropertyCheck(getByteLength);
229+
230+ // Is a given value a typed array?
231+ var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;
232+ function isTypedArray(obj) {
233+ // `ArrayBuffer.isView` is the most future-proof, so use it when available.
234+ // Otherwise, fall back on the above regular expression.
235+ return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) :
236+ isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));
237+ }
238+
239+ var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false);
240+
241+ // Internal helper to obtain the `length` property of an object.
242+ var getLength = shallowProperty('length');
243+
244+ // Internal helper to create a simple lookup structure.
245+ // `collectNonEnumProps` used to depend on `_.contains`, but this led to
246+ // circular imports. `emulatedSet` is a one-off solution that only works for
247+ // arrays of strings.
248+ function emulatedSet(keys) {
249+ var hash = {};
250+ for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;
251+ return {
252+ contains: function(key) { return hash[key]; },
253+ push: function(key) {
254+ hash[key] = true;
255+ return keys.push(key);
256+ }
257+ };
258+ }
259+
260+ // Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't
261+ // be iterated by `for key in ...` and thus missed. Extends `keys` in place if
262+ // needed.
263+ function collectNonEnumProps(obj, keys) {
264+ keys = emulatedSet(keys);
265+ var nonEnumIdx = nonEnumerableProps.length;
266+ var constructor = obj.constructor;
267+ var proto = isFunction$1(constructor) && constructor.prototype || ObjProto;
268+
269+ // Constructor is a special case.
270+ var prop = 'constructor';
271+ if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);
272+
273+ while (nonEnumIdx--) {
274+ prop = nonEnumerableProps[nonEnumIdx];
275+ if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {
276+ keys.push(prop);
277+ }
278+ }
279+ }
280+
281+ // Retrieve the names of an object's own properties.
282+ // Delegates to **ECMAScript 5**'s native `Object.keys`.
283+ function keys(obj) {
284+ if (!isObject(obj)) return [];
285+ if (nativeKeys) return nativeKeys(obj);
286+ var keys = [];
287+ for (var key in obj) if (has(obj, key)) keys.push(key);
288+ // Ahem, IE < 9.
289+ if (hasEnumBug) collectNonEnumProps(obj, keys);
290+ return keys;
291+ }
292+
293+ // Is a given array, string, or object empty?
294+ // An "empty" object has no enumerable own-properties.
295+ function isEmpty(obj) {
296+ if (obj == null) return true;
297+ // Skip the more expensive `toString`-based type checks if `obj` has no
298+ // `.length`.
299+ var length = getLength(obj);
300+ if (typeof length == 'number' && (
301+ isArray(obj) || isString(obj) || isArguments$1(obj)
302+ )) return length === 0;
303+ return getLength(keys(obj)) === 0;
304+ }
305+
306+ // Returns whether an object has a given set of `key:value` pairs.
307+ function isMatch(object, attrs) {
308+ var _keys = keys(attrs), length = _keys.length;
309+ if (object == null) return !length;
310+ var obj = Object(object);
311+ for (var i = 0; i < length; i++) {
312+ var key = _keys[i];
313+ if (attrs[key] !== obj[key] || !(key in obj)) return false;
314+ }
315+ return true;
316+ }
317+
318+ // If Underscore is called as a function, it returns a wrapped object that can
319+ // be used OO-style. This wrapper holds altered versions of all functions added
320+ // through `_.mixin`. Wrapped objects may be chained.
321+ function _(obj) {
322+ if (obj instanceof _) return obj;
323+ if (!(this instanceof _)) return new _(obj);
324+ this._wrapped = obj;
325+ }
326+
327+ _.VERSION = VERSION;
328+
329+ // Extracts the result from a wrapped and chained object.
330+ _.prototype.value = function() {
331+ return this._wrapped;
332+ };
333+
334+ // Provide unwrapping proxies for some methods used in engine operations
335+ // such as arithmetic and JSON stringification.
336+ _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;
337+
338+ _.prototype.toString = function() {
339+ return String(this._wrapped);
340+ };
341+
342+ // Internal function to wrap or shallow-copy an ArrayBuffer,
343+ // typed array or DataView to a new view, reusing the buffer.
344+ function toBufferView(bufferSource) {
345+ return new Uint8Array(
346+ bufferSource.buffer || bufferSource,
347+ bufferSource.byteOffset || 0,
348+ getByteLength(bufferSource)
349+ );
350+ }
351+
352+ // We use this string twice, so give it a name for minification.
353+ var tagDataView = '[object DataView]';
354+
355+ // Internal recursive comparison function for `_.isEqual`.
356+ function eq(a, b, aStack, bStack) {
357+ // Identical objects are equal. `0 === -0`, but they aren't identical.
358+ // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).
359+ if (a === b) return a !== 0 || 1 / a === 1 / b;
360+ // `null` or `undefined` only equal to itself (strict comparison).
361+ if (a == null || b == null) return false;
362+ // `NaN`s are equivalent, but non-reflexive.
363+ if (a !== a) return b !== b;
364+ // Exhaust primitive checks
365+ var type = typeof a;
366+ if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;
367+ return deepEq(a, b, aStack, bStack);
368+ }
369+
370+ // Internal recursive comparison function for `_.isEqual`.
371+ function deepEq(a, b, aStack, bStack) {
372+ // Unwrap any wrapped objects.
373+ if (a instanceof _) a = a._wrapped;
374+ if (b instanceof _) b = b._wrapped;
375+ // Compare `[[Class]]` names.
376+ var className = toString.call(a);
377+ if (className !== toString.call(b)) return false;
378+ // Work around a bug in IE 10 - Edge 13.
379+ if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) {
380+ if (!isDataView$1(b)) return false;
381+ className = tagDataView;
382+ }
383+ switch (className) {
384+ // These types are compared by value.
385+ case '[object RegExp]':
386+ // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')
387+ case '[object String]':
388+ // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
389+ // equivalent to `new String("5")`.
390+ return '' + a === '' + b;
391+ case '[object Number]':
392+ // `NaN`s are equivalent, but non-reflexive.
393+ // Object(NaN) is equivalent to NaN.
394+ if (+a !== +a) return +b !== +b;
395+ // An `egal` comparison is performed for other numeric values.
396+ return +a === 0 ? 1 / +a === 1 / b : +a === +b;
397+ case '[object Date]':
398+ case '[object Boolean]':
399+ // Coerce dates and booleans to numeric primitive values. Dates are compared by their
400+ // millisecond representations. Note that invalid dates with millisecond representations
401+ // of `NaN` are not equivalent.
402+ return +a === +b;
403+ case '[object Symbol]':
404+ return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);
405+ case '[object ArrayBuffer]':
406+ case tagDataView:
407+ // Coerce to typed array so we can fall through.
408+ return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);
409+ }
410+
411+ var areArrays = className === '[object Array]';
412+ if (!areArrays && isTypedArray$1(a)) {
413+ var byteLength = getByteLength(a);
414+ if (byteLength !== getByteLength(b)) return false;
415+ if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;
416+ areArrays = true;
417+ }
418+ if (!areArrays) {
419+ if (typeof a != 'object' || typeof b != 'object') return false;
420+
421+ // Objects with different constructors are not equivalent, but `Object`s or `Array`s
422+ // from different frames are.
423+ var aCtor = a.constructor, bCtor = b.constructor;
424+ if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor &&
425+ isFunction$1(bCtor) && bCtor instanceof bCtor)
426+ && ('constructor' in a && 'constructor' in b)) {
427+ return false;
428+ }
429+ }
430+ // Assume equality for cyclic structures. The algorithm for detecting cyclic
431+ // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
432+
433+ // Initializing stack of traversed objects.
434+ // It's done here since we only need them for objects and arrays comparison.
435+ aStack = aStack || [];
436+ bStack = bStack || [];
437+ var length = aStack.length;
438+ while (length--) {
439+ // Linear search. Performance is inversely proportional to the number of
440+ // unique nested structures.
441+ if (aStack[length] === a) return bStack[length] === b;
442+ }
443+
444+ // Add the first object to the stack of traversed objects.
445+ aStack.push(a);
446+ bStack.push(b);
447+
448+ // Recursively compare objects and arrays.
449+ if (areArrays) {
450+ // Compare array lengths to determine if a deep comparison is necessary.
451+ length = a.length;
452+ if (length !== b.length) return false;
453+ // Deep compare the contents, ignoring non-numeric properties.
454+ while (length--) {
455+ if (!eq(a[length], b[length], aStack, bStack)) return false;
456+ }
457+ } else {
458+ // Deep compare objects.
459+ var _keys = keys(a), key;
460+ length = _keys.length;
461+ // Ensure that both objects contain the same number of properties before comparing deep equality.
462+ if (keys(b).length !== length) return false;
463+ while (length--) {
464+ // Deep compare each member
465+ key = _keys[length];
466+ if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;
467+ }
468+ }
469+ // Remove the first object from the stack of traversed objects.
470+ aStack.pop();
471+ bStack.pop();
472+ return true;
473+ }
474+
475+ // Perform a deep comparison to check if two objects are equal.
476+ function isEqual(a, b) {
477+ return eq(a, b);
478+ }
479+
480+ // Retrieve all the enumerable property names of an object.
481+ function allKeys(obj) {
482+ if (!isObject(obj)) return [];
483+ var keys = [];
484+ for (var key in obj) keys.push(key);
485+ // Ahem, IE < 9.
486+ if (hasEnumBug) collectNonEnumProps(obj, keys);
487+ return keys;
488+ }
489+
490+ // Since the regular `Object.prototype.toString` type tests don't work for
491+ // some types in IE 11, we use a fingerprinting heuristic instead, based
492+ // on the methods. It's not great, but it's the best we got.
493+ // The fingerprint method lists are defined below.
494+ function ie11fingerprint(methods) {
495+ var length = getLength(methods);
496+ return function(obj) {
497+ if (obj == null) return false;
498+ // `Map`, `WeakMap` and `Set` have no enumerable keys.
499+ var keys = allKeys(obj);
500+ if (getLength(keys)) return false;
501+ for (var i = 0; i < length; i++) {
502+ if (!isFunction$1(obj[methods[i]])) return false;
503+ }
504+ // If we are testing against `WeakMap`, we need to ensure that
505+ // `obj` doesn't have a `forEach` method in order to distinguish
506+ // it from a regular `Map`.
507+ return methods !== weakMapMethods || !isFunction$1(obj[forEachName]);
508+ };
509+ }
510+
511+ // In the interest of compact minification, we write
512+ // each string in the fingerprints only once.
513+ var forEachName = 'forEach',
514+ hasName = 'has',
515+ commonInit = ['clear', 'delete'],
516+ mapTail = ['get', hasName, 'set'];
517+
518+ // `Map`, `WeakMap` and `Set` each have slightly different
519+ // combinations of the above sublists.
520+ var mapMethods = commonInit.concat(forEachName, mapTail),
521+ weakMapMethods = commonInit.concat(mapTail),
522+ setMethods = ['add'].concat(commonInit, forEachName, hasName);
523+
524+ var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');
525+
526+ var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');
527+
528+ var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');
529+
530+ var isWeakSet = tagTester('WeakSet');
531+
532+ // Retrieve the values of an object's properties.
533+ function values(obj) {
534+ var _keys = keys(obj);
535+ var length = _keys.length;
536+ var values = Array(length);
537+ for (var i = 0; i < length; i++) {
538+ values[i] = obj[_keys[i]];
539+ }
540+ return values;
541+ }
542+
543+ // Convert an object into a list of `[key, value]` pairs.
544+ // The opposite of `_.object` with one argument.
545+ function pairs(obj) {
546+ var _keys = keys(obj);
547+ var length = _keys.length;
548+ var pairs = Array(length);
549+ for (var i = 0; i < length; i++) {
550+ pairs[i] = [_keys[i], obj[_keys[i]]];
551+ }
552+ return pairs;
553+ }
554+
555+ // Invert the keys and values of an object. The values must be serializable.
556+ function invert(obj) {
557+ var result = {};
558+ var _keys = keys(obj);
559+ for (var i = 0, length = _keys.length; i < length; i++) {
560+ result[obj[_keys[i]]] = _keys[i];
561+ }
562+ return result;
563+ }
564+
565+ // Return a sorted list of the function names available on the object.
566+ function functions(obj) {
567+ var names = [];
568+ for (var key in obj) {
569+ if (isFunction$1(obj[key])) names.push(key);
570+ }
571+ return names.sort();
572+ }
573+
574+ // An internal function for creating assigner functions.
575+ function createAssigner(keysFunc, defaults) {
576+ return function(obj) {
577+ var length = arguments.length;
578+ if (defaults) obj = Object(obj);
579+ if (length < 2 || obj == null) return obj;
580+ for (var index = 1; index < length; index++) {
581+ var source = arguments[index],
582+ keys = keysFunc(source),
583+ l = keys.length;
584+ for (var i = 0; i < l; i++) {
585+ var key = keys[i];
586+ if (!defaults || obj[key] === void 0) obj[key] = source[key];
587+ }
588+ }
589+ return obj;
590+ };
591+ }
592+
593+ // Extend a given object with all the properties in passed-in object(s).
594+ var extend = createAssigner(allKeys);
595+
596+ // Assigns a given object with all the own properties in the passed-in
597+ // object(s).
598+ // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
599+ var extendOwn = createAssigner(keys);
600+
601+ // Fill in a given object with default properties.
602+ var defaults = createAssigner(allKeys, true);
603+
604+ // Create a naked function reference for surrogate-prototype-swapping.
605+ function ctor() {
606+ return function(){};
607+ }
608+
609+ // An internal function for creating a new object that inherits from another.
610+ function baseCreate(prototype) {
611+ if (!isObject(prototype)) return {};
612+ if (nativeCreate) return nativeCreate(prototype);
613+ var Ctor = ctor();
614+ Ctor.prototype = prototype;
615+ var result = new Ctor;
616+ Ctor.prototype = null;
617+ return result;
618+ }
619+
620+ // Creates an object that inherits from the given prototype object.
621+ // If additional properties are provided then they will be added to the
622+ // created object.
623+ function create(prototype, props) {
624+ var result = baseCreate(prototype);
625+ if (props) extendOwn(result, props);
626+ return result;
627+ }
628+
629+ // Create a (shallow-cloned) duplicate of an object.
630+ function clone(obj) {
631+ if (!isObject(obj)) return obj;
632+ return isArray(obj) ? obj.slice() : extend({}, obj);
633+ }
634+
635+ // Invokes `interceptor` with the `obj` and then returns `obj`.
636+ // The primary purpose of this method is to "tap into" a method chain, in
637+ // order to perform operations on intermediate results within the chain.
638+ function tap(obj, interceptor) {
639+ interceptor(obj);
640+ return obj;
641+ }
642+
643+ // Normalize a (deep) property `path` to array.
644+ // Like `_.iteratee`, this function can be customized.
645+ function toPath(path) {
646+ return isArray(path) ? path : [path];
647+ }
648+ _.toPath = toPath;
649+
650+ // Internal wrapper for `_.toPath` to enable minification.
651+ // Similar to `cb` for `_.iteratee`.
652+ function toPath$1(path) {
653+ return _.toPath(path);
654+ }
655+
656+ // Internal function to obtain a nested property in `obj` along `path`.
657+ function deepGet(obj, path) {
658+ var length = path.length;
659+ for (var i = 0; i < length; i++) {
660+ if (obj == null) return void 0;
661+ obj = obj[path[i]];
662+ }
663+ return length ? obj : void 0;
664+ }
665+
666+ // Get the value of the (deep) property on `path` from `object`.
667+ // If any property in `path` does not exist or if the value is
668+ // `undefined`, return `defaultValue` instead.
669+ // The `path` is normalized through `_.toPath`.
670+ function get(object, path, defaultValue) {
671+ var value = deepGet(object, toPath$1(path));
672+ return isUndefined(value) ? defaultValue : value;
673+ }
674+
675+ // Shortcut function for checking if an object has a given property directly on
676+ // itself (in other words, not on a prototype). Unlike the internal `has`
677+ // function, this public version can also traverse nested properties.
678+ function has$1(obj, path) {
679+ path = toPath$1(path);
680+ var length = path.length;
681+ for (var i = 0; i < length; i++) {
682+ var key = path[i];
683+ if (!has(obj, key)) return false;
684+ obj = obj[key];
685+ }
686+ return !!length;
687+ }
688+
689+ // Keep the identity function around for default iteratees.
690+ function identity(value) {
691+ return value;
692+ }
693+
694+ // Returns a predicate for checking whether an object has a given set of
695+ // `key:value` pairs.
696+ function matcher(attrs) {
697+ attrs = extendOwn({}, attrs);
698+ return function(obj) {
699+ return isMatch(obj, attrs);
700+ };
701+ }
702+
703+ // Creates a function that, when passed an object, will traverse that object’s
704+ // properties down the given `path`, specified as an array of keys or indices.
705+ function property(path) {
706+ path = toPath$1(path);
707+ return function(obj) {
708+ return deepGet(obj, path);
709+ };
710+ }
711+
712+ // Internal function that returns an efficient (for current engines) version
713+ // of the passed-in callback, to be repeatedly applied in other Underscore
714+ // functions.
715+ function optimizeCb(func, context, argCount) {
716+ if (context === void 0) return func;
717+ switch (argCount == null ? 3 : argCount) {
718+ case 1: return function(value) {
719+ return func.call(context, value);
720+ };
721+ // The 2-argument case is omitted because we’re not using it.
722+ case 3: return function(value, index, collection) {
723+ return func.call(context, value, index, collection);
724+ };
725+ case 4: return function(accumulator, value, index, collection) {
726+ return func.call(context, accumulator, value, index, collection);
727+ };
728+ }
729+ return function() {
730+ return func.apply(context, arguments);
731+ };
732+ }
733+
734+ // An internal function to generate callbacks that can be applied to each
735+ // element in a collection, returning the desired result — either `_.identity`,
736+ // an arbitrary callback, a property matcher, or a property accessor.
737+ function baseIteratee(value, context, argCount) {
738+ if (value == null) return identity;
739+ if (isFunction$1(value)) return optimizeCb(value, context, argCount);
740+ if (isObject(value) && !isArray(value)) return matcher(value);
741+ return property(value);
742+ }
743+
744+ // External wrapper for our callback generator. Users may customize
745+ // `_.iteratee` if they want additional predicate/iteratee shorthand styles.
746+ // This abstraction hides the internal-only `argCount` argument.
747+ function iteratee(value, context) {
748+ return baseIteratee(value, context, Infinity);
749+ }
750+ _.iteratee = iteratee;
751+
752+ // The function we call internally to generate a callback. It invokes
753+ // `_.iteratee` if overridden, otherwise `baseIteratee`.
754+ function cb(value, context, argCount) {
755+ if (_.iteratee !== iteratee) return _.iteratee(value, context);
756+ return baseIteratee(value, context, argCount);
757+ }
758+
759+ // Returns the results of applying the `iteratee` to each element of `obj`.
760+ // In contrast to `_.map` it returns an object.
761+ function mapObject(obj, iteratee, context) {
762+ iteratee = cb(iteratee, context);
763+ var _keys = keys(obj),
764+ length = _keys.length,
765+ results = {};
766+ for (var index = 0; index < length; index++) {
767+ var currentKey = _keys[index];
768+ results[currentKey] = iteratee(obj[currentKey], currentKey, obj);
769+ }
770+ return results;
771+ }
772+
773+ // Predicate-generating function. Often useful outside of Underscore.
774+ function noop(){}
775+
776+ // Generates a function for a given object that returns a given property.
777+ function propertyOf(obj) {
778+ if (obj == null) return noop;
779+ return function(path) {
780+ return get(obj, path);
781+ };
782+ }
783+
784+ // Run a function **n** times.
785+ function times(n, iteratee, context) {
786+ var accum = Array(Math.max(0, n));
787+ iteratee = optimizeCb(iteratee, context, 1);
788+ for (var i = 0; i < n; i++) accum[i] = iteratee(i);
789+ return accum;
790+ }
791+
792+ // Return a random integer between `min` and `max` (inclusive).
793+ function random(min, max) {
794+ if (max == null) {
795+ max = min;
796+ min = 0;
797+ }
798+ return min + Math.floor(Math.random() * (max - min + 1));
799+ }
800+
801+ // A (possibly faster) way to get the current timestamp as an integer.
802+ var now = Date.now || function() {
803+ return new Date().getTime();
804+ };
805+
806+ // Internal helper to generate functions for escaping and unescaping strings
807+ // to/from HTML interpolation.
808+ function createEscaper(map) {
809+ var escaper = function(match) {
810+ return map[match];
811+ };
812+ // Regexes for identifying a key that needs to be escaped.
813+ var source = '(?:' + keys(map).join('|') + ')';
814+ var testRegexp = RegExp(source);
815+ var replaceRegexp = RegExp(source, 'g');
816+ return function(string) {
817+ string = string == null ? '' : '' + string;
818+ return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;
819+ };
820+ }
821+
822+ // Internal list of HTML entities for escaping.
823+ var escapeMap = {
824+ '&': '&amp;',
825+ '<': '&lt;',
826+ '>': '&gt;',
827+ '"': '&quot;',
828+ "'": '&#x27;',
829+ '`': '&#x60;'
830+ };
831+
832+ // Function for escaping strings to HTML interpolation.
833+ var _escape = createEscaper(escapeMap);
834+
835+ // Internal list of HTML entities for unescaping.
836+ var unescapeMap = invert(escapeMap);
837+
838+ // Function for unescaping strings from HTML interpolation.
839+ var _unescape = createEscaper(unescapeMap);
840+
841+ // By default, Underscore uses ERB-style template delimiters. Change the
842+ // following template settings to use alternative delimiters.
843+ var templateSettings = _.templateSettings = {
844+ evaluate: /<%([\s\S]+?)%>/g,
845+ interpolate: /<%=([\s\S]+?)%>/g,
846+ escape: /<%-([\s\S]+?)%>/g
847+ };
848+
849+ // When customizing `_.templateSettings`, if you don't want to define an
850+ // interpolation, evaluation or escaping regex, we need one that is
851+ // guaranteed not to match.
852+ var noMatch = /(.)^/;
853+
854+ // Certain characters need to be escaped so that they can be put into a
855+ // string literal.
856+ var escapes = {
857+ "'": "'",
858+ '\\': '\\',
859+ '\r': 'r',
860+ '\n': 'n',
861+ '\u2028': 'u2028',
862+ '\u2029': 'u2029'
863+ };
864+
865+ var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g;
866+
867+ function escapeChar(match) {
868+ return '\\' + escapes[match];
869+ }
870+
871+ // JavaScript micro-templating, similar to John Resig's implementation.
872+ // Underscore templating handles arbitrary delimiters, preserves whitespace,
873+ // and correctly escapes quotes within interpolated code.
874+ // NB: `oldSettings` only exists for backwards compatibility.
875+ function template(text, settings, oldSettings) {
876+ if (!settings && oldSettings) settings = oldSettings;
877+ settings = defaults({}, settings, _.templateSettings);
878+
879+ // Combine delimiters into one regular expression via alternation.
880+ var matcher = RegExp([
881+ (settings.escape || noMatch).source,
882+ (settings.interpolate || noMatch).source,
883+ (settings.evaluate || noMatch).source
884+ ].join('|') + '|$', 'g');
885+
886+ // Compile the template source, escaping string literals appropriately.
887+ var index = 0;
888+ var source = "__p+='";
889+ text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
890+ source += text.slice(index, offset).replace(escapeRegExp, escapeChar);
891+ index = offset + match.length;
892+
893+ if (escape) {
894+ source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
895+ } else if (interpolate) {
896+ source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
897+ } else if (evaluate) {
898+ source += "';\n" + evaluate + "\n__p+='";
899+ }
900+
901+ // Adobe VMs need the match returned to produce the correct offset.
902+ return match;
903+ });
904+ source += "';\n";
905+
906+ // If a variable is not specified, place data values in local scope.
907+ if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
908+
909+ source = "var __t,__p='',__j=Array.prototype.join," +
910+ "print=function(){__p+=__j.call(arguments,'');};\n" +
911+ source + 'return __p;\n';
912+
913+ var render;
914+ try {
915+ render = new Function(settings.variable || 'obj', '_', source);
916+ } catch (e) {
917+ e.source = source;
918+ throw e;
919+ }
920+
921+ var template = function(data) {
922+ return render.call(this, data, _);
923+ };
924+
925+ // Provide the compiled source as a convenience for precompilation.
926+ var argument = settings.variable || 'obj';
927+ template.source = 'function(' + argument + '){\n' + source + '}';
928+
929+ return template;
930+ }
931+
932+ // Traverses the children of `obj` along `path`. If a child is a function, it
933+ // is invoked with its parent as context. Returns the value of the final
934+ // child, or `fallback` if any child is undefined.
935+ function result(obj, path, fallback) {
936+ path = toPath$1(path);
937+ var length = path.length;
938+ if (!length) {
939+ return isFunction$1(fallback) ? fallback.call(obj) : fallback;
940+ }
941+ for (var i = 0; i < length; i++) {
942+ var prop = obj == null ? void 0 : obj[path[i]];
943+ if (prop === void 0) {
944+ prop = fallback;
945+ i = length; // Ensure we don't continue iterating.
946+ }
947+ obj = isFunction$1(prop) ? prop.call(obj) : prop;
948+ }
949+ return obj;
950+ }
951+
952+ // Generate a unique integer id (unique within the entire client session).
953+ // Useful for temporary DOM ids.
954+ var idCounter = 0;
955+ function uniqueId(prefix) {
956+ var id = ++idCounter + '';
957+ return prefix ? prefix + id : id;
958+ }
959+
960+ // Start chaining a wrapped Underscore object.
961+ function chain(obj) {
962+ var instance = _(obj);
963+ instance._chain = true;
964+ return instance;
965+ }
966+
967+ // Internal function to execute `sourceFunc` bound to `context` with optional
968+ // `args`. Determines whether to execute a function as a constructor or as a
969+ // normal function.
970+ function executeBound(sourceFunc, boundFunc, context, callingContext, args) {
971+ if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);
972+ var self = baseCreate(sourceFunc.prototype);
973+ var result = sourceFunc.apply(self, args);
974+ if (isObject(result)) return result;
975+ return self;
976+ }
977+
978+ // Partially apply a function by creating a version that has had some of its
979+ // arguments pre-filled, without changing its dynamic `this` context. `_` acts
980+ // as a placeholder by default, allowing any combination of arguments to be
981+ // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.
982+ var partial = restArguments(function(func, boundArgs) {
983+ var placeholder = partial.placeholder;
984+ var bound = function() {
985+ var position = 0, length = boundArgs.length;
986+ var args = Array(length);
987+ for (var i = 0; i < length; i++) {
988+ args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];
989+ }
990+ while (position < arguments.length) args.push(arguments[position++]);
991+ return executeBound(func, bound, this, this, args);
992+ };
993+ return bound;
994+ });
995+
996+ partial.placeholder = _;
997+
998+ // Create a function bound to a given object (assigning `this`, and arguments,
999+ // optionally).
1000+ var bind = restArguments(function(func, context, args) {
1001+ if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function');
1002+ var bound = restArguments(function(callArgs) {
1003+ return executeBound(func, bound, context, this, args.concat(callArgs));
1004+ });
1005+ return bound;
1006+ });
1007+
1008+ // Internal helper for collection methods to determine whether a collection
1009+ // should be iterated as an array or as an object.
1010+ // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength
1011+ // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094
1012+ var isArrayLike = createSizePropertyCheck(getLength);
1013+
1014+ // Internal implementation of a recursive `flatten` function.
1015+ function flatten(input, depth, strict, output) {
1016+ output = output || [];
1017+ if (!depth && depth !== 0) {
1018+ depth = Infinity;
1019+ } else if (depth <= 0) {
1020+ return output.concat(input);
1021+ }
1022+ var idx = output.length;
1023+ for (var i = 0, length = getLength(input); i < length; i++) {
1024+ var value = input[i];
1025+ if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) {
1026+ // Flatten current level of array or arguments object.
1027+ if (depth > 1) {
1028+ flatten(value, depth - 1, strict, output);
1029+ idx = output.length;
1030+ } else {
1031+ var j = 0, len = value.length;
1032+ while (j < len) output[idx++] = value[j++];
1033+ }
1034+ } else if (!strict) {
1035+ output[idx++] = value;
1036+ }
1037+ }
1038+ return output;
1039+ }
1040+
1041+ // Bind a number of an object's methods to that object. Remaining arguments
1042+ // are the method names to be bound. Useful for ensuring that all callbacks
1043+ // defined on an object belong to it.
1044+ var bindAll = restArguments(function(obj, keys) {
1045+ keys = flatten(keys, false, false);
1046+ var index = keys.length;
1047+ if (index < 1) throw new Error('bindAll must be passed function names');
1048+ while (index--) {
1049+ var key = keys[index];
1050+ obj[key] = bind(obj[key], obj);
1051+ }
1052+ return obj;
1053+ });
1054+
1055+ // Memoize an expensive function by storing its results.
1056+ function memoize(func, hasher) {
1057+ var memoize = function(key) {
1058+ var cache = memoize.cache;
1059+ var address = '' + (hasher ? hasher.apply(this, arguments) : key);
1060+ if (!has(cache, address)) cache[address] = func.apply(this, arguments);
1061+ return cache[address];
1062+ };
1063+ memoize.cache = {};
1064+ return memoize;
1065+ }
1066+
1067+ // Delays a function for the given number of milliseconds, and then calls
1068+ // it with the arguments supplied.
1069+ var delay = restArguments(function(func, wait, args) {
1070+ return setTimeout(function() {
1071+ return func.apply(null, args);
1072+ }, wait);
1073+ });
1074+
1075+ // Defers a function, scheduling it to run after the current call stack has
1076+ // cleared.
1077+ var defer = partial(delay, _, 1);
1078+
1079+ // Returns a function, that, when invoked, will only be triggered at most once
1080+ // during a given window of time. Normally, the throttled function will run
1081+ // as much as it can, without ever going more than once per `wait` duration;
1082+ // but if you'd like to disable the execution on the leading edge, pass
1083+ // `{leading: false}`. To disable execution on the trailing edge, ditto.
1084+ function throttle(func, wait, options) {
1085+ var timeout, context, args, result;
1086+ var previous = 0;
1087+ if (!options) options = {};
1088+
1089+ var later = function() {
1090+ previous = options.leading === false ? 0 : now();
1091+ timeout = null;
1092+ result = func.apply(context, args);
1093+ if (!timeout) context = args = null;
1094+ };
1095+
1096+ var throttled = function() {
1097+ var _now = now();
1098+ if (!previous && options.leading === false) previous = _now;
1099+ var remaining = wait - (_now - previous);
1100+ context = this;
1101+ args = arguments;
1102+ if (remaining <= 0 || remaining > wait) {
1103+ if (timeout) {
1104+ clearTimeout(timeout);
1105+ timeout = null;
1106+ }
1107+ previous = _now;
1108+ result = func.apply(context, args);
1109+ if (!timeout) context = args = null;
1110+ } else if (!timeout && options.trailing !== false) {
1111+ timeout = setTimeout(later, remaining);
1112+ }
1113+ return result;
1114+ };
1115+
1116+ throttled.cancel = function() {
1117+ clearTimeout(timeout);
1118+ previous = 0;
1119+ timeout = context = args = null;
1120+ };
1121+
1122+ return throttled;
1123+ }
1124+
1125+ // When a sequence of calls of the returned function ends, the argument
1126+ // function is triggered. The end of a sequence is defined by the `wait`
1127+ // parameter. If `immediate` is passed, the argument function will be
1128+ // triggered at the beginning of the sequence instead of at the end.
1129+ function debounce(func, wait, immediate) {
1130+ var timeout, previous, args, result, context;
1131+
1132+ var later = function() {
1133+ var passed = now() - previous;
1134+ if (wait > passed) {
1135+ timeout = setTimeout(later, wait - passed);
1136+ } else {
1137+ timeout = null;
1138+ if (!immediate) result = func.apply(context, args);
1139+ // This check is needed because `func` can recursively invoke `debounced`.
1140+ if (!timeout) args = context = null;
1141+ }
1142+ };
1143+
1144+ var debounced = restArguments(function(_args) {
1145+ context = this;
1146+ args = _args;
1147+ previous = now();
1148+ if (!timeout) {
1149+ timeout = setTimeout(later, wait);
1150+ if (immediate) result = func.apply(context, args);
1151+ }
1152+ return result;
1153+ });
1154+
1155+ debounced.cancel = function() {
1156+ clearTimeout(timeout);
1157+ timeout = args = context = null;
1158+ };
1159+
1160+ return debounced;
1161+ }
1162+
1163+ // Returns the first function passed as an argument to the second,
1164+ // allowing you to adjust arguments, run code before and after, and
1165+ // conditionally execute the original function.
1166+ function wrap(func, wrapper) {
1167+ return partial(wrapper, func);
1168+ }
1169+
1170+ // Returns a negated version of the passed-in predicate.
1171+ function negate(predicate) {
1172+ return function() {
1173+ return !predicate.apply(this, arguments);
1174+ };
1175+ }
1176+
1177+ // Returns a function that is the composition of a list of functions, each
1178+ // consuming the return value of the function that follows.
1179+ function compose() {
1180+ var args = arguments;
1181+ var start = args.length - 1;
1182+ return function() {
1183+ var i = start;
1184+ var result = args[start].apply(this, arguments);
1185+ while (i--) result = args[i].call(this, result);
1186+ return result;
1187+ };
1188+ }
1189+
1190+ // Returns a function that will only be executed on and after the Nth call.
1191+ function after(times, func) {
1192+ return function() {
1193+ if (--times < 1) {
1194+ return func.apply(this, arguments);
1195+ }
1196+ };
1197+ }
1198+
1199+ // Returns a function that will only be executed up to (but not including) the
1200+ // Nth call.
1201+ function before(times, func) {
1202+ var memo;
1203+ return function() {
1204+ if (--times > 0) {
1205+ memo = func.apply(this, arguments);
1206+ }
1207+ if (times <= 1) func = null;
1208+ return memo;
1209+ };
1210+ }
1211+
1212+ // Returns a function that will be executed at most one time, no matter how
1213+ // often you call it. Useful for lazy initialization.
1214+ var once = partial(before, 2);
1215+
1216+ // Returns the first key on an object that passes a truth test.
1217+ function findKey(obj, predicate, context) {
1218+ predicate = cb(predicate, context);
1219+ var _keys = keys(obj), key;
1220+ for (var i = 0, length = _keys.length; i < length; i++) {
1221+ key = _keys[i];
1222+ if (predicate(obj[key], key, obj)) return key;
1223+ }
1224+ }
1225+
1226+ // Internal function to generate `_.findIndex` and `_.findLastIndex`.
1227+ function createPredicateIndexFinder(dir) {
1228+ return function(array, predicate, context) {
1229+ predicate = cb(predicate, context);
1230+ var length = getLength(array);
1231+ var index = dir > 0 ? 0 : length - 1;
1232+ for (; index >= 0 && index < length; index += dir) {
1233+ if (predicate(array[index], index, array)) return index;
1234+ }
1235+ return -1;
1236+ };
1237+ }
1238+
1239+ // Returns the first index on an array-like that passes a truth test.
1240+ var findIndex = createPredicateIndexFinder(1);
1241+
1242+ // Returns the last index on an array-like that passes a truth test.
1243+ var findLastIndex = createPredicateIndexFinder(-1);
1244+
1245+ // Use a comparator function to figure out the smallest index at which
1246+ // an object should be inserted so as to maintain order. Uses binary search.
1247+ function sortedIndex(array, obj, iteratee, context) {
1248+ iteratee = cb(iteratee, context, 1);
1249+ var value = iteratee(obj);
1250+ var low = 0, high = getLength(array);
1251+ while (low < high) {
1252+ var mid = Math.floor((low + high) / 2);
1253+ if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;
1254+ }
1255+ return low;
1256+ }
1257+
1258+ // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.
1259+ function createIndexFinder(dir, predicateFind, sortedIndex) {
1260+ return function(array, item, idx) {
1261+ var i = 0, length = getLength(array);
1262+ if (typeof idx == 'number') {
1263+ if (dir > 0) {
1264+ i = idx >= 0 ? idx : Math.max(idx + length, i);
1265+ } else {
1266+ length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;
1267+ }
1268+ } else if (sortedIndex && idx && length) {
1269+ idx = sortedIndex(array, item);
1270+ return array[idx] === item ? idx : -1;
1271+ }
1272+ if (item !== item) {
1273+ idx = predicateFind(slice.call(array, i, length), isNaN$1);
1274+ return idx >= 0 ? idx + i : -1;
1275+ }
1276+ for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {
1277+ if (array[idx] === item) return idx;
1278+ }
1279+ return -1;
1280+ };
1281+ }
1282+
1283+ // Return the position of the first occurrence of an item in an array,
1284+ // or -1 if the item is not included in the array.
1285+ // If the array is large and already in sort order, pass `true`
1286+ // for **isSorted** to use binary search.
1287+ var indexOf = createIndexFinder(1, findIndex, sortedIndex);
1288+
1289+ // Return the position of the last occurrence of an item in an array,
1290+ // or -1 if the item is not included in the array.
1291+ var lastIndexOf = createIndexFinder(-1, findLastIndex);
1292+
1293+ // Return the first value which passes a truth test.
1294+ function find(obj, predicate, context) {
1295+ var keyFinder = isArrayLike(obj) ? findIndex : findKey;
1296+ var key = keyFinder(obj, predicate, context);
1297+ if (key !== void 0 && key !== -1) return obj[key];
1298+ }
1299+
1300+ // Convenience version of a common use case of `_.find`: getting the first
1301+ // object containing specific `key:value` pairs.
1302+ function findWhere(obj, attrs) {
1303+ return find(obj, matcher(attrs));
1304+ }
1305+
1306+ // The cornerstone for collection functions, an `each`
1307+ // implementation, aka `forEach`.
1308+ // Handles raw objects in addition to array-likes. Treats all
1309+ // sparse array-likes as if they were dense.
1310+ function each(obj, iteratee, context) {
1311+ iteratee = optimizeCb(iteratee, context);
1312+ var i, length;
1313+ if (isArrayLike(obj)) {
1314+ for (i = 0, length = obj.length; i < length; i++) {
1315+ iteratee(obj[i], i, obj);
1316+ }
1317+ } else {
1318+ var _keys = keys(obj);
1319+ for (i = 0, length = _keys.length; i < length; i++) {
1320+ iteratee(obj[_keys[i]], _keys[i], obj);
1321+ }
1322+ }
1323+ return obj;
1324+ }
1325+
1326+ // Return the results of applying the iteratee to each element.
1327+ function map(obj, iteratee, context) {
1328+ iteratee = cb(iteratee, context);
1329+ var _keys = !isArrayLike(obj) && keys(obj),
1330+ length = (_keys || obj).length,
1331+ results = Array(length);
1332+ for (var index = 0; index < length; index++) {
1333+ var currentKey = _keys ? _keys[index] : index;
1334+ results[index] = iteratee(obj[currentKey], currentKey, obj);
1335+ }
1336+ return results;
1337+ }
1338+
1339+ // Internal helper to create a reducing function, iterating left or right.
1340+ function createReduce(dir) {
1341+ // Wrap code that reassigns argument variables in a separate function than
1342+ // the one that accesses `arguments.length` to avoid a perf hit. (#1991)
1343+ var reducer = function(obj, iteratee, memo, initial) {
1344+ var _keys = !isArrayLike(obj) && keys(obj),
1345+ length = (_keys || obj).length,
1346+ index = dir > 0 ? 0 : length - 1;
1347+ if (!initial) {
1348+ memo = obj[_keys ? _keys[index] : index];
1349+ index += dir;
1350+ }
1351+ for (; index >= 0 && index < length; index += dir) {
1352+ var currentKey = _keys ? _keys[index] : index;
1353+ memo = iteratee(memo, obj[currentKey], currentKey, obj);
1354+ }
1355+ return memo;
1356+ };
1357+
1358+ return function(obj, iteratee, memo, context) {
1359+ var initial = arguments.length >= 3;
1360+ return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);
1361+ };
1362+ }
1363+
1364+ // **Reduce** builds up a single result from a list of values, aka `inject`,
1365+ // or `foldl`.
1366+ var reduce = createReduce(1);
1367+
1368+ // The right-associative version of reduce, also known as `foldr`.
1369+ var reduceRight = createReduce(-1);
1370+
1371+ // Return all the elements that pass a truth test.
1372+ function filter(obj, predicate, context) {
1373+ var results = [];
1374+ predicate = cb(predicate, context);
1375+ each(obj, function(value, index, list) {
1376+ if (predicate(value, index, list)) results.push(value);
1377+ });
1378+ return results;
1379+ }
1380+
1381+ // Return all the elements for which a truth test fails.
1382+ function reject(obj, predicate, context) {
1383+ return filter(obj, negate(cb(predicate)), context);
1384+ }
1385+
1386+ // Determine whether all of the elements pass a truth test.
1387+ function every(obj, predicate, context) {
1388+ predicate = cb(predicate, context);
1389+ var _keys = !isArrayLike(obj) && keys(obj),
1390+ length = (_keys || obj).length;
1391+ for (var index = 0; index < length; index++) {
1392+ var currentKey = _keys ? _keys[index] : index;
1393+ if (!predicate(obj[currentKey], currentKey, obj)) return false;
1394+ }
1395+ return true;
1396+ }
1397+
1398+ // Determine if at least one element in the object passes a truth test.
1399+ function some(obj, predicate, context) {
1400+ predicate = cb(predicate, context);
1401+ var _keys = !isArrayLike(obj) && keys(obj),
1402+ length = (_keys || obj).length;
1403+ for (var index = 0; index < length; index++) {
1404+ var currentKey = _keys ? _keys[index] : index;
1405+ if (predicate(obj[currentKey], currentKey, obj)) return true;
1406+ }
1407+ return false;
1408+ }
1409+
1410+ // Determine if the array or object contains a given item (using `===`).
1411+ function contains(obj, item, fromIndex, guard) {
1412+ if (!isArrayLike(obj)) obj = values(obj);
1413+ if (typeof fromIndex != 'number' || guard) fromIndex = 0;
1414+ return indexOf(obj, item, fromIndex) >= 0;
1415+ }
1416+
1417+ // Invoke a method (with arguments) on every item in a collection.
1418+ var invoke = restArguments(function(obj, path, args) {
1419+ var contextPath, func;
1420+ if (isFunction$1(path)) {
1421+ func = path;
1422+ } else {
1423+ path = toPath$1(path);
1424+ contextPath = path.slice(0, -1);
1425+ path = path[path.length - 1];
1426+ }
1427+ return map(obj, function(context) {
1428+ var method = func;
1429+ if (!method) {
1430+ if (contextPath && contextPath.length) {
1431+ context = deepGet(context, contextPath);
1432+ }
1433+ if (context == null) return void 0;
1434+ method = context[path];
1435+ }
1436+ return method == null ? method : method.apply(context, args);
1437+ });
1438+ });
1439+
1440+ // Convenience version of a common use case of `_.map`: fetching a property.
1441+ function pluck(obj, key) {
1442+ return map(obj, property(key));
1443+ }
1444+
1445+ // Convenience version of a common use case of `_.filter`: selecting only
1446+ // objects containing specific `key:value` pairs.
1447+ function where(obj, attrs) {
1448+ return filter(obj, matcher(attrs));
1449+ }
1450+
1451+ // Return the maximum element (or element-based computation).
1452+ function max(obj, iteratee, context) {
1453+ var result = -Infinity, lastComputed = -Infinity,
1454+ value, computed;
1455+ if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {
1456+ obj = isArrayLike(obj) ? obj : values(obj);
1457+ for (var i = 0, length = obj.length; i < length; i++) {
1458+ value = obj[i];
1459+ if (value != null && value > result) {
1460+ result = value;
1461+ }
1462+ }
1463+ } else {
1464+ iteratee = cb(iteratee, context);
1465+ each(obj, function(v, index, list) {
1466+ computed = iteratee(v, index, list);
1467+ if (computed > lastComputed || computed === -Infinity && result === -Infinity) {
1468+ result = v;
1469+ lastComputed = computed;
1470+ }
1471+ });
1472+ }
1473+ return result;
1474+ }
1475+
1476+ // Return the minimum element (or element-based computation).
1477+ function min(obj, iteratee, context) {
1478+ var result = Infinity, lastComputed = Infinity,
1479+ value, computed;
1480+ if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {
1481+ obj = isArrayLike(obj) ? obj : values(obj);
1482+ for (var i = 0, length = obj.length; i < length; i++) {
1483+ value = obj[i];
1484+ if (value != null && value < result) {
1485+ result = value;
1486+ }
1487+ }
1488+ } else {
1489+ iteratee = cb(iteratee, context);
1490+ each(obj, function(v, index, list) {
1491+ computed = iteratee(v, index, list);
1492+ if (computed < lastComputed || computed === Infinity && result === Infinity) {
1493+ result = v;
1494+ lastComputed = computed;
1495+ }
1496+ });
1497+ }
1498+ return result;
1499+ }
1500+
1501+ // Sample **n** random values from a collection using the modern version of the
1502+ // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
1503+ // If **n** is not specified, returns a single random element.
1504+ // The internal `guard` argument allows it to work with `_.map`.
1505+ function sample(obj, n, guard) {
1506+ if (n == null || guard) {
1507+ if (!isArrayLike(obj)) obj = values(obj);
1508+ return obj[random(obj.length - 1)];
1509+ }
1510+ var sample = isArrayLike(obj) ? clone(obj) : values(obj);
1511+ var length = getLength(sample);
1512+ n = Math.max(Math.min(n, length), 0);
1513+ var last = length - 1;
1514+ for (var index = 0; index < n; index++) {
1515+ var rand = random(index, last);
1516+ var temp = sample[index];
1517+ sample[index] = sample[rand];
1518+ sample[rand] = temp;
1519+ }
1520+ return sample.slice(0, n);
1521+ }
1522+
1523+ // Shuffle a collection.
1524+ function shuffle(obj) {
1525+ return sample(obj, Infinity);
1526+ }
1527+
1528+ // Sort the object's values by a criterion produced by an iteratee.
1529+ function sortBy(obj, iteratee, context) {
1530+ var index = 0;
1531+ iteratee = cb(iteratee, context);
1532+ return pluck(map(obj, function(value, key, list) {
1533+ return {
1534+ value: value,
1535+ index: index++,
1536+ criteria: iteratee(value, key, list)
1537+ };
1538+ }).sort(function(left, right) {
1539+ var a = left.criteria;
1540+ var b = right.criteria;
1541+ if (a !== b) {
1542+ if (a > b || a === void 0) return 1;
1543+ if (a < b || b === void 0) return -1;
1544+ }
1545+ return left.index - right.index;
1546+ }), 'value');
1547+ }
1548+
1549+ // An internal function used for aggregate "group by" operations.
1550+ function group(behavior, partition) {
1551+ return function(obj, iteratee, context) {
1552+ var result = partition ? [[], []] : {};
1553+ iteratee = cb(iteratee, context);
1554+ each(obj, function(value, index) {
1555+ var key = iteratee(value, index, obj);
1556+ behavior(result, value, key);
1557+ });
1558+ return result;
1559+ };
1560+ }
1561+
1562+ // Groups the object's values by a criterion. Pass either a string attribute
1563+ // to group by, or a function that returns the criterion.
1564+ var groupBy = group(function(result, value, key) {
1565+ if (has(result, key)) result[key].push(value); else result[key] = [value];
1566+ });
1567+
1568+ // Indexes the object's values by a criterion, similar to `_.groupBy`, but for
1569+ // when you know that your index values will be unique.
1570+ var indexBy = group(function(result, value, key) {
1571+ result[key] = value;
1572+ });
1573+
1574+ // Counts instances of an object that group by a certain criterion. Pass
1575+ // either a string attribute to count by, or a function that returns the
1576+ // criterion.
1577+ var countBy = group(function(result, value, key) {
1578+ if (has(result, key)) result[key]++; else result[key] = 1;
1579+ });
1580+
1581+ // Split a collection into two arrays: one whose elements all pass the given
1582+ // truth test, and one whose elements all do not pass the truth test.
1583+ var partition = group(function(result, value, pass) {
1584+ result[pass ? 0 : 1].push(value);
1585+ }, true);
1586+
1587+ // Safely create a real, live array from anything iterable.
1588+ var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;
1589+ function toArray(obj) {
1590+ if (!obj) return [];
1591+ if (isArray(obj)) return slice.call(obj);
1592+ if (isString(obj)) {
1593+ // Keep surrogate pair characters together.
1594+ return obj.match(reStrSymbol);
1595+ }
1596+ if (isArrayLike(obj)) return map(obj, identity);
1597+ return values(obj);
1598+ }
1599+
1600+ // Return the number of elements in a collection.
1601+ function size(obj) {
1602+ if (obj == null) return 0;
1603+ return isArrayLike(obj) ? obj.length : keys(obj).length;
1604+ }
1605+
1606+ // Internal `_.pick` helper function to determine whether `key` is an enumerable
1607+ // property name of `obj`.
1608+ function keyInObj(value, key, obj) {
1609+ return key in obj;
1610+ }
1611+
1612+ // Return a copy of the object only containing the allowed properties.
1613+ var pick = restArguments(function(obj, keys) {
1614+ var result = {}, iteratee = keys[0];
1615+ if (obj == null) return result;
1616+ if (isFunction$1(iteratee)) {
1617+ if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);
1618+ keys = allKeys(obj);
1619+ } else {
1620+ iteratee = keyInObj;
1621+ keys = flatten(keys, false, false);
1622+ obj = Object(obj);
1623+ }
1624+ for (var i = 0, length = keys.length; i < length; i++) {
1625+ var key = keys[i];
1626+ var value = obj[key];
1627+ if (iteratee(value, key, obj)) result[key] = value;
1628+ }
1629+ return result;
1630+ });
1631+
1632+ // Return a copy of the object without the disallowed properties.
1633+ var omit = restArguments(function(obj, keys) {
1634+ var iteratee = keys[0], context;
1635+ if (isFunction$1(iteratee)) {
1636+ iteratee = negate(iteratee);
1637+ if (keys.length > 1) context = keys[1];
1638+ } else {
1639+ keys = map(flatten(keys, false, false), String);
1640+ iteratee = function(value, key) {
1641+ return !contains(keys, key);
1642+ };
1643+ }
1644+ return pick(obj, iteratee, context);
1645+ });
1646+
1647+ // Returns everything but the last entry of the array. Especially useful on
1648+ // the arguments object. Passing **n** will return all the values in
1649+ // the array, excluding the last N.
1650+ function initial(array, n, guard) {
1651+ return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));
1652+ }
1653+
1654+ // Get the first element of an array. Passing **n** will return the first N
1655+ // values in the array. The **guard** check allows it to work with `_.map`.
1656+ function first(array, n, guard) {
1657+ if (array == null || array.length < 1) return n == null || guard ? void 0 : [];
1658+ if (n == null || guard) return array[0];
1659+ return initial(array, array.length - n);
1660+ }
1661+
1662+ // Returns everything but the first entry of the `array`. Especially useful on
1663+ // the `arguments` object. Passing an **n** will return the rest N values in the
1664+ // `array`.
1665+ function rest(array, n, guard) {
1666+ return slice.call(array, n == null || guard ? 1 : n);
1667+ }
1668+
1669+ // Get the last element of an array. Passing **n** will return the last N
1670+ // values in the array.
1671+ function last(array, n, guard) {
1672+ if (array == null || array.length < 1) return n == null || guard ? void 0 : [];
1673+ if (n == null || guard) return array[array.length - 1];
1674+ return rest(array, Math.max(0, array.length - n));
1675+ }
1676+
1677+ // Trim out all falsy values from an array.
1678+ function compact(array) {
1679+ return filter(array, Boolean);
1680+ }
1681+
1682+ // Flatten out an array, either recursively (by default), or up to `depth`.
1683+ // Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.
1684+ function flatten$1(array, depth) {
1685+ return flatten(array, depth, false);
1686+ }
1687+
1688+ // Take the difference between one array and a number of other arrays.
1689+ // Only the elements present in just the first array will remain.
1690+ var difference = restArguments(function(array, rest) {
1691+ rest = flatten(rest, true, true);
1692+ return filter(array, function(value){
1693+ return !contains(rest, value);
1694+ });
1695+ });
1696+
1697+ // Return a version of the array that does not contain the specified value(s).
1698+ var without = restArguments(function(array, otherArrays) {
1699+ return difference(array, otherArrays);
1700+ });
1701+
1702+ // Produce a duplicate-free version of the array. If the array has already
1703+ // been sorted, you have the option of using a faster algorithm.
1704+ // The faster algorithm will not work with an iteratee if the iteratee
1705+ // is not a one-to-one function, so providing an iteratee will disable
1706+ // the faster algorithm.
1707+ function uniq(array, isSorted, iteratee, context) {
1708+ if (!isBoolean(isSorted)) {
1709+ context = iteratee;
1710+ iteratee = isSorted;
1711+ isSorted = false;
1712+ }
1713+ if (iteratee != null) iteratee = cb(iteratee, context);
1714+ var result = [];
1715+ var seen = [];
1716+ for (var i = 0, length = getLength(array); i < length; i++) {
1717+ var value = array[i],
1718+ computed = iteratee ? iteratee(value, i, array) : value;
1719+ if (isSorted && !iteratee) {
1720+ if (!i || seen !== computed) result.push(value);
1721+ seen = computed;
1722+ } else if (iteratee) {
1723+ if (!contains(seen, computed)) {
1724+ seen.push(computed);
1725+ result.push(value);
1726+ }
1727+ } else if (!contains(result, value)) {
1728+ result.push(value);
1729+ }
1730+ }
1731+ return result;
1732+ }
1733+
1734+ // Produce an array that contains the union: each distinct element from all of
1735+ // the passed-in arrays.
1736+ var union = restArguments(function(arrays) {
1737+ return uniq(flatten(arrays, true, true));
1738+ });
1739+
1740+ // Produce an array that contains every item shared between all the
1741+ // passed-in arrays.
1742+ function intersection(array) {
1743+ var result = [];
1744+ var argsLength = arguments.length;
1745+ for (var i = 0, length = getLength(array); i < length; i++) {
1746+ var item = array[i];
1747+ if (contains(result, item)) continue;
1748+ var j;
1749+ for (j = 1; j < argsLength; j++) {
1750+ if (!contains(arguments[j], item)) break;
1751+ }
1752+ if (j === argsLength) result.push(item);
1753+ }
1754+ return result;
1755+ }
1756+
1757+ // Complement of zip. Unzip accepts an array of arrays and groups
1758+ // each array's elements on shared indices.
1759+ function unzip(array) {
1760+ var length = array && max(array, getLength).length || 0;
1761+ var result = Array(length);
1762+
1763+ for (var index = 0; index < length; index++) {
1764+ result[index] = pluck(array, index);
1765+ }
1766+ return result;
1767+ }
1768+
1769+ // Zip together multiple lists into a single array -- elements that share
1770+ // an index go together.
1771+ var zip = restArguments(unzip);
1772+
1773+ // Converts lists into objects. Pass either a single array of `[key, value]`
1774+ // pairs, or two parallel arrays of the same length -- one of keys, and one of
1775+ // the corresponding values. Passing by pairs is the reverse of `_.pairs`.
1776+ function object(list, values) {
1777+ var result = {};
1778+ for (var i = 0, length = getLength(list); i < length; i++) {
1779+ if (values) {
1780+ result[list[i]] = values[i];
1781+ } else {
1782+ result[list[i][0]] = list[i][1];
1783+ }
1784+ }
1785+ return result;
1786+ }
1787+
1788+ // Generate an integer Array containing an arithmetic progression. A port of
1789+ // the native Python `range()` function. See
1790+ // [the Python documentation](https://docs.python.org/library/functions.html#range).
1791+ function range(start, stop, step) {
1792+ if (stop == null) {
1793+ stop = start || 0;
1794+ start = 0;
1795+ }
1796+ if (!step) {
1797+ step = stop < start ? -1 : 1;
1798+ }
1799+
1800+ var length = Math.max(Math.ceil((stop - start) / step), 0);
1801+ var range = Array(length);
1802+
1803+ for (var idx = 0; idx < length; idx++, start += step) {
1804+ range[idx] = start;
1805+ }
1806+
1807+ return range;
1808+ }
1809+
1810+ // Chunk a single array into multiple arrays, each containing `count` or fewer
1811+ // items.
1812+ function chunk(array, count) {
1813+ if (count == null || count < 1) return [];
1814+ var result = [];
1815+ var i = 0, length = array.length;
1816+ while (i < length) {
1817+ result.push(slice.call(array, i, i += count));
1818+ }
1819+ return result;
1820+ }
1821+
1822+ // Helper function to continue chaining intermediate results.
1823+ function chainResult(instance, obj) {
1824+ return instance._chain ? _(obj).chain() : obj;
1825+ }
1826+
1827+ // Add your own custom functions to the Underscore object.
1828+ function mixin(obj) {
1829+ each(functions(obj), function(name) {
1830+ var func = _[name] = obj[name];
1831+ _.prototype[name] = function() {
1832+ var args = [this._wrapped];
1833+ push.apply(args, arguments);
1834+ return chainResult(this, func.apply(_, args));
1835+ };
1836+ });
1837+ return _;
1838+ }
1839+
1840+ // Add all mutator `Array` functions to the wrapper.
1841+ each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
1842+ var method = ArrayProto[name];
1843+ _.prototype[name] = function() {
1844+ var obj = this._wrapped;
1845+ if (obj != null) {
1846+ method.apply(obj, arguments);
1847+ if ((name === 'shift' || name === 'splice') && obj.length === 0) {
1848+ delete obj[0];
1849+ }
1850+ }
1851+ return chainResult(this, obj);
1852+ };
1853+ });
1854+
1855+ // Add all accessor `Array` functions to the wrapper.
1856+ each(['concat', 'join', 'slice'], function(name) {
1857+ var method = ArrayProto[name];
1858+ _.prototype[name] = function() {
1859+ var obj = this._wrapped;
1860+ if (obj != null) obj = method.apply(obj, arguments);
1861+ return chainResult(this, obj);
1862+ };
1863+ });
1864+
1865+ // Named Exports
1866+
1867+ var allExports = {
1868+ __proto__: null,
1869+ VERSION: VERSION,
1870+ restArguments: restArguments,
1871+ isObject: isObject,
1872+ isNull: isNull,
1873+ isUndefined: isUndefined,
1874+ isBoolean: isBoolean,
1875+ isElement: isElement,
1876+ isString: isString,
1877+ isNumber: isNumber,
1878+ isDate: isDate,
1879+ isRegExp: isRegExp,
1880+ isError: isError,
1881+ isSymbol: isSymbol,
1882+ isArrayBuffer: isArrayBuffer,
1883+ isDataView: isDataView$1,
1884+ isArray: isArray,
1885+ isFunction: isFunction$1,
1886+ isArguments: isArguments$1,
1887+ isFinite: isFinite$1,
1888+ isNaN: isNaN$1,
1889+ isTypedArray: isTypedArray$1,
1890+ isEmpty: isEmpty,
1891+ isMatch: isMatch,
1892+ isEqual: isEqual,
1893+ isMap: isMap,
1894+ isWeakMap: isWeakMap,
1895+ isSet: isSet,
1896+ isWeakSet: isWeakSet,
1897+ keys: keys,
1898+ allKeys: allKeys,
1899+ values: values,
1900+ pairs: pairs,
1901+ invert: invert,
1902+ functions: functions,
1903+ methods: functions,
1904+ extend: extend,
1905+ extendOwn: extendOwn,
1906+ assign: extendOwn,
1907+ defaults: defaults,
1908+ create: create,
1909+ clone: clone,
1910+ tap: tap,
1911+ get: get,
1912+ has: has$1,
1913+ mapObject: mapObject,
1914+ identity: identity,
1915+ constant: constant,
1916+ noop: noop,
1917+ toPath: toPath,
1918+ property: property,
1919+ propertyOf: propertyOf,
1920+ matcher: matcher,
1921+ matches: matcher,
1922+ times: times,
1923+ random: random,
1924+ now: now,
1925+ escape: _escape,
1926+ unescape: _unescape,
1927+ templateSettings: templateSettings,
1928+ template: template,
1929+ result: result,
1930+ uniqueId: uniqueId,
1931+ chain: chain,
1932+ iteratee: iteratee,
1933+ partial: partial,
1934+ bind: bind,
1935+ bindAll: bindAll,
1936+ memoize: memoize,
1937+ delay: delay,
1938+ defer: defer,
1939+ throttle: throttle,
1940+ debounce: debounce,
1941+ wrap: wrap,
1942+ negate: negate,
1943+ compose: compose,
1944+ after: after,
1945+ before: before,
1946+ once: once,
1947+ findKey: findKey,
1948+ findIndex: findIndex,
1949+ findLastIndex: findLastIndex,
1950+ sortedIndex: sortedIndex,
1951+ indexOf: indexOf,
1952+ lastIndexOf: lastIndexOf,
1953+ find: find,
1954+ detect: find,
1955+ findWhere: findWhere,
1956+ each: each,
1957+ forEach: each,
1958+ map: map,
1959+ collect: map,
1960+ reduce: reduce,
1961+ foldl: reduce,
1962+ inject: reduce,
1963+ reduceRight: reduceRight,
1964+ foldr: reduceRight,
1965+ filter: filter,
1966+ select: filter,
1967+ reject: reject,
1968+ every: every,
1969+ all: every,
1970+ some: some,
1971+ any: some,
1972+ contains: contains,
1973+ includes: contains,
1974+ include: contains,
1975+ invoke: invoke,
1976+ pluck: pluck,
1977+ where: where,
1978+ max: max,
1979+ min: min,
1980+ shuffle: shuffle,
1981+ sample: sample,
1982+ sortBy: sortBy,
1983+ groupBy: groupBy,
1984+ indexBy: indexBy,
1985+ countBy: countBy,
1986+ partition: partition,
1987+ toArray: toArray,
1988+ size: size,
1989+ pick: pick,
1990+ omit: omit,
1991+ first: first,
1992+ head: first,
1993+ take: first,
1994+ initial: initial,
1995+ last: last,
1996+ rest: rest,
1997+ tail: rest,
1998+ drop: rest,
1999+ compact: compact,
2000+ flatten: flatten$1,
2001+ without: without,
2002+ uniq: uniq,
2003+ unique: uniq,
2004+ union: union,
2005+ intersection: intersection,
2006+ difference: difference,
2007+ unzip: unzip,
2008+ transpose: unzip,
2009+ zip: zip,
2010+ object: object,
2011+ range: range,
2012+ chunk: chunk,
2013+ mixin: mixin,
2014+ 'default': _
2015+ };
2016+
2017+ // Default Export
2018+
2019+ // Add all of the Underscore functions to the wrapper object.
2020+ var _$1 = mixin(allExports);
2021+ // Legacy Node.js API.
2022+ _$1._ = _$1;
2023+
2024+ return _$1;
2025+
2026+})));
2027+//# sourceMappingURL=underscore.js.map
_static/underscore-1.3.1.jsdeleted−999
@@ -1,999 +0,0 @@
1−// Underscore.js 1.3.1
2−// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
3−// Underscore is freely distributable under the MIT license.
4−// Portions of Underscore are inspired or borrowed from Prototype,
5−// Oliver Steele's Functional, and John Resig's Micro-Templating.
6−// For all details and documentation:
7−// http://documentcloud.github.com/underscore
8−
9−(function() {
10−
11− // Baseline setup
12− // --------------
13−
14− // Establish the root object, `window` in the browser, or `global` on the server.
15− var root = this;
16−
17− // Save the previous value of the `_` variable.
18− var previousUnderscore = root._;
19−
20− // Establish the object that gets returned to break out of a loop iteration.
21− var breaker = {};
22−
23− // Save bytes in the minified (but not gzipped) version:
24− var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
25−
26− // Create quick reference variables for speed access to core prototypes.
27− var slice = ArrayProto.slice,
28− unshift = ArrayProto.unshift,
29− toString = ObjProto.toString,
30− hasOwnProperty = ObjProto.hasOwnProperty;
31−
32− // All **ECMAScript 5** native function implementations that we hope to use
33− // are declared here.
34− var
35− nativeForEach = ArrayProto.forEach,
36− nativeMap = ArrayProto.map,
37− nativeReduce = ArrayProto.reduce,
38− nativeReduceRight = ArrayProto.reduceRight,
39− nativeFilter = ArrayProto.filter,
40− nativeEvery = ArrayProto.every,
41− nativeSome = ArrayProto.some,
42− nativeIndexOf = ArrayProto.indexOf,
43− nativeLastIndexOf = ArrayProto.lastIndexOf,
44− nativeIsArray = Array.isArray,
45− nativeKeys = Object.keys,
46− nativeBind = FuncProto.bind;
47−
48− // Create a safe reference to the Underscore object for use below.
49− var _ = function(obj) { return new wrapper(obj); };
50−
51− // Export the Underscore object for **Node.js**, with
52− // backwards-compatibility for the old `require()` API. If we're in
53− // the browser, add `_` as a global object via a string identifier,
54− // for Closure Compiler "advanced" mode.
55− if (typeof exports !== 'undefined') {
56− if (typeof module !== 'undefined' && module.exports) {
57− exports = module.exports = _;
58− }
59− exports._ = _;
60− } else {
61− root['_'] = _;
62− }
63−
64− // Current version.
65− _.VERSION = '1.3.1';
66−
67− // Collection Functions
68− // --------------------
69−
70− // The cornerstone, an `each` implementation, aka `forEach`.
71− // Handles objects with the built-in `forEach`, arrays, and raw objects.
72− // Delegates to **ECMAScript 5**'s native `forEach` if available.
73− var each = _.each = _.forEach = function(obj, iterator, context) {
74− if (obj == null) return;
75− if (nativeForEach && obj.forEach === nativeForEach) {
76− obj.forEach(iterator, context);
77− } else if (obj.length === +obj.length) {
78− for (var i = 0, l = obj.length; i < l; i++) {
79− if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
80− }
81− } else {
82− for (var key in obj) {
83− if (_.has(obj, key)) {
84− if (iterator.call(context, obj[key], key, obj) === breaker) return;
85− }
86− }
87− }
88− };
89−
90− // Return the results of applying the iterator to each element.
91− // Delegates to **ECMAScript 5**'s native `map` if available.
92− _.map = _.collect = function(obj, iterator, context) {
93− var results = [];
94− if (obj == null) return results;
95− if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
96− each(obj, function(value, index, list) {
97− results[results.length] = iterator.call(context, value, index, list);
98− });
99− if (obj.length === +obj.length) results.length = obj.length;
100− return results;
101− };
102−
103− // **Reduce** builds up a single result from a list of values, aka `inject`,
104− // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
105− _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
106− var initial = arguments.length > 2;
107− if (obj == null) obj = [];
108− if (nativeReduce && obj.reduce === nativeReduce) {
109− if (context) iterator = _.bind(iterator, context);
110− return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
111− }
112− each(obj, function(value, index, list) {
113− if (!initial) {
114− memo = value;
115− initial = true;
116− } else {
117− memo = iterator.call(context, memo, value, index, list);
118− }
119− });
120− if (!initial) throw new TypeError('Reduce of empty array with no initial value');
121− return memo;
122− };
123−
124− // The right-associative version of reduce, also known as `foldr`.
125− // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
126− _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
127− var initial = arguments.length > 2;
128− if (obj == null) obj = [];
129− if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
130− if (context) iterator = _.bind(iterator, context);
131− return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
132− }
133− var reversed = _.toArray(obj).reverse();
134− if (context && !initial) iterator = _.bind(iterator, context);
135− return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);
136− };
137−
138− // Return the first value which passes a truth test. Aliased as `detect`.
139− _.find = _.detect = function(obj, iterator, context) {
140− var result;
141− any(obj, function(value, index, list) {
142− if (iterator.call(context, value, index, list)) {
143− result = value;
144− return true;
145− }
146− });
147− return result;
148− };
149−
150− // Return all the elements that pass a truth test.
151− // Delegates to **ECMAScript 5**'s native `filter` if available.
152− // Aliased as `select`.
153− _.filter = _.select = function(obj, iterator, context) {
154− var results = [];
155− if (obj == null) return results;
156− if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
157− each(obj, function(value, index, list) {
158− if (iterator.call(context, value, index, list)) results[results.length] = value;
159− });
160− return results;
161− };
162−
163− // Return all the elements for which a truth test fails.
164− _.reject = function(obj, iterator, context) {
165− var results = [];
166− if (obj == null) return results;
167− each(obj, function(value, index, list) {
168− if (!iterator.call(context, value, index, list)) results[results.length] = value;
169− });
170− return results;
171− };
172−
173− // Determine whether all of the elements match a truth test.
174− // Delegates to **ECMAScript 5**'s native `every` if available.
175− // Aliased as `all`.
176− _.every = _.all = function(obj, iterator, context) {
177− var result = true;
178− if (obj == null) return result;
179− if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
180− each(obj, function(value, index, list) {
181− if (!(result = result && iterator.call(context, value, index, list))) return breaker;
182− });
183− return result;
184− };
185−
186− // Determine if at least one element in the object matches a truth test.
187− // Delegates to **ECMAScript 5**'s native `some` if available.
188− // Aliased as `any`.
189− var any = _.some = _.any = function(obj, iterator, context) {
190− iterator || (iterator = _.identity);
191− var result = false;
192− if (obj == null) return result;
193− if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
194− each(obj, function(value, index, list) {
195− if (result || (result = iterator.call(context, value, index, list))) return breaker;
196− });
197− return !!result;
198− };
199−
200− // Determine if a given value is included in the array or object using `===`.
201− // Aliased as `contains`.
202− _.include = _.contains = function(obj, target) {
203− var found = false;
204− if (obj == null) return found;
205− if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
206− found = any(obj, function(value) {
207− return value === target;
208− });
209− return found;
210− };
211−
212− // Invoke a method (with arguments) on every item in a collection.
213− _.invoke = function(obj, method) {
214− var args = slice.call(arguments, 2);
215− return _.map(obj, function(value) {
216− return (_.isFunction(method) ? method || value : value[method]).apply(value, args);
217− });
218− };
219−
220− // Convenience version of a common use case of `map`: fetching a property.
221− _.pluck = function(obj, key) {
222− return _.map(obj, function(value){ return value[key]; });
223− };
224−
225− // Return the maximum element or (element-based computation).
226− _.max = function(obj, iterator, context) {
227− if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj);
228− if (!iterator && _.isEmpty(obj)) return -Infinity;
229− var result = {computed : -Infinity};
230− each(obj, function(value, index, list) {
231− var computed = iterator ? iterator.call(context, value, index, list) : value;
232− computed >= result.computed && (result = {value : value, computed : computed});
233− });
234− return result.value;
235− };
236−
237− // Return the minimum element (or element-based computation).
238− _.min = function(obj, iterator, context) {
239− if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj);
240− if (!iterator && _.isEmpty(obj)) return Infinity;
241− var result = {computed : Infinity};
242− each(obj, function(value, index, list) {
243− var computed = iterator ? iterator.call(context, value, index, list) : value;
244− computed < result.computed && (result = {value : value, computed : computed});
245− });
246− return result.value;
247− };
248−
249− // Shuffle an array.
250− _.shuffle = function(obj) {
251− var shuffled = [], rand;
252− each(obj, function(value, index, list) {
253− if (index == 0) {
254− shuffled[0] = value;
255− } else {
256− rand = Math.floor(Math.random() * (index + 1));
257− shuffled[index] = shuffled[rand];
258− shuffled[rand] = value;
259− }
260− });
261− return shuffled;
262− };
263−
264− // Sort the object's values by a criterion produced by an iterator.
265− _.sortBy = function(obj, iterator, context) {
266− return _.pluck(_.map(obj, function(value, index, list) {
267− return {
268− value : value,
269− criteria : iterator.call(context, value, index, list)
270− };
271− }).sort(function(left, right) {
272− var a = left.criteria, b = right.criteria;
273− return a < b ? -1 : a > b ? 1 : 0;
274− }), 'value');
275− };
276−
277− // Groups the object's values by a criterion. Pass either a string attribute
278− // to group by, or a function that returns the criterion.
279− _.groupBy = function(obj, val) {
280− var result = {};
281− var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
282− each(obj, function(value, index) {
283− var key = iterator(value, index);
284− (result[key] || (result[key] = [])).push(value);
285− });
286− return result;
287− };
288−
289− // Use a comparator function to figure out at what index an object should
290− // be inserted so as to maintain order. Uses binary search.
291− _.sortedIndex = function(array, obj, iterator) {
292− iterator || (iterator = _.identity);
293− var low = 0, high = array.length;
294− while (low < high) {
295− var mid = (low + high) >> 1;
296− iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;
297− }
298− return low;
299− };
300−
301− // Safely convert anything iterable into a real, live array.
302− _.toArray = function(iterable) {
303− if (!iterable) return [];
304− if (iterable.toArray) return iterable.toArray();
305− if (_.isArray(iterable)) return slice.call(iterable);
306− if (_.isArguments(iterable)) return slice.call(iterable);
307− return _.values(iterable);
308− };
309−
310− // Return the number of elements in an object.
311− _.size = function(obj) {
312− return _.toArray(obj).length;
313− };
314−
315− // Array Functions
316− // ---------------
317−
318− // Get the first element of an array. Passing **n** will return the first N
319− // values in the array. Aliased as `head`. The **guard** check allows it to work
320− // with `_.map`.
321− _.first = _.head = function(array, n, guard) {
322− return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
323− };
324−
325− // Returns everything but the last entry of the array. Especcialy useful on
326− // the arguments object. Passing **n** will return all the values in
327− // the array, excluding the last N. The **guard** check allows it to work with
328− // `_.map`.
329− _.initial = function(array, n, guard) {
330− return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
331− };
332−
333− // Get the last element of an array. Passing **n** will return the last N
334− // values in the array. The **guard** check allows it to work with `_.map`.
335− _.last = function(array, n, guard) {
336− if ((n != null) && !guard) {
337− return slice.call(array, Math.max(array.length - n, 0));
338− } else {
339− return array[array.length - 1];
340− }
341− };
342−
343− // Returns everything but the first entry of the array. Aliased as `tail`.
344− // Especially useful on the arguments object. Passing an **index** will return
345− // the rest of the values in the array from that index onward. The **guard**
346− // check allows it to work with `_.map`.
347− _.rest = _.tail = function(array, index, guard) {
348− return slice.call(array, (index == null) || guard ? 1 : index);
349− };
350−
351− // Trim out all falsy values from an array.
352− _.compact = function(array) {
353− return _.filter(array, function(value){ return !!value; });
354− };
355−
356− // Return a completely flattened version of an array.
357− _.flatten = function(array, shallow) {
358− return _.reduce(array, function(memo, value) {
359− if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));
360− memo[memo.length] = value;
361− return memo;
362− }, []);
363− };
364−
365− // Return a version of the array that does not contain the specified value(s).
366− _.without = function(array) {
367− return _.difference(array, slice.call(arguments, 1));
368− };
369−
370− // Produce a duplicate-free version of the array. If the array has already
371− // been sorted, you have the option of using a faster algorithm.
372− // Aliased as `unique`.
373− _.uniq = _.unique = function(array, isSorted, iterator) {
374− var initial = iterator ? _.map(array, iterator) : array;
375− var result = [];
376− _.reduce(initial, function(memo, el, i) {
377− if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) {
378− memo[memo.length] = el;
379− result[result.length] = array[i];
380− }
381− return memo;
382− }, []);
383− return result;
384− };
385−
386− // Produce an array that contains the union: each distinct element from all of
387− // the passed-in arrays.
388− _.union = function() {
389− return _.uniq(_.flatten(arguments, true));
390− };
391−
392− // Produce an array that contains every item shared between all the
393− // passed-in arrays. (Aliased as "intersect" for back-compat.)
394− _.intersection = _.intersect = function(array) {
395− var rest = slice.call(arguments, 1);
396− return _.filter(_.uniq(array), function(item) {
397− return _.every(rest, function(other) {
398− return _.indexOf(other, item) >= 0;
399− });
400− });
401− };
402−
403− // Take the difference between one array and a number of other arrays.
404− // Only the elements present in just the first array will remain.
405− _.difference = function(array) {
406− var rest = _.flatten(slice.call(arguments, 1));
407− return _.filter(array, function(value){ return !_.include(rest, value); });
408− };
409−
410− // Zip together multiple lists into a single array -- elements that share
411− // an index go together.
412− _.zip = function() {
413− var args = slice.call(arguments);
414− var length = _.max(_.pluck(args, 'length'));
415− var results = new Array(length);
416− for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
417− return results;
418− };
419−
420− // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
421− // we need this function. Return the position of the first occurrence of an
422− // item in an array, or -1 if the item is not included in the array.
423− // Delegates to **ECMAScript 5**'s native `indexOf` if available.
424− // If the array is large and already in sort order, pass `true`
425− // for **isSorted** to use binary search.
426− _.indexOf = function(array, item, isSorted) {
427− if (array == null) return -1;
428− var i, l;
429− if (isSorted) {
430− i = _.sortedIndex(array, item);
431− return array[i] === item ? i : -1;
432− }
433− if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);
434− for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;
435− return -1;
436− };
437−
438− // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
439− _.lastIndexOf = function(array, item) {
440− if (array == null) return -1;
441− if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);
442− var i = array.length;
443− while (i--) if (i in array && array[i] === item) return i;
444− return -1;
445− };
446−
447− // Generate an integer Array containing an arithmetic progression. A port of
448− // the native Python `range()` function. See
449− // [the Python documentation](http://docs.python.org/library/functions.html#range).
450− _.range = function(start, stop, step) {
451− if (arguments.length <= 1) {
452− stop = start || 0;
453− start = 0;
454− }
455− step = arguments[2] || 1;
456−
457− var len = Math.max(Math.ceil((stop - start) / step), 0);
458− var idx = 0;
459− var range = new Array(len);
460−
461− while(idx < len) {
462− range[idx++] = start;
463− start += step;
464− }
465−
466− return range;
467− };
468−
469− // Function (ahem) Functions
470− // ------------------
471−
472− // Reusable constructor function for prototype setting.
473− var ctor = function(){};
474−
475− // Create a function bound to a given object (assigning `this`, and arguments,
476− // optionally). Binding with arguments is also known as `curry`.
477− // Delegates to **ECMAScript 5**'s native `Function.bind` if available.
478− // We check for `func.bind` first, to fail fast when `func` is undefined.
479− _.bind = function bind(func, context) {
480− var bound, args;
481− if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
482− if (!_.isFunction(func)) throw new TypeError;
483− args = slice.call(arguments, 2);
484− return bound = function() {
485− if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
486− ctor.prototype = func.prototype;
487− var self = new ctor;
488− var result = func.apply(self, args.concat(slice.call(arguments)));
489− if (Object(result) === result) return result;
490− return self;
491− };
492− };
493−
494− // Bind all of an object's methods to that object. Useful for ensuring that
495− // all callbacks defined on an object belong to it.
496− _.bindAll = function(obj) {
497− var funcs = slice.call(arguments, 1);
498− if (funcs.length == 0) funcs = _.functions(obj);
499− each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
500− return obj;
501− };
502−
503− // Memoize an expensive function by storing its results.
504− _.memoize = function(func, hasher) {
505− var memo = {};
506− hasher || (hasher = _.identity);
507− return function() {
508− var key = hasher.apply(this, arguments);
509− return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
510− };
511− };
512−
513− // Delays a function for the given number of milliseconds, and then calls
514− // it with the arguments supplied.
515− _.delay = function(func, wait) {
516− var args = slice.call(arguments, 2);
517− return setTimeout(function(){ return func.apply(func, args); }, wait);
518− };
519−
520− // Defers a function, scheduling it to run after the current call stack has
521− // cleared.
522− _.defer = function(func) {
523− return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
524− };
525−
526− // Returns a function, that, when invoked, will only be triggered at most once
527− // during a given window of time.
528− _.throttle = function(func, wait) {
529− var context, args, timeout, throttling, more;
530− var whenDone = _.debounce(function(){ more = throttling = false; }, wait);
531− return function() {
532− context = this; args = arguments;
533− var later = function() {
534− timeout = null;
535− if (more) func.apply(context, args);
536− whenDone();
537− };
538− if (!timeout) timeout = setTimeout(later, wait);
539− if (throttling) {
540− more = true;
541− } else {
542− func.apply(context, args);
543− }
544− whenDone();
545− throttling = true;
546− };
547− };
548−
549− // Returns a function, that, as long as it continues to be invoked, will not
550− // be triggered. The function will be called after it stops being called for
551− // N milliseconds.
552− _.debounce = function(func, wait) {
553− var timeout;
554− return function() {
555− var context = this, args = arguments;
556− var later = function() {
557− timeout = null;
558− func.apply(context, args);
559− };
560− clearTimeout(timeout);
561− timeout = setTimeout(later, wait);
562− };
563− };
564−
565− // Returns a function that will be executed at most one time, no matter how
566− // often you call it. Useful for lazy initialization.
567− _.once = function(func) {
568− var ran = false, memo;
569− return function() {
570− if (ran) return memo;
571− ran = true;
572− return memo = func.apply(this, arguments);
573− };
574− };
575−
576− // Returns the first function passed as an argument to the second,
577− // allowing you to adjust arguments, run code before and after, and
578− // conditionally execute the original function.
579− _.wrap = function(func, wrapper) {
580− return function() {
581− var args = [func].concat(slice.call(arguments, 0));
582− return wrapper.apply(this, args);
583− };
584− };
585−
586− // Returns a function that is the composition of a list of functions, each
587− // consuming the return value of the function that follows.
588− _.compose = function() {
589− var funcs = arguments;
590− return function() {
591− var args = arguments;
592− for (var i = funcs.length - 1; i >= 0; i--) {
593− args = [funcs[i].apply(this, args)];
594− }
595− return args[0];
596− };
597− };
598−
599− // Returns a function that will only be executed after being called N times.
600− _.after = function(times, func) {
601− if (times <= 0) return func();
602− return function() {
603− if (--times < 1) { return func.apply(this, arguments); }
604− };
605− };
606−
607− // Object Functions
608− // ----------------
609−
610− // Retrieve the names of an object's properties.
611− // Delegates to **ECMAScript 5**'s native `Object.keys`
612− _.keys = nativeKeys || function(obj) {
613− if (obj !== Object(obj)) throw new TypeError('Invalid object');
614− var keys = [];
615− for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
616− return keys;
617− };
618−
619− // Retrieve the values of an object's properties.
620− _.values = function(obj) {
621− return _.map(obj, _.identity);
622− };
623−
624− // Return a sorted list of the function names available on the object.
625− // Aliased as `methods`
626− _.functions = _.methods = function(obj) {
627− var names = [];
628− for (var key in obj) {
629− if (_.isFunction(obj[key])) names.push(key);
630− }
631− return names.sort();
632− };
633−
634− // Extend a given object with all the properties in passed-in object(s).
635− _.extend = function(obj) {
636− each(slice.call(arguments, 1), function(source) {
637− for (var prop in source) {
638− obj[prop] = source[prop];
639− }
640− });
641− return obj;
642− };
643−
644− // Fill in a given object with default properties.
645− _.defaults = function(obj) {
646− each(slice.call(arguments, 1), function(source) {
647− for (var prop in source) {
648− if (obj[prop] == null) obj[prop] = source[prop];
649− }
650− });
651− return obj;
652− };
653−
654− // Create a (shallow-cloned) duplicate of an object.
655− _.clone = function(obj) {
656− if (!_.isObject(obj)) return obj;
657− return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
658− };
659−
660− // Invokes interceptor with the obj, and then returns obj.
661− // The primary purpose of this method is to "tap into" a method chain, in
662− // order to perform operations on intermediate results within the chain.
663− _.tap = function(obj, interceptor) {
664− interceptor(obj);
665− return obj;
666− };
667−
668− // Internal recursive comparison function.
669− function eq(a, b, stack) {
670− // Identical objects are equal. `0 === -0`, but they aren't identical.
671− // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
672− if (a === b) return a !== 0 || 1 / a == 1 / b;
673− // A strict comparison is necessary because `null == undefined`.
674− if (a == null || b == null) return a === b;
675− // Unwrap any wrapped objects.
676− if (a._chain) a = a._wrapped;
677− if (b._chain) b = b._wrapped;
678− // Invoke a custom `isEqual` method if one is provided.
679− if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);
680− if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);
681− // Compare `[[Class]]` names.
682− var className = toString.call(a);
683− if (className != toString.call(b)) return false;
684− switch (className) {
685− // Strings, numbers, dates, and booleans are compared by value.
686− case '[object String]':
687− // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
688− // equivalent to `new String("5")`.
689− return a == String(b);
690− case '[object Number]':
691− // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
692− // other numeric values.
693− return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
694− case '[object Date]':
695− case '[object Boolean]':
696− // Coerce dates and booleans to numeric primitive values. Dates are compared by their
697− // millisecond representations. Note that invalid dates with millisecond representations
698− // of `NaN` are not equivalent.
699− return +a == +b;
700− // RegExps are compared by their source patterns and flags.
701− case '[object RegExp]':
702− return a.source == b.source &&
703− a.global == b.global &&
704− a.multiline == b.multiline &&
705− a.ignoreCase == b.ignoreCase;
706− }
707− if (typeof a != 'object' || typeof b != 'object') return false;
708− // Assume equality for cyclic structures. The algorithm for detecting cyclic
709− // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
710− var length = stack.length;
711− while (length--) {
712− // Linear search. Performance is inversely proportional to the number of
713− // unique nested structures.
714− if (stack[length] == a) return true;
715− }
716− // Add the first object to the stack of traversed objects.
717− stack.push(a);
718− var size = 0, result = true;
719− // Recursively compare objects and arrays.
720− if (className == '[object Array]') {
721− // Compare array lengths to determine if a deep comparison is necessary.
722− size = a.length;
723− result = size == b.length;
724− if (result) {
725− // Deep compare the contents, ignoring non-numeric properties.
726− while (size--) {
727− // Ensure commutative equality for sparse arrays.
728− if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break;
729− }
730− }
731− } else {
732− // Objects with different constructors are not equivalent.
733− if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false;
734− // Deep compare objects.
735− for (var key in a) {
736− if (_.has(a, key)) {
737− // Count the expected number of properties.
738− size++;
739− // Deep compare each member.
740− if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break;
741− }
742− }
743− // Ensure that both objects contain the same number of properties.
744− if (result) {
745− for (key in b) {
746− if (_.has(b, key) && !(size--)) break;
747− }
748− result = !size;
749− }
750− }
751− // Remove the first object from the stack of traversed objects.
752− stack.pop();
753− return result;
754− }
755−
756− // Perform a deep comparison to check if two objects are equal.
757− _.isEqual = function(a, b) {
758− return eq(a, b, []);
759− };
760−
761− // Is a given array, string, or object empty?
762− // An "empty" object has no enumerable own-properties.
763− _.isEmpty = function(obj) {
764− if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
765− for (var key in obj) if (_.has(obj, key)) return false;
766− return true;
767− };
768−
769− // Is a given value a DOM element?
770− _.isElement = function(obj) {
771− return !!(obj && obj.nodeType == 1);
772− };
773−
774− // Is a given value an array?
775− // Delegates to ECMA5's native Array.isArray
776− _.isArray = nativeIsArray || function(obj) {
777− return toString.call(obj) == '[object Array]';
778− };
779−
780− // Is a given variable an object?
781− _.isObject = function(obj) {
782− return obj === Object(obj);
783− };
784−
785− // Is a given variable an arguments object?
786− _.isArguments = function(obj) {
787− return toString.call(obj) == '[object Arguments]';
788− };
789− if (!_.isArguments(arguments)) {
790− _.isArguments = function(obj) {
791− return !!(obj && _.has(obj, 'callee'));
792− };
793− }
794−
795− // Is a given value a function?
796− _.isFunction = function(obj) {
797− return toString.call(obj) == '[object Function]';
798− };
799−
800− // Is a given value a string?
801− _.isString = function(obj) {
802− return toString.call(obj) == '[object String]';
803− };
804−
805− // Is a given value a number?
806− _.isNumber = function(obj) {
807− return toString.call(obj) == '[object Number]';
808− };
809−
810− // Is the given value `NaN`?
811− _.isNaN = function(obj) {
812− // `NaN` is the only value for which `===` is not reflexive.
813− return obj !== obj;
814− };
815−
816− // Is a given value a boolean?
817− _.isBoolean = function(obj) {
818− return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
819− };
820−
821− // Is a given value a date?
822− _.isDate = function(obj) {
823− return toString.call(obj) == '[object Date]';
824− };
825−
826− // Is the given value a regular expression?
827− _.isRegExp = function(obj) {
828− return toString.call(obj) == '[object RegExp]';
829− };
830−
831− // Is a given value equal to null?
832− _.isNull = function(obj) {
833− return obj === null;
834− };
835−
836− // Is a given variable undefined?
837− _.isUndefined = function(obj) {
838− return obj === void 0;
839− };
840−
841− // Has own property?
842− _.has = function(obj, key) {
843− return hasOwnProperty.call(obj, key);
844− };
845−
846− // Utility Functions
847− // -----------------
848−
849− // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
850− // previous owner. Returns a reference to the Underscore object.
851− _.noConflict = function() {
852− root._ = previousUnderscore;
853− return this;
854− };
855−
856− // Keep the identity function around for default iterators.
857− _.identity = function(value) {
858− return value;
859− };
860−
861− // Run a function **n** times.
862− _.times = function (n, iterator, context) {
863− for (var i = 0; i < n; i++) iterator.call(context, i);
864− };
865−
866− // Escape a string for HTML interpolation.
867− _.escape = function(string) {
868− return (''+string).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g,'&#x2F;');
869− };
870−
871− // Add your own custom functions to the Underscore object, ensuring that
872− // they're correctly added to the OOP wrapper as well.
873− _.mixin = function(obj) {
874− each(_.functions(obj), function(name){
875− addToWrapper(name, _[name] = obj[name]);
876− });
877− };
878−
879− // Generate a unique integer id (unique within the entire client session).
880− // Useful for temporary DOM ids.
881− var idCounter = 0;
882− _.uniqueId = function(prefix) {
883− var id = idCounter++;
884− return prefix ? prefix + id : id;
885− };
886−
887− // By default, Underscore uses ERB-style template delimiters, change the
888− // following template settings to use alternative delimiters.
889− _.templateSettings = {
890− evaluate : /<%([\s\S]+?)%>/g,
891− interpolate : /<%=([\s\S]+?)%>/g,
892− escape : /<%-([\s\S]+?)%>/g
893− };
894−
895− // When customizing `templateSettings`, if you don't want to define an
896− // interpolation, evaluation or escaping regex, we need one that is
897− // guaranteed not to match.
898− var noMatch = /.^/;
899−
900− // Within an interpolation, evaluation, or escaping, remove HTML escaping
901− // that had been previously added.
902− var unescape = function(code) {
903− return code.replace(/\\\\/g, '\\').replace(/\\'/g, "'");
904− };
905−
906− // JavaScript micro-templating, similar to John Resig's implementation.
907− // Underscore templating handles arbitrary delimiters, preserves whitespace,
908− // and correctly escapes quotes within interpolated code.
909− _.template = function(str, data) {
910− var c = _.templateSettings;
911− var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +
912− 'with(obj||{}){__p.push(\'' +
913− str.replace(/\\/g, '\\\\')
914− .replace(/'/g, "\\'")
915− .replace(c.escape || noMatch, function(match, code) {
916− return "',_.escape(" + unescape(code) + "),'";
917− })
918− .replace(c.interpolate || noMatch, function(match, code) {
919− return "'," + unescape(code) + ",'";
920− })
921− .replace(c.evaluate || noMatch, function(match, code) {
922− return "');" + unescape(code).replace(/[\r\n\t]/g, ' ') + ";__p.push('";
923− })
924− .replace(/\r/g, '\\r')
925− .replace(/\n/g, '\\n')
926− .replace(/\t/g, '\\t')
927− + "');}return __p.join('');";
928− var func = new Function('obj', '_', tmpl);
929− if (data) return func(data, _);
930− return function(data) {
931− return func.call(this, data, _);
932− };
933− };
934−
935− // Add a "chain" function, which will delegate to the wrapper.
936− _.chain = function(obj) {
937− return _(obj).chain();
938− };
939−
940− // The OOP Wrapper
941− // ---------------
942−
943− // If Underscore is called as a function, it returns a wrapped object that
944− // can be used OO-style. This wrapper holds altered versions of all the
945− // underscore functions. Wrapped objects may be chained.
946− var wrapper = function(obj) { this._wrapped = obj; };
947−
948− // Expose `wrapper.prototype` as `_.prototype`
949− _.prototype = wrapper.prototype;
950−
951− // Helper function to continue chaining intermediate results.
952− var result = function(obj, chain) {
953− return chain ? _(obj).chain() : obj;
954− };
955−
956− // A method to easily add functions to the OOP wrapper.
957− var addToWrapper = function(name, func) {
958− wrapper.prototype[name] = function() {
959− var args = slice.call(arguments);
960− unshift.call(args, this._wrapped);
961− return result(func.apply(_, args), this._chain);
962− };
963− };
964−
965− // Add all of the Underscore functions to the wrapper object.
966− _.mixin(_);
967−
968− // Add all mutator Array functions to the wrapper.
969− each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
970− var method = ArrayProto[name];
971− wrapper.prototype[name] = function() {
972− var wrapped = this._wrapped;
973− method.apply(wrapped, arguments);
974− var length = wrapped.length;
975− if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0];
976− return result(wrapped, this._chain);
977− };
978− });
979−
980− // Add all accessor Array functions to the wrapper.
981− each(['concat', 'join', 'slice'], function(name) {
982− var method = ArrayProto[name];
983− wrapper.prototype[name] = function() {
984− return result(method.apply(this._wrapped, arguments), this._chain);
985− };
986− });
987−
988− // Start chaining a wrapped Underscore object.
989− wrapper.prototype.chain = function() {
990− this._chain = true;
991− return this;
992− };
993−
994− // Extracts the result from a wrapped and chained object.
995− wrapper.prototype.value = function() {
996− return this._wrapped;
997− };
998−
999−}).call(this);
_static/underscore.js+6−31
@@ -1,31 +1,6 @@
1−// Underscore.js 1.3.1
2−// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
3−// Underscore is freely distributable under the MIT license.
4−// Portions of Underscore are inspired or borrowed from Prototype,
5−// Oliver Steele's Functional, and John Resig's Micro-Templating.
6−// For all details and documentation:
7−// http://documentcloud.github.com/underscore
8−(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
9−c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
10−h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
11−b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
12−null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
13−function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
14−e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
15−function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
16−return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
17−c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
18−b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
19−return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
20−d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
21−var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
22−c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
23−a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
24−b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
25−1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
26−b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
27−b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),
28−function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
29−u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
30−function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
31−true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
1+!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define("underscore",r):(n=n||self,function(){var t=n._,e=n._=r();e.noConflict=function(){return n._=t,e}}())}(this,(function(){
2+// Underscore.js 1.12.0
3+// https://underscorejs.org
4+// (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
5+// Underscore may be freely distributed under the MIT license.
6+var n="1.12.0",r="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},t=Array.prototype,e=Object.prototype,u="undefined"!=typeof Symbol?Symbol.prototype:null,o=t.push,i=t.slice,a=e.toString,f=e.hasOwnProperty,c="undefined"!=typeof ArrayBuffer,l="undefined"!=typeof DataView,s=Array.isArray,p=Object.keys,v=Object.create,h=c&&ArrayBuffer.isView,y=isNaN,g=isFinite,d=!{toString:null}.propertyIsEnumerable("toString"),b=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],m=Math.pow(2,53)-1;function j(n,r){return r=null==r?n.length-1:+r,function(){for(var t=Math.max(arguments.length-r,0),e=Array(t),u=0;u<t;u++)e[u]=arguments[u+r];switch(r){case 0:return n.call(this,e);case 1:return n.call(this,arguments[0],e);case 2:return n.call(this,arguments[0],arguments[1],e)}var o=Array(r+1);for(u=0;u<r;u++)o[u]=arguments[u];return o[r]=e,n.apply(this,o)}}function _(n){var r=typeof n;return"function"===r||"object"===r&&!!n}function w(n){return void 0===n}function A(n){return!0===n||!1===n||"[object Boolean]"===a.call(n)}function x(n){var r="[object "+n+"]";return function(n){return a.call(n)===r}}var S=x("String"),O=x("Number"),M=x("Date"),E=x("RegExp"),B=x("Error"),N=x("Symbol"),I=x("ArrayBuffer"),k=x("Function"),T=r.document&&r.document.childNodes;"function"!=typeof/./&&"object"!=typeof Int8Array&&"function"!=typeof T&&(k=function(n){return"function"==typeof n||!1});var D=k,R=x("Object"),F=l&&R(new DataView(new ArrayBuffer(8))),V="undefined"!=typeof Map&&R(new Map),P=x("DataView");var q=F?function(n){return null!=n&&D(n.getInt8)&&I(n.buffer)}:P,U=s||x("Array");function W(n,r){return null!=n&&f.call(n,r)}var z=x("Arguments");!function(){z(arguments)||(z=function(n){return W(n,"callee")})}();var L=z;function C(n){return O(n)&&y(n)}function K(n){return function(){return n}}function J(n){return function(r){var t=n(r);return"number"==typeof t&&t>=0&&t<=m}}function $(n){return function(r){return null==r?void 0:r[n]}}var G=$("byteLength"),H=J(G),Q=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var X=c?function(n){return h?h(n)&&!q(n):H(n)&&Q.test(a.call(n))}:K(!1),Y=$("length");function Z(n,r){r=function(n){for(var r={},t=n.length,e=0;e<t;++e)r[n[e]]=!0;return{contains:function(n){return r[n]},push:function(t){return r[t]=!0,n.push(t)}}}(r);var t=b.length,u=n.constructor,o=D(u)&&u.prototype||e,i="constructor";for(W(n,i)&&!r.contains(i)&&r.push(i);t--;)(i=b[t])in n&&n[i]!==o[i]&&!r.contains(i)&&r.push(i)}function nn(n){if(!_(n))return[];if(p)return p(n);var r=[];for(var t in n)W(n,t)&&r.push(t);return d&&Z(n,r),r}function rn(n,r){var t=nn(r),e=t.length;if(null==n)return!e;for(var u=Object(n),o=0;o<e;o++){var i=t[o];if(r[i]!==u[i]||!(i in u))return!1}return!0}function tn(n){return n instanceof tn?n:this instanceof tn?void(this._wrapped=n):new tn(n)}function en(n){return new Uint8Array(n.buffer||n,n.byteOffset||0,G(n))}tn.VERSION=n,tn.prototype.value=function(){return this._wrapped},tn.prototype.valueOf=tn.prototype.toJSON=tn.prototype.value,tn.prototype.toString=function(){return String(this._wrapped)};var un="[object DataView]";function on(n,r,t,e){if(n===r)return 0!==n||1/n==1/r;if(null==n||null==r)return!1;if(n!=n)return r!=r;var o=typeof n;return("function"===o||"object"===o||"object"==typeof r)&&function n(r,t,e,o){r instanceof tn&&(r=r._wrapped);t instanceof tn&&(t=t._wrapped);var i=a.call(r);if(i!==a.call(t))return!1;if(F&&"[object Object]"==i&&q(r)){if(!q(t))return!1;i=un}switch(i){case"[object RegExp]":case"[object String]":return""+r==""+t;case"[object Number]":return+r!=+r?+t!=+t:0==+r?1/+r==1/t:+r==+t;case"[object Date]":case"[object Boolean]":return+r==+t;case"[object Symbol]":return u.valueOf.call(r)===u.valueOf.call(t);case"[object ArrayBuffer]":case un:return n(en(r),en(t),e,o)}var f="[object Array]"===i;if(!f&&X(r)){if(G(r)!==G(t))return!1;if(r.buffer===t.buffer&&r.byteOffset===t.byteOffset)return!0;f=!0}if(!f){if("object"!=typeof r||"object"!=typeof t)return!1;var c=r.constructor,l=t.constructor;if(c!==l&&!(D(c)&&c instanceof c&&D(l)&&l instanceof l)&&"constructor"in r&&"constructor"in t)return!1}o=o||[];var s=(e=e||[]).length;for(;s--;)if(e[s]===r)return o[s]===t;if(e.push(r),o.push(t),f){if((s=r.length)!==t.length)return!1;for(;s--;)if(!on(r[s],t[s],e,o))return!1}else{var p,v=nn(r);if(s=v.length,nn(t).length!==s)return!1;for(;s--;)if(p=v[s],!W(t,p)||!on(r[p],t[p],e,o))return!1}return e.pop(),o.pop(),!0}(n,r,t,e)}function an(n){if(!_(n))return[];var r=[];for(var t in n)r.push(t);return d&&Z(n,r),r}function fn(n){var r=Y(n);return function(t){if(null==t)return!1;var e=an(t);if(Y(e))return!1;for(var u=0;u<r;u++)if(!D(t[n[u]]))return!1;return n!==hn||!D(t[cn])}}var cn="forEach",ln="has",sn=["clear","delete"],pn=["get",ln,"set"],vn=sn.concat(cn,pn),hn=sn.concat(pn),yn=["add"].concat(sn,cn,ln),gn=V?fn(vn):x("Map"),dn=V?fn(hn):x("WeakMap"),bn=V?fn(yn):x("Set"),mn=x("WeakSet");function jn(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=n[r[u]];return e}function _n(n){for(var r={},t=nn(n),e=0,u=t.length;e<u;e++)r[n[t[e]]]=t[e];return r}function wn(n){var r=[];for(var t in n)D(n[t])&&r.push(t);return r.sort()}function An(n,r){return function(t){var e=arguments.length;if(r&&(t=Object(t)),e<2||null==t)return t;for(var u=1;u<e;u++)for(var o=arguments[u],i=n(o),a=i.length,f=0;f<a;f++){var c=i[f];r&&void 0!==t[c]||(t[c]=o[c])}return t}}var xn=An(an),Sn=An(nn),On=An(an,!0);function Mn(n){if(!_(n))return{};if(v)return v(n);var r=function(){};r.prototype=n;var t=new r;return r.prototype=null,t}function En(n){return _(n)?U(n)?n.slice():xn({},n):n}function Bn(n){return U(n)?n:[n]}function Nn(n){return tn.toPath(n)}function In(n,r){for(var t=r.length,e=0;e<t;e++){if(null==n)return;n=n[r[e]]}return t?n:void 0}function kn(n,r,t){var e=In(n,Nn(r));return w(e)?t:e}function Tn(n){return n}function Dn(n){return n=Sn({},n),function(r){return rn(r,n)}}function Rn(n){return n=Nn(n),function(r){return In(r,n)}}function Fn(n,r,t){if(void 0===r)return n;switch(null==t?3:t){case 1:return function(t){return n.call(r,t)};case 3:return function(t,e,u){return n.call(r,t,e,u)};case 4:return function(t,e,u,o){return n.call(r,t,e,u,o)}}return function(){return n.apply(r,arguments)}}function Vn(n,r,t){return null==n?Tn:D(n)?Fn(n,r,t):_(n)&&!U(n)?Dn(n):Rn(n)}function Pn(n,r){return Vn(n,r,1/0)}function qn(n,r,t){return tn.iteratee!==Pn?tn.iteratee(n,r):Vn(n,r,t)}function Un(){}function Wn(n,r){return null==r&&(r=n,n=0),n+Math.floor(Math.random()*(r-n+1))}tn.toPath=Bn,tn.iteratee=Pn;var zn=Date.now||function(){return(new Date).getTime()};function Ln(n){var r=function(r){return n[r]},t="(?:"+nn(n).join("|")+")",e=RegExp(t),u=RegExp(t,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,r):n}}var Cn={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},Kn=Ln(Cn),Jn=Ln(_n(Cn)),$n=tn.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Gn=/(.)^/,Hn={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Qn=/\\|'|\r|\n|\u2028|\u2029/g;function Xn(n){return"\\"+Hn[n]}var Yn=0;function Zn(n,r,t,e,u){if(!(e instanceof r))return n.apply(t,u);var o=Mn(n.prototype),i=n.apply(o,u);return _(i)?i:o}var nr=j((function(n,r){var t=nr.placeholder,e=function(){for(var u=0,o=r.length,i=Array(o),a=0;a<o;a++)i[a]=r[a]===t?arguments[u++]:r[a];for(;u<arguments.length;)i.push(arguments[u++]);return Zn(n,e,this,this,i)};return e}));nr.placeholder=tn;var rr=j((function(n,r,t){if(!D(n))throw new TypeError("Bind must be called on a function");var e=j((function(u){return Zn(n,e,r,this,t.concat(u))}));return e})),tr=J(Y);function er(n,r,t,e){if(e=e||[],r||0===r){if(r<=0)return e.concat(n)}else r=1/0;for(var u=e.length,o=0,i=Y(n);o<i;o++){var a=n[o];if(tr(a)&&(U(a)||L(a)))if(r>1)er(a,r-1,t,e),u=e.length;else for(var f=0,c=a.length;f<c;)e[u++]=a[f++];else t||(e[u++]=a)}return e}var ur=j((function(n,r){var t=(r=er(r,!1,!1)).length;if(t<1)throw new Error("bindAll must be passed function names");for(;t--;){var e=r[t];n[e]=rr(n[e],n)}return n}));var or=j((function(n,r,t){return setTimeout((function(){return n.apply(null,t)}),r)})),ir=nr(or,tn,1);function ar(n){return function(){return!n.apply(this,arguments)}}function fr(n,r){var t;return function(){return--n>0&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}}var cr=nr(fr,2);function lr(n,r,t){r=qn(r,t);for(var e,u=nn(n),o=0,i=u.length;o<i;o++)if(r(n[e=u[o]],e,n))return e}function sr(n){return function(r,t,e){t=qn(t,e);for(var u=Y(r),o=n>0?0:u-1;o>=0&&o<u;o+=n)if(t(r[o],o,r))return o;return-1}}var pr=sr(1),vr=sr(-1);function hr(n,r,t,e){for(var u=(t=qn(t,e,1))(r),o=0,i=Y(n);o<i;){var a=Math.floor((o+i)/2);t(n[a])<u?o=a+1:i=a}return o}function yr(n,r,t){return function(e,u,o){var a=0,f=Y(e);if("number"==typeof o)n>0?a=o>=0?o:Math.max(o+f,a):f=o>=0?Math.min(o+1,f):o+f+1;else if(t&&o&&f)return e[o=t(e,u)]===u?o:-1;if(u!=u)return(o=r(i.call(e,a,f),C))>=0?o+a:-1;for(o=n>0?a:f-1;o>=0&&o<f;o+=n)if(e[o]===u)return o;return-1}}var gr=yr(1,pr,hr),dr=yr(-1,vr);function br(n,r,t){var e=(tr(n)?pr:lr)(n,r,t);if(void 0!==e&&-1!==e)return n[e]}function mr(n,r,t){var e,u;if(r=Fn(r,t),tr(n))for(e=0,u=n.length;e<u;e++)r(n[e],e,n);else{var o=nn(n);for(e=0,u=o.length;e<u;e++)r(n[o[e]],o[e],n)}return n}function jr(n,r,t){r=qn(r,t);for(var e=!tr(n)&&nn(n),u=(e||n).length,o=Array(u),i=0;i<u;i++){var a=e?e[i]:i;o[i]=r(n[a],a,n)}return o}function _r(n){var r=function(r,t,e,u){var o=!tr(r)&&nn(r),i=(o||r).length,a=n>0?0:i-1;for(u||(e=r[o?o[a]:a],a+=n);a>=0&&a<i;a+=n){var f=o?o[a]:a;e=t(e,r[f],f,r)}return e};return function(n,t,e,u){var o=arguments.length>=3;return r(n,Fn(t,u,4),e,o)}}var wr=_r(1),Ar=_r(-1);function xr(n,r,t){var e=[];return r=qn(r,t),mr(n,(function(n,t,u){r(n,t,u)&&e.push(n)})),e}function Sr(n,r,t){r=qn(r,t);for(var e=!tr(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(!r(n[i],i,n))return!1}return!0}function Or(n,r,t){r=qn(r,t);for(var e=!tr(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(r(n[i],i,n))return!0}return!1}function Mr(n,r,t,e){return tr(n)||(n=jn(n)),("number"!=typeof t||e)&&(t=0),gr(n,r,t)>=0}var Er=j((function(n,r,t){var e,u;return D(r)?u=r:(r=Nn(r),e=r.slice(0,-1),r=r[r.length-1]),jr(n,(function(n){var o=u;if(!o){if(e&&e.length&&(n=In(n,e)),null==n)return;o=n[r]}return null==o?o:o.apply(n,t)}))}));function Br(n,r){return jr(n,Rn(r))}function Nr(n,r,t){var e,u,o=-1/0,i=-1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=tr(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e>o&&(o=e);else r=qn(r,t),mr(n,(function(n,t,e){((u=r(n,t,e))>i||u===-1/0&&o===-1/0)&&(o=n,i=u)}));return o}function Ir(n,r,t){if(null==r||t)return tr(n)||(n=jn(n)),n[Wn(n.length-1)];var e=tr(n)?En(n):jn(n),u=Y(e);r=Math.max(Math.min(r,u),0);for(var o=u-1,i=0;i<r;i++){var a=Wn(i,o),f=e[i];e[i]=e[a],e[a]=f}return e.slice(0,r)}function kr(n,r){return function(t,e,u){var o=r?[[],[]]:{};return e=qn(e,u),mr(t,(function(r,u){var i=e(r,u,t);n(o,r,i)})),o}}var Tr=kr((function(n,r,t){W(n,t)?n[t].push(r):n[t]=[r]})),Dr=kr((function(n,r,t){n[t]=r})),Rr=kr((function(n,r,t){W(n,t)?n[t]++:n[t]=1})),Fr=kr((function(n,r,t){n[t?0:1].push(r)}),!0),Vr=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function Pr(n,r,t){return r in t}var qr=j((function(n,r){var t={},e=r[0];if(null==n)return t;D(e)?(r.length>1&&(e=Fn(e,r[1])),r=an(n)):(e=Pr,r=er(r,!1,!1),n=Object(n));for(var u=0,o=r.length;u<o;u++){var i=r[u],a=n[i];e(a,i,n)&&(t[i]=a)}return t})),Ur=j((function(n,r){var t,e=r[0];return D(e)?(e=ar(e),r.length>1&&(t=r[1])):(r=jr(er(r,!1,!1),String),e=function(n,t){return!Mr(r,t)}),qr(n,e,t)}));function Wr(n,r,t){return i.call(n,0,Math.max(0,n.length-(null==r||t?1:r)))}function zr(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[0]:Wr(n,n.length-r)}function Lr(n,r,t){return i.call(n,null==r||t?1:r)}var Cr=j((function(n,r){return r=er(r,!0,!0),xr(n,(function(n){return!Mr(r,n)}))})),Kr=j((function(n,r){return Cr(n,r)}));function Jr(n,r,t,e){A(r)||(e=t,t=r,r=!1),null!=t&&(t=qn(t,e));for(var u=[],o=[],i=0,a=Y(n);i<a;i++){var f=n[i],c=t?t(f,i,n):f;r&&!t?(i&&o===c||u.push(f),o=c):t?Mr(o,c)||(o.push(c),u.push(f)):Mr(u,f)||u.push(f)}return u}var $r=j((function(n){return Jr(er(n,!0,!0))}));function Gr(n){for(var r=n&&Nr(n,Y).length||0,t=Array(r),e=0;e<r;e++)t[e]=Br(n,e);return t}var Hr=j(Gr);function Qr(n,r){return n._chain?tn(r).chain():r}function Xr(n){return mr(wn(n),(function(r){var t=tn[r]=n[r];tn.prototype[r]=function(){var n=[this._wrapped];return o.apply(n,arguments),Qr(this,t.apply(tn,n))}})),tn}mr(["pop","push","reverse","shift","sort","splice","unshift"],(function(n){var r=t[n];tn.prototype[n]=function(){var t=this._wrapped;return null!=t&&(r.apply(t,arguments),"shift"!==n&&"splice"!==n||0!==t.length||delete t[0]),Qr(this,t)}})),mr(["concat","join","slice"],(function(n){var r=t[n];tn.prototype[n]=function(){var n=this._wrapped;return null!=n&&(n=r.apply(n,arguments)),Qr(this,n)}}));var Yr=Xr({__proto__:null,VERSION:n,restArguments:j,isObject:_,isNull:function(n){return null===n},isUndefined:w,isBoolean:A,isElement:function(n){return!(!n||1!==n.nodeType)},isString:S,isNumber:O,isDate:M,isRegExp:E,isError:B,isSymbol:N,isArrayBuffer:I,isDataView:q,isArray:U,isFunction:D,isArguments:L,isFinite:function(n){return!N(n)&&g(n)&&!isNaN(parseFloat(n))},isNaN:C,isTypedArray:X,isEmpty:function(n){if(null==n)return!0;var r=Y(n);return"number"==typeof r&&(U(n)||S(n)||L(n))?0===r:0===Y(nn(n))},isMatch:rn,isEqual:function(n,r){return on(n,r)},isMap:gn,isWeakMap:dn,isSet:bn,isWeakSet:mn,keys:nn,allKeys:an,values:jn,pairs:function(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=[r[u],n[r[u]]];return e},invert:_n,functions:wn,methods:wn,extend:xn,extendOwn:Sn,assign:Sn,defaults:On,create:function(n,r){var t=Mn(n);return r&&Sn(t,r),t},clone:En,tap:function(n,r){return r(n),n},get:kn,has:function(n,r){for(var t=(r=Nn(r)).length,e=0;e<t;e++){var u=r[e];if(!W(n,u))return!1;n=n[u]}return!!t},mapObject:function(n,r,t){r=qn(r,t);for(var e=nn(n),u=e.length,o={},i=0;i<u;i++){var a=e[i];o[a]=r(n[a],a,n)}return o},identity:Tn,constant:K,noop:Un,toPath:Bn,property:Rn,propertyOf:function(n){return null==n?Un:function(r){return kn(n,r)}},matcher:Dn,matches:Dn,times:function(n,r,t){var e=Array(Math.max(0,n));r=Fn(r,t,1);for(var u=0;u<n;u++)e[u]=r(u);return e},random:Wn,now:zn,escape:Kn,unescape:Jn,templateSettings:$n,template:function(n,r,t){!r&&t&&(r=t),r=On({},r,tn.templateSettings);var e,u=RegExp([(r.escape||Gn).source,(r.interpolate||Gn).source,(r.evaluate||Gn).source].join("|")+"|$","g"),o=0,i="__p+='";n.replace(u,(function(r,t,e,u,a){return i+=n.slice(o,a).replace(Qn,Xn),o=a+r.length,t?i+="'+\n((__t=("+t+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":u&&(i+="';\n"+u+"\n__p+='"),r})),i+="';\n",r.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{e=new Function(r.variable||"obj","_",i)}catch(n){throw n.source=i,n}var a=function(n){return e.call(this,n,tn)},f=r.variable||"obj";return a.source="function("+f+"){\n"+i+"}",a},result:function(n,r,t){var e=(r=Nn(r)).length;if(!e)return D(t)?t.call(n):t;for(var u=0;u<e;u++){var o=null==n?void 0:n[r[u]];void 0===o&&(o=t,u=e),n=D(o)?o.call(n):o}return n},uniqueId:function(n){var r=++Yn+"";return n?n+r:r},chain:function(n){var r=tn(n);return r._chain=!0,r},iteratee:Pn,partial:nr,bind:rr,bindAll:ur,memoize:function(n,r){var t=function(e){var u=t.cache,o=""+(r?r.apply(this,arguments):e);return W(u,o)||(u[o]=n.apply(this,arguments)),u[o]};return t.cache={},t},delay:or,defer:ir,throttle:function(n,r,t){var e,u,o,i,a=0;t||(t={});var f=function(){a=!1===t.leading?0:zn(),e=null,i=n.apply(u,o),e||(u=o=null)},c=function(){var c=zn();a||!1!==t.leading||(a=c);var l=r-(c-a);return u=this,o=arguments,l<=0||l>r?(e&&(clearTimeout(e),e=null),a=c,i=n.apply(u,o),e||(u=o=null)):e||!1===t.trailing||(e=setTimeout(f,l)),i};return c.cancel=function(){clearTimeout(e),a=0,e=u=o=null},c},debounce:function(n,r,t){var e,u,o=function(r,t){e=null,t&&(u=n.apply(r,t))},i=j((function(i){if(e&&clearTimeout(e),t){var a=!e;e=setTimeout(o,r),a&&(u=n.apply(this,i))}else e=or(o,r,this,i);return u}));return i.cancel=function(){clearTimeout(e),e=null},i},wrap:function(n,r){return nr(r,n)},negate:ar,compose:function(){var n=arguments,r=n.length-1;return function(){for(var t=r,e=n[r].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},after:function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},before:fr,once:cr,findKey:lr,findIndex:pr,findLastIndex:vr,sortedIndex:hr,indexOf:gr,lastIndexOf:dr,find:br,detect:br,findWhere:function(n,r){return br(n,Dn(r))},each:mr,forEach:mr,map:jr,collect:jr,reduce:wr,foldl:wr,inject:wr,reduceRight:Ar,foldr:Ar,filter:xr,select:xr,reject:function(n,r,t){return xr(n,ar(qn(r)),t)},every:Sr,all:Sr,some:Or,any:Or,contains:Mr,includes:Mr,include:Mr,invoke:Er,pluck:Br,where:function(n,r){return xr(n,Dn(r))},max:Nr,min:function(n,r,t){var e,u,o=1/0,i=1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=tr(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e<o&&(o=e);else r=qn(r,t),mr(n,(function(n,t,e){((u=r(n,t,e))<i||u===1/0&&o===1/0)&&(o=n,i=u)}));return o},shuffle:function(n){return Ir(n,1/0)},sample:Ir,sortBy:function(n,r,t){var e=0;return r=qn(r,t),Br(jr(n,(function(n,t,u){return{value:n,index:e++,criteria:r(n,t,u)}})).sort((function(n,r){var t=n.criteria,e=r.criteria;if(t!==e){if(t>e||void 0===t)return 1;if(t<e||void 0===e)return-1}return n.index-r.index})),"value")},groupBy:Tr,indexBy:Dr,countBy:Rr,partition:Fr,toArray:function(n){return n?U(n)?i.call(n):S(n)?n.match(Vr):tr(n)?jr(n,Tn):jn(n):[]},size:function(n){return null==n?0:tr(n)?n.length:nn(n).length},pick:qr,omit:Ur,first:zr,head:zr,take:zr,initial:Wr,last:function(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[n.length-1]:Lr(n,Math.max(0,n.length-r))},rest:Lr,tail:Lr,drop:Lr,compact:function(n){return xr(n,Boolean)},flatten:function(n,r){return er(n,r,!1)},without:Kr,uniq:Jr,unique:Jr,union:$r,intersection:function(n){for(var r=[],t=arguments.length,e=0,u=Y(n);e<u;e++){var o=n[e];if(!Mr(r,o)){var i;for(i=1;i<t&&Mr(arguments[i],o);i++);i===t&&r.push(o)}}return r},difference:Cr,unzip:Gr,transpose:Gr,zip:Hr,object:function(n,r){for(var t={},e=0,u=Y(n);e<u;e++)r?t[n[e]]=r[e]:t[n[e][0]]=n[e][1];return t},range:function(n,r,t){null==r&&(r=n||0,n=0),t||(t=r<n?-1:1);for(var e=Math.max(Math.ceil((r-n)/t),0),u=Array(e),o=0;o<e;o++,n+=t)u[o]=n;return u},chunk:function(n,r){if(null==r||r<1)return[];for(var t=[],e=0,u=n.length;e<u;)t.push(i.call(n,e,e+=r));return t},mixin:Xr,default:tn});return Yr._=Yr,Yr}));
admin/api.html+1−1
@@ -192,7 +192,7 @@ HTML of the site. URL of the searx instance and values are customizable.</p>
192192
193193 <div class="footer" role="contentinfo">
194194 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
195− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
195+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
196196 </div>
197197 <script src="../_static/version_warning_offset.js"></script>
198198
admin/architecture.html+1−1
@@ -124,7 +124,7 @@ maintained by the scripts from our <a class="reference internal" href="../utils/
124124
125125 <div class="footer" role="contentinfo">
126126 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
127− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
127+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
128128 </div>
129129 <script src="../_static/version_warning_offset.js"></script>
130130
admin/buildhosts.html+1−1
@@ -245,7 +245,7 @@ output.</p>
245245
246246 <div class="footer" role="contentinfo">
247247 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
248− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
248+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
249249 </div>
250250 <script src="../_static/version_warning_offset.js"></script>
251251
admin/engines.html+1−1
@@ -1790,7 +1790,7 @@
17901790
17911791 <div class="footer" role="contentinfo">
17921792 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
1793− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
1793+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
17941794 </div>
17951795 <script src="../_static/version_warning_offset.js"></script>
17961796
admin/engines/recoll.html+1−1
@@ -149,7 +149,7 @@ searched.</p>
149149
150150 <div class="footer" role="contentinfo">
151151 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
152− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
152+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
153153 </div>
154154 <script src="../../_static/version_warning_offset.js"></script>
155155
admin/filtron.html+1−1
@@ -276,7 +276,7 @@ port 8888 where a searx is being run. For a complete setup see: <a class="refere
276276
277277 <div class="footer" role="contentinfo">
278278 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
279− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
279+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
280280 </div>
281281 <script src="../_static/version_warning_offset.js"></script>
282282
admin/index.html+1−1
@@ -177,7 +177,7 @@
177177
178178 <div class="footer" role="contentinfo">
179179 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
180− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
180+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
181181 </div>
182182 <script src="../_static/version_warning_offset.js"></script>
183183
admin/installation-apache.html+1−1
@@ -489,7 +489,7 @@ Debian:</p>
489489
490490 <div class="footer" role="contentinfo">
491491 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
492− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
492+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
493493 </div>
494494 <script src="../_static/version_warning_offset.js"></script>
495495
admin/installation-docker.html+1−1
@@ -172,7 +172,7 @@ make docker
172172
173173 <div class="footer" role="contentinfo">
174174 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
175− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
175+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
176176 </div>
177177 <script src="../_static/version_warning_offset.js"></script>
178178
admin/installation-nginx.html+1−1
@@ -386,7 +386,7 @@ sudo -H touch /etc/uwsgi.d/searx.ini
386386
387387 <div class="footer" role="contentinfo">
388388 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
389− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
389+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
390390 </div>
391391 <script src="../_static/version_warning_offset.js"></script>
392392
admin/installation-searx.html+1−1
@@ -1712,7 +1712,7 @@ command twice). At this point searx is not demonized; uwsgi allows this.</p>
17121712
17131713 <div class="footer" role="contentinfo">
17141714 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
1715− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
1715+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
17161716 </div>
17171717 <script src="../_static/version_warning_offset.js"></script>
17181718
admin/installation-uwsgi.html+1−1
@@ -498,7 +498,7 @@ enable-threads <span class="o">=</span> <span class="nb">true</span>
498498
499499 <div class="footer" role="contentinfo">
500500 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
501− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
501+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
502502 </div>
503503 <script src="../_static/version_warning_offset.js"></script>
504504
admin/installation.html+1−1
@@ -163,7 +163,7 @@ and <a class="reference external" href="https://github.com/searx/searx/blob/mast
163163
164164 <div class="footer" role="contentinfo">
165165 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
166− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
166+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
167167 </div>
168168 <script src="../_static/version_warning_offset.js"></script>
169169
admin/morty.html+1−1
@@ -134,7 +134,7 @@ plus morty”</em> in the <a class="reference internal" href="installation-nginx
134134
135135 <div class="footer" role="contentinfo">
136136 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
137− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
137+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
138138 </div>
139139 <script src="../_static/version_warning_offset.js"></script>
140140
admin/plugins.html+1−1
@@ -182,7 +182,7 @@
182182
183183 <div class="footer" role="contentinfo">
184184 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
185− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
185+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
186186 </div>
187187 <script src="../_static/version_warning_offset.js"></script>
188188
admin/settings.html+1−1
@@ -428,7 +428,7 @@ following example, searx has only two engines:</p>
428428
429429 <div class="footer" role="contentinfo">
430430 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
431− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
431+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
432432 </div>
433433 <script src="../_static/version_warning_offset.js"></script>
434434
admin/update-searx.html+1−1
@@ -120,7 +120,7 @@
120120
121121 <div class="footer" role="contentinfo">
122122 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
123− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
123+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
124124 </div>
125125 <script src="../_static/version_warning_offset.js"></script>
126126
blog/admin.html+1−1
@@ -139,7 +139,7 @@ existing instances.</p>
139139
140140 <div class="footer" role="contentinfo">
141141 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
142− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
142+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
143143 </div>
144144 <script src="../_static/version_warning_offset.js"></script>
145145
blog/command-line-engines.html+1−1
@@ -151,7 +151,7 @@ are going to be added. This way, you will be able to query your own databases/in
151151
152152 <div class="footer" role="contentinfo">
153153 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
154− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
154+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
155155 </div>
156156 <script src="../_static/version_warning_offset.js"></script>
157157
blog/index.html+1−1
@@ -145,7 +145,7 @@
145145
146146 <div class="footer" role="contentinfo">
147147 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
148− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
148+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
149149 </div>
150150 <script src="../_static/version_warning_offset.js"></script>
151151
blog/intro-offline.html+1−1
@@ -166,7 +166,7 @@ as a table. You can check out the pull request for more details see
166166
167167 <div class="footer" role="contentinfo">
168168 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
169− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
169+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
170170 </div>
171171 <script src="../_static/version_warning_offset.js"></script>
172172
blog/lxcdev-202006.html+1−1
@@ -412,7 +412,7 @@ $ systemctl restart uwsgi@searx
412412
413413 <div class="footer" role="contentinfo">
414414 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
415− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
415+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
416416 </div>
417417 <script src="../_static/version_warning_offset.js"></script>
418418
blog/private-engines.html+1−1
@@ -153,7 +153,7 @@ and come up with new solutions which fit your use case.</p>
153153
154154 <div class="footer" role="contentinfo">
155155 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
156− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
156+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
157157 </div>
158158 <script src="../_static/version_warning_offset.js"></script>
159159
blog/python3.html+1−1
@@ -152,7 +152,7 @@ version in your issue, so we can investigate it properly.</p>
152152
153153 <div class="footer" role="contentinfo">
154154 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
155− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
155+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
156156 </div>
157157 <script src="../_static/version_warning_offset.js"></script>
158158
dev/contribution_guide.html+1−1
@@ -273,7 +273,7 @@ doc available at --&gt; https://searx.github.io/searx
273273
274274 <div class="footer" role="contentinfo">
275275 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
276− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
276+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
277277 </div>
278278 <script src="../_static/version_warning_offset.js"></script>
279279
dev/engine_overview.html+1−1
@@ -729,7 +729,7 @@ time of publish <em>(not implemented yet)</em></p></td>
729729
730730 <div class="footer" role="contentinfo">
731731 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
732− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
732+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
733733 </div>
734734 <script src="../_static/version_warning_offset.js"></script>
735735
dev/index.html+1−1
@@ -167,7 +167,7 @@
167167
168168 <div class="footer" role="contentinfo">
169169 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
170− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
170+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
171171 </div>
172172 <script src="../_static/version_warning_offset.js"></script>
173173
dev/makefile.html+1−1
@@ -295,7 +295,7 @@ never need the latter.</p>
295295
296296 <div class="footer" role="contentinfo">
297297 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
298− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
298+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
299299 </div>
300300 <script src="../_static/version_warning_offset.js"></script>
301301
dev/plugins.html+1−1
@@ -164,7 +164,7 @@ plugin.</p>
164164
165165 <div class="footer" role="contentinfo">
166166 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
167− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
167+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
168168 </div>
169169 <script src="../_static/version_warning_offset.js"></script>
170170
dev/quickstart.html+1−1
@@ -139,7 +139,7 @@ to our “<a class="reference internal" href="contribution_guide.html#how-to-con
139139
140140 <div class="footer" role="contentinfo">
141141 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
142− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
142+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
143143 </div>
144144 <script src="../_static/version_warning_offset.js"></script>
145145
dev/reST.html+2−2
@@ -582,7 +582,7 @@ in a specific way.</p>
582582<td><p><code class="docutils literal notranslate"><span class="pre">:guilabel:`&amp;Cancel`</span></code></p></td>
583583</tr>
584584<tr class="row-odd"><td><p><a class="reference external" href="https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-kbd" title="(in Sphinx v4.0.0+)"><code class="xref rst rst-role docutils literal notranslate"><span class="pre">kbd</span></code></a></p></td>
585−<td><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd></kbd></p></td>
585+<td><p><kbd class="kbd compound docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd></kbd></p></td>
586586<td><p><code class="docutils literal notranslate"><span class="pre">:kbd:`C-x</span> <span class="pre">C-f`</span></code></p></td>
587587</tr>
588588<tr class="row-even"><td><p><a class="reference external" href="https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-menuselection" title="(in Sphinx v4.0.0+)"><code class="xref rst rst-role docutils literal notranslate"><span class="pre">menuselection</span></code></a></p></td>
@@ -1609,7 +1609,7 @@ gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
16091609
16101610 <div class="footer" role="contentinfo">
16111611 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
1612− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
1612+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
16131613 </div>
16141614 <script src="../_static/version_warning_offset.js"></script>
16151615
dev/search_api.html+1−1
@@ -200,7 +200,7 @@ instance. See the available options in the preferences page of the instance.</p>
200200
201201 <div class="footer" role="contentinfo">
202202 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
203− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
203+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
204204 </div>
205205 <script src="../_static/version_warning_offset.js"></script>
206206
dev/translation.html+1−1
@@ -154,7 +154,7 @@ create a PR.</p>
154154
155155 <div class="footer" role="contentinfo">
156156 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
157− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
157+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
158158 </div>
159159 <script src="../_static/version_warning_offset.js"></script>
160160
genindex.html+1−1
@@ -191,7 +191,7 @@
191191
192192 <div class="footer" role="contentinfo">
193193 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
194− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
194+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
195195 </div>
196196 <script src="_static/version_warning_offset.js"></script>
197197
index.html+1−1
@@ -178,7 +178,7 @@ digital rights</p></li>
178178
179179 <div class="footer" role="contentinfo">
180180 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
181− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
181+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
182182 </div>
183183 <script src="_static/version_warning_offset.js"></script>
184184
py-modindex.html+1−1
@@ -113,7 +113,7 @@
113113
114114 <div class="footer" role="contentinfo">
115115 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
116− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
116+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
117117 </div>
118118 <script src="_static/version_warning_offset.js"></script>
119119
search.html+1−1
@@ -105,7 +105,7 @@
105105
106106 <div class="footer" role="contentinfo">
107107 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
108− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
108+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
109109 </div>
110110 <script src="_static/version_warning_offset.js"></script>
111111
searchindex.js+1−1
@@ -1 +1 @@
1−Search.setIndex({docnames:["admin/api","admin/architecture","admin/buildhosts","admin/engines","admin/engines/recoll","admin/filtron","admin/index","admin/installation","admin/installation-apache","admin/installation-docker","admin/installation-nginx","admin/installation-searx","admin/installation-uwsgi","admin/morty","admin/plugins","admin/settings","admin/update-searx","blog/admin","blog/command-line-engines","blog/index","blog/intro-offline","blog/lxcdev-202006","blog/private-engines","blog/python3","dev/contribution_guide","dev/engine_overview","dev/index","dev/makefile","dev/plugins","dev/quickstart","dev/reST","dev/search_api","dev/translation","index","user/index","user/own-instance","user/search_syntax","utils/filtron.sh","utils/index","utils/lxc.sh","utils/morty.sh","utils/searx.sh","utils/standalone_searx.py"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["admin/api.rst","admin/architecture.rst","admin/buildhosts.rst","admin/engines.rst","admin/engines/recoll.rst","admin/filtron.rst","admin/index.rst","admin/installation.rst","admin/installation-apache.rst","admin/installation-docker.rst","admin/installation-nginx.rst","admin/installation-searx.rst","admin/installation-uwsgi.rst","admin/morty.rst","admin/plugins.rst","admin/settings.rst","admin/update-searx.rst","blog/admin.rst","blog/command-line-engines.rst","blog/index.rst","blog/intro-offline.rst","blog/lxcdev-202006.rst","blog/private-engines.rst","blog/python3.rst","dev/contribution_guide.rst","dev/engine_overview.rst","dev/index.rst","dev/makefile.rst","dev/plugins.rst","dev/quickstart.rst","dev/reST.rst","dev/search_api.rst","dev/translation.rst","index.rst","user/index.rst","user/own-instance.rst","user/search_syntax.rst","utils/filtron.sh.rst","utils/index.rst","utils/lxc.sh.rst","utils/morty.sh.rst","utils/searx.sh.rst","utils/standalone_searx.py.rst"],objects:{"":{standalone_searx:[42,0,0,"-"]},standalone_searx:{get_search_query:[42,1,1,""],json_serial:[42,1,1,""],no_parsed_url:[42,1,1,""],parse_argument:[42,1,1,""],to_dict:[42,1,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:function"},terms:{"000":8,"0pointer":12,"0xa9":30,"100":[3,11,15],"1000":11,"1080":15,"115":23,"120":[11,24],"127":[5,8,10,11,12,13,15,21,27,37,38,40,41],"1337x":[3,11],"135":30,"140":39,"147":39,"156":21,"15px":30,"168":8,"1700":20,"174":21,"1756":[27,30],"180":30,"1800":11,"1803":21,"1823":22,"184":21,"192":8,"200":[11,21],"2000":[11,12,30],"200331":39,"2017":[17,23],"2019":20,"2020":[18,22],"202006":[19,33],"2021":39,"2023":39,"2024":39,"2025":39,"2122":30,"2128":18,"216":21,"2291":11,"246":39,"282":[37,39,40,41],"296":39,"300":[11,25],"3000":[8,10,11,13,21,38,39,40],"370":30,"3eff":21,"400":30,"4004":[5,8,10,21,37,38,39],"4005":[37,38,39],"4096":[11,12],"40px":30,"4217":25,"429":21,"500":30,"50593":24,"525":30,"573b":21,"585":30,"666":12,"700":30,"70px":30,"755":15,"8000":24,"8080":[9,11,15,21,39],"8090":11,"820000000":42,"822":30,"833067":12,"86400":11,"8888":[5,8,10,11,12,15,21,27,37,38,41],"8983":11,"90000":11,"9200":11,"9b65":21,"\u010de\u0161tina":11,"\u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac":11,"\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438":11,"\u043c\u043e\u0432\u0430":11,"\u0440\u0443\u0441\u0441\u043a\u0438\u0439":11,"\u0441\u0440\u043f\u0441\u043a\u0438":11,"\u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430":11,"\u05e2\u05d1\u05e8\u05d9\u05ea":11,"\u0627\u0644\u0639":11,"\u0628":11,"\u0629":11,"\u0631":11,"\u0641\u0627\u0631\u0633\u0649":11,"\u064a":11,"\u0ba4\u0bae":11,"\u0bb4":11,"\u0c17":11,"\u0c24":11,"\u0c32":11,"\u0f51":11,"\u0f56":11,"\u0f66":11,"\u4e2d\u6587":11,"\u570b\u8a9e":11,"\u65e5\u672c\u8a9e":[11,15],"abstract":[11,19],"boolean":[25,30],"break":[24,30],"byte":25,"case":[7,15,21,22,35,37,38,40,41],"catal\u00e0":11,"char":[11,18],"class":[8,11],"default":[5,8,9,10,11,12,13,15,18,23,24,27,28,30,31,33,35,36,37,38,39,40,41,42],"enum":18,"espa\u00f1ol":[11,15],"export":[4,9,10,11,21,37,39,40],"f\u0101rs\u012b":11,"float":25,"fran\u00e7ai":[11,15],"function":[20,25,28,30,39,42],"import":[10,20,30,42],"int":[5,11,25,30],"lietuvi\u0173":11,"long":35,"new":[3,7,8,9,10,11,12,17,18,20,22,24,27,28,31,32,36,40,42],"null":[8,10,24,42],"portugu\u00ea":11,"public":[1,6,7,11,13,14,18,30,38,39],"return":[14,15,18,20,26,28,30,35,36,42],"rom\u00e2n\u0103":11,"schr\u00f6dinger":30,"sloven\u010dina":11,"static":[2,5,10,11,28],"switch":[8,24],"t\u00fcrk\u00e7e":[11,15],"ti\u1ebfng":11,"true":[0,5,8,10,12,20,25,28,30,31,36,37,40,42],"try":[11,15,27,35],"var":8,"vi\u1ec7t":11,"while":[12,20,21,27,30],And:[8,18,21,28,30],But:[17,23,25,35,36,39],DNS:[38,39],For:[2,5,7,8,9,10,11,12,13,21,22,24,27,30,31],IPs:[5,38],Not:30,One:[12,17,27],Such:27,That:30,The:[0,2,6,7,9,12,15,18,22,25,27,30,31,35,37,38,39,40,41],Then:[20,23,32],There:[8,12,24,30],These:[25,30],USE:8,Use:[5,8,10,11,24,27],Used:[8,15],Uses:15,With:[8,15,21,27,30,39],__init__:28,__name__:30,_anchor:30,_chapter:30,_doc:30,_dot:30,_rest:30,_section:30,_sphinx:30,_subsect:30,_svg:30,a2disconf:8,a2dismod:8,a2dissit:8,a2enconf:8,a2enmod:8,a2ensit:8,abbrev:36,abl:[2,15,18,20,24,25,30],about:[1,7,11,13,21,22,24,27,33,39],abov:[8,11,13,15,21,24,30,31,39],absenc:30,abus:[5,35],academ:[3,11],accept:[5,11,20,36],access:[4,5,7,8,11,14,17,19,20,21,30,33,35],access_log:10,accord:[9,12,15],account:[7,8,10,21,27,32,37,38,40,41],accusam:30,acg:[3,11],acgsou:[3,11],achiev:4,acknowledg:19,across:15,act:[13,17],action:[0,5,12],activ:[8,10,11,12,13,15,21,23,24,31,37,40,41],actual:15,adapt:25,add:[7,8,10,11,12,13,18,22,24,27,28,30,36,37,38,40,41],added:[12,18,21,22,27,28],adding:[20,28,30,36,38],addit:[2,11,15,25,27,30],addition:[33,35],additional_test:11,address:[11,13,15,25,35,38],adipisici:30,adjust:27,admin:[19,21,22,30,33,38,40],administr:[11,15,17,18,20,22,31,33,35],admonit:26,adopt:24,adorn:30,ads:35,advanc:11,advantag:[17,30],advertis:35,advis:5,af2cae6:30,af77ec3:11,affect:17,after:[11,23,28,30,32,37,40],again:27,agent:[5,11,14,15,25],aggreg:[5,33,35],agpl:[38,39],ahmia:11,aim:[17,27,30],aka:27,alia:10,align:30,aliquid:30,aliquyam:30,all:[0,7,8,11,13,15,21,23,24,25,27,28,29,30,31,37,38,39,40,41,42],allow:[8,11,15,18,30,36],allow_redirect:25,allowoverrid:8,alltogeth:6,along:5,alreadi:[8,10,21,24],also:[2,8,9,11,12,15,21,24,27,30,35,36,38],alt:30,alter:24,altern:[7,10,15,30,39],alwai:[9,10,21,24,25,35,37,40],amd64:[37,40],amet:30,among:[24,35],amount:25,amsmath:30,analog:21,analysi:2,ancel:30,anchor:[11,26],android:11,ani:[2,7,8,11,12,18,24,27,30,31,33,38,42],annoi:30,anonym:[33,35],anoth:[12,15,17,21,25,30,39],answer:[15,30,35,42],anymor:8,anyon:33,anyth:[23,35],anywai:[27,30],apach:[1,5,6,7,12,13,15,33,37,38,39,40,41],apache2:8,apache2ctl:8,api:[4,6,11,15,22,25,26,32,33,37],api_client_id:11,api_client_secret:11,api_kei:[11,15,25],apikei:[11,15],apk:[3,11],apkm:[3,11],apkmirror:[3,11],app:[3,8,10,11,12,21,30,37,40,41],appear:30,append:20,appli:[15,16,24],applic:[5,10,12,15,17,21,41],approach:12,appropri:18,april:39,apt:[2,8,10,11,29,30],arab:11,arbitrari:[11,18,20,25],arch:[0,2,3,8,10,11,12,15,22,29,30],architectur:[5,6,7,8,10,21,33,37,40,41],archiv:[3,11],archivei:11,archlinux:[3,11,12,22,39],arg:42,argpars:42,argument:[13,14,24,30,42],arrai:25,arrow:30,art:30,articl:[11,26],arx:[3,11],arxiv:[3,11],as_sdt:11,as_vi:11,asciimoo:[11,32,37,40],ascrib:30,aspect:[21,24],assert:24,assign:25,assum:[11,30],asterisk:30,atlassian:11,attach:28,attend:21,attent:[29,30],attribut:30,audienc:30,author:[11,24,30],auto:[21,30,32,39],autobuild:[24,27],autocomplet:[0,9,11,31],autodoc:30,autoindex:8,autoindex_modul:8,automat:[12,14,30],avail:[8,10,11,12,14,15,18,20,24,27,31,35,37,40,41],avoid:[5,7,14,15,18],awar:[8,30,38],az178:[37,39,40,41],babel:[2,11],back:[21,29],backend:11,backquot:30,backslash:30,backup:38,bad:11,balanc:27,ban:[11,35],ban_time_on_fail:11,bang:15,bar:[6,30,37,40],barrier:17,base64:11,base:[2,4,9,11,15,18,20,21,25,27,31,39],base_url:[4,9,10,11,15,25],baseprofil:30,bash:[11,21,30,37,38,39,40],basic:[26,39],basqu:11,batch:38,baz:30,bbc:11,becaus:[17,22,24,25,32,35],becom:[21,30],been:[18,20,21,24],befor:[7,11,12,21,23,24,27,28,29,30,35,38,39],beginn:10,behavior:30,behaviour:[12,24,28],being:[5,15,17,23,33],below:[5,7,11,12,15,18,24,30,32],benefit:22,besid:35,best:[2,27,30,35,38],better:[2,8,10,25,27,35],between:[5,25,30],big:30,bigger:15,biggest:17,bii:[3,11],bin:[2,3,11,12,23,27,37,40],binari:[8,10,11,13,37,40],bind:[9,15],bind_address:[9,11,15],bing:[3,11,15],bing_imag:[3,11],bing_new:[3,11],bing_video:[3,11],bit:[12,30],bitbucket:[0,3,11],bitmap:[11,12],biv:[3,11],black:30,blank:[11,15,30],block:[5,11,12,15,26],blocker:21,blocksiz:[11,12],blog:[12,21,30,33],bodi:[11,24,30],boilerpl:[11,21,27],bold:30,boldfac:30,book:[11,26],bookfi:11,bool:25,born:24,bot:21,both:[12,22,23,24,31,35],botlimit:5,bottom:[14,28],bound:27,boundingbox:25,box:[1,7,33,39],branch:[15,24,27,38],brand:[7,11,27,38],bring:[27,30],broken:30,browser:[11,15,17,21,23,24,27,35,39],btdigg:[3,11],bug:[12,19,27],buggi:12,bugreport:[12,24],build:[1,6,7,11,21,39],buildenv:27,builder:30,buildhost:[6,21,27,33,38,41],built:[24,25,30],builtin:[6,28,33],bulgarian:11,bundl:11,c3tv:[3,11],cach:12,cache2:[11,12],calcul:10,call:[17,18,21,22,27,32,39,42],callback:28,can:[0,1,2,4,5,7,8,9,10,11,12,13,15,17,18,20,21,22,23,24,25,27,28,30,33,35,37,39,40,41],cancel:30,cannot:[2,30,35,37,40],capabl:[17,24],caplabl:20,captcha:35,caption:[11,30],cardin:24,care:[11,15,18,30,38,39],carv:22,cat:[37,39,40],catalan:11,catcher:30,categori:[0,3,11,14,15,20,25,30,31,36,42],categories_ord:11,category_choic:42,caus:11,caution:30,caveat:30,ccc:[3,11],cce:[3,11],ccengin:[3,11],cdn:2,cell:30,cento:39,centos7:39,certif:11,cfg:[3,30],cgi:[11,12],chain:27,chainabl:36,chang:[11,12,15,21,23,24,27,30,38],changem:11,chapter:[5,7,23,24,30,40,41],charact:[18,24,30],chdir:[12,21],check:[2,6,18,20,21,24,25,27,32],checker:[11,27],checkout:24,children:11,chines:11,chmod:12,choic:[7,11,21,30,35,38],choos:[7,24,29],chown:[8,10,11,12,37,40],christ:11,chronolog:30,citi:25,citizen:11,classifi:30,clean:[26,39],clear:35,cli:32,client:21,clita:30,clock:23,clone:[7,9,10,11,21,24,27,29,41],close:[5,11],cloudflar:11,cmd:[21,38,39],code:[3,11,12,15,20,26,27,29,31,35,38,39,42],codebas:17,codeberg:[3,11],coffe:39,col:30,colleagu:22,collect:2,colon:30,colspan:30,column:30,com:[7,9,11,15,21,25,29,30,31,32,37,39,40,41],combin:8,come:[5,10,22,23,24,27,35,39],comfort:[12,30],comma:[18,22,31],command:[2,5,8,11,12,19,21,23,24,30,32,33,37,40,41,42],comment:[8,10,11,30,37,39,40],commit:[11,21,27,29,32],commodi:30,common:[12,33,35,37,40,41],commonli:30,commun:[8,10,11,15,20],compact:30,compani:35,compar:[8,10,12,21,39],compat:23,compil:[8,29,32],complet:[5,12,24,31,37,39,40,41],compon:[8,28,38],compromis:35,comput:[18,35],con:30,conatin:21,concern:[18,24],conclus:34,concret:[22,30],condit:30,conf:[2,8,10,27,30,37,40],config:[0,7,11,12,22,25,30,32,37,38,39,40,41],configur:[6,8,9,10,12,15,17,18,20,21,22,26,30,32,35,36,37],conflict:38,confnam:12,confus:30,congress:[3,11],connect:[5,10,11,18,20,33],consectetur:30,consequ:[15,24],consequat:30,consetetur:30,consid:7,consist:21,consol:11,construct:[25,30],contact:[11,15],contact_url:[11,15],contain:[11,14,18,19,27,30,33,38,39],content:[4,6,19,26,33,34,35,38],content_html_to_text:11,content_queri:11,content_xpath:11,context:[28,30,39],continu:30,contribut:[1,2,21,26,27,29,33],contributor:30,control:[8,12,35],convent:24,convert:[14,25,30],cooki:[25,33,35],copi:[9,11,24,30,39],copyright:30,core:[2,12,20],corner:24,corpor:11,correct:[10,15],correctli:10,correspond:12,could:[11,12,18,25,30],count:30,countri:[11,15,25],cours:30,crawler:30,creat:[6,7,8,9,10,12,15,18,20,21,23,30,31,32,38,41],creation:[2,30],creativ:22,credenti:11,croatian:11,cross:30,crossref:[3,11],cryptographi:15,cspan:30,css:[14,28],css_depend:28,csv:[5,31],csv_tabl:30,ctan:30,cthulhu:36,ctrl:[11,21,27],ctx:28,cup:39,curl:11,currenc:[3,11,25],currency_convert:[3,11],current:[14,15,20,24,25,32,36],custom:[11,15,24,30,36],custom_query_json:11,customiz:[0,17],customlog:8,cycl:[21,27],cymraeg:11,czech:11,daemon:[37,40,41],dai:[11,12,25,27,31,42],daili:21,dailymot:[3,11],dalf:1,dali:11,danger:30,danish:11,dansk:11,data:[6,11,18,25,30,35],databas:[18,22,30],dataset:11,date:0,datetim:[25,30],daunt:17,dbpedia:[11,31],dbt:11,ddd:[3,11],ddg:[3,11,36],ddi:[3,11],de_d:15,deactiv:[15,37,40,41],debian:[2,6,10,11,12,16,29,30],debug:[11,15,21,27,37,38,40,41],decid:[17,27],decim:25,dedic:[12,21,30],deeper:[27,30],deezer:[3,11],def:[11,20,25,28,30],defaul:30,default_doi_resolv:11,default_http_head:[11,15],default_lang:11,default_local:[0,11,15],default_on:28,default_them:[0,11,15],defaultop:11,defin:[11,15,28,30],definit:[3,11],dejavu:2,delai:11,delet:[15,31,32,39],delimit:[11,18,30],demon:11,demonstr:10,deni:8,depend:[5,6,8,10,14,17,20,21,23,25,27,30,31],deploi:[9,15,27,30],depot:11,describ:[5,7,8,12,15,21,27,30,41],descript:[11,14,24,28,30,37,40],deserv:24,design:[20,30],desir:[11,25],desktop:[4,21],detail:[8,11,15,20,30],detect:[11,15],deutsch:[0,11,15],dev:[2,8,10,11,24,27,30],devel:[2,11],develop:[2,11,15,17,18,19,22,23,24,27,30,33,38],deviantart:[3,11],dfrac:30,diam:30,dict:[18,25,42],dictzon:[3,11],didn:11,diff:30,differ:[8,10,11,12,14,15,21,23,24,25,30,36,39],digbt:11,digest:14,digg:[3,11],digit:33,digraph:30,dir:[11,37,40],direct:[8,26,29,30,37,40],directli:[10,15,39],directori:[3,8,9,11,12,18,27],disabl:[3,6,11,12,14,15,21,27,28,30,31,38,39],disabled_engin:31,disabled_plugin:31,disadvantag:30,discoveri:[18,20,22],discret:38,displai:[2,9,11,14,15,25],display_error_messag:[15,25,30],displaystyl:30,dispos:38,disrespect:24,dissem:11,dist:[24,27],distinguish:30,distribut:[8,10,12,15,21,22,30,37,40],distributor:6,div:11,dive:35,divid:21,dl_prefix:[4,11],dnf:[2,8,10,11,29,30],doai:11,doai_rewrit:31,doc:[6,8,11,12,21,26,30,39],docker:[6,7,27,33],dockerfil:9,docs_url:[11,15,27],doctest:30,doctre:30,docuemt:2,document:[4,8,12,15,20,22,27,30,33,39],documentroot:8,docutil:30,doe:[4,8,12,17,20,21,25,27,30,31,34,36],doesn:15,doi:[11,14],doi_resolv:11,doku:11,dolor:30,domain:[4,11,30],domin:24,don:[8,11,15,23,25,27,29,30,33,38],done:[8,10,29,30,38,39],dontlog:8,dot:2,doubl:30,download:[4,7,11,15,21,27,30,37,40],drop:23,dry:9,dsitro:21,duckduckgo:[3,11,15,31,36],duckduckgo_definit:[3,11],duckduckgo_imag:[3,11],duden:[3,11],due:[37,40],dump:42,duo:30,duref:30,dutch:11,dutch_belgium:11,dvisvgm:2,e0b3:21,e97:21,each:[12,15,18,21,30,31,39,42],easi:[21,33],easier:24,easiest:18,easili:24,ebai:11,echo:[11,37,39,40],ecosystem:30,ecretvalu:15,edit:[11,12,17,21,24,27,30,35,40],eesti:11,effect:[7,24,30],egg_info:27,eirmod:30,el_gr:11,elast:11,elasticsearch:[11,18],element:[18,30],elit:30,elitr:30,els:39,emac:30,email:[11,15],emb:[6,30],embed:[0,9,30],emperor:12,emphasi:30,empti:[4,8,15,30,31],en_u:[15,25],enabl:[0,8,10,11,12,18,22,24,27,28,31,38],enabled_engin:31,enabled_plugin:[11,31],encapsul:21,enclos:30,encod:[11,12,30],encourag:30,encrypt:33,end:[23,29,30,39],endfor:30,endpoint:31,engin:[0,6,11,17,19,24,26,30,31,33,35,36,37,40,42],engine_c:42,engine_categori:42,engine_typ:[25,30],english:[0,11,15,36],enim:30,enough:[7,8,10,32],ensur:24,ensure_ascii:42,enter:[11,23],entiti:11,entri:[9,11,26,38,39],env:[8,12,21,27,38,39],environ:[9,10,11,15,21,24,26,33,37,39,40,41],eof:[37,39,40],eol:39,eos:30,equat:[2,26],erat:30,erowid:[3,11],error:[3,11,15,18,25,30],error_log:10,escap:30,especi:30,esperanto:[0,11],essenti:[2,11],est:30,estonian:11,etc:[5,8,9,10,11,12,15,21,24,37,38,41],eth0:[21,39],eto:[3,11],etool:[3,11],etymonlin:[3,11],euskara:11,evalu:[30,39],even:[12,21,39],event:12,ever:39,everi:[11,15,21,24,25,35,39],everyon:[20,35],everyth:[11,30,35],evil:11,exactli:[5,30],exampl:[0,5,8,10,11,12,13,15,18,20,21,22,24,26,27,31,34,35,38,39,42],exceed:5,excel:[7,10],except:[8,15,23,24,25,30,38],exchang:35,exec_modul:42,execstart:[37,40],execut:[15,18,32],exercis:21,exercit:30,exist:[8,9,10,11,15,17,21,23,24,27],exit:[11,21],expand:30,expect:[18,22,24],experi:12,experienc:[17,21],experiment:38,explain:24,explan:3,explanatori:[37,39,40,41],explicit:30,expos:[11,22],express:18,ext:2,extend:[20,24,28,30],extens:[2,30],extern:[5,11,13,25,26,30,31,35],extra:[2,8],extract:2,extrem:17,eye:[21,30],fa_ir:11,face:30,fact:19,fail:[21,29],fals:[0,11,15,28,30,31,40,42],familiar:[12,27],fanci:24,faq:30,fashion:15,favorit:[24,27],fd00:8,fd42:21,fdroid:[3,11],fe80:8,fea5:21,featur:[13,17,22,24,30,35],fedora31:39,fedora:[2,8,10,11,12,29,30,39],fedoraproject:39,feedback:[24,30],feel:[28,30],fetch:[19,33],few:[15,24,25],fgr:11,fgrep:11,fieldnam:30,figur:[8,10,26],fil:11,file:[2,3,4,7,8,9,10,11,12,15,17,18,20,21,22,23,24,27,28,32,37,39,40,41,42],file_filt:32,filenam:25,filepath:11,files:25,filesystem:4,filipino:11,fill:30,filter:[0,5,11,31],filtron:[1,6,7,8,10,12,13,21,33,38,39],filtron_api:[37,38,39],filtron_listen:[37,38,39],filtron_target:[37,38],find:[1,5,9,11,18,20,22,24],fine:[7,11],finish:[32,39],finnish:11,firefox:[2,11],firewal:5,first:[8,10,11,15,17,20,21,23,27,29,30,35],first_page_num:11,fit:[12,22,27,28],fix:[24,27],fixm:8,flask:[28,30],flexibl:[18,30,38],flickr:[3,11],flickr_noapi:[3,11],fmt:39,fnd:[11,18],folder:[7,8,10,12,21,24,25,27,30,32,38,39],follow:[4,5,7,8,10,12,13,15,18,24,25,27,30,32],followsymlink:8,font:2,fontsrecommend:2,foo:38,footer:24,force_timeout:[38,39],forget:[29,38],fork:[7,15,21,24,38],form:[0,11,15,30,35],format:[5,11,25,30,31],forward:[5,10,35],found:[2,17,19,27,28],foundat:[17,18,20,22,23],fr_fr:15,fraction:30,framalibr:[3,11],free:[3,11,24,28,33],french:11,fresh:8,friend:[22,35],frinkiac:[3,11],frk:[3,11],frl:[3,11],from:[1,2,5,7,8,9,10,11,12,14,15,17,18,20,21,22,23,24,25,27,30,32,33,35,37,38,39,40,41,42],from_lang:25,from_nam:25,front:30,fsd:[3,11],fsf:11,full:[4,15,30,37,40],fullcit:11,fulli:[8,10,17],fun:[11,19],fund:[18,20,22],further:[27,38],furthermor:[25,31,35],gain:35,galego:11,galician:11,gate:27,geektim:[3,11],gems__gem:11,gen:[3,11],gener:[0,6,8,9,11,12,20,24,26,27,31,35,42],genesi:[3,11],geniu:[3,11],gentlemen:19,gentoo:[3,11],geojson:25,german:[0,11,36],get:[2,5,6,7,8,10,11,14,21,24,25,27,29,30,31,32,33,37,39,40,42],get_engines_stat:30,get_search_queri:42,gid:12,gigablast:[3,11],gil:12,git:[2,7,8,9,10,11,15,16,21,24,25,27,29,30,37,38,40,41],git_branch:[11,15,21,38],git_url:[11,15,21,38],gitea:11,github:[3,7,9,11,15,20,21,23,27,29,30,31,37,39,40,41],gitlab:[3,11],gitmoji:24,give:[8,27],given:30,glob:12,global:[6,7,11,21,27,38],global_ip:39,glyph:30,gnu:27,go1:[37,40],go_env:[37,40],goe:27,goi:[0,3,11],going:[5,18,20,22,30,35],gon:[3,11],good:[7,8,10,21,39],googl:[0,3,11,15,31,36,37,40],google_imag:[3,11],google_new:[3,11],google_video:[3,11],gopath:[37,40],gos:[3,11],got:21,gov:[3,11],gpa:[3,11],gpm:[3,11],grant:[8,12],graphic:[17,18],graphviz:2,greek_greec:11,grep:[11,39],group:[30,35,37,40],grow:17,grumpi:30,gs_r:11,gs_res_ccl_top:11,gs_ri:11,gubergren:30,guest:39,guid:[10,11,17,27,30],guidelin:[22,29],guilabel:30,habr:[3,11],habrahabr:[3,11],hack:[17,18,20,22,23,24,29],hackabl:26,hackag:11,hackerspac:36,handbook:27,handl:[15,21,30,35,39],handler:8,happi:[17,18,20,22,23,24,29],hard:[17,25,30],harden:[37,40],has:[13,15,18,20,22,24,25,30,35,38],has_infobox:11,hash:14,haskel:11,hat:30,have:[2,7,8,9,10,11,13,15,17,18,21,23,24,25,27,29,30,35,36,38,39],hbar:30,head:11,header:[5,8,10,11,15,25,30],headers_modul:8,heard:30,hebrew:[11,15],height:30,help:[9,11,14,24,27,37,38,39,40,41],helper:30,her:22,here:[2,8,10,11,12,15,20,21,24,28,29,30,38],herein:1,heterogen:21,hex:11,hidden:[0,22,35],hide:11,hide_obsolet:11,hierarchi:4,him:22,hint:[1,30,38],histor:[8,23],histori:11,hit:11,hold:38,home:[11,21,32,37,38,40,41],hoogl:[3,11],host:[2,5,8,10,11,15,17,21,22,24,32,33,39],hostnam:[10,39],hotkei:[0,14],hous:25,house_numb:25,how:[1,2,6,7,8,10,11,12,15,19,21,26,27,29,30,33,34,37,40],howev:[20,25,31],href:11,hrvatski:11,html:[0,2,8,11,12,24,25,26,30,40],html_math_render:2,html_url:11,http:[0,2,4,5,6,7,9,11,12,13,14,15,20,21,24,25,27,29,30,32,33,37,38,39,40,41],http_connect:[5,10],http_host:[5,10],http_protocol_vers:11,httpd:8,https_rewrit:31,hub:11,huge:30,hungarian:11,identifi:[38,39],ifmodul:8,ignor:15,illustr:7,imag:[0,2,3,6,11,13,15,21,26,27,31,36,39,40,41,42],image_proxi:[8,10,11,15,31,40],imagemagick:[2,30],imagin:18,img:11,img_src:25,imgmath:2,imgmath_font_s:2,imgmath_image_format:2,imgmath_latex:2,immedi:14,implement:[10,12,17,23,24,25,28,29,39],impli:22,importlib:42,improv:27,in_contain:39,ina:[3,11],inbound:15,includ:[8,10,18,21,22,27,30,39],inclus:36,incom:8,increment:27,indent:[30,39,42],index:[4,8,11,18],infinit:14,infinite_scrol:[14,31],info:[11,15,21,39,40],info_msg:39,infobox:[11,42],inform:[11,13,14,15,22,24,25,39],infrastructur:[1,12],infratructur:5,inherit:[27,30],ini:[8,9,10,11,12,21],init:[12,20,21,26,39],initi:[11,12,21,30,32,39,42],inlin:26,input:[0,22,30],insecur:11,insert:[30,32],insert_your_morty_proxy_key_her:[8,10,13],insid:[9,11,18,21,25,39],insight:35,inspect:[21,37,38,40,41],instal:[1,2,5,6,12,13,21,23,24,27,29,30,32,33,38],instanc:[0,1,6,7,8,10,11,12,13,15,17,18,20,21,22,27,31,32,33,34,37,38,39,40,41],instance_nam:[0,9,11,15],instance_url:11,instead:[12,17,22,23,30,42],instruct:30,insuffici:20,intefac:4,integr:33,intend:9,intent:24,interact:[11,37,38,40,41],interfac:[8,11,15,18,19,33],interfer:24,interlingua:11,intermedi:27,internet:[7,18,20,33],interpret:[12,30],interpretor:12,intersphinx:27,intersphinx_map:30,interv:[5,11],intranet:[7,8,10],intro:[8,10],introduc:[17,18,19,20,22,30,33],introduct:27,intuit:30,inv:30,inventari:27,inventori:[27,30],investig:23,invidi:[3,11],invidunt:30,ipsum:30,ipv4:[10,39],ipv6:[10,21,39],isn:[8,10],iso:[15,25],isol:[5,21],issu:[11,12,15,20,22,23],issue_url:[11,15],ital:30,italian:11,italiano:[11,15],item:[11,12,30],its:[2,7,17,18,24,27,30,31,35,39],itself:[4,12,24],japanes:[11,15],javascript:[14,29],jinja:30,jinja_context:30,job:38,join:30,js_depend:28,json:[5,11,31,37,42],json_engin:[3,11],json_seri:42,juli:39,jump:[11,21,27],june:39,just:[0,5,10,21,27,29,30,35,39],justo:30,kane:11,kasd:30,kbd:30,keep:[8,10,11,15,21,27],keep_onli:15,kei:[8,9,10,11,13,14,15,18,20,25,32,40,41,42],kickass:[3,11],kind:[8,30,35],kiss_:30,know:[8,12,20,21,22,30,35,39],knowledg:30,known:27,kvch:[17,18,20,22,23],l19:21,label:30,labor:30,labori:30,lack:24,lang:[0,11,12,31,32,42],languag:[0,3,5,11,12,15,25,27,30,31,32,36],language_support:30,laptop:35,larg:[12,37,39,40,41],last:30,lat:25,later:[38,39],latest:[11,12,32],latex:2,latexextra:2,latexmk:2,latitud:25,latter:[27,30],launch:39,layout:6,lazi:12,lc_all:12,lc_messag:32,leak:18,learn:30,least:[21,23],leav:11,leech:25,leecher:25,left:[11,30],lenga:11,length:24,less:[8,10,12,17,30,35],let:[11,18,21,30,35,38],level:[24,30],lib:[8,11,12,37,40],libapache2:8,libffi:[2,11],libgen:11,libr:11,librari:[3,11],librsvg2:2,librsvg:2,libssl:[2,11],libxml2:[2,11],libxslt:[2,11],licens:[38,39],light:10,like:[0,2,11,14,15,22,24,25,27,28,29,30,38],like_hotkei:31,limit:[5,8,11,18,19,20,25,30,33],line:[8,10,11,19,20,24,27,39,42],link:[11,12,14,15,21,26,27],link_tit:11,lint:[6,27],linux:[0,2,3,8,10,11,12,15,19,22,29,30,33,37,38,39,40],linuxcontain:39,linuxcontainers_org_nam:39,linuxdoc:30,list:[8,11,18,20,22,25,26,27,28,31,36,42],listen:[5,8,10,11,15,37,38,39,40],liter:26,literalinclud:30,lithuanian:11,live:[21,26,30,39],load:[12,14,15,39,42],loader:42,loadmodul:8,lobst:[3,11],loc:[3,11],local:[0,4,5,9,10,11,12,18,21,22,23,25,27,28,32,37,38,39,40,41],local_imag:39,localhost:[8,9,10,11],locat:[4,5,6,8,10,11,12,30],lock:11,log:[5,6,12,15,21,35,37,38,40,41],logger:12,logic:24,logicodev:[11,31],login:[7,11],lon:25,longer:27,longitud:25,look:[7,8,11,13,27,29],lorem:30,loremlorem:30,lot:21,love:29,lsb:12,lxc:[21,33,38],lxc_host_prefix:39,lxc_repo_root:39,lxc_set_suite_env:39,lxc_suit:[21,39],lxc_suite_info:39,lxc_suite_instal:39,lxc_suite_install_info:39,lxc_suite_nam:39,lxd:[21,39],lxml:[2,11],machin:18,made:[15,21],magna:30,magnetlink:25,magyar:[11,15],mai:[11,15,21,30,37,40],mailto:[11,15],main:[8,11,14,27,32,38],mainlin:10,maintain:[1,12,21,30,38],mainten:[5,7,21,37,40,41],make:[2,9,17,21,22,23,24,26,29,30,35,39],makefil:[7,21,24,26,33,39],man:30,manag:[5,16,17,27,37,40,41],mandarin:11,mandatori:7,mani:[5,11],manipul:[17,39],manual:[15,27,30],manuali:30,map:[0,3,11,30,42],mark:[11,30],markup:26,mass:24,master:[11,12,15,16,24,30,38],match:11,match_al:11,math:[2,26],mathemat:30,mathrm:30,matrix:11,matter:[21,25,35],max:[5,11,25],max_ban_time_on_fail:11,max_redirect:25,max_request_timeout:[11,15],maxim:24,maximum:[11,15,24,25],mayb:[11,18],md5:11,mean:[11,12,21,30,35],meaning:[24,29,30],meant:30,media:[0,3,11,25,42],mediathekviewweb:[3,11],mediawiki:[3,11],mementoweb:11,memori:15,mention:23,menuselect:30,merg:[11,15,21],messag:[5,15,24,25,27,29,30,32],messagespo:32,meta:30,metadata:[11,30],metasearch:[11,25,33,37,40],method:[0,7,11,12,25,30],microsoft:[3,11],microsoft_academ:[3,11],middlewar:5,might:[12,21,22,24,27,30,31,35,38,39],migrat:23,mileston:18,min:25,minim:[11,29,30],mirror:[3,11],misbehav:24,miss:[5,30],mix:21,mixcloud:[3,11],mjk:[3,11],mkdir:[8,10,11,12,37,40],mnkhrc:11,mod:[8,30],mod_autoindex:8,mod_head:8,mod_proxi:8,mod_proxy_http:8,mod_proxy_uwsgi:8,mod_uwsgi:8,mod_wsgi:8,mode:[11,12,15,30,38,39],model:42,moder:[11,25],modern:8,modifi:[9,12,15,30,36],modul:[8,12,28,30,42],module_from_spec:42,mojeek:[3,11],monet:35,monitor:[12,21],mono:2,month:[0,25,31,42],more:[5,11,13,15,17,20,24,27,30,31,33,35,38,39],morecol:30,morerow:30,morti:[1,7,8,10,11,13,21,33,38,39],morty_kei:9,morty_listen:[38,39,40],morty_url:9,most:[2,8,15,23,35,37,38,40,41],mostli:[12,30],motiv:19,mount:4,mount_prefix:[4,11],move:[20,24],movi:[3,11],mpg5gc:11,much:[24,30],multi:[37,40],multibl:25,multilingu:34,multipl:[14,15,30,35],multithread:12,multius:11,music:[3,42],must:[4,10,15,18,23,24,25,30],mvw:[3,11],my_arg:30,my_funct:30,my_other_arg:30,mydomain:38,mymemori:[3,11],name:[0,3,5,8,10,11,12,14,15,18,21,22,25,26,28,32,36,39],name_of_python_fil:28,name_with_namespac:11,namespac:42,nativ:[11,12],naver:[3,11],navig:14,nearmatch:11,necessari:22,nederland:[11,15],need:[5,7,8,9,10,11,12,15,20,21,24,27,29,30,35,37,38,39,40,41],neither:33,net:[11,33],network:[11,15,18,37,40],never:[21,27],nevertheless:[8,10],newcom:17,next:[8,10,14,19,30],nginx:[1,5,6,7,13,15,21,33,37,39,40,41],nightmar:30,nil:39,nisi:30,nl_be:11,nlnet:[17,18,20,22,23],nmt:11,no_parsed_url:42,noconfirm:[2,11],node:[11,27],nofollow:[11,15],noindex:[11,15],non:[11,20],none:[8,11,25,27,30,31,42],nonewprivileg:[37,40],nonumi:30,noopen:[11,15],nor:33,normal:[8,21,25,30,38],nosniff:[11,15],nostrud:30,not_empti:11,not_evil:11,notat:11,note:[11,13,24,31],notic:21,now:[8,10,11,18,21,22,23,28],npm:[3,11,27,29],number:[5,11,15,25,30,31,39],number_of_result:[11,25],numer:30,numref:30,nvr:[3,11],nyaa:[3,11],oad:[3,11],oadoi:11,oaf:11,oap:[3,11],obj:[30,42],object:[25,27,28,30,42],obsolet:11,obtain:15,occitan:11,off:[8,10,11,24,37,39,40,41],off_when_debug:11,offer:[4,12],offici:11,official_api_document:11,offlin:[19,22,25,30,33],often:[11,25,30,38],old:[8,9,21],omega:11,on_result:28,onc:[21,38,39,42],one:[8,11,12,15,21,22,24,27,30,33,35,37,38,39,40,41],one_title_contain:11,ones:[25,37,40],ongo:27,onion:11,onli:[2,7,8,11,13,15,18,22,24,27,28,30,31,38,39,42],onlin:[3,20,25,30,33],online_curr:[3,25],online_dictionnari:[3,25],open:[8,11,14,21,23,24,27,30,31,35,38,39],openair:11,openairedataset:[3,11],openairepubl:[3,11],openrepo:[3,11],opensemant:11,opensemanticsearch:11,openssl:11,openstreetmap:[0,3,11],oper:[23,30,35],option:[7,8,9,11,12,13,15,17,18,21,22,24,25,27,28,30,31,35,37,38,40,41,42],order:[8,11,24,30],org:[2,4,5,8,10,11,12,13,15,25,30,39],organ:33,orient:8,origin:[6,16,21,30,38],oscar:[0,11,15,31],oscar_styl:11,osm:[0,3,11,25],osp_hti:11,oss:11,other:[15,18,24,25,30,35,36],otherwis:[25,29],our:[1,5,7,17,21,24,27,29,30,39],out:[8,10,20,21,24,27,30,37,39,40],outgo:11,output:[2,18,22,30,31,37,39,40,41],outsid:[21,27],outstand:30,over:[18,21,30,33,39],overlin:30,overlook:21,overrid:[11,15],overview:[5,15,26,27,31,33,38],overwrit:27,overwritten:25,own:[7,15,18,21,27,33,35],owner:27,packag:[2,5,6,8,10,12,21,27,30,37,39,40,41],pacman:[2,8,10,11,29,30],page:[3,8,10,11,14,15,17,22,24,25,26,30,31,35,36,42],page_s:11,pageno:[11,25,31,42],pagenumb:25,pai:29,pair:20,palletsproject:30,param:[5,20,25,30],paramet:[15,25,26],paramt:25,parent:30,pars:[31,42],parse_argu:42,parse_lin:20,parse_regex:18,part:[4,11,15,17,30,39],parti:35,partial:30,partli:25,pass:[8,10,20,24,31],password:[11,15],past:0,patch:[24,30],path:[5,8,11,15,18,21,30,37,39,40],pattern:11,paywal:14,pdb:[3,11],pdbe:[3,11],pdf:[2,26],peer:11,peertub:[3,11],peopl:[17,18,35],pep8:[24,27],pep8_check:27,pep:30,per:[12,24,25,30],perfect:21,perform:[12,14,20,25],persian:11,photon:[3,11],php:11,phrase:30,pick:27,piec:30,pip3:23,pip:[2,11,32],pipe:20,piratebai:[3,11],place:[7,10,12,24,25,30,32,35],plai:[3,11],plaintext:30,pleas:[23,24,29,30,31],plenti:24,plu:[8,10,13],plugin1:11,plugin2:11,plugin:[0,2,6,11,12,24,26,30,31,33],pocket:[8,10],point:[9,10,11,12,15,21,26,29,30,35],pointer:30,pointhi:31,polici:[11,15],polish:11,polski:11,polygon:30,pool_connect:[11,15],pool_maxs:[11,15],popen:20,popular:30,port:[5,9,10,11,15,24,25,39],portugues:11,portuguese_brazil:11,possibl:[9,11,13,14,15,18,20,21,22,25,30,31],post:[0,11,21,24,31],post__text:11,post__title_link:11,post_search:28,postcod:25,pot:32,pov:30,power:[18,30],practic:24,pre_search:28,prefer:[7,11,17,22,30,31,35,36],prefix:36,preinstal:[5,21],prepar:[19,33,39],prerequisit:[21,30],present:[20,22],preserv:[24,30],press:[14,27],pretti:15,preview:25,previou:38,previous:18,primari:39,primary_ip:[38,39],prime:26,primer:[26,33],principl:30,privaci:[7,8,10,11,12,21,26,30,34,37,40],privat:[18,19,20,33,34],privatedevic:[37,40],privatetmp:[37,40],privet:11,pro:30,problem:[5,11],procedur:[7,39],process:[2,5,12,20,21,22,27],processor:30,produc:30,product:[11,15,19,38],profil:[11,27,33,35,37,40],prog_arg:42,program:27,progress:[19,37,40],project:[11,12,21,26,27,30],promot:33,prompt:[21,38],proper:[35,37],properli:23,propos:20,protect:[1,6,8,10,11,15,21,24,33,34,37],protectsystem:[37,40],protocol:[9,10,12,15,21],provid:[11,18,22,24,25,30],proxi:[1,6,7,10,11,15,21,25,31,33,35,37,38,39,40,41],proxif:[8,10,11],proxifi:13,proxy1:[11,15],proxy2:[11,15],proxy3:15,proxy4:15,proxy_add_x_forwarded_for:[5,10],proxy_buff:10,proxy_http:8,proxy_http_modul:8,proxy_modul:8,proxy_pass:[5,10],proxy_set_head:[5,10],proxy_uwsgi_modul:8,proxypass:[8,37,40],proxypreservehost:8,psi:30,pt_br:11,ptb:[3,11],ptipython:42,pub:[3,11],public_host:37,public_inst:[11,15],public_url:[37,38,39,41],public_url_morti:[39,40],public_url_path_morti:38,publicli:20,publish:25,publishedd:25,pubm:[3,11],pull:[9,16,20,24,29,30,32],purpos:[15,25],push:24,put:18,pwd:[9,21],py3:27,pybabel:32,pybuild:26,pyclean:27,pyenv:[11,12,21,27,41],pygment:30,pylint:26,pylintrc:27,pypi:[27,30],python2:[12,23],python3:[2,11,12,23,42],python:[2,11,12,15,19,21,26,28,30,33,41,42],pythonhom:12,pythonpath:[12,21],pyyaml:11,q1188617:11,q13515725:11,q1430691:11,q151:11,q16639197:11,q1853420:11,q22017206:11,q22908627:11,q2470288:11,q2493781:11,q25106053:11,q263:11,q34010:11,q367:11,q369:11,q370:11,q373:11,q4494434:11,q485639:11,q494817:11,q50572423:11,q5188229:11,q60747299:11,q60762874:11,q7067518:11,q79576:11,q80729951:11,q964:11,qout:39,quadratur:33,qualiti:[2,27,30],queri:[11,14,18,20,22,25,31,35,36,42],query_enum:18,query_typ:[11,18],question:[30,35],qui:30,quickstart:[24,26,27,33],quiet:27,quit:[8,21,24,27],qwant:[3,11],qwer:36,qwi:[3,11],qwn:[3,11],rain:42,rais:[20,25,42],raise_for_httperror:25,rand:11,random:[25,35],rang:[3,12,25,31],rangl:30,rate:5,rather:22,raw:30,rbg:[3,11],reach:[4,30],reactiv:15,read:[7,20,21,24,27,38],readability_:30,reader:[21,30],readi:21,readlin:20,readm:[5,8,12,13],readthedoc:12,real:[5,10],realli:7,reason:[8,12,17,23,27,30],rebuild:[24,27],rebum:30,receiv:29,recol:[3,11],recommend:[2,5,7,11,12,24,25,27,30,38],reconsid:24,record:[25,30],reddit:[3,11],redefin:25,redirect:[14,25],reduc:24,ref:[27,37,40],refer:[1,4,11,30,35],referenc:30,referr:[11,15],refnam:30,regardless:35,regex:11,regist:26,regular:[18,20],reinstal:[37,41],rel:[10,21,30,39],releas:[23,27,39],releng:39,relev:11,reli:15,reload:12,remark:21,rememb:[12,21,24],remot:39,remote_addr:[5,10],remov:[12,14,15,21,35,37,38,39,40,41,42],renam:[9,31],render:2,replac:[8,10,11,17,21,28],repo:[11,24],repo_root:38,report:21,reposetori:21,repositori:[11,17,21,38,39],req:11,request:[6,8,10,11,15,20,22,24,26,28,29,30,35],request_timeout:[11,15],request_uri:8,requesthead:8,requir:[2,8,11,14,23,24,25,26,27,28,30,31,42],require_api_kei:11,requisit:27,res_dict:42,reset:35,resourc:10,respect:[11,24,35,37,40],respons:[11,15,25],rest:[11,22,26,29,33],restart:[6,9,10,11,12,13,16,21,37,40],restrict:[11,22],restructuredtext:30,result:[1,2,6,7,8,10,11,14,15,19,20,26,30,31,33,35,36,40,41,42],result_contain:11,result_proxi:[8,9,10,11,13,40],result_separ:18,results_numb:42,results_on_new_tab:[11,31],results_queri:11,results_xpath:11,retriev:[18,32],return42:30,return_cod:20,rever:8,revers:[1,6,7,10,13,37,38,39,40],rewrit:[0,11,14],rfc:30,rhel:[2,8,10,11,12,29,30],rid:[27,39],right:[12,22,28,30,33],rightmost:30,rigth:30,road:25,robin:15,roboag:5,robot:[11,15,27],robotframework:23,role:26,rolenam:30,roll:39,romanian:[11,15],root:[7,8,10,21,27,39],rosebud:11,rotat:30,round:[15,24],rout:[6,8,10,30],row:30,rowspan:30,rspan:30,rss:[5,31],rst:[24,30],rst_titl:39,rubygem:[3,11],rule:[5,24,37],rumbl:[3,11],run:[2,5,7,8,9,10,11,12,13,15,19,20,21,22,24,26,28,29,30,32,33,35,37,38,40,41,42],runner:41,runtimeerror:20,russian:[11,15],rzegz:11,sadipsc:30,safe:[3,31],safe_search:[0,11],safesearch:[25,30,31,42],salvador:11,same:[5,11,15,18,21,25,30],sampl:[6,30,37],san:2,sanctu:30,sanit:21,sas:42,save:8,sc2031:39,sc2034:[38,39],scalabl:30,scale:[21,30,39],scaleabl:30,scan:12,scanr:11,scanr_structur:11,scc:[3,11],scenario:4,schedul:[11,20,23],scheme:[5,10],scholar:[3,11],schroeding:30,sci:11,scienc:[3,11,42],scope:24,scratch:2,script:[1,5,6,8,10,11,21,37,38,39,40,41,42],script_nam:10,scroll:14,scs:11,sdist:27,sea:30,search:[3,4,5,6,9,11,14,15,18,20,21,22,24,25,26,30,33,34,35,42],search__suggest:11,search_dir:[4,11],search_on_category_select:[14,31],search_path:25,search_q:42,search_queri:42,search_str:25,search_typ:11,search_url:11,searchcod:[3,11],searchcode_cod:[3,11],searchqueri:42,searx:[0,1,2,5,6,7,8,12,13,15,16,18,19,20,24,25,27,28,29,30,31,32,34,36,37,38,40,42],searx_engin:[11,15],searx_instance_nam:41,searx_internal_http:41,searx_internal_url:38,searx_settings_path:[11,12,15,21],searx_settings_templ:38,searx_url:38,searx_userag:11,searxcach:[11,12],sec:5,second:[11,15,30],secret:[15,22],secret_kei:[11,15],section:[10,11,13,15,21,27,28,30],secur:[11,18,33],sed:[11,30],see:[2,5,7,8,9,10,11,12,13,15,20,21,22,24,27,30,31,33,36,37,39],seed:25,seeder:25,select:[14,27,30,35,36,39],self:[11,14,17,33,37,39,40,41],self_inform:31,semant:[3,11,24],semanticscholar:11,send:[2,5,15,35],sens:30,sensit:11,sent:35,sep:[3,11],separ:[18,22,24,27,30,31,37,40],sepiasearch:[3,11],serbian:11,seri:27,serial:42,serializ:42,serif:2,seriou:21,serv:[24,35,39],server:[5,6,7,9,11,12,21,39,40],server_nam:10,servic:[5,6,7,10,11,12,13,21,30,31,33,35,37,38,39,40,41],service_home_bas:38,service_us:[37,38,40,41],service_ussr:38,session:11,set:[2,4,6,7,8,9,10,11,12,13,17,18,20,21,24,27,28,30,31,32,33,35,36,37,38,39,40,41],setenvif:8,sethandl:8,setup:[1,2,5,6,7,8,10,11,12,21,27,30,33,37,40],setuptool:11,sever:21,seznam:[3,11],share:[8,12,21,22,39],shell:[6,11,19,21,33,37,38,39,40,41],shellcheck:[2,11,30,38,39],ship:10,shortcut:[0,3,11,15,18,22,25,30],should:[7,8,10,15,17,21,23,24,30,32],show:[1,2,3,8,10,11,18,21,30,37,38,39,40],show_metadata:11,shown:[3,7,8,11,21,30],side:[7,30],sign:30,signal:21,signifi:30,similar:[12,15,30],simpl:[21,27,31,37,40],simple_query_str:11,simplest:30,simpli:[5,21,24,27,29,31,37,38,40,41],simplifi:[5,27,37,40,41],simultan:[11,15],sinc:[10,11,17,27,30],singl:[12,13,35,39],sit:30,site:[0,5,6,8,15,25,30,31,37,40,41],size:[11,25],skeleton:20,skill:26,slovak:11,sloven:11,slovenski:11,slow:[11,15],small:[11,25,41],smart:27,smylink:21,snap:[21,39],snapcraft:39,snippet:[11,13],snopyta:11,social:[0,3,42],sock:[11,15],socket:[8,9,10,12],socks5:[15,25],socks5h:15,soft:[25,26],soft_max_redirect:25,softwar:[3,11,21,37,40],sold:35,solr:11,solut:[18,22],solv:[5,22],some:[1,7,8,12,15,21,22,24,27,29,30,37,38,39,40,41],someon:35,someth:[18,24,27,29],sometim:17,sort:11,sort_kei:42,soundcloud:[3,11],sourc:[11,15,21,23,27,30,32,35,37,39,40,42],source_fil:32,source_ip:[11,15],source_lang:32,space:[11,15],span:[11,30],spanish:11,spars:30,spdx:[38,39],speak:12,speaker:36,spec:42,spec_from_file_loc:42,special:[6,7,12,18,25],specif:[12,15,18,25,39],specifi:[9,12,15,25,31],spell:11,sphinx:24,sphinxopt:24,splinter:23,split:24,spoilt:7,sponsor:[17,18,20,22,23],spotifi:11,src:[5,10,11,12,21,41],srv:8,ssl:[25,33],stabl:[11,15],stack:[21,39],stackoverflow:[3,11],stage:30,standalon:17,standalone_searx:[33,38],standard:[8,11,24,25,28,39],start:[1,5,8,10,11,12,19,24,25,27,29,33,37,39,40,41],start_aft:11,startpag:[3,11,31],stash:[7,16],stat:30,static_path:11,statist:30,statu:[37,38,40,41],stdout:[20,42],step:[1,6,7,19,21,24,33,41],stet:30,stf:11,stone:22,stop:[5,8,10,11,12,21,25,27,37,39,40,41],storag:39,store:[11,25,35],stori:11,str:[25,42],strang:12,street:25,strict:[11,22,25],string:[11,14,22,25,31,32],stroke:30,strong:30,structur:[11,24,26],stub:30,stuff:30,style:[11,29,31],sub:[24,27,30],subdir:10,subdirectori:10,subject:30,submit:[18,24],subnet:8,subprocess:20,subrul:5,subscript:30,subsect:30,subshel:39,substitut:26,sudo:[2,7,8,10,11,12,16,21,29,30,37,38,39,40,41],sudoer:7,suffix:[9,11,15],suggest:[1,28,42],suggestion_xpath:11,suit:[19,38],suitabl:30,summari:11,suomi:11,sup:30,superscript:30,supervisor:17,support:[2,3,6,10,11,12,15,18,19,22,24,25,30,31,33,35,36,37,39,40],sure:[9,11,21,23],surround:30,suspend:11,suspici:5,svenska:11,svg:2,svg_imag:30,swagger:11,swedish:11,swisscow:11,symbol:[12,21],symlink:10,syntax:[31,33,34],sys:42,syslog:[37,40],system:[11,12,21,22,23,24,27,30,37,38,40],systemctl:[8,10,12,16,21],systemd:[12,37,40,41],systemexit:42,szn:[3,11],tab:[11,26,31,39],tabl:[3,11,20,26],tag:[11,15],tailor:35,taiwanes:11,take:[7,12,15,17,24,27,32,39],taken:[30,38],takimata:30,tamil:11,tar:[27,37,40],target:[21,24,26,30,33,37,39,40],task:[7,11,21,30,39],tch:11,tcp:9,tcp_nodelai:11,tell:[18,25],telugu:11,templat:[11,12,20,21,25,26,38,41],templates_path:11,tempor:30,term:[8,11,18,30],termin:[11,21,42],test:[2,8,10,11,21,23,24,26,29,39,41],test_android:11,test_rosebud:11,tests_infobox:11,texliv:2,text:[0,4,11,25,30],textstyl:30,tfrac:30,than:[11,15,30,33],thei:[11,12,15,21,22,30,35],them:[12,15,21,27,28,30,38],theme:[11,15,27,29,31],theme_arg:11,themselv:22,thepiratebai:11,therefor:[7,30],theses:21,thi:[4,5,7,8,9,10,11,12,13,15,17,18,20,21,22,23,25,27,28,30,31,35,37,38,39,40,41,42],thing:30,think:[24,27,29,30],third:[30,35],those:[18,20,21,32,35],though:4,thread:12,three:[24,28,30,35],through:[6,8,10,11,15,22,30,31,35],thu:[18,20,23,31,35],thumbnail:25,thumbnail_src:25,thumbnail_xpath:11,tibetian:11,time:[5,11,15,21,23,24,25,27,30,31,35,39,42],time_rang:[0,25,31],time_range_support:[25,30],timeout:[3,11,15,25,30,38,40],timerang:42,timestamp:12,tip:30,titl:[11,18,25],title_html_to_text:11,title_queri:11,title_xpath:11,tmp:11,to_dict:42,to_lang:25,to_nam:25,todai:20,togeth:20,token:[11,15,18,20,22],tokyotoshokan:[3,11],too:[5,11,15,30,35],tool:[1,2,4,7,11,17,24,30,32,33,39],top:[11,30],tor:[3,11,33,35],torch:11,torrentfil:25,torrentz2:11,torrentz:[3,11],total_dsc:11,touch:[8,10,12,15,21],tpb:[3,11],track:[33,35],tracker:14,tracker_url_remov:31,trademark:30,train:30,transform:30,transifex:[24,26],transifexrc:32,translat:[3,11,15,26,33],transpar:[21,39],travi:23,tree:[11,21,27],troubleshoot:38,trust:[22,33,35],ttf:2,tube:11,tupl:28,turkish:11,turn:[11,24],tweet:15,twice:11,twine:27,twitter:[11,15],twitter_url:[11,15],two:[12,15,24,30,31],txt:[23,27,30],type:[0,3,11,15,18,24,25,27,31,32,35,37,39,40],typeerror:42,typic:[1,30],typo:30,ubu1604:39,ubu1804:39,ubu1910:39,ubu2004:39,ubu2010:39,ubuntu:[2,8,10,11,12,16,29,30,39],ubuntuwiki:11,uds:8,uesr:18,ugli:[17,30],uid:[12,21],ukrainian:11,ullamco:30,ultrasecretkei:[11,15],unam:[11,39],unc:11,uncom:[11,15],uncommon:24,uncyclopedia:11,under:[11,21,22,25],understand:[17,30],unfortun:24,unicod:26,uninstal:[27,38],unique_result:11,unit:[12,24,27,37,40,41],unit_test:27,univers:11,unix:[8,10,12],unknown:[35,37,40],unless:22,unlik:35,unspecifi:25,unsplash:[3,11],untouch:27,unwant:7,updat:[6,9,11,15,24,26,33,37,40,41],update_packag:16,upload:27,upstream:12,urbandictionari:11,url:[0,8,9,10,11,13,14,15,21,24,25,27,35,38,39,40,41,42],url_queri:11,url_xpath:11,urlencod:25,usag:[7,8,10,21,27,30,37,39,40,41,42],usagelimit:11,use:[2,5,7,8,10,11,12,13,15,20,21,22,24,25,27,30,33,34,36,37,38,39,40,41,42],use_default_set:[6,38,41],use_official_api:11,used:[8,10,15,18,23,24,25,30,33,35,38],useful:[15,38],user:[5,6,7,8,12,13,14,15,18,21,22,24,25,27,30,33,35,38,41],useradd:[11,37,40],userag:5,useragent_suffix:[11,15],usernam:11,uses:[12,15,25,30,35],using:[4,5,8,9,10,11,12,15,19,21,24,27,29,30,32,33],usr:[5,8,10,11,12,21,37,38,40,41],usual:[19,23,35],utf8:11,utf:[11,12,30,38,39],util:[1,2,5,7,8,10,11,13,21,33],uvys6brhkhudff5cqbjonsdsrn8h0scbzinsrdgnvdpz7iezhvevart3yvghokha:15,uwsgi:[1,2,6,9,10,11,16,21,33,41],uwsgi_param:10,uwsgi_pass:10,uwsgisocket:8,uzcko:11,valid:[25,27,31],valu:[0,9,10,11,18,20,25,27,30,31,38],variabl:[9,15,25,30,40],variant:30,variou:[24,28],vassal:12,vector:30,vendor:24,veniam:30,venv3:23,venv:[2,11],verbos:[11,27,38],veri:38,verifi:25,vero:30,version:[11,14,23,30,37,40],via:[8,10,12,13,17,36],video:[3,11,42],vietnames:11,view:[26,35],viewbox:30,vim:[0,14,31],vim_hotkei:14,vimeo:[3,11],virtual:[8,10],virtualenv:[11,12,21,23,27,41],visist:30,visit:[11,30,35],vlaam:11,voc:11,voctoweb:11,volum:9,voluptua:30,vpn:35,vulner:35,wai:[12,15,18,20,24,25,30,35],wait:[15,20],want:[11,15,22,23,24,27,30,31,35,38,39],wantedbi:[37,40],warn:[2,8,10,30,39],watch:24,web:[4,5,11,15,17,18,21,25,27,37,39,41],web_url:11,webapp:[11,12,15,23,27],webcrawl:5,webkr:11,webresourc:11,webserv:10,websit:[0,11],webui:4,week:[25,42],weight:[11,15,30],weigth:[3,15],weird:24,welcom:[8,10],well:30,welsh:11,were:[20,22,23],werkzeug:27,west:29,wget:[37,40],what:[11,12,21,30,39],whatev:39,whe7ib:11,wheel:11,when:[2,8,11,14,15,18,23,28,30,35,36,42],where:[4,5,11,15,18,21,30],whether:35,which:[1,5,7,8,10,11,12,15,17,18,20,21,22,24,25,27,30,31,33,35,37,38,40],whl:27,who:[12,17,18,20,35],whole:[8,28],why:[30,33,34],wib:[3,11],wibi:[3,11],wide:24,widen:30,width:30,wikang:11,wiki:[0,3,10,11,15,20,22,30,39],wiki_url:[11,15],wikia:11,wikibook:[3,11],wikidata:[3,11],wikidata_id:11,wikinew:[3,11],wikipedia:[3,11,15,31,36],wikiquot:[3,11],wikisourc:[3,11],wikivers:[3,11],wikivoyag:[3,11],wiktionari:[3,11],wild:29,wish:15,within:[27,30],without:[2,9,11,13,15,18,25,33,35,42],wolframalpha:[3,11],wolframalpha_api:11,wolframalpha_noapi:[3,11],won:[15,23],word:[11,28,30,31],word__defin:11,word__nam:11,work:[10,11,15,18,19,24,25,27,35,41],workaround:36,worker:12,workflow:29,working_dir:18,workingdirectori:[37,40],world:[24,30,35],worri:23,worth:[12,35],would:[11,21,22],wrap:[10,19],write:42,written:21,wrong:27,wsgi:[10,12],www1x:[3,11],www4:11,www:[2,8,11,30,32,39],wysiwyg:24,xapian:4,xdg:[11,27],xetex:[2,27],xmh57jrknzkhv6y3ls3ubitzfqnkrwxhopf5aygthi7d6rplyvk3noyd:11,xml:30,xmln:30,xpath:[3,11],xss:[11,15],xxxx:30,xzf:[37,40],yaci:11,yahoo:[3,11],yahoo_new:[3,11],yaml:11,year:[23,25,31,42],yes:[37,40],yet:[24,25,27],ygg:[3,11],yggtorrent:[3,11],yhn:[3,11],yml:[3,6,8,9,10,11,12,13,17,20,21,27,28,31,33,36,38,40,41],york:11,you:[1,2,4,5,7,8,9,10,11,12,15,18,19,20,21,24,27,29,30,31,33,35,36,37,38,39,40,41],your:[2,4,5,7,8,9,10,11,12,13,14,15,17,18,19,23,24,26,27,29,30,33,36,37,38,39,40,41],your_morty_proxy_kei:11,yourself:24,youtub:[3,11],youtube_api:11,youtube_noapi:[3,11],yyyi:30,zero:20,zh_tw:11,zlib1g:[2,11],zzzz:30},titles:["Administration API","Architecture","Buildhosts","Engines","Recoll","How to protect an instance","Administrator documentation","Installation","Install with apache","Docker installation","Install with nginx","Step by step installation","uwsgi","How to setup result proxy","Plugins builtin","<code class=\"docutils literal notranslate\"><span class=\"pre\">settings.yml</span></code>","How to update","Searx admin interface","Running shell commands to fetch results","Blog","Preparation for offline engines","Developing in Linux containers [202006]","Limit access to your searx engines","Introducing Python 3 support","How to contribute","Engine overview","Developer documentation","Makefile Targets","Plugins","Development Quickstart","reST primer","Search API","Translation","Welcome to searx","User documentation","Why use a private instance?","Search syntax","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/filtron.sh</span></code>","Tooling box <code class=\"docutils literal notranslate\"><span class=\"pre\">utils/*</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/lxc.sh</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/morty.sh</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/searx.sh</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/standalone_searx.py</span></code>"],titleterms:{"202006":21,"abstract":21,"default":[3,14,25],"function":21,"public":[8,9,10,35],"return":25,"true":[11,15],The:[8,10,21,24],about:[30,35],access:22,acknowledg:[17,18,20,22,23],activ:27,admin:17,administr:[0,6],admonit:30,aka:30,alltogeth:12,anchor:30,apach:8,api:[0,31],architectur:1,archlinux:21,argument:25,articl:[2,30],ascii:30,audienc:21,bar:0,basic:30,bibliograph:30,block:30,blog:19,book:27,box:[5,38],bug:23,build:[2,9,24,27,30],buildhost:[2,39],built:[3,14],builtin:14,bullet:30,check:11,clean:[24,27],code:[24,25,30],command:[9,18,38,39],commit:24,common:38,conclus:35,configur:[0,3,4,5,11,14,25],consequ:35,contain:21,content:[2,5,8,9,10,11,12,15,21,24,25,27,30],contribut:24,creat:[11,24,37,40],csv:30,data:0,debian:8,definit:30,depend:11,deploi:24,design:24,develop:[20,21,26,29],direct:24,disabl:[8,10],distributor:12,doc:[2,24,27],docker:9,document:[6,24,26,34],doe:35,dot:30,drop:27,emb:0,engin:[3,15,18,20,21,22,25],entri:28,environ:[27,30,38],equat:30,exampl:[4,25,28,30,36],ext:30,extern:28,extlink:30,fact:23,featur:33,fetch:18,field:30,figur:30,file:[25,30],filtron:[5,37],first:7,flat:30,foo:30,found:23,fulli:21,fun:23,further:[1,3,5,8,10,12,13,14,15,28,30,31,37,39,40,41],gate:30,gener:[3,15,25,30],gentlemen:21,get:0,github:24,global:15,good:24,graphviz:30,grid:30,hackabl:24,head:30,hello:30,highlight:30,hlist:30,hook:28,horizont:30,how:[5,13,16,23,24,35],html:27,http:[8,10],hyperlink:30,imag:[9,25,30],info:[4,27],init:32,inlin:30,instal:[7,8,9,10,11,17,37,39,40,41],instanc:[5,9,35],interfac:17,internet:[8,10],intersphinx:30,introduc:23,kernel:30,kiss:30,latex:30,layout:8,limit:22,line:[9,18,30],link:30,lint:2,linux:21,list:30,liter:30,live:[24,27],local:15,locat:15,log:[8,10],lxc:39,make:[25,27],makefil:27,map:25,markup:30,math:30,matter:30,morti:40,motiv:21,multilingu:36,name:[27,30],need:2,nest:30,next:[18,20,22],nginx:10,note:30,offlin:20,ordinari:30,origin:12,outgo:15,overrid:25,overview:[25,37,39,40,41],packag:11,page:27,paragraph:30,paramet:31,pars:25,pass:25,pdf:27,plugin:[14,28],point:28,post:28,pre:28,prepar:20,prime:24,primer:30,privaci:[24,35],privat:[22,35],process:30,product:21,progress:20,project:32,protect:[5,35],proxi:[8,13],pybuild:27,pylint:27,python:[23,27],quickstart:29,quot:30,read:[1,3,5,8,10,12,13,14,15,28,30,31,37,39,40,41],readabl:30,recol:4,ref:30,regist:28,render:30,request:[5,25],requir:32,respons:0,rest:[24,30],restart:8,result:[13,18,25,28],revers:8,role:30,rout:5,run:[18,23,27,39],sampl:[0,5],script:[2,7],search:[0,28,31,36],searx:[9,10,11,17,21,22,23,33,35,39,41],see:35,server:[8,10,15],servic:8,set:[3,15,25],setup:[13,38,39],shell:[2,18],sidebar:30,simpl:30,site:10,skill:30,smart:30,soft:30,some:2,sourc:24,space:30,special:3,specif:30,sphinx:[2,30],standalone_searx:42,start:21,step:[11,18,20,22],structur:30,substitut:30,suit:[21,39],support:[8,23],svg:30,syntax:[30,36],tab:30,tabl:30,target:27,templat:30,test:27,thi:2,through:5,time:[3,14],titl:30,tool:[5,38],torrent:25,transifex:32,translat:[24,32],truth:30,unicod:30,updat:[7,16,32],upgrad:23,url:30,use:35,use_default_set:[11,15],user:[11,34,37,40],using:[23,35],usual:21,util:[37,38,39,40,41,42],uwsgi:[8,12],video:25,view:30,welcom:33,what:35,why:35,work:[2,21],wrap:21,yml:[15,25],you:23,your:[21,22,28]}})
1+Search.setIndex({docnames:["admin/api","admin/architecture","admin/buildhosts","admin/engines","admin/engines/recoll","admin/filtron","admin/index","admin/installation","admin/installation-apache","admin/installation-docker","admin/installation-nginx","admin/installation-searx","admin/installation-uwsgi","admin/morty","admin/plugins","admin/settings","admin/update-searx","blog/admin","blog/command-line-engines","blog/index","blog/intro-offline","blog/lxcdev-202006","blog/private-engines","blog/python3","dev/contribution_guide","dev/engine_overview","dev/index","dev/makefile","dev/plugins","dev/quickstart","dev/reST","dev/search_api","dev/translation","index","user/index","user/own-instance","user/search_syntax","utils/filtron.sh","utils/index","utils/lxc.sh","utils/morty.sh","utils/searx.sh","utils/standalone_searx.py"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["admin/api.rst","admin/architecture.rst","admin/buildhosts.rst","admin/engines.rst","admin/engines/recoll.rst","admin/filtron.rst","admin/index.rst","admin/installation.rst","admin/installation-apache.rst","admin/installation-docker.rst","admin/installation-nginx.rst","admin/installation-searx.rst","admin/installation-uwsgi.rst","admin/morty.rst","admin/plugins.rst","admin/settings.rst","admin/update-searx.rst","blog/admin.rst","blog/command-line-engines.rst","blog/index.rst","blog/intro-offline.rst","blog/lxcdev-202006.rst","blog/private-engines.rst","blog/python3.rst","dev/contribution_guide.rst","dev/engine_overview.rst","dev/index.rst","dev/makefile.rst","dev/plugins.rst","dev/quickstart.rst","dev/reST.rst","dev/search_api.rst","dev/translation.rst","index.rst","user/index.rst","user/own-instance.rst","user/search_syntax.rst","utils/filtron.sh.rst","utils/index.rst","utils/lxc.sh.rst","utils/morty.sh.rst","utils/searx.sh.rst","utils/standalone_searx.py.rst"],objects:{"":{standalone_searx:[42,0,0,"-"]},standalone_searx:{get_search_query:[42,1,1,""],json_serial:[42,1,1,""],no_parsed_url:[42,1,1,""],parse_argument:[42,1,1,""],to_dict:[42,1,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:function"},terms:{"000":8,"0pointer":12,"0xa9":30,"100":[3,11,15],"1000":11,"1080":15,"115":23,"120":[11,24],"127":[5,8,10,11,12,13,15,21,27,37,38,40,41],"1337x":[3,11],"135":30,"140":39,"147":39,"156":21,"15px":30,"168":8,"1700":20,"174":21,"1756":[27,30],"180":30,"1800":11,"1803":21,"1823":22,"184":21,"192":8,"200":[11,21],"2000":[11,12,30],"200331":39,"2017":[17,23],"2019":20,"2020":[18,22],"202006":[19,33],"2021":39,"2023":39,"2024":39,"2025":39,"2122":30,"2128":18,"216":21,"2291":11,"246":39,"296":39,"300":[11,25],"3000":[8,10,11,13,21,38,39,40],"370":30,"3eff":21,"400":30,"4004":[5,8,10,21,37,38,39],"4005":[37,38,39],"4096":[11,12],"40px":30,"4217":25,"429":21,"500":30,"50593":24,"525":30,"573b":21,"585":30,"666":12,"700":30,"70px":30,"755":15,"8000":24,"8080":[9,11,15,21,39],"8090":11,"820000000":42,"822":30,"833067":12,"86400":11,"8888":[5,8,10,11,12,15,21,27,37,38,41],"8983":11,"90000":11,"910":[37,39,40,41],"9200":11,"9b65":21,"\u010de\u0161tina":11,"\u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac":11,"\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438":11,"\u043c\u043e\u0432\u0430":11,"\u0440\u0443\u0441\u0441\u043a\u0438\u0439":11,"\u0441\u0440\u043f\u0441\u043a\u0438":11,"\u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430":11,"\u05e2\u05d1\u05e8\u05d9\u05ea":11,"\u0627\u0644\u0639":11,"\u0628":11,"\u0629":11,"\u0631":11,"\u0641\u0627\u0631\u0633\u0649":11,"\u064a":11,"\u0ba4\u0bae":11,"\u0bb4":11,"\u0c17":11,"\u0c24":11,"\u0c32":11,"\u0f51":11,"\u0f56":11,"\u0f66":11,"\u4e2d\u6587":11,"\u570b\u8a9e":11,"\u65e5\u672c\u8a9e":[11,15],"abstract":[11,19],"boolean":[25,30],"break":[24,30],"byte":25,"case":[7,15,21,22,35,37,38,40,41],"catal\u00e0":11,"char":[11,18],"class":[8,11],"default":[5,8,9,10,11,12,13,15,18,23,24,27,28,30,31,33,35,36,37,38,39,40,41,42],"enum":18,"espa\u00f1ol":[11,15],"export":[4,9,10,11,21,37,39,40],"f\u0101rs\u012b":11,"float":25,"fran\u00e7ai":[11,15],"function":[20,25,28,30,39,42],"import":[10,20,30,42],"int":[5,11,25,30],"lietuvi\u0173":11,"long":35,"new":[3,7,8,9,10,11,12,17,18,20,22,24,27,28,31,32,36,40,42],"null":[8,10,24,42],"portugu\u00ea":11,"public":[1,6,7,11,13,14,18,30,38,39],"return":[14,15,18,20,26,28,30,35,36,42],"rom\u00e2n\u0103":11,"schr\u00f6dinger":30,"sloven\u010dina":11,"static":[2,5,10,11,28],"switch":[8,24],"t\u00fcrk\u00e7e":[11,15],"ti\u1ebfng":11,"true":[0,5,8,10,12,20,25,28,30,31,36,37,40,42],"try":[11,15,27,35],"var":8,"vi\u1ec7t":11,"while":[12,20,21,27,30],And:[8,18,21,28,30],But:[17,23,25,35,36,39],DNS:[38,39],For:[2,5,7,8,9,10,11,12,13,21,22,24,27,30,31],IPs:[5,38],Not:30,One:[12,17,27],Such:27,That:30,The:[0,2,6,7,9,12,15,18,22,25,27,30,31,35,37,38,39,40,41],Then:[20,23,32],There:[8,12,24,30],These:[25,30],USE:8,Use:[5,8,10,11,24,27],Used:[8,15],Uses:15,With:[8,15,21,27,30,39],__init__:28,__name__:30,_anchor:30,_chapter:30,_doc:30,_dot:30,_rest:30,_section:30,_sphinx:30,_subsect:30,_svg:30,a2disconf:8,a2dismod:8,a2dissit:8,a2enconf:8,a2enmod:8,a2ensit:8,abbrev:36,abl:[2,15,18,20,24,25,30],about:[1,7,11,13,21,22,24,27,33,39],abov:[8,11,13,15,21,24,30,31,39],absenc:30,abus:[5,35],academ:[3,11],accept:[5,11,20,36],access:[4,5,7,8,11,14,17,19,20,21,30,33,35],access_log:10,accord:[9,12,15],account:[7,8,10,21,27,32,37,38,40,41],accusam:30,acg:[3,11],acgsou:[3,11],achiev:4,acknowledg:19,across:15,act:[13,17],action:[0,5,12],activ:[8,10,11,12,13,15,21,23,24,31,37,40,41],actual:15,adapt:25,add:[7,8,10,11,12,13,18,22,24,27,28,30,36,37,38,40,41],added:[12,18,21,22,27,28],adding:[20,28,30,36,38],addit:[2,11,15,25,27,30],addition:[33,35],additional_test:11,address:[11,13,15,25,35,38],adipisici:30,adjust:27,admin:[19,21,22,30,33,38,40],administr:[11,15,17,18,20,22,31,33,35],admonit:26,adopt:24,adorn:30,ads:35,advanc:11,advantag:[17,30],advertis:35,advis:5,af2cae6:30,af77ec3:11,affect:17,after:[11,23,28,30,32,37,40],again:27,agent:[5,11,14,15,25],aggreg:[5,33,35],agpl:[38,39],ahmia:11,aim:[17,27,30],aka:27,alia:10,align:30,aliquid:30,aliquyam:30,all:[0,7,8,11,13,15,21,23,24,25,27,28,29,30,31,37,38,39,40,41,42],allow:[8,11,15,18,30,36],allow_redirect:25,allowoverrid:8,alltogeth:6,along:5,alreadi:[8,10,21,24],also:[2,8,9,11,12,15,21,24,27,30,35,36,38],alt:30,alter:24,altern:[7,10,15,30,39],alwai:[9,10,21,24,25,35,37,40],amd64:[37,40],amet:30,among:[24,35],amount:25,amsmath:30,analog:21,analysi:2,ancel:30,anchor:[11,26],android:11,ani:[2,7,8,11,12,18,24,27,30,31,33,38,42],annoi:30,anonym:[33,35],anoth:[12,15,17,21,25,30,39],answer:[15,30,35,42],anymor:8,anyon:33,anyth:[23,35],anywai:[27,30],apach:[1,5,6,7,12,13,15,33,37,38,39,40,41],apache2:8,apache2ctl:8,api:[4,6,11,15,22,25,26,32,33,37],api_client_id:11,api_client_secret:11,api_kei:[11,15,25],apikei:[11,15],apk:[3,11],apkm:[3,11],apkmirror:[3,11],app:[3,8,10,11,12,21,30,37,40,41],appear:30,append:20,appli:[15,16,24],applic:[5,10,12,15,17,21,41],approach:12,appropri:18,april:39,apt:[2,8,10,11,29,30],arab:11,arbitrari:[11,18,20,25],arch:[0,2,3,8,10,11,12,15,22,29,30],architectur:[5,6,7,8,10,21,33,37,40,41],archiv:[3,11],archivei:11,archlinux:[3,11,12,22,39],arg:42,argpars:42,argument:[13,14,24,30,42],arrai:25,arrow:30,art:30,articl:[11,26],arx:[3,11],arxiv:[3,11],as_sdt:11,as_vi:11,asciimoo:[11,32,37,40],ascrib:30,aspect:[21,24],assert:24,assign:25,assum:[11,30],asterisk:30,atlassian:11,attach:28,attend:21,attent:[29,30],attribut:30,audienc:30,author:[11,24,30],auto:[21,30,32,39],autobuild:[24,27],autocomplet:[0,9,11,31],autodoc:30,autoindex:8,autoindex_modul:8,automat:[12,14,30],avail:[8,10,11,12,14,15,18,20,24,27,31,35,37,40,41],avoid:[5,7,14,15,18],awar:[8,30,38],az139:[37,39,40,41],babel:[2,11],back:[21,29],backend:11,backquot:30,backslash:30,backup:38,bad:11,balanc:27,ban:[11,35],ban_time_on_fail:11,bang:15,bar:[6,30,37,40],barrier:17,base64:11,base:[2,4,9,11,15,18,20,21,25,27,31,39],base_url:[4,9,10,11,15,25],baseprofil:30,bash:[11,21,30,37,38,39,40],basic:[26,39],basqu:11,batch:38,baz:30,bbc:11,becaus:[17,22,24,25,32,35],becom:[21,30],been:[18,20,21,24],befor:[7,11,12,21,23,24,27,28,29,30,35,38,39],beginn:10,behavior:30,behaviour:[12,24,28],being:[5,15,17,23,33],below:[5,7,11,12,15,18,24,30,32],benefit:22,besid:35,best:[2,27,30,35,38],better:[2,8,10,25,27,35],between:[5,25,30],big:30,bigger:15,biggest:17,bii:[3,11],bin:[2,3,11,12,23,27,37,40],binari:[8,10,11,13,37,40],bind:[9,15],bind_address:[9,11,15],bing:[3,11,15],bing_imag:[3,11],bing_new:[3,11],bing_video:[3,11],bit:[12,30],bitbucket:[0,3,11],bitmap:[11,12],biv:[3,11],black:30,blank:[11,15,30],block:[5,11,12,15,26],blocker:21,blocksiz:[11,12],blog:[12,21,30,33],bodi:[11,24,30],boilerpl:[11,21,27],bold:30,boldfac:30,book:[11,26],bookfi:11,bool:25,born:24,bot:21,both:[12,22,23,24,31,35],botlimit:5,bottom:[14,28],bound:27,boundingbox:25,box:[1,7,33,39],branch:[15,24,27,38],brand:[7,11,27,38],bring:[27,30],broken:30,browser:[11,15,17,21,23,24,27,35,39],btdigg:[3,11],bug:[12,19,27],buggi:12,bugreport:[12,24],build:[1,6,7,11,21,39],buildenv:27,builder:30,buildhost:[6,21,27,33,38,41],built:[24,25,30],builtin:[6,28,33],bulgarian:11,bundl:11,c3tv:[3,11],cach:12,cache2:[11,12],calcul:10,call:[17,18,21,22,27,32,39,42],callback:28,can:[0,1,2,4,5,7,8,9,10,11,12,13,15,17,18,20,21,22,23,24,25,27,28,30,33,35,37,39,40,41],cancel:30,cannot:[2,30,35,37,40],capabl:[17,24],caplabl:20,captcha:35,caption:[11,30],cardin:24,care:[11,15,18,30,38,39],carv:22,cat:[37,39,40],catalan:11,catcher:30,categori:[0,3,11,14,15,20,25,30,31,36,42],categories_ord:11,category_choic:42,caus:11,caution:30,caveat:30,ccc:[3,11],cce:[3,11],ccengin:[3,11],cdn:2,cell:30,cento:39,centos7:39,certif:11,cfg:[3,30],cgi:[11,12],chain:27,chainabl:36,chang:[11,12,15,21,23,24,27,30,38],changem:11,chapter:[5,7,23,24,30,40,41],charact:[18,24,30],chdir:[12,21],check:[2,6,18,20,21,24,25,27,32],checker:[11,27],checkout:24,children:11,chines:11,chmod:12,choic:[7,11,21,30,35,38],choos:[7,24,29],chown:[8,10,11,12,37,40],christ:11,chronolog:30,citi:25,citizen:11,classifi:30,clean:[26,39],clear:35,cli:32,client:21,clita:30,clock:23,clone:[7,9,10,11,21,24,27,29,41],close:[5,11],cloudflar:11,cmd:[21,38,39],code:[3,11,12,15,20,26,27,29,31,35,38,39,42],codebas:17,codeberg:[3,11],coffe:39,col:30,colleagu:22,collect:2,colon:30,colspan:30,column:30,com:[7,9,11,15,21,25,29,30,31,32,37,39,40,41],combin:8,come:[5,10,22,23,24,27,35,39],comfort:[12,30],comma:[18,22,31],command:[2,5,8,11,12,19,21,23,24,30,32,33,37,40,41,42],comment:[8,10,11,30,37,39,40],commit:[11,21,27,29,32],commodi:30,common:[12,33,35,37,40,41],commonli:30,commun:[8,10,11,15,20],compact:30,compani:35,compar:[8,10,12,21,39],compat:23,compil:[8,29,32],complet:[5,12,24,31,37,39,40,41],compon:[8,28,38],compromis:35,comput:[18,35],con:30,conatin:21,concern:[18,24],conclus:34,concret:[22,30],condit:30,conf:[2,8,10,27,30,37,40],config:[0,7,11,12,22,25,30,32,37,38,39,40,41],configur:[6,8,9,10,12,15,17,18,20,21,22,26,30,32,35,36,37],conflict:38,confnam:12,confus:30,congress:[3,11],connect:[5,10,11,18,20,33],consectetur:30,consequ:[15,24],consequat:30,consetetur:30,consid:7,consist:21,consol:11,construct:[25,30],contact:[11,15],contact_url:[11,15],contain:[11,14,18,19,27,30,33,38,39],content:[4,6,19,26,33,34,35,38],content_html_to_text:11,content_queri:11,content_xpath:11,context:[28,30,39],continu:30,contribut:[1,2,21,26,27,29,33],contributor:30,control:[8,12,35],convent:24,convert:[14,25,30],cooki:[25,33,35],copi:[9,11,24,30,39],copyright:30,core:[2,12,20],corner:24,corpor:11,correct:[10,15],correctli:10,correspond:12,could:[11,12,18,25,30],count:30,countri:[11,15,25],cours:30,crawler:30,creat:[6,7,8,9,10,12,15,18,20,21,23,30,31,32,38,41],creation:[2,30],creativ:22,credenti:11,croatian:11,cross:30,crossref:[3,11],cryptographi:15,cspan:30,css:[14,28],css_depend:28,csv:[5,31],csv_tabl:30,ctan:30,cthulhu:36,ctrl:[11,21,27],ctx:28,cup:39,curl:11,currenc:[3,11,25],currency_convert:[3,11],current:[14,15,20,24,25,32,36],custom:[11,15,24,30,36],custom_query_json:11,customiz:[0,17],customlog:8,cycl:[21,27],cymraeg:11,czech:11,daemon:[37,40,41],dai:[11,12,25,27,31,42],daili:21,dailymot:[3,11],dalf:1,dali:11,danger:30,danish:11,dansk:11,data:[6,11,18,25,30,35],databas:[18,22,30],dataset:11,date:0,datetim:[25,30],daunt:17,dbpedia:[11,31],dbt:11,ddd:[3,11],ddg:[3,11,36],ddi:[3,11],de_d:15,deactiv:[15,37,40,41],debian:[2,6,10,11,12,16,29,30],debug:[11,15,21,27,37,38,40,41],decid:[17,27],decim:25,dedic:[12,21,30],deeper:[27,30],deezer:[3,11],def:[11,20,25,28,30],defaul:30,default_doi_resolv:11,default_http_head:[11,15],default_lang:11,default_local:[0,11,15],default_on:28,default_them:[0,11,15],defaultop:11,defin:[11,15,28,30],definit:[3,11],dejavu:2,delai:11,delet:[15,31,32,39],delimit:[11,18,30],demon:11,demonstr:10,deni:8,depend:[5,6,8,10,14,17,20,21,23,25,27,30,31],deploi:[9,15,27,30],depot:11,describ:[5,7,8,12,15,21,27,30,41],descript:[11,14,24,28,30,37,40],deserv:24,design:[20,30],desir:[11,25],desktop:[4,21],detail:[8,11,15,20,30],detect:[11,15],deutsch:[0,11,15],dev:[2,8,10,11,24,27,30],devel:[2,11],develop:[2,11,15,17,18,19,22,23,24,27,30,33,38],deviantart:[3,11],dfrac:30,diam:30,dict:[18,25,42],dictzon:[3,11],didn:11,diff:30,differ:[8,10,11,12,14,15,21,23,24,25,30,36,39],digbt:11,digest:14,digg:[3,11],digit:33,digraph:30,dir:[11,37,40],direct:[8,26,29,30,37,40],directli:[10,15,39],directori:[3,8,9,11,12,18,27],disabl:[3,6,11,12,14,15,21,27,28,30,31,38,39],disabled_engin:31,disabled_plugin:31,disadvantag:30,discoveri:[18,20,22],discret:38,displai:[2,9,11,14,15,25],display_error_messag:[15,25,30],displaystyl:30,dispos:38,disrespect:24,dissem:11,dist:[24,27],distinguish:30,distribut:[8,10,12,15,21,22,30,37,40],distributor:6,div:11,dive:35,divid:21,dl_prefix:[4,11],dnf:[2,8,10,11,29,30],doai:11,doai_rewrit:31,doc:[6,8,11,12,21,26,30,39],docker:[6,7,27,33],dockerfil:9,docs_url:[11,15,27],doctest:30,doctre:30,docuemt:2,document:[4,8,12,15,20,22,27,30,33,39],documentroot:8,docutil:30,doe:[4,8,12,17,20,21,25,27,30,31,34,36],doesn:15,doi:[11,14],doi_resolv:11,doku:11,dolor:30,domain:[4,11,30],domin:24,don:[8,11,15,23,25,27,29,30,33,38],done:[8,10,29,30,38,39],dontlog:8,dot:2,doubl:30,download:[4,7,11,15,21,27,30,37,40],drop:23,dry:9,dsitro:21,duckduckgo:[3,11,15,31,36],duckduckgo_definit:[3,11],duckduckgo_imag:[3,11],duden:[3,11],due:[37,40],dump:42,duo:30,duref:30,dutch:11,dutch_belgium:11,dvisvgm:2,e0b3:21,e97:21,each:[12,15,18,21,30,31,39,42],easi:[21,33],easier:24,easiest:18,easili:24,ebai:11,echo:[11,37,39,40],ecosystem:30,ecretvalu:15,edit:[11,12,17,21,24,27,30,35,40],eesti:11,effect:[7,24,30],egg_info:27,eirmod:30,el_gr:11,elast:11,elasticsearch:[11,18],element:[18,30],elit:30,elitr:30,els:39,emac:30,email:[11,15],emb:[6,30],embed:[0,9,30],emperor:12,emphasi:30,empti:[4,8,15,30,31],en_u:[15,25],enabl:[0,8,10,11,12,18,22,24,27,28,31,38],enabled_engin:31,enabled_plugin:[11,31],encapsul:21,enclos:30,encod:[11,12,30],encourag:30,encrypt:33,end:[23,29,30,39],endfor:30,endpoint:31,engin:[0,6,11,17,19,24,26,30,31,33,35,36,37,40,42],engine_c:42,engine_categori:42,engine_typ:[25,30],english:[0,11,15,36],enim:30,enough:[7,8,10,32],ensur:24,ensure_ascii:42,enter:[11,23],entiti:11,entri:[9,11,26,38,39],env:[8,12,21,27,38,39],environ:[9,10,11,15,21,24,26,33,37,39,40,41],eof:[37,39,40],eol:39,eos:30,equat:[2,26],erat:30,erowid:[3,11],error:[3,11,15,18,25,30],error_log:10,escap:30,especi:30,esperanto:[0,11],essenti:[2,11],est:30,estonian:11,etc:[5,8,9,10,11,12,15,21,24,37,38,41],eth0:[21,39],eto:[3,11],etool:[3,11],etymonlin:[3,11],euskara:11,evalu:[30,39],even:[12,21,39],event:12,ever:39,everi:[11,15,21,24,25,35,39],everyon:[20,35],everyth:[11,30,35],evil:11,exactli:[5,30],exampl:[0,5,8,10,11,12,13,15,18,20,21,22,24,26,27,31,34,35,38,39,42],exceed:5,excel:[7,10],except:[8,15,23,24,25,30,38],exchang:35,exec_modul:42,execstart:[37,40],execut:[15,18,32],exercis:21,exercit:30,exist:[8,9,10,11,15,17,21,23,24,27],exit:[11,21],expand:30,expect:[18,22,24],experi:12,experienc:[17,21],experiment:38,explain:24,explan:3,explanatori:[37,39,40,41],explicit:30,expos:[11,22],express:18,ext:2,extend:[20,24,28,30],extens:[2,30],extern:[5,11,13,25,26,30,31,35],extra:[2,8],extract:2,extrem:17,eye:[21,30],fa_ir:11,face:30,fact:19,fail:[21,29],fals:[0,11,15,28,30,31,40,42],familiar:[12,27],fanci:24,faq:30,fashion:15,favorit:[24,27],fd00:8,fd42:21,fdroid:[3,11],fe80:8,fea5:21,featur:[13,17,22,24,30,35],fedora31:39,fedora:[2,8,10,11,12,29,30,39],fedoraproject:39,feedback:[24,30],feel:[28,30],fetch:[19,33],few:[15,24,25],fgr:11,fgrep:11,fieldnam:30,figur:[8,10,26],fil:11,file:[2,3,4,7,8,9,10,11,12,15,17,18,20,21,22,23,24,27,28,32,37,39,40,41,42],file_filt:32,filenam:25,filepath:11,files:25,filesystem:4,filipino:11,fill:30,filter:[0,5,11,31],filtron:[1,6,7,8,10,12,13,21,33,38,39],filtron_api:[37,38,39],filtron_listen:[37,38,39],filtron_target:[37,38],find:[1,5,9,11,18,20,22,24],fine:[7,11],finish:[32,39],finnish:11,firefox:[2,11],firewal:5,first:[8,10,11,15,17,20,21,23,27,29,30,35],first_page_num:11,fit:[12,22,27,28],fix:[24,27],fixm:8,flask:[28,30],flexibl:[18,30,38],flickr:[3,11],flickr_noapi:[3,11],fmt:39,fnd:[11,18],folder:[7,8,10,12,21,24,25,27,30,32,38,39],follow:[4,5,7,8,10,12,13,15,18,24,25,27,30,32],followsymlink:8,font:2,fontsrecommend:2,foo:38,footer:24,force_timeout:[38,39],forget:[29,38],fork:[7,15,21,24,38],form:[0,11,15,30,35],format:[5,11,25,30,31],forward:[5,10,35],found:[2,17,19,27,28],foundat:[17,18,20,22,23],fr_fr:15,fraction:30,framalibr:[3,11],free:[3,11,24,28,33],french:11,fresh:8,friend:[22,35],frinkiac:[3,11],frk:[3,11],frl:[3,11],from:[1,2,5,7,8,9,10,11,12,14,15,17,18,20,21,22,23,24,25,27,30,32,33,35,37,38,39,40,41,42],from_lang:25,from_nam:25,front:30,fsd:[3,11],fsf:11,full:[4,15,30,37,40],fullcit:11,fulli:[8,10,17],fun:[11,19],fund:[18,20,22],further:[27,38],furthermor:[25,31,35],gain:35,galego:11,galician:11,gate:27,geektim:[3,11],gems__gem:11,gen:[3,11],gener:[0,6,8,9,11,12,20,24,26,27,31,35,42],genesi:[3,11],geniu:[3,11],gentlemen:19,gentoo:[3,11],geojson:25,german:[0,11,36],get:[2,5,6,7,8,10,11,14,21,24,25,27,29,30,31,32,33,37,39,40,42],get_engines_stat:30,get_search_queri:42,gid:12,gigablast:[3,11],gil:12,git:[2,7,8,9,10,11,15,16,21,24,25,27,29,30,37,38,40,41],git_branch:[11,15,21,38],git_url:[11,15,21,38],gitea:11,github:[3,7,9,11,15,20,21,23,27,29,30,31,37,39,40,41],gitlab:[3,11],gitmoji:24,give:[8,27],given:30,glob:12,global:[6,7,11,21,27,38],global_ip:39,glyph:30,gnu:27,go1:[37,40],go_env:[37,40],goe:27,goi:[0,3,11],going:[5,18,20,22,30,35],gon:[3,11],good:[7,8,10,21,39],googl:[0,3,11,15,31,36,37,40],google_imag:[3,11],google_new:[3,11],google_video:[3,11],gopath:[37,40],gos:[3,11],got:21,gov:[3,11],gpa:[3,11],gpm:[3,11],grant:[8,12],graphic:[17,18],graphviz:2,greek_greec:11,grep:[11,39],group:[30,35,37,40],grow:17,grumpi:30,gs_r:11,gs_res_ccl_top:11,gs_ri:11,gubergren:30,guest:39,guid:[10,11,17,27,30],guidelin:[22,29],guilabel:30,habr:[3,11],habrahabr:[3,11],hack:[17,18,20,22,23,24,29],hackabl:26,hackag:11,hackerspac:36,handbook:27,handl:[15,21,30,35,39],handler:8,happi:[17,18,20,22,23,24,29],hard:[17,25,30],harden:[37,40],has:[13,15,18,20,22,24,25,30,35,38],has_infobox:11,hash:14,haskel:11,hat:30,have:[2,7,8,9,10,11,13,15,17,18,21,23,24,25,27,29,30,35,36,38,39],hbar:30,head:11,header:[5,8,10,11,15,25,30],headers_modul:8,heard:30,hebrew:[11,15],height:30,help:[9,11,14,24,27,37,38,39,40,41],helper:30,her:22,here:[2,8,10,11,12,15,20,21,24,28,29,30,38],herein:1,heterogen:21,hex:11,hidden:[0,22,35],hide:11,hide_obsolet:11,hierarchi:4,him:22,hint:[1,30,38],histor:[8,23],histori:11,hit:11,hold:38,home:[11,21,32,37,38,40,41],hoogl:[3,11],host:[2,5,8,10,11,15,17,21,22,24,32,33,39],hostnam:[10,39],hotkei:[0,14],hous:25,house_numb:25,how:[1,2,6,7,8,10,11,12,15,19,21,26,27,29,30,33,34,37,40],howev:[20,25,31],href:11,hrvatski:11,html:[0,2,8,11,12,24,25,26,30,40],html_math_render:2,html_url:11,http:[0,2,4,5,6,7,9,11,12,13,14,15,20,21,24,25,27,29,30,32,33,37,38,39,40,41],http_connect:[5,10],http_host:[5,10],http_protocol_vers:11,httpd:8,https_rewrit:31,hub:11,huge:30,hungarian:11,identifi:[38,39],ifmodul:8,ignor:15,illustr:7,imag:[0,2,3,6,11,13,15,21,26,27,31,36,39,40,41,42],image_proxi:[8,10,11,15,31,40],imagemagick:[2,30],imagin:18,img:11,img_src:25,imgmath:2,imgmath_font_s:2,imgmath_image_format:2,imgmath_latex:2,immedi:14,implement:[10,12,17,23,24,25,28,29,39],impli:22,importlib:42,improv:27,in_contain:39,ina:[3,11],inbound:15,includ:[8,10,18,21,22,27,30,39],inclus:36,incom:8,increment:27,indent:[30,39,42],index:[4,8,11,18],infinit:14,infinite_scrol:[14,31],info:[11,15,21,39,40],info_msg:39,infobox:[11,42],inform:[11,13,14,15,22,24,25,39],infrastructur:[1,12],infratructur:5,inherit:[27,30],ini:[8,9,10,11,12,21],init:[12,20,21,26,39],initi:[11,12,21,30,32,39,42],inlin:26,input:[0,22,30],insecur:11,insert:[30,32],insert_your_morty_proxy_key_her:[8,10,13],insid:[9,11,18,21,25,39],insight:35,inspect:[21,37,38,40,41],instal:[1,2,5,6,12,13,21,23,24,27,29,30,32,33,38],instanc:[0,1,6,7,8,10,11,12,13,15,17,18,20,21,22,27,31,32,33,34,37,38,39,40,41],instance_nam:[0,9,11,15],instance_url:11,instead:[12,17,22,23,30,42],instruct:30,insuffici:20,intefac:4,integr:33,intend:9,intent:24,interact:[11,37,38,40,41],interfac:[8,11,15,18,19,33],interfer:24,interlingua:11,intermedi:27,internet:[7,18,20,33],interpret:[12,30],interpretor:12,intersphinx:27,intersphinx_map:30,interv:[5,11],intranet:[7,8,10],intro:[8,10],introduc:[17,18,19,20,22,30,33],introduct:27,intuit:30,inv:30,inventari:27,inventori:[27,30],investig:23,invidi:[3,11],invidunt:30,ipsum:30,ipv4:[10,39],ipv6:[10,21,39],isn:[8,10],iso:[15,25],isol:[5,21],issu:[11,12,15,20,22,23],issue_url:[11,15],ital:30,italian:11,italiano:[11,15],item:[11,12,30],its:[2,7,17,18,24,27,30,31,35,39],itself:[4,12,24],japanes:[11,15],javascript:[14,29],jinja:30,jinja_context:30,job:38,join:30,js_depend:28,json:[5,11,31,37,42],json_engin:[3,11],json_seri:42,juli:39,jump:[11,21,27],june:39,just:[0,5,10,21,27,29,30,35,39],justo:30,kane:11,kasd:30,kbd:30,keep:[8,10,11,15,21,27],keep_onli:15,kei:[8,9,10,11,13,14,15,18,20,25,32,40,41,42],kickass:[3,11],kind:[8,30,35],kiss_:30,know:[8,12,20,21,22,30,35,39],knowledg:30,known:27,kvch:[17,18,20,22,23],l19:21,label:30,labor:30,labori:30,lack:24,lang:[0,11,12,31,32,42],languag:[0,3,5,11,12,15,25,27,30,31,32,36],language_support:30,laptop:35,larg:[12,37,39,40,41],last:30,lat:25,later:[38,39],latest:[11,12,32],latex:2,latexextra:2,latexmk:2,latitud:25,latter:[27,30],launch:39,layout:6,lazi:12,lc_all:12,lc_messag:32,leak:18,learn:30,least:[21,23],leav:11,leech:25,leecher:25,left:[11,30],lenga:11,length:24,less:[8,10,12,17,30,35],let:[11,18,21,30,35,38],level:[24,30],lib:[8,11,12,37,40],libapache2:8,libffi:[2,11],libgen:11,libr:11,librari:[3,11],librsvg2:2,librsvg:2,libssl:[2,11],libxml2:[2,11],libxslt:[2,11],licens:[38,39],light:10,like:[0,2,11,14,15,22,24,25,27,28,29,30,38],like_hotkei:31,limit:[5,8,11,18,19,20,25,30,33],line:[8,10,11,19,20,24,27,39,42],link:[11,12,14,15,21,26,27],link_tit:11,lint:[6,27],linux:[0,2,3,8,10,11,12,15,19,22,29,30,33,37,38,39,40],linuxcontain:39,linuxcontainers_org_nam:39,linuxdoc:30,list:[8,11,18,20,22,25,26,27,28,31,36,42],listen:[5,8,10,11,15,37,38,39,40],liter:26,literalinclud:30,lithuanian:11,live:[21,26,30,39],load:[12,14,15,39,42],loader:42,loadmodul:8,lobst:[3,11],loc:[3,11],local:[0,4,5,9,10,11,12,18,21,22,23,25,27,28,32,37,38,39,40,41],local_imag:39,localhost:[8,9,10,11],locat:[4,5,6,8,10,11,12,30],lock:11,log:[5,6,12,15,21,35,37,38,40,41],logger:12,logic:24,logicodev:[11,31],login:[7,11],lon:25,longer:27,longitud:25,look:[7,8,11,13,27,29],lorem:30,loremlorem:30,lot:21,love:29,lsb:12,lxc:[21,33,38],lxc_host_prefix:39,lxc_repo_root:39,lxc_set_suite_env:39,lxc_suit:[21,39],lxc_suite_info:39,lxc_suite_instal:39,lxc_suite_install_info:39,lxc_suite_nam:39,lxd:[21,39],lxml:[2,11],machin:18,made:[15,21],magna:30,magnetlink:25,magyar:[11,15],mai:[11,15,21,30,37,40],mailto:[11,15],main:[8,11,14,27,32,38],mainlin:10,maintain:[1,12,21,30,38],mainten:[5,7,21,37,40,41],make:[2,9,17,21,22,23,24,26,29,30,35,39],makefil:[7,21,24,26,33,39],man:30,manag:[5,16,17,27,37,40,41],mandarin:11,mandatori:7,mani:[5,11],manipul:[17,39],manual:[15,27,30],manuali:30,map:[0,3,11,30,42],mark:[11,30],markup:26,mass:24,master:[11,12,15,16,24,30,38],match:11,match_al:11,math:[2,26],mathemat:30,mathrm:30,matrix:11,matter:[21,25,35],max:[5,11,25],max_ban_time_on_fail:11,max_redirect:25,max_request_timeout:[11,15],maxim:24,maximum:[11,15,24,25],mayb:[11,18],md5:11,mean:[11,12,21,30,35],meaning:[24,29,30],meant:30,media:[0,3,11,25,42],mediathekviewweb:[3,11],mediawiki:[3,11],mementoweb:11,memori:15,mention:23,menuselect:30,merg:[11,15,21],messag:[5,15,24,25,27,29,30,32],messagespo:32,meta:30,metadata:[11,30],metasearch:[11,25,33,37,40],method:[0,7,11,12,25,30],microsoft:[3,11],microsoft_academ:[3,11],middlewar:5,might:[12,21,22,24,27,30,31,35,38,39],migrat:23,mileston:18,min:25,minim:[11,29,30],mirror:[3,11],misbehav:24,miss:[5,30],mix:21,mixcloud:[3,11],mjk:[3,11],mkdir:[8,10,11,12,37,40],mnkhrc:11,mod:[8,30],mod_autoindex:8,mod_head:8,mod_proxi:8,mod_proxy_http:8,mod_proxy_uwsgi:8,mod_uwsgi:8,mod_wsgi:8,mode:[11,12,15,30,38,39],model:42,moder:[11,25],modern:8,modifi:[9,12,15,30,36],modul:[8,12,28,30,42],module_from_spec:42,mojeek:[3,11],monet:35,monitor:[12,21],mono:2,month:[0,25,31,42],more:[5,11,13,15,17,20,24,27,30,31,33,35,38,39],morecol:30,morerow:30,morti:[1,7,8,10,11,13,21,33,38,39],morty_kei:9,morty_listen:[38,39,40],morty_url:9,most:[2,8,15,23,35,37,38,40,41],mostli:[12,30],motiv:19,mount:4,mount_prefix:[4,11],move:[20,24],movi:[3,11],mpg5gc:11,much:[24,30],multi:[37,40],multibl:25,multilingu:34,multipl:[14,15,30,35],multithread:12,multius:11,music:[3,42],must:[4,10,15,18,23,24,25,30],mvw:[3,11],my_arg:30,my_funct:30,my_other_arg:30,mydomain:38,mymemori:[3,11],name:[0,3,5,8,10,11,12,14,15,18,21,22,25,26,28,32,36,39],name_of_python_fil:28,name_with_namespac:11,namespac:42,nativ:[11,12],naver:[3,11],navig:14,nearmatch:11,necessari:22,nederland:[11,15],need:[5,7,8,9,10,11,12,15,20,21,24,27,29,30,35,37,38,39,40,41],neither:33,net:[11,33],network:[11,15,18,37,40],never:[21,27],nevertheless:[8,10],newcom:17,next:[8,10,14,19,30],nginx:[1,5,6,7,13,15,21,33,37,39,40,41],nightmar:30,nil:39,nisi:30,nl_be:11,nlnet:[17,18,20,22,23],nmt:11,no_parsed_url:42,noconfirm:[2,11],node:[11,27],nofollow:[11,15],noindex:[11,15],non:[11,20],none:[8,11,25,27,30,31,42],nonewprivileg:[37,40],nonumi:30,noopen:[11,15],nor:33,normal:[8,21,25,30,38],nosniff:[11,15],nostrud:30,not_empti:11,not_evil:11,notat:11,note:[11,13,24,31],notic:21,now:[8,10,11,18,21,22,23,28],npm:[3,11,27,29],number:[5,11,15,25,30,31,39],number_of_result:[11,25],numer:30,numref:30,nvr:[3,11],nyaa:[3,11],oad:[3,11],oadoi:11,oaf:11,oap:[3,11],obj:[30,42],object:[25,27,28,30,42],obsolet:11,obtain:15,occitan:11,off:[8,10,11,24,37,39,40,41],off_when_debug:11,offer:[4,12],offici:11,official_api_document:11,offlin:[19,22,25,30,33],often:[11,25,30,38],old:[8,9,21],omega:11,on_result:28,onc:[21,38,39,42],one:[8,11,12,15,21,22,24,27,30,33,35,37,38,39,40,41],one_title_contain:11,ones:[25,37,40],ongo:27,onion:11,onli:[2,7,8,11,13,15,18,22,24,27,28,30,31,38,39,42],onlin:[3,20,25,30,33],online_curr:[3,25],online_dictionnari:[3,25],open:[8,11,14,21,23,24,27,30,31,35,38,39],openair:11,openairedataset:[3,11],openairepubl:[3,11],openrepo:[3,11],opensemant:11,opensemanticsearch:11,openssl:11,openstreetmap:[0,3,11],oper:[23,30,35],option:[7,8,9,11,12,13,15,17,18,21,22,24,25,27,28,30,31,35,37,38,40,41,42],order:[8,11,24,30],org:[2,4,5,8,10,11,12,13,15,25,30,39],organ:33,orient:8,origin:[6,16,21,30,38],oscar:[0,11,15,31],oscar_styl:11,osm:[0,3,11,25],osp_hti:11,oss:11,other:[15,18,24,25,30,35,36],otherwis:[25,29],our:[1,5,7,17,21,24,27,29,30,39],out:[8,10,20,21,24,27,30,37,39,40],outgo:11,output:[2,18,22,30,31,37,39,40,41],outsid:[21,27],outstand:30,over:[18,21,30,33,39],overlin:30,overlook:21,overrid:[11,15],overview:[5,15,26,27,31,33,38],overwrit:27,overwritten:25,own:[7,15,18,21,27,33,35],owner:27,packag:[2,5,6,8,10,12,21,27,30,37,39,40,41],pacman:[2,8,10,11,29,30],page:[3,8,10,11,14,15,17,22,24,25,26,30,31,35,36,42],page_s:11,pageno:[11,25,31,42],pagenumb:25,pai:29,pair:20,palletsproject:30,param:[5,20,25,30],paramet:[15,25,26],paramt:25,parent:30,pars:[31,42],parse_argu:42,parse_lin:20,parse_regex:18,part:[4,11,15,17,30,39],parti:35,partial:30,partli:25,pass:[8,10,20,24,31],password:[11,15],past:0,patch:[24,30],path:[5,8,11,15,18,21,30,37,39,40],pattern:11,paywal:14,pdb:[3,11],pdbe:[3,11],pdf:[2,26],peer:11,peertub:[3,11],peopl:[17,18,35],pep8:[24,27],pep8_check:27,pep:30,per:[12,24,25,30],perfect:21,perform:[12,14,20,25],persian:11,photon:[3,11],php:11,phrase:30,pick:27,piec:30,pip3:23,pip:[2,11,32],pipe:20,piratebai:[3,11],place:[7,10,12,24,25,30,32,35],plai:[3,11],plaintext:30,pleas:[23,24,29,30,31],plenti:24,plu:[8,10,13],plugin1:11,plugin2:11,plugin:[0,2,6,11,12,24,26,30,31,33],pocket:[8,10],point:[9,10,11,12,15,21,26,29,30,35],pointer:30,pointhi:31,polici:[11,15],polish:11,polski:11,polygon:30,pool_connect:[11,15],pool_maxs:[11,15],popen:20,popular:30,port:[5,9,10,11,15,24,25,39],portugues:11,portuguese_brazil:11,possibl:[9,11,13,14,15,18,20,21,22,25,30,31],post:[0,11,21,24,31],post__text:11,post__title_link:11,post_search:28,postcod:25,pot:32,pov:30,power:[18,30],practic:24,pre_search:28,prefer:[7,11,17,22,30,31,35,36],prefix:36,preinstal:[5,21],prepar:[19,33,39],prerequisit:[21,30],present:[20,22],preserv:[24,30],press:[14,27],pretti:15,preview:25,previou:38,previous:18,primari:39,primary_ip:[38,39],prime:26,primer:[26,33],principl:30,privaci:[7,8,10,11,12,21,26,30,34,37,40],privat:[18,19,20,33,34],privatedevic:[37,40],privatetmp:[37,40],privet:11,pro:30,problem:[5,11],procedur:[7,39],process:[2,5,12,20,21,22,27],processor:30,produc:30,product:[11,15,19,38],profil:[11,27,33,35,37,40],prog_arg:42,program:27,progress:[19,37,40],project:[11,12,21,26,27,30],promot:33,prompt:[21,38],proper:[35,37],properli:23,propos:20,protect:[1,6,8,10,11,15,21,24,33,34,37],protectsystem:[37,40],protocol:[9,10,12,15,21],provid:[11,18,22,24,25,30],proxi:[1,6,7,10,11,15,21,25,31,33,35,37,38,39,40,41],proxif:[8,10,11],proxifi:13,proxy1:[11,15],proxy2:[11,15],proxy3:15,proxy4:15,proxy_add_x_forwarded_for:[5,10],proxy_buff:10,proxy_http:8,proxy_http_modul:8,proxy_modul:8,proxy_pass:[5,10],proxy_set_head:[5,10],proxy_uwsgi_modul:8,proxypass:[8,37,40],proxypreservehost:8,psi:30,pt_br:11,ptb:[3,11],ptipython:42,pub:[3,11],public_host:37,public_inst:[11,15],public_url:[37,38,39,41],public_url_morti:[39,40],public_url_path_morti:38,publicli:20,publish:25,publishedd:25,pubm:[3,11],pull:[9,16,20,24,29,30,32],purpos:[15,25],push:24,put:18,pwd:[9,21],py3:27,pybabel:32,pybuild:26,pyclean:27,pyenv:[11,12,21,27,41],pygment:30,pylint:26,pylintrc:27,pypi:[27,30],python2:[12,23],python3:[2,11,12,23,42],python:[2,11,12,15,19,21,26,28,30,33,41,42],pythonhom:12,pythonpath:[12,21],pyyaml:11,q1188617:11,q13515725:11,q1430691:11,q151:11,q16639197:11,q1853420:11,q22017206:11,q22908627:11,q2470288:11,q2493781:11,q25106053:11,q263:11,q34010:11,q367:11,q369:11,q370:11,q373:11,q4494434:11,q485639:11,q494817:11,q50572423:11,q5188229:11,q60747299:11,q60762874:11,q7067518:11,q79576:11,q80729951:11,q964:11,qout:39,quadratur:33,qualiti:[2,27,30],queri:[11,14,18,20,22,25,31,35,36,42],query_enum:18,query_typ:[11,18],question:[30,35],qui:30,quickstart:[24,26,27,33],quiet:27,quit:[8,21,24,27],qwant:[3,11],qwer:36,qwi:[3,11],qwn:[3,11],rain:42,rais:[20,25,42],raise_for_httperror:25,rand:11,random:[25,35],rang:[3,12,25,31],rangl:30,rate:5,rather:22,raw:30,rbg:[3,11],reach:[4,30],reactiv:15,read:[7,20,21,24,27,38],readability_:30,reader:[21,30],readi:21,readlin:20,readm:[5,8,12,13],readthedoc:12,real:[5,10],realli:7,reason:[8,12,17,23,27,30],rebuild:[24,27],rebum:30,receiv:29,recol:[3,11],recommend:[2,5,7,11,12,24,25,27,30,38],reconsid:24,record:[25,30],reddit:[3,11],redefin:25,redirect:[14,25],reduc:24,ref:[27,37,40],refer:[1,4,11,30,35],referenc:30,referr:[11,15],refnam:30,regardless:35,regex:11,regist:26,regular:[18,20],reinstal:[37,41],rel:[10,21,30,39],releas:[23,27,39],releng:39,relev:11,reli:15,reload:12,remark:21,rememb:[12,21,24],remot:39,remote_addr:[5,10],remov:[12,14,15,21,35,37,38,39,40,41,42],renam:[9,31],render:2,replac:[8,10,11,17,21,28],repo:[11,24],repo_root:38,report:21,reposetori:21,repositori:[11,17,21,38,39],req:11,request:[6,8,10,11,15,20,22,24,26,28,29,30,35],request_timeout:[11,15],request_uri:8,requesthead:8,requir:[2,8,11,14,23,24,25,26,27,28,30,31,42],require_api_kei:11,requisit:27,res_dict:42,reset:35,resourc:10,respect:[11,24,35,37,40],respons:[11,15,25],rest:[11,22,26,29,33],restart:[6,9,10,11,12,13,16,21,37,40],restrict:[11,22],restructuredtext:30,result:[1,2,6,7,8,10,11,14,15,19,20,26,30,31,33,35,36,40,41,42],result_contain:11,result_proxi:[8,9,10,11,13,40],result_separ:18,results_numb:42,results_on_new_tab:[11,31],results_queri:11,results_xpath:11,retriev:[18,32],return42:30,return_cod:20,rever:8,revers:[1,6,7,10,13,37,38,39,40],rewrit:[0,11,14],rfc:30,rhel:[2,8,10,11,12,29,30],rid:[27,39],right:[12,22,28,30,33],rightmost:30,rigth:30,road:25,robin:15,roboag:5,robot:[11,15,27],robotframework:23,role:26,rolenam:30,roll:39,romanian:[11,15],root:[7,8,10,21,27,39],rosebud:11,rotat:30,round:[15,24],rout:[6,8,10,30],row:30,rowspan:30,rspan:30,rss:[5,31],rst:[24,30],rst_titl:39,rubygem:[3,11],rule:[5,24,37],rumbl:[3,11],run:[2,5,7,8,9,10,11,12,13,15,19,20,21,22,24,26,28,29,30,32,33,35,37,38,40,41,42],runner:41,runtimeerror:20,russian:[11,15],rzegz:11,sadipsc:30,safe:[3,31],safe_search:[0,11],safesearch:[25,30,31,42],salvador:11,same:[5,11,15,18,21,25,30],sampl:[6,30,37],san:2,sanctu:30,sanit:21,sas:42,save:8,sc2031:39,sc2034:[38,39],scalabl:30,scale:[21,30,39],scaleabl:30,scan:12,scanr:11,scanr_structur:11,scc:[3,11],scenario:4,schedul:[11,20,23],scheme:[5,10],scholar:[3,11],schroeding:30,sci:11,scienc:[3,11,42],scope:24,scratch:2,script:[1,5,6,8,10,11,21,37,38,39,40,41,42],script_nam:10,scroll:14,scs:11,sdist:27,sea:30,search:[3,4,5,6,9,11,14,15,18,20,21,22,24,25,26,30,33,34,35,42],search__suggest:11,search_dir:[4,11],search_on_category_select:[14,31],search_path:25,search_q:42,search_queri:42,search_str:25,search_typ:11,search_url:11,searchcod:[3,11],searchcode_cod:[3,11],searchqueri:42,searx:[0,1,2,5,6,7,8,12,13,15,16,18,19,20,24,25,27,28,29,30,31,32,34,36,37,38,40,42],searx_engin:[11,15],searx_instance_nam:41,searx_internal_http:41,searx_internal_url:38,searx_settings_path:[11,12,15,21],searx_settings_templ:38,searx_url:38,searx_userag:11,searxcach:[11,12],sec:5,second:[11,15,30],secret:[15,22],secret_kei:[11,15],section:[10,11,13,15,21,27,28,30],secur:[11,18,33],sed:[11,30],see:[2,5,7,8,9,10,11,12,13,15,20,21,22,24,27,30,31,33,36,37,39],seed:25,seeder:25,select:[14,27,30,35,36,39],self:[11,14,17,33,37,39,40,41],self_inform:31,semant:[3,11,24],semanticscholar:11,send:[2,5,15,35],sens:30,sensit:11,sent:35,sep:[3,11],separ:[18,22,24,27,30,31,37,40],sepiasearch:[3,11],serbian:11,seri:27,serial:42,serializ:42,serif:2,seriou:21,serv:[24,35,39],server:[5,6,7,9,11,12,21,39,40],server_nam:10,servic:[5,6,7,10,11,12,13,21,30,31,33,35,37,38,39,40,41],service_home_bas:38,service_us:[37,38,40,41],service_ussr:38,session:11,set:[2,4,6,7,8,9,10,11,12,13,17,18,20,21,24,27,28,30,31,32,33,35,36,37,38,39,40,41],setenvif:8,sethandl:8,setup:[1,2,5,6,7,8,10,11,12,21,27,30,33,37,40],setuptool:11,sever:21,seznam:[3,11],share:[8,12,21,22,39],shell:[6,11,19,21,33,37,38,39,40,41],shellcheck:[2,11,30,38,39],ship:10,shortcut:[0,3,11,15,18,22,25,30],should:[7,8,10,15,17,21,23,24,30,32],show:[1,2,3,8,10,11,18,21,30,37,38,39,40],show_metadata:11,shown:[3,7,8,11,21,30],side:[7,30],sign:30,signal:21,signifi:30,similar:[12,15,30],simpl:[21,27,31,37,40],simple_query_str:11,simplest:30,simpli:[5,21,24,27,29,31,37,38,40,41],simplifi:[5,27,37,40,41],simultan:[11,15],sinc:[10,11,17,27,30],singl:[12,13,35,39],sit:30,site:[0,5,6,8,15,25,30,31,37,40,41],size:[11,25],skeleton:20,skill:26,slovak:11,sloven:11,slovenski:11,slow:[11,15],small:[11,25,41],smart:27,smylink:21,snap:[21,39],snapcraft:39,snippet:[11,13],snopyta:11,social:[0,3,42],sock:[11,15],socket:[8,9,10,12],socks5:[15,25],socks5h:15,soft:[25,26],soft_max_redirect:25,softwar:[3,11,21,37,40],sold:35,solr:11,solut:[18,22],solv:[5,22],some:[1,7,8,12,15,21,22,24,27,29,30,37,38,39,40,41],someon:35,someth:[18,24,27,29],sometim:17,sort:11,sort_kei:42,soundcloud:[3,11],sourc:[11,15,21,23,27,30,32,35,37,39,40,42],source_fil:32,source_ip:[11,15],source_lang:32,space:[11,15],span:[11,30],spanish:11,spars:30,spdx:[38,39],speak:12,speaker:36,spec:42,spec_from_file_loc:42,special:[6,7,12,18,25],specif:[12,15,18,25,39],specifi:[9,12,15,25,31],spell:11,sphinx:24,sphinxopt:24,splinter:23,split:24,spoilt:7,sponsor:[17,18,20,22,23],spotifi:11,src:[5,10,11,12,21,41],srv:8,ssl:[25,33],stabl:[11,15],stack:[21,39],stackoverflow:[3,11],stage:30,standalon:17,standalone_searx:[33,38],standard:[8,11,24,25,28,39],start:[1,5,8,10,11,12,19,24,25,27,29,33,37,39,40,41],start_aft:11,startpag:[3,11,31],stash:[7,16],stat:30,static_path:11,statist:30,statu:[37,38,40,41],stdout:[20,42],step:[1,6,7,19,21,24,33,41],stet:30,stf:11,stone:22,stop:[5,8,10,11,12,21,25,27,37,39,40,41],storag:39,store:[11,25,35],stori:11,str:[25,42],strang:12,street:25,strict:[11,22,25],string:[11,14,22,25,31,32],stroke:30,strong:30,structur:[11,24,26],stub:30,stuff:30,style:[11,29,31],sub:[24,27,30],subdir:10,subdirectori:10,subject:30,submit:[18,24],subnet:8,subprocess:20,subrul:5,subscript:30,subsect:30,subshel:39,substitut:26,sudo:[2,7,8,10,11,12,16,21,29,30,37,38,39,40,41],sudoer:7,suffix:[9,11,15],suggest:[1,28,42],suggestion_xpath:11,suit:[19,38],suitabl:30,summari:11,suomi:11,sup:30,superscript:30,supervisor:17,support:[2,3,6,10,11,12,15,18,19,22,24,25,30,31,33,35,36,37,39,40],sure:[9,11,21,23],surround:30,suspend:11,suspici:5,svenska:11,svg:2,svg_imag:30,swagger:11,swedish:11,swisscow:11,symbol:[12,21],symlink:10,syntax:[31,33,34],sys:42,syslog:[37,40],system:[11,12,21,22,23,24,27,30,37,38,40],systemctl:[8,10,12,16,21],systemd:[12,37,40,41],systemexit:42,szn:[3,11],tab:[11,26,31,39],tabl:[3,11,20,26],tag:[11,15],tailor:35,taiwanes:11,take:[7,12,15,17,24,27,32,39],taken:[30,38],takimata:30,tamil:11,tar:[27,37,40],target:[21,24,26,30,33,37,39,40],task:[7,11,21,30,39],tch:11,tcp:9,tcp_nodelai:11,tell:[18,25],telugu:11,templat:[11,12,20,21,25,26,38,41],templates_path:11,tempor:30,term:[8,11,18,30],termin:[11,21,42],test:[2,8,10,11,21,23,24,26,29,39,41],test_android:11,test_rosebud:11,tests_infobox:11,texliv:2,text:[0,4,11,25,30],textstyl:30,tfrac:30,than:[11,15,30,33],thei:[11,12,15,21,22,30,35],them:[12,15,21,27,28,30,38],theme:[11,15,27,29,31],theme_arg:11,themselv:22,thepiratebai:11,therefor:[7,30],theses:21,thi:[4,5,7,8,9,10,11,12,13,15,17,18,20,21,22,23,25,27,28,30,31,35,37,38,39,40,41,42],thing:30,think:[24,27,29,30],third:[30,35],those:[18,20,21,32,35],though:4,thread:12,three:[24,28,30,35],through:[6,8,10,11,15,22,30,31,35],thu:[18,20,23,31,35],thumbnail:25,thumbnail_src:25,thumbnail_xpath:11,tibetian:11,time:[5,11,15,21,23,24,25,27,30,31,35,39,42],time_rang:[0,25,31],time_range_support:[25,30],timeout:[3,11,15,25,30,38,40],timerang:42,timestamp:12,tip:30,titl:[11,18,25],title_html_to_text:11,title_queri:11,title_xpath:11,tmp:11,to_dict:42,to_lang:25,to_nam:25,todai:20,togeth:20,token:[11,15,18,20,22],tokyotoshokan:[3,11],too:[5,11,15,30,35],tool:[1,2,4,7,11,17,24,30,32,33,39],top:[11,30],tor:[3,11,33,35],torch:11,torrentfil:25,torrentz2:11,torrentz:[3,11],total_dsc:11,touch:[8,10,12,15,21],tpb:[3,11],track:[33,35],tracker:14,tracker_url_remov:31,trademark:30,train:30,transform:30,transifex:[24,26],transifexrc:32,translat:[3,11,15,26,33],transpar:[21,39],travi:23,tree:[11,21,27],troubleshoot:38,trust:[22,33,35],ttf:2,tube:11,tupl:28,turkish:11,turn:[11,24],tweet:15,twice:11,twine:27,twitter:[11,15],twitter_url:[11,15],two:[12,15,24,30,31],txt:[23,27,30],type:[0,3,11,15,18,24,25,27,31,32,35,37,39,40],typeerror:42,typic:[1,30],typo:30,ubu1604:39,ubu1804:39,ubu1910:39,ubu2004:39,ubu2010:39,ubuntu:[2,8,10,11,12,16,29,30,39],ubuntuwiki:11,uds:8,uesr:18,ugli:[17,30],uid:[12,21],ukrainian:11,ullamco:30,ultrasecretkei:[11,15],unam:[11,39],unc:11,uncom:[11,15],uncommon:24,uncyclopedia:11,under:[11,21,22,25],understand:[17,30],unfortun:24,unicod:26,uninstal:[27,38],unique_result:11,unit:[12,24,27,37,40,41],unit_test:27,univers:11,unix:[8,10,12],unknown:[35,37,40],unless:22,unlik:35,unspecifi:25,unsplash:[3,11],untouch:27,unwant:7,updat:[6,9,11,15,24,26,33,37,40,41],update_packag:16,upload:27,upstream:12,urbandictionari:11,url:[0,8,9,10,11,13,14,15,21,24,25,27,35,38,39,40,41,42],url_queri:11,url_xpath:11,urlencod:25,usag:[7,8,10,21,27,30,37,39,40,41,42],usagelimit:11,use:[2,5,7,8,10,11,12,13,15,20,21,22,24,25,27,30,33,34,36,37,38,39,40,41,42],use_default_set:[6,38,41],use_official_api:11,used:[8,10,15,18,23,24,25,30,33,35,38],useful:[15,38],user:[5,6,7,8,12,13,14,15,18,21,22,24,25,27,30,33,35,38,41],useradd:[11,37,40],userag:5,useragent_suffix:[11,15],usernam:11,uses:[12,15,25,30,35],using:[4,5,8,9,10,11,12,15,19,21,24,27,29,30,32,33],usr:[5,8,10,11,12,21,37,38,40,41],usual:[19,23,35],utf8:11,utf:[11,12,30,38,39],util:[1,2,5,7,8,10,11,13,21,33],uvys6brhkhudff5cqbjonsdsrn8h0scbzinsrdgnvdpz7iezhvevart3yvghokha:15,uwsgi:[1,2,6,9,10,11,16,21,33,41],uwsgi_param:10,uwsgi_pass:10,uwsgisocket:8,uzcko:11,valid:[25,27,31],valu:[0,9,10,11,18,20,25,27,30,31,38],variabl:[9,15,25,30,40],variant:30,variou:[24,28],vassal:12,vector:30,vendor:24,veniam:30,venv3:23,venv:[2,11],verbos:[11,27,38],veri:38,verifi:25,vero:30,version:[11,14,23,30,37,40],via:[8,10,12,13,17,36],video:[3,11,42],vietnames:11,view:[26,35],viewbox:30,vim:[0,14,31],vim_hotkei:14,vimeo:[3,11],virtual:[8,10],virtualenv:[11,12,21,23,27,41],visist:30,visit:[11,30,35],vlaam:11,voc:11,voctoweb:11,volum:9,voluptua:30,vpn:35,vulner:35,wai:[12,15,18,20,24,25,30,35],wait:[15,20],want:[11,15,22,23,24,27,30,31,35,38,39],wantedbi:[37,40],warn:[2,8,10,30,39],watch:24,web:[4,5,11,15,17,18,21,25,27,37,39,41],web_url:11,webapp:[11,12,15,23,27],webcrawl:5,webkr:11,webresourc:11,webserv:10,websit:[0,11],webui:4,week:[25,42],weight:[11,15,30],weigth:[3,15],weird:24,welcom:[8,10],well:30,welsh:11,were:[20,22,23],werkzeug:27,west:29,wget:[37,40],what:[11,12,21,30,39],whatev:39,whe7ib:11,wheel:11,when:[2,8,11,14,15,18,23,28,30,35,36,42],where:[4,5,11,15,18,21,30],whether:35,which:[1,5,7,8,10,11,12,15,17,18,20,21,22,24,25,27,30,31,33,35,37,38,40],whl:27,who:[12,17,18,20,35],whole:[8,28],why:[30,33,34],wib:[3,11],wibi:[3,11],wide:24,widen:30,width:30,wikang:11,wiki:[0,3,10,11,15,20,22,30,39],wiki_url:[11,15],wikia:11,wikibook:[3,11],wikidata:[3,11],wikidata_id:11,wikinew:[3,11],wikipedia:[3,11,15,31,36],wikiquot:[3,11],wikisourc:[3,11],wikivers:[3,11],wikivoyag:[3,11],wiktionari:[3,11],wild:29,wish:15,within:[27,30],without:[2,9,11,13,15,18,25,33,35,42],wolframalpha:[3,11],wolframalpha_api:11,wolframalpha_noapi:[3,11],won:[15,23],word:[11,28,30,31],word__defin:11,word__nam:11,work:[10,11,15,18,19,24,25,27,35,41],workaround:36,worker:12,workflow:29,working_dir:18,workingdirectori:[37,40],world:[24,30,35],worri:23,worth:[12,35],would:[11,21,22],wrap:[10,19],write:42,written:21,wrong:27,wsgi:[10,12],www1x:[3,11],www4:11,www:[2,8,11,30,32,39],wysiwyg:24,xapian:4,xdg:[11,27],xetex:[2,27],xmh57jrknzkhv6y3ls3ubitzfqnkrwxhopf5aygthi7d6rplyvk3noyd:11,xml:30,xmln:30,xpath:[3,11],xss:[11,15],xxxx:30,xzf:[37,40],yaci:11,yahoo:[3,11],yahoo_new:[3,11],yaml:11,year:[23,25,31,42],yes:[37,40],yet:[24,25,27],ygg:[3,11],yggtorrent:[3,11],yhn:[3,11],yml:[3,6,8,9,10,11,12,13,17,20,21,27,28,31,33,36,38,40,41],york:11,you:[1,2,4,5,7,8,9,10,11,12,15,18,19,20,21,24,27,29,30,31,33,35,36,37,38,39,40,41],your:[2,4,5,7,8,9,10,11,12,13,14,15,17,18,19,23,24,26,27,29,30,33,36,37,38,39,40,41],your_morty_proxy_kei:11,yourself:24,youtub:[3,11],youtube_api:11,youtube_noapi:[3,11],yyyi:30,zero:20,zh_tw:11,zlib1g:[2,11],zzzz:30},titles:["Administration API","Architecture","Buildhosts","Engines","Recoll","How to protect an instance","Administrator documentation","Installation","Install with apache","Docker installation","Install with nginx","Step by step installation","uwsgi","How to setup result proxy","Plugins builtin","<code class=\"docutils literal notranslate\"><span class=\"pre\">settings.yml</span></code>","How to update","Searx admin interface","Running shell commands to fetch results","Blog","Preparation for offline engines","Developing in Linux containers [202006]","Limit access to your searx engines","Introducing Python 3 support","How to contribute","Engine overview","Developer documentation","Makefile Targets","Plugins","Development Quickstart","reST primer","Search API","Translation","Welcome to searx","User documentation","Why use a private instance?","Search syntax","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/filtron.sh</span></code>","Tooling box <code class=\"docutils literal notranslate\"><span class=\"pre\">utils/*</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/lxc.sh</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/morty.sh</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/searx.sh</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/standalone_searx.py</span></code>"],titleterms:{"202006":21,"abstract":21,"default":[3,14,25],"function":21,"public":[8,9,10,35],"return":25,"true":[11,15],The:[8,10,21,24],about:[30,35],access:22,acknowledg:[17,18,20,22,23],activ:27,admin:17,administr:[0,6],admonit:30,aka:30,alltogeth:12,anchor:30,apach:8,api:[0,31],architectur:1,archlinux:21,argument:25,articl:[2,30],ascii:30,audienc:21,bar:0,basic:30,bibliograph:30,block:30,blog:19,book:27,box:[5,38],bug:23,build:[2,9,24,27,30],buildhost:[2,39],built:[3,14],builtin:14,bullet:30,check:11,clean:[24,27],code:[24,25,30],command:[9,18,38,39],commit:24,common:38,conclus:35,configur:[0,3,4,5,11,14,25],consequ:35,contain:21,content:[2,5,8,9,10,11,12,15,21,24,25,27,30],contribut:24,creat:[11,24,37,40],csv:30,data:0,debian:8,definit:30,depend:11,deploi:24,design:24,develop:[20,21,26,29],direct:24,disabl:[8,10],distributor:12,doc:[2,24,27],docker:9,document:[6,24,26,34],doe:35,dot:30,drop:27,emb:0,engin:[3,15,18,20,21,22,25],entri:28,environ:[27,30,38],equat:30,exampl:[4,25,28,30,36],ext:30,extern:28,extlink:30,fact:23,featur:33,fetch:18,field:30,figur:30,file:[25,30],filtron:[5,37],first:7,flat:30,foo:30,found:23,fulli:21,fun:23,further:[1,3,5,8,10,12,13,14,15,28,30,31,37,39,40,41],gate:30,gener:[3,15,25,30],gentlemen:21,get:0,github:24,global:15,good:24,graphviz:30,grid:30,hackabl:24,head:30,hello:30,highlight:30,hlist:30,hook:28,horizont:30,how:[5,13,16,23,24,35],html:27,http:[8,10],hyperlink:30,imag:[9,25,30],info:[4,27],init:32,inlin:30,instal:[7,8,9,10,11,17,37,39,40,41],instanc:[5,9,35],interfac:17,internet:[8,10],intersphinx:30,introduc:23,kernel:30,kiss:30,latex:30,layout:8,limit:22,line:[9,18,30],link:30,lint:2,linux:21,list:30,liter:30,live:[24,27],local:15,locat:15,log:[8,10],lxc:39,make:[25,27],makefil:27,map:25,markup:30,math:30,matter:30,morti:40,motiv:21,multilingu:36,name:[27,30],need:2,nest:30,next:[18,20,22],nginx:10,note:30,offlin:20,ordinari:30,origin:12,outgo:15,overrid:25,overview:[25,37,39,40,41],packag:11,page:27,paragraph:30,paramet:31,pars:25,pass:25,pdf:27,plugin:[14,28],point:28,post:28,pre:28,prepar:20,prime:24,primer:30,privaci:[24,35],privat:[22,35],process:30,product:21,progress:20,project:32,protect:[5,35],proxi:[8,13],pybuild:27,pylint:27,python:[23,27],quickstart:29,quot:30,read:[1,3,5,8,10,12,13,14,15,28,30,31,37,39,40,41],readabl:30,recol:4,ref:30,regist:28,render:30,request:[5,25],requir:32,respons:0,rest:[24,30],restart:8,result:[13,18,25,28],revers:8,role:30,rout:5,run:[18,23,27,39],sampl:[0,5],script:[2,7],search:[0,28,31,36],searx:[9,10,11,17,21,22,23,33,35,39,41],see:35,server:[8,10,15],servic:8,set:[3,15,25],setup:[13,38,39],shell:[2,18],sidebar:30,simpl:30,site:10,skill:30,smart:30,soft:30,some:2,sourc:24,space:30,special:3,specif:30,sphinx:[2,30],standalone_searx:42,start:21,step:[11,18,20,22],structur:30,substitut:30,suit:[21,39],support:[8,23],svg:30,syntax:[30,36],tab:30,tabl:30,target:27,templat:30,test:27,thi:2,through:5,time:[3,14],titl:30,tool:[5,38],torrent:25,transifex:32,translat:[24,32],truth:30,unicod:30,updat:[7,16,32],upgrad:23,url:30,use:35,use_default_set:[11,15],user:[11,34,37,40],using:[23,35],usual:21,util:[37,38,39,40,41,42],uwsgi:[8,12],video:25,view:30,welcom:33,what:35,why:35,work:[2,21],wrap:21,yml:[15,25],you:23,your:[21,22,28]}})
user/index.html+1−1
@@ -117,7 +117,7 @@
117117
118118 <div class="footer" role="contentinfo">
119119 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
120− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
120+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
121121 </div>
122122 <script src="../_static/version_warning_offset.js"></script>
123123
user/own-instance.html+1−1
@@ -172,7 +172,7 @@ instance, have access to a privacy respecting search service.</p>
172172
173173 <div class="footer" role="contentinfo">
174174 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
175− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
175+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
176176 </div>
177177 <script src="../_static/version_warning_offset.js"></script>
178178
user/search_syntax.html+1−1
@@ -159,7 +159,7 @@ By adding a new search engine with a different language, Searx will search in yo
159159
160160 <div class="footer" role="contentinfo">
161161 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
162− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
162+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
163163 </div>
164164 <script src="../_static/version_warning_offset.js"></script>
165165
utils/filtron.sh.html+5−5
@@ -184,18 +184,18 @@ inspect service
184184 show service status and log
185185option
186186 set one of the available options
187−apache (http://fv-az178-282/searx)
187+apache (http://fv-az139-910/searx)
188188 :install: apache site with a reverse proxy (ProxyPass)
189189 :remove: apache site searx.conf
190−nginx (http://fv-az178-282/searx)
190+nginx (http://fv-az139-910/searx)
191191 :install: nginx site with a reverse proxy (ProxyPass)
192192 :remove: nginx site searx.conf
193193
194194filtron rules: /etc/filtron/rules.json
195195
196196If needed, set PUBLIC_URL of your WEB service in the &#39;.config.sh&#39; file::
197− PUBLIC_URL : http://fv-az178-282/searx
198− PUBLIC_HOST : fv-az178-282
197+ PUBLIC_URL : http://fv-az139-910/searx
198+ PUBLIC_HOST : fv-az139-910
199199 SERVICE_USER : filtron
200200 FILTRON_TARGET : 127.0.0.1:8888
201201 FILTRON_API : 127.0.0.1:4005
@@ -260,7 +260,7 @@ If needed, set PUBLIC_URL of your WEB service in the &#39;.config.sh&#39; file::
260260
261261 <div class="footer" role="contentinfo">
262262 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
263− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
263+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
264264 </div>
265265 <script src="../_static/version_warning_offset.js"></script>
266266
utils/index.html+1−1
@@ -222,7 +222,7 @@ reverse proxy for filtron on all containers of the <a class="reference internal"
222222
223223 <div class="footer" role="contentinfo">
224224 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
225− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
225+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
226226 </div>
227227 <script src="../_static/version_warning_offset.js"></script>
228228
utils/lxc.sh.html+2−2
@@ -194,7 +194,7 @@ install
194194 :base: prepare LXC; install basic packages
195195 :suite: install LXC searx suite into all (or &lt;name&gt;) containers
196196
197−LXC suite: searx --&gt; http://fv-az178-282/searx
197+LXC suite: searx --&gt; http://fv-az139-910/searx
198198 suite includes searx, morty &amp; filtron
199199suite images:
200200 ubu1604 ubu1804 ubu2004 ubu2010 fedora31 archlinux centos7
@@ -364,7 +364,7 @@ lxc_suite_info<span class="o">()</span> <span class="o">{</span>
364364
365365 <div class="footer" role="contentinfo">
366366 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
367− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
367+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
368368 </div>
369369 <script src="../_static/version_warning_offset.js"></script>
370370
utils/morty.sh.html+5−5
@@ -186,22 +186,22 @@ inspect service
186186option
187187 set one of the available options
188188 :new-key: set new morty key
189−apache : http://fv-az178-282/morty/
189+apache : http://fv-az139-910/morty/
190190 :install: apache site with a reverse proxy (ProxyPass)
191191 :remove: apache site morty.conf
192−nginx (http://fv-az178-282/morty/)
192+nginx (http://fv-az139-910/morty/)
193193 :install: nginx site with a reverse proxy (ProxyPass)
194194 :remove: nginx site morty.conf
195195
196196If needed, set the environment variables in the &#39;.config.sh&#39; file::
197− PUBLIC_URL_MORTY: http://fv-az178-282/morty/
197+ PUBLIC_URL_MORTY: http://fv-az139-910/morty/
198198 MORTY_LISTEN: 127.0.0.1:3000
199199 SERVICE_USER: morty
200200
201201To activate result and image proxy in searx, edit settings.yml (read:
202202https://searx.github.io/searx/admin/morty.html)::
203203 result_proxy:
204− url : http://fv-az178-282/morty/
204+ url : http://fv-az139-910/morty/
205205 server:
206206 image_proxy : True
207207</pre></div>
@@ -264,7 +264,7 @@ https://searx.github.io/searx/admin/morty.html)::
264264
265265 <div class="footer" role="contentinfo">
266266 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
267− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
267+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
268268 </div>
269269 <script src="../_static/version_warning_offset.js"></script>
270270
utils/searx.sh.html+3−3
@@ -113,8 +113,8 @@ apache
113113searx settings: /etc/searx/settings.yml
114114
115115If needed, set PUBLIC_URL of your WEB service in the &#39;.config.sh&#39; file::
116− PUBLIC_URL : http://fv-az178-282/searx
117− SEARX_INSTANCE_NAME : searx@fv-az178-282
116+ PUBLIC_URL : http://fv-az139-910/searx
117+ SEARX_INSTANCE_NAME : searx@fv-az139-910
118118 SERVICE_USER : searx
119119 SEARX_INTERNAL_HTTP : http://127.0.0.1:8888
120120</pre></div>
@@ -177,7 +177,7 @@ If needed, set PUBLIC_URL of your WEB service in the &#39;.config.sh&#39; file::
177177
178178 <div class="footer" role="contentinfo">
179179 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
180− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
180+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
181181 </div>
182182 <script src="../_static/version_warning_offset.js"></script>
183183
utils/standalone_searx.py.html+6−6
@@ -106,13 +106,13 @@
106106</div>
107107<dl class="py function">
108108<dt id="standalone_searx.get_search_query">
109−<code class="sig-prename descclassname">standalone_searx.</code><code class="sig-name descname">get_search_query</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">args</span><span class="p">:</span> <span class="n"><a class="reference external" href="https://docs.python.org/3/library/argparse.html#argparse.Namespace" title="(in Python v3.9)">argparse.Namespace</a></span></em>, <em class="sig-param"><span class="n">engine_categories</span><span class="p">:</span> <span class="n">Optional<span class="p">[</span>List<span class="p">[</span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.9)">str</a><span class="p">]</span><span class="p">]</span></span> <span class="o">=</span> <span class="default_value">None</span></em><span class="sig-paren">)</span> &#x2192; searx.search.models.SearchQuery<a class="reference internal" href="../_modules/standalone_searx.html#get_search_query"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#standalone_searx.get_search_query" title="Permalink to this definition">¶</a></dt>
109+<code class="sig-prename descclassname"><span class="pre">standalone_searx.</span></code><code class="sig-name descname"><span class="pre">get_search_query</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><a class="reference external" href="https://docs.python.org/3/library/argparse.html#argparse.Namespace" title="(in Python v3.9)"><span class="pre">argparse.Namespace</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">engine_categories</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.9)"><span class="pre">str</span></a><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">searx.search.models.SearchQuery</span><a class="reference internal" href="../_modules/standalone_searx.html#get_search_query"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#standalone_searx.get_search_query" title="Permalink to this definition">¶</a></dt>
110110<dd><p>Get search results for the query</p>
111111</dd></dl>
112112
113113<dl class="py function">
114114<dt id="standalone_searx.json_serial">
115−<code class="sig-prename descclassname">standalone_searx.</code><code class="sig-name descname">json_serial</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">obj</span><span class="p">:</span> <span class="n">Any</span></em><span class="sig-paren">)</span> &#x2192; Any<a class="reference internal" href="../_modules/standalone_searx.html#json_serial"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#standalone_searx.json_serial" title="Permalink to this definition">¶</a></dt>
115+<code class="sig-prename descclassname"><span class="pre">standalone_searx.</span></code><code class="sig-name descname"><span class="pre">json_serial</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">obj</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">Any</span><a class="reference internal" href="../_modules/standalone_searx.html#json_serial"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#standalone_searx.json_serial" title="Permalink to this definition">¶</a></dt>
116116<dd><p>JSON serializer for objects not serializable by default json code.</p>
117117<dl class="field-list simple">
118118<dt class="field-odd">Raises</dt>
@@ -123,13 +123,13 @@
123123
124124<dl class="py function">
125125<dt id="standalone_searx.no_parsed_url">
126−<code class="sig-prename descclassname">standalone_searx.</code><code class="sig-name descname">no_parsed_url</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">results</span><span class="p">:</span> <span class="n">List<span class="p">[</span>Dict<span class="p">[</span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.9)">str</a><span class="p">, </span>Any<span class="p">]</span><span class="p">]</span></span></em><span class="sig-paren">)</span> &#x2192; List<span class="p">[</span>Dict<span class="p">[</span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.9)">str</a><span class="p">, </span>Any<span class="p">]</span><span class="p">]</span><a class="reference internal" href="../_modules/standalone_searx.html#no_parsed_url"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#standalone_searx.no_parsed_url" title="Permalink to this definition">¶</a></dt>
126+<code class="sig-prename descclassname"><span class="pre">standalone_searx.</span></code><code class="sig-name descname"><span class="pre">no_parsed_url</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">results</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.9)"><span class="pre">str</span></a><span class="p"><span class="pre">,</span> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.9)"><span class="pre">str</span></a><span class="p"><span class="pre">,</span> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><a class="reference internal" href="../_modules/standalone_searx.html#no_parsed_url"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#standalone_searx.no_parsed_url" title="Permalink to this definition">¶</a></dt>
127127<dd><p>Remove parsed url from dict.</p>
128128</dd></dl>
129129
130130<dl class="py function">
131131<dt id="standalone_searx.parse_argument">
132−<code class="sig-prename descclassname">standalone_searx.</code><code class="sig-name descname">parse_argument</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">args</span><span class="p">:</span> <span class="n">Optional<span class="p">[</span>List<span class="p">[</span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.9)">str</a><span class="p">]</span><span class="p">]</span></span> <span class="o">=</span> <span class="default_value">None</span></em>, <em class="sig-param"><span class="n">category_choices</span><span class="p">:</span> <span class="n">Optional<span class="p">[</span>List<span class="p">[</span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.9)">str</a><span class="p">]</span><span class="p">]</span></span> <span class="o">=</span> <span class="default_value">None</span></em><span class="sig-paren">)</span> &#x2192; <a class="reference external" href="https://docs.python.org/3/library/argparse.html#argparse.Namespace" title="(in Python v3.9)">argparse.Namespace</a><a class="reference internal" href="../_modules/standalone_searx.html#parse_argument"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#standalone_searx.parse_argument" title="Permalink to this definition">¶</a></dt>
132+<code class="sig-prename descclassname"><span class="pre">standalone_searx.</span></code><code class="sig-name descname"><span class="pre">parse_argument</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.9)"><span class="pre">str</span></a><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">category_choices</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.9)"><span class="pre">str</span></a><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> &#x2192; <a class="reference external" href="https://docs.python.org/3/library/argparse.html#argparse.Namespace" title="(in Python v3.9)"><span class="pre">argparse.Namespace</span></a><a class="reference internal" href="../_modules/standalone_searx.html#parse_argument"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#standalone_searx.parse_argument" title="Permalink to this definition">¶</a></dt>
133133<dd><p>Parse command line.</p>
134134<dl class="field-list simple">
135135<dt class="field-odd">Raises</dt>
@@ -155,7 +155,7 @@
155155
156156<dl class="py function">
157157<dt id="standalone_searx.to_dict">
158−<code class="sig-prename descclassname">standalone_searx.</code><code class="sig-name descname">to_dict</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">search_query</span><span class="p">:</span> <span class="n">searx.search.models.SearchQuery</span></em><span class="sig-paren">)</span> &#x2192; Dict<span class="p">[</span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.9)">str</a><span class="p">, </span>Any<span class="p">]</span><a class="reference internal" href="../_modules/standalone_searx.html#to_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#standalone_searx.to_dict" title="Permalink to this definition">¶</a></dt>
158+<code class="sig-prename descclassname"><span class="pre">standalone_searx.</span></code><code class="sig-name descname"><span class="pre">to_dict</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">search_query</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">searx.search.models.SearchQuery</span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.9)"><span class="pre">str</span></a><span class="p"><span class="pre">,</span> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><a class="reference internal" href="../_modules/standalone_searx.html#to_dict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#standalone_searx.to_dict" title="Permalink to this definition">¶</a></dt>
159159<dd><p>Get result from parsed arguments.</p>
160160</dd></dl>
161161
@@ -216,7 +216,7 @@
216216
217217 <div class="footer" role="contentinfo">
218218 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
219− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
219+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.1.
220220 </div>
221221 <script src="../_static/version_warning_offset.js"></script>
222222