How to use fill method in Playwright Internal

Best JavaScript code snippet using playwright-internal

sparse.py

Source:sparse.py Github

copy

Full Screen

...300 return self.subtype301# ----------------------------------------------------------------------------302# Array303_sparray_doc_kwargs = dict(klass='SparseArray')304def _get_fill(arr):305 # type: (SparseArray) -> ndarray306 """307 Create a 0-dim ndarray containing the fill value308 Parameters309 ----------310 arr : SparseArray311 Returns312 -------313 fill_value : ndarray314 0-dim ndarray with just the fill value.315 Notes316 -----317 coerce fill_value to arr dtype if possible318 int64 SparseArray can have NaN as fill_value if there is no missing319 """320 try:321 return np.asarray(arr.fill_value, dtype=arr.dtype.subtype)322 except ValueError:323 return np.asarray(arr.fill_value)324def _sparse_array_op(left, right, op, name):325 """326 Perform a binary operation between two arrays.327 Parameters328 ----------329 left : Union[SparseArray, ndarray]330 right : Union[SparseArray, ndarray]331 op : Callable332 The binary operation to perform333 name str334 Name of the callable.335 Returns336 -------337 SparseArray338 """339 # type: (SparseArray, SparseArray, Callable, str) -> Any340 if name.startswith('__'):341 # For lookups in _libs.sparse we need non-dunder op name342 name = name[2:-2]343 # dtype used to find corresponding sparse method344 ltype = left.dtype.subtype345 rtype = right.dtype.subtype346 if not is_dtype_equal(ltype, rtype):347 subtype = find_common_type([ltype, rtype])348 ltype = SparseDtype(subtype, left.fill_value)349 rtype = SparseDtype(subtype, right.fill_value)350 # TODO(GH-23092): pass copy=False. Need to fix astype_nansafe351 left = left.astype(ltype)352 right = right.astype(rtype)353 dtype = ltype.subtype354 else:355 dtype = ltype356 # dtype the result must have357 result_dtype = None358 if left.sp_index.ngaps == 0 or right.sp_index.ngaps == 0:359 with np.errstate(all='ignore'):360 result = op(left.get_values(), right.get_values())361 fill = op(_get_fill(left), _get_fill(right))362 if left.sp_index.ngaps == 0:363 index = left.sp_index364 else:365 index = right.sp_index366 elif left.sp_index.equals(right.sp_index):367 with np.errstate(all='ignore'):368 result = op(left.sp_values, right.sp_values)369 fill = op(_get_fill(left), _get_fill(right))370 index = left.sp_index371 else:372 if name[0] == 'r':373 left, right = right, left374 name = name[1:]375 if name in ('and', 'or') and dtype == 'bool':376 opname = 'sparse_{name}_uint8'.format(name=name)377 # to make template simple, cast here378 left_sp_values = left.sp_values.view(np.uint8)379 right_sp_values = right.sp_values.view(np.uint8)380 result_dtype = np.bool381 else:382 opname = 'sparse_{name}_{dtype}'.format(name=name, dtype=dtype)383 left_sp_values = left.sp_values384 right_sp_values = right.sp_values385 sparse_op = getattr(splib, opname)386 with np.errstate(all='ignore'):387 result, index, fill = sparse_op(388 left_sp_values, left.sp_index, left.fill_value,389 right_sp_values, right.sp_index, right.fill_value)390 if result_dtype is None:391 result_dtype = result.dtype392 return _wrap_result(name, result, index, fill, dtype=result_dtype)393def _wrap_result(name, data, sparse_index, fill_value, dtype=None):394 """395 wrap op result to have correct dtype396 """397 if name.startswith('__'):398 # e.g. __eq__ --> eq399 name = name[2:-2]400 if name in ('eq', 'ne', 'lt', 'gt', 'le', 'ge'):401 dtype = np.bool402 fill_value = lib.item_from_zerodim(fill_value)403 if is_bool_dtype(dtype):404 # fill_value may be np.bool_405 fill_value = bool(fill_value)406 return SparseArray(data,407 sparse_index=sparse_index,408 fill_value=fill_value,409 dtype=dtype)410class SparseArray(PandasObject, ExtensionArray, ExtensionOpsMixin):411 """412 An ExtensionArray for storing sparse data.413 .. versionchanged:: 0.24.0414 Implements the ExtensionArray interface.415 Parameters416 ----------417 data : array-like418 A dense array of values to store in the SparseArray. This may contain419 `fill_value`.420 sparse_index : SparseIndex, optional421 index : Index422 fill_value : scalar, optional423 Elements in `data` that are `fill_value` are not stored in the424 SparseArray. For memory savings, this should be the most common value425 in `data`. By default, `fill_value` depends on the dtype of `data`:426 =========== ==========427 data.dtype na_value428 =========== ==========429 float ``np.nan``430 int ``0``431 bool False432 datetime64 ``pd.NaT``433 timedelta64 ``pd.NaT``434 =========== ==========435 The fill value is potentiall specified in three ways. In order of436 precedence, these are437 1. The `fill_value` argument438 2. ``dtype.fill_value`` if `fill_value` is None and `dtype` is439 a ``SparseDtype``440 3. ``data.dtype.fill_value`` if `fill_value` is None and `dtype`441 is not a ``SparseDtype`` and `data` is a ``SparseArray``.442 kind : {'integer', 'block'}, default 'integer'443 The type of storage for sparse locations.444 * 'block': Stores a `block` and `block_length` for each445 contiguous *span* of sparse values. This is best when446 sparse data tends to be clumped together, with large447 regsions of ``fill-value`` values between sparse values.448 * 'integer': uses an integer to store the location of449 each sparse value.450 dtype : np.dtype or SparseDtype, optional451 The dtype to use for the SparseArray. For numpy dtypes, this452 determines the dtype of ``self.sp_values``. For SparseDtype,453 this determines ``self.sp_values`` and ``self.fill_value``.454 copy : bool, default False455 Whether to explicitly copy the incoming `data` array.456 """457 __array_priority__ = 15458 _pandas_ftype = 'sparse'459 _subtyp = 'sparse_array' # register ABCSparseArray460 def __init__(self, data, sparse_index=None, index=None, fill_value=None,461 kind='integer', dtype=None, copy=False):462 from pandas.core.internals import SingleBlockManager463 if isinstance(data, SingleBlockManager):464 data = data.internal_values()465 if fill_value is None and isinstance(dtype, SparseDtype):466 fill_value = dtype.fill_value467 if isinstance(data, (type(self), ABCSparseSeries)):468 # disable normal inference on dtype, sparse_index, & fill_value469 if sparse_index is None:470 sparse_index = data.sp_index471 if fill_value is None:472 fill_value = data.fill_value473 if dtype is None:474 dtype = data.dtype475 # TODO: make kind=None, and use data.kind?476 data = data.sp_values477 # Handle use-provided dtype478 if isinstance(dtype, compat.string_types):479 # Two options: dtype='int', regular numpy dtype480 # or dtype='Sparse[int]', a sparse dtype481 try:482 dtype = SparseDtype.construct_from_string(dtype)483 except TypeError:484 dtype = pandas_dtype(dtype)485 if isinstance(dtype, SparseDtype):486 if fill_value is None:487 fill_value = dtype.fill_value488 dtype = dtype.subtype489 if index is not None and not is_scalar(data):490 raise Exception("must only pass scalars with an index ")491 if is_scalar(data):492 if index is not None:493 if data is None:494 data = np.nan495 if index is not None:496 npoints = len(index)497 elif sparse_index is None:498 npoints = 1499 else:500 npoints = sparse_index.length501 dtype = infer_dtype_from_scalar(data)[0]502 data = construct_1d_arraylike_from_scalar(503 data, npoints, dtype504 )505 if dtype is not None:506 dtype = pandas_dtype(dtype)507 # TODO: disentangle the fill_value dtype inference from508 # dtype inference509 if data is None:510 # XXX: What should the empty dtype be? Object or float?511 data = np.array([], dtype=dtype)512 if not is_array_like(data):513 try:514 # probably shared code in sanitize_series515 from pandas.core.internals.construction import sanitize_array516 data = sanitize_array(data, index=None)517 except ValueError:518 # NumPy may raise a ValueError on data like [1, []]519 # we retry with object dtype here.520 if dtype is None:521 dtype = object522 data = np.atleast_1d(np.asarray(data, dtype=dtype))523 else:524 raise525 if copy:526 # TODO: avoid double copy when dtype forces cast.527 data = data.copy()528 if fill_value is None:529 fill_value_dtype = data.dtype if dtype is None else dtype530 if fill_value_dtype is None:531 fill_value = np.nan532 else:533 fill_value = na_value_for_dtype(fill_value_dtype)534 if isinstance(data, type(self)) and sparse_index is None:535 sparse_index = data._sparse_index536 sparse_values = np.asarray(data.sp_values, dtype=dtype)537 elif sparse_index is None:538 sparse_values, sparse_index, fill_value = make_sparse(539 data, kind=kind, fill_value=fill_value, dtype=dtype540 )541 else:542 sparse_values = np.asarray(data, dtype=dtype)543 if len(sparse_values) != sparse_index.npoints:544 raise AssertionError("Non array-like type {type} must "545 "have the same length as the index"546 .format(type=type(sparse_values)))547 self._sparse_index = sparse_index548 self._sparse_values = sparse_values549 self._dtype = SparseDtype(sparse_values.dtype, fill_value)550 @classmethod551 def _simple_new(cls, sparse_array, sparse_index, dtype):552 # type: (np.ndarray, SparseIndex, SparseDtype) -> 'SparseArray'553 new = cls([])554 new._sparse_index = sparse_index555 new._sparse_values = sparse_array556 new._dtype = dtype557 return new558 def __array__(self, dtype=None, copy=True):559 fill_value = self.fill_value560 if self.sp_index.ngaps == 0:561 # Compat for na dtype and int values.562 return self.sp_values563 if dtype is None:564 # Can NumPy represent this type?565 # If not, `np.result_type` will raise. We catch that566 # and return object.567 if is_datetime64_any_dtype(self.sp_values.dtype):568 # However, we *do* special-case the common case of569 # a datetime64 with pandas NaT.570 if fill_value is NaT:571 # Can't put pd.NaT in a datetime64[ns]572 fill_value = np.datetime64('NaT')573 try:574 dtype = np.result_type(self.sp_values.dtype, type(fill_value))575 except TypeError:576 dtype = object577 out = np.full(self.shape, fill_value, dtype=dtype)578 out[self.sp_index.to_int_index().indices] = self.sp_values579 return out580 def __setitem__(self, key, value):581 # I suppose we could allow setting of non-fill_value elements.582 # TODO(SparseArray.__setitem__): remove special cases in583 # ExtensionBlock.where584 msg = "SparseArray does not support item assignment via setitem"585 raise TypeError(msg)586 @classmethod587 def _from_sequence(cls, scalars, dtype=None, copy=False):588 return cls(scalars, dtype=dtype)589 @classmethod590 def _from_factorized(cls, values, original):591 return cls(values, dtype=original.dtype)592 # ------------------------------------------------------------------------593 # Data594 # ------------------------------------------------------------------------595 @property596 def sp_index(self):597 """598 The SparseIndex containing the location of non- ``fill_value`` points.599 """600 return self._sparse_index601 @property602 def sp_values(self):603 """604 An ndarray containing the non- ``fill_value`` values.605 Examples606 --------607 >>> s = SparseArray([0, 0, 1, 0, 2], fill_value=0)608 >>> s.sp_values609 array([1, 2])610 """611 return self._sparse_values612 @property613 def dtype(self):614 return self._dtype615 @property616 def fill_value(self):617 """618 Elements in `data` that are `fill_value` are not stored.619 For memory savings, this should be the most common value in the array.620 """621 return self.dtype.fill_value622 @fill_value.setter623 def fill_value(self, value):624 self._dtype = SparseDtype(self.dtype.subtype, value)625 @property626 def kind(self):627 """628 The kind of sparse index for this array. One of {'integer', 'block'}.629 """630 if isinstance(self.sp_index, IntIndex):631 return 'integer'632 else:633 return 'block'634 @property635 def _valid_sp_values(self):636 sp_vals = self.sp_values637 mask = notna(sp_vals)638 return sp_vals[mask]639 def __len__(self):640 return self.sp_index.length641 @property642 def _null_fill_value(self):643 return self._dtype._is_na_fill_value644 def _fill_value_matches(self, fill_value):645 if self._null_fill_value:646 return isna(fill_value)647 else:648 return self.fill_value == fill_value649 @property650 def nbytes(self):651 return self.sp_values.nbytes + self.sp_index.nbytes652 @property653 def density(self):654 """655 The percent of non- ``fill_value`` points, as decimal.656 Examples657 --------658 >>> s = SparseArray([0, 0, 1, 1, 1], fill_value=0)659 >>> s.density660 0.6661 """662 r = float(self.sp_index.npoints) / float(self.sp_index.length)663 return r664 @property665 def npoints(self):666 """667 The number of non- ``fill_value`` points.668 Examples669 --------670 >>> s = SparseArray([0, 0, 1, 1, 1], fill_value=0)671 >>> s.npoints672 3673 """674 return self.sp_index.npoints675 @property676 def values(self):677 """678 Dense values679 """680 return self.to_dense()681 def isna(self):682 from pandas import isna683 # If null fill value, we want SparseDtype[bool, true]684 # to preserve the same memory usage.685 dtype = SparseDtype(bool, self._null_fill_value)686 return type(self)._simple_new(isna(self.sp_values),687 self.sp_index, dtype)688 def fillna(self, value=None, method=None, limit=None):689 """690 Fill missing values with `value`.691 Parameters692 ----------693 value : scalar, optional694 method : str, optional695 .. warning::696 Using 'method' will result in high memory use,697 as all `fill_value` methods will be converted to698 an in-memory ndarray699 limit : int, optional700 Returns701 -------702 SparseArray703 Notes704 -----705 When `value` is specified, the result's ``fill_value`` depends on706 ``self.fill_value``. The goal is to maintain low-memory use.707 If ``self.fill_value`` is NA, the result dtype will be708 ``SparseDtype(self.dtype, fill_value=value)``. This will preserve709 amount of memory used before and after filling.710 When ``self.fill_value`` is not NA, the result dtype will be711 ``self.dtype``. Again, this preserves the amount of memory used.712 """713 if ((method is None and value is None) or714 (method is not None and value is not None)):715 raise ValueError("Must specify one of 'method' or 'value'.")716 elif method is not None:717 msg = "fillna with 'method' requires high memory usage."718 warnings.warn(msg, PerformanceWarning)719 filled = interpolate_2d(np.asarray(self), method=method,720 limit=limit)721 return type(self)(filled, fill_value=self.fill_value)722 else:723 new_values = np.where(isna(self.sp_values), value, self.sp_values)724 if self._null_fill_value:725 # This is essentially just updating the dtype.726 new_dtype = SparseDtype(self.dtype.subtype, fill_value=value)727 else:728 new_dtype = self.dtype729 return self._simple_new(new_values, self._sparse_index, new_dtype)730 def shift(self, periods=1, fill_value=None):731 if not len(self) or periods == 0:732 return self.copy()733 if isna(fill_value):734 fill_value = self.dtype.na_value735 subtype = np.result_type(fill_value, self.dtype.subtype)736 if subtype != self.dtype.subtype:737 # just coerce up front738 arr = self.astype(SparseDtype(subtype, self.fill_value))739 else:740 arr = self741 empty = self._from_sequence(742 [fill_value] * min(abs(periods), len(self)),743 dtype=arr.dtype744 )745 if periods > 0:746 a = empty747 b = arr[:-periods]748 else:749 a = arr[abs(periods):]750 b = empty751 return arr._concat_same_type([a, b])752 def _first_fill_value_loc(self):753 """754 Get the location of the first missing value.755 Returns756 -------757 int758 """759 if len(self) == 0 or self.sp_index.npoints == len(self):760 return -1761 indices = self.sp_index.to_int_index().indices762 if not len(indices) or indices[0] > 0:763 return 0764 diff = indices[1:] - indices[:-1]765 return np.searchsorted(diff, 2) + 1766 def unique(self):767 uniques = list(algos.unique(self.sp_values))768 fill_loc = self._first_fill_value_loc()769 if fill_loc >= 0:770 uniques.insert(fill_loc, self.fill_value)771 return type(self)._from_sequence(uniques, dtype=self.dtype)772 def _values_for_factorize(self):773 # Still override this for hash_pandas_object774 return np.asarray(self), self.fill_value775 def factorize(self, na_sentinel=-1):776 # Currently, ExtensionArray.factorize -> Tuple[ndarray, EA]777 # The sparsity on this is backwards from what Sparse would want. Want778 # ExtensionArray.factorize -> Tuple[EA, EA]779 # Given that we have to return a dense array of labels, why bother780 # implementing an efficient factorize?781 labels, uniques = algos.factorize(np.asarray(self),782 na_sentinel=na_sentinel)783 uniques = SparseArray(uniques, dtype=self.dtype)784 return labels, uniques785 def value_counts(self, dropna=True):786 """787 Returns a Series containing counts of unique values.788 Parameters789 ----------790 dropna : boolean, default True791 Don't include counts of NaN, even if NaN is in sp_values.792 Returns793 -------794 counts : Series795 """796 from pandas import Index, Series797 keys, counts = algos._value_counts_arraylike(self.sp_values,798 dropna=dropna)799 fcounts = self.sp_index.ngaps800 if fcounts > 0:801 if self._null_fill_value and dropna:802 pass803 else:804 if self._null_fill_value:805 mask = isna(keys)806 else:807 mask = keys == self.fill_value808 if mask.any():809 counts[mask] += fcounts810 else:811 keys = np.insert(keys, 0, self.fill_value)812 counts = np.insert(counts, 0, fcounts)813 if not isinstance(keys, ABCIndexClass):814 keys = Index(keys)815 result = Series(counts, index=keys)816 return result817 # --------818 # Indexing819 # --------820 def __getitem__(self, key):821 if isinstance(key, tuple):822 if len(key) > 1:823 raise IndexError("too many indices for array.")824 key = key[0]825 if is_integer(key):826 return self._get_val_at(key)827 elif isinstance(key, tuple):828 data_slice = self.values[key]829 elif isinstance(key, slice):830 # special case to preserve dtypes831 if key == slice(None):832 return self.copy()833 # TODO: this logic is surely elsewhere834 # TODO: this could be more efficient835 indices = np.arange(len(self), dtype=np.int32)[key]836 return self.take(indices)837 else:838 # TODO: I think we can avoid densifying when masking a839 # boolean SparseArray with another. Need to look at the840 # key's fill_value for True / False, and then do an intersection841 # on the indicies of the sp_values.842 if isinstance(key, SparseArray):843 if is_bool_dtype(key):844 key = key.to_dense()845 else:846 key = np.asarray(key)847 if com.is_bool_indexer(key) and len(self) == len(key):848 return self.take(np.arange(len(key), dtype=np.int32)[key])849 elif hasattr(key, '__len__'):850 return self.take(key)851 else:852 raise ValueError("Cannot slice with '{}'".format(key))853 return type(self)(data_slice, kind=self.kind)854 def _get_val_at(self, loc):855 n = len(self)856 if loc < 0:857 loc += n858 if loc >= n or loc < 0:859 raise IndexError('Out of bounds access')860 sp_loc = self.sp_index.lookup(loc)861 if sp_loc == -1:862 return self.fill_value863 else:864 return libindex.get_value_at(self.sp_values, sp_loc)865 def take(self, indices, allow_fill=False, fill_value=None):866 if is_scalar(indices):867 raise ValueError("'indices' must be an array, not a "868 "scalar '{}'.".format(indices))869 indices = np.asarray(indices, dtype=np.int32)870 if indices.size == 0:871 result = []872 kwargs = {'dtype': self.dtype}873 elif allow_fill:874 result = self._take_with_fill(indices, fill_value=fill_value)875 kwargs = {}876 else:877 result = self._take_without_fill(indices)878 kwargs = {'dtype': self.dtype}879 return type(self)(result, fill_value=self.fill_value, kind=self.kind,880 **kwargs)881 def _take_with_fill(self, indices, fill_value=None):882 if fill_value is None:883 fill_value = self.dtype.na_value884 if indices.min() < -1:885 raise ValueError("Invalid value in 'indices'. Must be between -1 "886 "and the length of the array.")887 if indices.max() >= len(self):888 raise IndexError("out of bounds value in 'indices'.")889 if len(self) == 0:890 # Empty... Allow taking only if all empty891 if (indices == -1).all():892 dtype = np.result_type(self.sp_values, type(fill_value))893 taken = np.empty_like(indices, dtype=dtype)894 taken.fill(fill_value)895 return taken896 else:897 raise IndexError('cannot do a non-empty take from an empty '898 'axes.')899 sp_indexer = self.sp_index.lookup_array(indices)900 if self.sp_index.npoints == 0:901 # Avoid taking from the empty self.sp_values902 taken = np.full(sp_indexer.shape, fill_value=fill_value,903 dtype=np.result_type(type(fill_value)))904 else:905 taken = self.sp_values.take(sp_indexer)906 # sp_indexer may be -1 for two reasons907 # 1.) we took for an index of -1 (new)908 # 2.) we took a value that was self.fill_value (old)909 new_fill_indices = indices == -1910 old_fill_indices = (sp_indexer == -1) & ~new_fill_indices911 # Fill in two steps.912 # Old fill values913 # New fill values914 # potentially coercing to a new dtype at each stage.915 m0 = sp_indexer[old_fill_indices] < 0916 m1 = sp_indexer[new_fill_indices] < 0917 result_type = taken.dtype918 if m0.any():919 result_type = np.result_type(result_type,920 type(self.fill_value))921 taken = taken.astype(result_type)922 taken[old_fill_indices] = self.fill_value923 if m1.any():924 result_type = np.result_type(result_type, type(fill_value))925 taken = taken.astype(result_type)926 taken[new_fill_indices] = fill_value927 return taken928 def _take_without_fill(self, indices):929 to_shift = indices < 0930 indices = indices.copy()931 n = len(self)932 if (indices.max() >= n) or (indices.min() < -n):933 if n == 0:934 raise IndexError("cannot do a non-empty take from an "935 "empty axes.")936 else:937 raise IndexError("out of bounds value in 'indices'.")938 if to_shift.any():939 indices[to_shift] += n940 if self.sp_index.npoints == 0:941 # edge case in take...942 # I think just return943 out = np.full(indices.shape, self.fill_value,944 dtype=np.result_type(type(self.fill_value)))945 arr, sp_index, fill_value = make_sparse(out,946 fill_value=self.fill_value)947 return type(self)(arr, sparse_index=sp_index,948 fill_value=fill_value)949 sp_indexer = self.sp_index.lookup_array(indices)950 taken = self.sp_values.take(sp_indexer)951 fillable = (sp_indexer < 0)952 if fillable.any():953 # TODO: may need to coerce array to fill value954 result_type = np.result_type(taken, type(self.fill_value))955 taken = taken.astype(result_type)956 taken[fillable] = self.fill_value957 return taken958 def searchsorted(self, v, side="left", sorter=None):959 msg = "searchsorted requires high memory usage."960 warnings.warn(msg, PerformanceWarning, stacklevel=2)961 if not is_scalar(v):962 v = np.asarray(v)963 v = np.asarray(v)964 return np.asarray(self, dtype=self.dtype.subtype).searchsorted(965 v, side, sorter966 )967 def copy(self, deep=False):968 if deep:969 values = self.sp_values.copy()970 else:971 values = self.sp_values972 return self._simple_new(values, self.sp_index, self.dtype)973 @classmethod974 def _concat_same_type(cls, to_concat):975 fill_values = [x.fill_value for x in to_concat]976 fill_value = fill_values[0]977 # np.nan isn't a singleton, so we may end up with multiple978 # NaNs here, so we ignore tha all NA case too.979 if not (len(set(fill_values)) == 1 or isna(fill_values).all()):980 warnings.warn("Concatenating sparse arrays with multiple fill "981 "values: '{}'. Picking the first and "982 "converting the rest.".format(fill_values),983 PerformanceWarning,984 stacklevel=6)985 keep = to_concat[0]986 to_concat2 = [keep]987 for arr in to_concat[1:]:988 to_concat2.append(cls(np.asarray(arr), fill_value=fill_value))989 to_concat = to_concat2990 values = []991 length = 0992 if to_concat:993 sp_kind = to_concat[0].kind994 else:995 sp_kind = 'integer'996 if sp_kind == 'integer':997 indices = []998 for arr in to_concat:999 idx = arr.sp_index.to_int_index().indices.copy()1000 idx += length # TODO: wraparound1001 length += arr.sp_index.length1002 values.append(arr.sp_values)1003 indices.append(idx)1004 data = np.concatenate(values)1005 indices = np.concatenate(indices)1006 sp_index = IntIndex(length, indices)1007 else:1008 # when concatentating block indices, we don't claim that you'll1009 # get an identical index as concating the values and then1010 # creating a new index. We don't want to spend the time trying1011 # to merge blocks across arrays in `to_concat`, so the resulting1012 # BlockIndex may have more blocs.1013 blengths = []1014 blocs = []1015 for arr in to_concat:1016 idx = arr.sp_index.to_block_index()1017 values.append(arr.sp_values)1018 blocs.append(idx.blocs.copy() + length)1019 blengths.append(idx.blengths)1020 length += arr.sp_index.length1021 data = np.concatenate(values)1022 blocs = np.concatenate(blocs)1023 blengths = np.concatenate(blengths)1024 sp_index = BlockIndex(length, blocs, blengths)1025 return cls(data, sparse_index=sp_index, fill_value=fill_value)1026 def astype(self, dtype=None, copy=True):1027 """1028 Change the dtype of a SparseArray.1029 The output will always be a SparseArray. To convert to a dense1030 ndarray with a certain dtype, use :meth:`numpy.asarray`.1031 Parameters1032 ----------1033 dtype : np.dtype or ExtensionDtype1034 For SparseDtype, this changes the dtype of1035 ``self.sp_values`` and the ``self.fill_value``.1036 For other dtypes, this only changes the dtype of1037 ``self.sp_values``.1038 copy : bool, default True1039 Whether to ensure a copy is made, even if not necessary.1040 Returns1041 -------1042 SparseArray1043 Examples1044 --------1045 >>> arr = SparseArray([0, 0, 1, 2])1046 >>> arr1047 [0, 0, 1, 2]1048 Fill: 01049 IntIndex1050 Indices: array([2, 3], dtype=int32)1051 >>> arr.astype(np.dtype('int32'))1052 [0, 0, 1, 2]1053 Fill: 01054 IntIndex1055 Indices: array([2, 3], dtype=int32)1056 Using a NumPy dtype with a different kind (e.g. float) will coerce1057 just ``self.sp_values``.1058 >>> arr.astype(np.dtype('float64'))1059 ... # doctest: +NORMALIZE_WHITESPACE1060 [0, 0, 1.0, 2.0]1061 Fill: 01062 IntIndex1063 Indices: array([2, 3], dtype=int32)1064 Use a SparseDtype if you wish to be change the fill value as well.1065 >>> arr.astype(SparseDtype("float64", fill_value=np.nan))1066 ... # doctest: +NORMALIZE_WHITESPACE1067 [nan, nan, 1.0, 2.0]1068 Fill: nan1069 IntIndex1070 Indices: array([2, 3], dtype=int32)1071 """1072 dtype = self.dtype.update_dtype(dtype)1073 subtype = dtype._subtype_with_str1074 sp_values = astype_nansafe(self.sp_values,1075 subtype,1076 copy=copy)1077 if sp_values is self.sp_values and copy:1078 sp_values = sp_values.copy()1079 return self._simple_new(sp_values,1080 self.sp_index,1081 dtype)1082 def map(self, mapper):1083 """1084 Map categories using input correspondence (dict, Series, or function).1085 Parameters1086 ----------1087 mapper : dict, Series, callable1088 The correspondence from old values to new.1089 Returns1090 -------1091 SparseArray1092 The output array will have the same density as the input.1093 The output fill value will be the result of applying the1094 mapping to ``self.fill_value``1095 Examples1096 --------1097 >>> arr = pd.SparseArray([0, 1, 2])1098 >>> arr.apply(lambda x: x + 10)1099 [10, 11, 12]1100 Fill: 101101 IntIndex1102 Indices: array([1, 2], dtype=int32)1103 >>> arr.apply({0: 10, 1: 11, 2: 12})1104 [10, 11, 12]1105 Fill: 101106 IntIndex1107 Indices: array([1, 2], dtype=int32)1108 >>> arr.apply(pd.Series([10, 11, 12], index=[0, 1, 2]))1109 [10, 11, 12]1110 Fill: 101111 IntIndex1112 Indices: array([1, 2], dtype=int32)1113 """1114 # this is used in apply.1115 # We get hit since we're an "is_extension_type" but regular extension1116 # types are not hit. This may be worth adding to the interface.1117 if isinstance(mapper, ABCSeries):1118 mapper = mapper.to_dict()1119 if isinstance(mapper, compat.Mapping):1120 fill_value = mapper.get(self.fill_value, self.fill_value)1121 sp_values = [mapper.get(x, None) for x in self.sp_values]1122 else:1123 fill_value = mapper(self.fill_value)1124 sp_values = [mapper(x) for x in self.sp_values]1125 return type(self)(sp_values, sparse_index=self.sp_index,1126 fill_value=fill_value)1127 def to_dense(self):1128 """1129 Convert SparseArray to a NumPy array.1130 Returns1131 -------1132 arr : NumPy array1133 """1134 return np.asarray(self, dtype=self.sp_values.dtype)1135 # TODO: Look into deprecating this in favor of `to_dense`.1136 get_values = to_dense1137 # ------------------------------------------------------------------------1138 # IO1139 # ------------------------------------------------------------------------1140 def __setstate__(self, state):1141 """Necessary for making this object picklable"""1142 if isinstance(state, tuple):1143 # Compat for pandas < 0.24.01144 nd_state, (fill_value, sp_index) = state1145 sparse_values = np.array([])1146 sparse_values.__setstate__(nd_state)1147 self._sparse_values = sparse_values1148 self._sparse_index = sp_index1149 self._dtype = SparseDtype(sparse_values.dtype, fill_value)1150 else:1151 self.__dict__.update(state)1152 def nonzero(self):1153 if self.fill_value == 0:1154 return self.sp_index.to_int_index().indices,1155 else:1156 return self.sp_index.to_int_index().indices[self.sp_values != 0],1157 # ------------------------------------------------------------------------1158 # Reductions1159 # ------------------------------------------------------------------------1160 def _reduce(self, name, skipna=True, **kwargs):1161 method = getattr(self, name, None)1162 if method is None:1163 raise TypeError("cannot perform {name} with type {dtype}".format(1164 name=name, dtype=self.dtype))1165 if skipna:1166 arr = self1167 else:1168 arr = self.dropna()1169 # we don't support these kwargs.1170 # They should only be present when called via pandas, so do it here.1171 # instead of in `any` / `all` (which will raise if they're present,1172 # thanks to nv.validate1173 kwargs.pop('filter_type', None)1174 kwargs.pop('numeric_only', None)1175 kwargs.pop('op', None)1176 return getattr(arr, name)(**kwargs)1177 def all(self, axis=None, *args, **kwargs):1178 """1179 Tests whether all elements evaluate True1180 Returns1181 -------1182 all : bool1183 See Also1184 --------1185 numpy.all1186 """1187 nv.validate_all(args, kwargs)1188 values = self.sp_values1189 if len(values) != len(self) and not np.all(self.fill_value):1190 return False1191 return values.all()1192 def any(self, axis=0, *args, **kwargs):1193 """1194 Tests whether at least one of elements evaluate True1195 Returns1196 -------1197 any : bool1198 See Also1199 --------1200 numpy.any1201 """1202 nv.validate_any(args, kwargs)1203 values = self.sp_values1204 if len(values) != len(self) and np.any(self.fill_value):1205 return True1206 return values.any().item()1207 def sum(self, axis=0, *args, **kwargs):1208 """1209 Sum of non-NA/null values1210 Returns1211 -------1212 sum : float1213 """1214 nv.validate_sum(args, kwargs)1215 valid_vals = self._valid_sp_values1216 sp_sum = valid_vals.sum()1217 if self._null_fill_value:1218 return sp_sum1219 else:1220 nsparse = self.sp_index.ngaps1221 return sp_sum + self.fill_value * nsparse1222 def cumsum(self, axis=0, *args, **kwargs):1223 """1224 Cumulative sum of non-NA/null values.1225 When performing the cumulative summation, any non-NA/null values will1226 be skipped. The resulting SparseArray will preserve the locations of1227 NaN values, but the fill value will be `np.nan` regardless.1228 Parameters1229 ----------1230 axis : int or None1231 Axis over which to perform the cumulative summation. If None,1232 perform cumulative summation over flattened array.1233 Returns1234 -------1235 cumsum : SparseArray1236 """1237 nv.validate_cumsum(args, kwargs)1238 if axis is not None and axis >= self.ndim: # Mimic ndarray behaviour.1239 raise ValueError("axis(={axis}) out of bounds".format(axis=axis))1240 if not self._null_fill_value:1241 return SparseArray(self.to_dense()).cumsum()1242 return SparseArray(self.sp_values.cumsum(), sparse_index=self.sp_index,1243 fill_value=self.fill_value)1244 def mean(self, axis=0, *args, **kwargs):1245 """1246 Mean of non-NA/null values1247 Returns1248 -------1249 mean : float1250 """1251 nv.validate_mean(args, kwargs)1252 valid_vals = self._valid_sp_values1253 sp_sum = valid_vals.sum()1254 ct = len(valid_vals)1255 if self._null_fill_value:1256 return sp_sum / ct1257 else:1258 nsparse = self.sp_index.ngaps1259 return (sp_sum + self.fill_value * nsparse) / (ct + nsparse)1260 def transpose(self, *axes):1261 """1262 Returns the SparseArray.1263 """1264 return self1265 @property1266 def T(self):1267 """1268 Returns the SparseArray.1269 """1270 return self1271 # ------------------------------------------------------------------------1272 # Ufuncs1273 # ------------------------------------------------------------------------1274 def __array_wrap__(self, array, context=None):1275 from pandas.core.dtypes.generic import ABCSparseSeries1276 ufunc, inputs, _ = context1277 inputs = tuple(x.values if isinstance(x, ABCSparseSeries) else x1278 for x in inputs)1279 return self.__array_ufunc__(ufunc, '__call__', *inputs)1280 _HANDLED_TYPES = (np.ndarray, numbers.Number)1281 def __array_ufunc__(self, ufunc, method, *inputs, **kwargs):1282 out = kwargs.get('out', ())1283 for x in inputs + out:1284 if not isinstance(x, self._HANDLED_TYPES + (SparseArray,)):1285 return NotImplemented1286 special = {'add', 'sub', 'mul', 'pow', 'mod', 'floordiv', 'truediv',1287 'divmod', 'eq', 'ne', 'lt', 'gt', 'le', 'ge', 'remainder'}1288 if compat.PY2:1289 special.add('div')1290 aliases = {1291 'subtract': 'sub',1292 'multiply': 'mul',1293 'floor_divide': 'floordiv',1294 'true_divide': 'truediv',1295 'power': 'pow',1296 'remainder': 'mod',1297 'divide': 'div',1298 'equal': 'eq',1299 'not_equal': 'ne',1300 'less': 'lt',1301 'less_equal': 'le',1302 'greater': 'gt',1303 'greater_equal': 'ge',1304 }1305 flipped = {1306 'lt': '__gt__',1307 'le': '__ge__',1308 'gt': '__lt__',1309 'ge': '__le__',1310 'eq': '__eq__',1311 'ne': '__ne__',1312 }1313 op_name = ufunc.__name__1314 op_name = aliases.get(op_name, op_name)1315 if op_name in special and kwargs.get('out') is None:1316 if isinstance(inputs[0], type(self)):1317 return getattr(self, '__{}__'.format(op_name))(inputs[1])1318 else:1319 name = flipped.get(op_name, '__r{}__'.format(op_name))1320 return getattr(self, name)(inputs[0])1321 if len(inputs) == 1:1322 # No alignment necessary.1323 sp_values = getattr(ufunc, method)(self.sp_values, **kwargs)1324 fill_value = getattr(ufunc, method)(self.fill_value, **kwargs)1325 return self._simple_new(sp_values,1326 self.sp_index,1327 SparseDtype(sp_values.dtype, fill_value))1328 result = getattr(ufunc, method)(*[np.asarray(x) for x in inputs],1329 **kwargs)1330 if out:1331 if len(out) == 1:1332 out = out[0]1333 return out1334 if type(result) is tuple:1335 return tuple(type(self)(x) for x in result)1336 elif method == 'at':1337 # no return value1338 return None1339 else:1340 return type(self)(result)1341 def __abs__(self):1342 return np.abs(self)1343 # ------------------------------------------------------------------------1344 # Ops1345 # ------------------------------------------------------------------------1346 @classmethod1347 def _create_unary_method(cls, op):1348 def sparse_unary_method(self):1349 fill_value = op(np.array(self.fill_value)).item()1350 values = op(self.sp_values)1351 dtype = SparseDtype(values.dtype, fill_value)1352 return cls._simple_new(values, self.sp_index, dtype)1353 name = '__{name}__'.format(name=op.__name__)1354 return compat.set_function_name(sparse_unary_method, name, cls)1355 @classmethod1356 def _create_arithmetic_method(cls, op):1357 def sparse_arithmetic_method(self, other):1358 op_name = op.__name__1359 if isinstance(other, (ABCSeries, ABCIndexClass)):1360 # Rely on pandas to dispatch to us.1361 return NotImplemented1362 if isinstance(other, SparseArray):1363 return _sparse_array_op(self, other, op, op_name)1364 elif is_scalar(other):1365 with np.errstate(all='ignore'):1366 fill = op(_get_fill(self), np.asarray(other))1367 result = op(self.sp_values, other)1368 if op_name == 'divmod':1369 left, right = result1370 lfill, rfill = fill1371 return (_wrap_result(op_name, left, self.sp_index, lfill),1372 _wrap_result(op_name, right, self.sp_index, rfill))1373 return _wrap_result(op_name, result, self.sp_index, fill)1374 else:1375 other = np.asarray(other)1376 with np.errstate(all='ignore'):1377 # TODO: delete sparse stuff in core/ops.py1378 # TODO: look into _wrap_result1379 if len(self) != len(other):1380 raise AssertionError(...

Full Screen

Full Screen

0002_auto_20210108_1807.py

Source:0002_auto_20210108_1807.py Github

copy

Full Screen

1# Generated by Django 3.1.4 on 2021-01-08 18:072from django.db import migrations, models3class Migration(migrations.Migration):4 dependencies = [5 ('module', '0001_initial'),6 ]7 operations = [8 migrations.RemoveField(9 model_name='module',10 name='icon',11 ),12 migrations.AddField(13 model_name='module',14 name='icon_name',15 field=models.CharField(blank=True, choices=[('house-door.svg', 'house-door.svg'), ('graph-up.svg', 'graph-up.svg'), ('sort-alpha-up-alt.svg', 'sort-alpha-up-alt.svg'), ('eye-slash-fill.svg', 'eye-slash-fill.svg'), ('arrows-angle-expand.svg', 'arrows-angle-expand.svg'), ('layout-text-window.svg', 'layout-text-window.svg'), ('textarea.svg', 'textarea.svg'), ('slack.svg', 'slack.svg'), ('tv-fill.svg', 'tv-fill.svg'), ('hash.svg', 'hash.svg'), ('file-medical-fill.svg', 'file-medical-fill.svg'), ('calculator-fill.svg', 'calculator-fill.svg'), ('twitter.svg', 'twitter.svg'), ('bookmark-heart.svg', 'bookmark-heart.svg'), ('star.svg', 'star.svg'), ('at.svg', 'at.svg'), ('type-italic.svg', 'type-italic.svg'), ('hand-index.svg', 'hand-index.svg'), ('volume-off.svg', 'volume-off.svg'), ('telephone-plus-fill.svg', 'telephone-plus-fill.svg'), ('arrow-down-left.svg', 'arrow-down-left.svg'), ('hand-index-thumb.svg', 'hand-index-thumb.svg'), ('calendar2-range.svg', 'calendar2-range.svg'), ('dice-4.svg', 'dice-4.svg'), ('inboxes-fill.svg', 'inboxes-fill.svg'), ('bag-x-fill.svg', 'bag-x-fill.svg'), ('caret-down-square-fill.svg', 'caret-down-square-fill.svg'), ('thermometer-half.svg', 'thermometer-half.svg'), ('calendar2-day-fill.svg', 'calendar2-day-fill.svg'), ('alt.svg', 'alt.svg'), ('heart-half.svg', 'heart-half.svg'), ('pause-btn.svg', 'pause-btn.svg'), ('plus-circle-fill.svg', 'plus-circle-fill.svg'), ('mic.svg', 'mic.svg'), ('person-lines-fill.svg', 'person-lines-fill.svg'), ('markdown.svg', 'markdown.svg'), ('shield-minus.svg', 'shield-minus.svg'), ('file-earmark-richtext-fill.svg', 'file-earmark-richtext-fill.svg'), ('trophy-fill.svg', 'trophy-fill.svg'), ('hdd.svg', 'hdd.svg'), ('shop.svg', 'shop.svg'), ('skip-backward-circle.svg', 'skip-backward-circle.svg'), ('bar-chart.svg', 'bar-chart.svg'), ('phone-landscape.svg', 'phone-landscape.svg'), ('suit-spade.svg', 'suit-spade.svg'), ('wrench.svg', 'wrench.svg'), ('badge-vo.svg', 'badge-vo.svg'), ('house-door-fill.svg', 'house-door-fill.svg'), ('sort-down.svg', 'sort-down.svg'), ('plus-circle.svg', 'plus-circle.svg'), ('skip-end-circle.svg', 'skip-end-circle.svg'), ('inboxes.svg', 'inboxes.svg'), ('envelope-open-fill.svg', 'envelope-open-fill.svg'), ('file-arrow-down.svg', 'file-arrow-down.svg'), ('file-x.svg', 'file-x.svg'), ('record-btn.svg', 'record-btn.svg'), ('basket.svg', 'basket.svg'), ('award-fill.svg', 'award-fill.svg'), ('badge-8k.svg', 'badge-8k.svg'), ('flower3.svg', 'flower3.svg'), ('skip-start-circle-fill.svg', 'skip-start-circle-fill.svg'), ('voicemail.svg', 'voicemail.svg'), ('arrow-up-down.svg', 'arrow-up-down.svg'), ('ui-checks-grid.svg', 'ui-checks-grid.svg'), ('upc.svg', 'upc.svg'), ('tablet.svg', 'tablet.svg'), ('bag-plus.svg', 'bag-plus.svg'), ('calendar3.svg', 'calendar3.svg'), ('calendar2-x-fill.svg', 'calendar2-x-fill.svg'), ('arrow-up-left-circle.svg', 'arrow-up-left-circle.svg'), ('chat-square-text.svg', 'chat-square-text.svg'), ('toggle-on.svg', 'toggle-on.svg'), ('patch-plus.svg', 'patch-plus.svg'), ('peace.svg', 'peace.svg'), ('file-word.svg', 'file-word.svg'), ('chat-right-quote.svg', 'chat-right-quote.svg'), ('file-earmark-person.svg', 'file-earmark-person.svg'), ('bell.svg', 'bell.svg'), ('share.svg', 'share.svg'), ('easel.svg', 'easel.svg'), ('layout-text-window-reverse.svg', 'layout-text-window-reverse.svg'), ('file-bar-graph-fill.svg', 'file-bar-graph-fill.svg'), ('pentagon.svg', 'pentagon.svg'), ('table.svg', 'table.svg'), ('patch-question.svg', 'patch-question.svg'), ('gem.svg', 'gem.svg'), ('person-fill.svg', 'person-fill.svg'), ('file-earmark-excel-fill.svg', 'file-earmark-excel-fill.svg'), ('bookmark-star-fill.svg', 'bookmark-star-fill.svg'), ('option.svg', 'option.svg'), ('stop-circle.svg', 'stop-circle.svg'), ('layout-sidebar-inset-reverse.svg', 'layout-sidebar-inset-reverse.svg'), ('bag-check.svg', 'bag-check.svg'), ('badge-cc.svg', 'badge-cc.svg'), ('octagon-fill.svg', 'octagon-fill.svg'), ('pause-circle.svg', 'pause-circle.svg'), ('arrow-down-square.svg', 'arrow-down-square.svg'), ('hdd-network-fill.svg', 'hdd-network-fill.svg'), ('chevron-right.svg', 'chevron-right.svg'), ('peace-fill.svg', 'peace-fill.svg'), ('journal-bookmark-fill.svg', 'journal-bookmark-fill.svg'), ('collection.svg', 'collection.svg'), ('headphones.svg', 'headphones.svg'), ('chat-square.svg', 'chat-square.svg'), ('filter-square.svg', 'filter-square.svg'), ('blockquote-left.svg', 'blockquote-left.svg'), ('folder-fill.svg', 'folder-fill.svg'), ('crop.svg', 'crop.svg'), ('play-circle.svg', 'play-circle.svg'), ('record-circle-fill.svg', 'record-circle-fill.svg'), ('calendar-week.svg', 'calendar-week.svg'), ('cloud.svg', 'cloud.svg'), ('egg.svg', 'egg.svg'), ('ui-radios-grid.svg', 'ui-radios-grid.svg'), ('check2-circle.svg', 'check2-circle.svg'), ('badge-4k-fill.svg', 'badge-4k-fill.svg'), ('arrow-left-square.svg', 'arrow-left-square.svg'), ('bag-plus-fill.svg', 'bag-plus-fill.svg'), ('binoculars-fill.svg', 'binoculars-fill.svg'), ('droplet-half.svg', 'droplet-half.svg'), ('calendar-event.svg', 'calendar-event.svg'), ('emoji-expressionless.svg', 'emoji-expressionless.svg'), ('input-cursor.svg', 'input-cursor.svg'), ('check-square-fill.svg', 'check-square-fill.svg'), ('reply.svg', 'reply.svg'), ('door-open.svg', 'door-open.svg'), ('arrow-up-right-square.svg', 'arrow-up-right-square.svg'), ('intersect.svg', 'intersect.svg'), ('basket3.svg', 'basket3.svg'), ('pentagon-half.svg', 'pentagon-half.svg'), ('arrow-down-right-square-fill.svg', 'arrow-down-right-square-fill.svg'), ('check-box.svg', 'check-box.svg'), ('kanban-fill.svg', 'kanban-fill.svg'), ('camera-fill.svg', 'camera-fill.svg'), ('badge-hd.svg', 'badge-hd.svg'), ('stickies.svg', 'stickies.svg'), ('vector-pen.svg', 'vector-pen.svg'), ('map.svg', 'map.svg'), ('layers-half.svg', 'layers-half.svg'), ('pencil-square.svg', 'pencil-square.svg'), ('file-earmark-zip-fill.svg', 'file-earmark-zip-fill.svg'), ('pause-fill.svg', 'pause-fill.svg'), ('reply-fill.svg', 'reply-fill.svg'), ('toggles2.svg', 'toggles2.svg'), ('fullscreen.svg', 'fullscreen.svg'), ('music-note.svg', 'music-note.svg'), ('journal-text.svg', 'journal-text.svg'), ('x-diamond.svg', 'x-diamond.svg'), ('node-minus-fill.svg', 'node-minus-fill.svg'), ('file-arrow-down-fill.svg', 'file-arrow-down-fill.svg'), ('laptop-fill.svg', 'laptop-fill.svg'), ('chevron-double-down.svg', 'chevron-double-down.svg'), ('heart-fill.svg', 'heart-fill.svg'), ('skip-end-btn-fill.svg', 'skip-end-btn-fill.svg'), ('record2.svg', 'record2.svg'), ('chevron-double-left.svg', 'chevron-double-left.svg'), ('bookmark-check-fill.svg', 'bookmark-check-fill.svg'), ('file-lock2.svg', 'file-lock2.svg'), ('stop-fill.svg', 'stop-fill.svg'), ('emoji-heart-eyes.svg', 'emoji-heart-eyes.svg'), ('arrow-down-left-circle-fill.svg', 'arrow-down-left-circle-fill.svg'), ('skip-forward-fill.svg', 'skip-forward-fill.svg'), ('pencil-fill.svg', 'pencil-fill.svg'), ('clock.svg', 'clock.svg'), ('clipboard-data.svg', 'clipboard-data.svg'), ('cart2.svg', 'cart2.svg'), ('volume-up-fill.svg', 'volume-up-fill.svg'), ('arrow-down-right.svg', 'arrow-down-right.svg'), ('calendar3-week.svg', 'calendar3-week.svg'), ('slash-square-fill.svg', 'slash-square-fill.svg'), ('reception-0.svg', 'reception-0.svg'), ('file-play.svg', 'file-play.svg'), ('collection-fill.svg', 'collection-fill.svg'), ('check-all.svg', 'check-all.svg'), ('wallet2.svg', 'wallet2.svg'), ('text-indent-left.svg', 'text-indent-left.svg'), ('building.svg', 'building.svg'), ('dice-2.svg', 'dice-2.svg'), ('door-closed-fill.svg', 'door-closed-fill.svg'), ('arrow-up-square.svg', 'arrow-up-square.svg'), ('emoji-expressionless-fill.svg', 'emoji-expressionless-fill.svg'), ('file-earmark-plus-fill.svg', 'file-earmark-plus-fill.svg'), ('minecart.svg', 'minecart.svg'), ('chat-left-dots-fill.svg', 'chat-left-dots-fill.svg'), ('record2-fill.svg', 'record2-fill.svg'), ('search.svg', 'search.svg'), ('watch.svg', 'watch.svg'), ('calendar3-event-fill.svg', 'calendar3-event-fill.svg'), ('journal-x.svg', 'journal-x.svg'), ('check.svg', 'check.svg'), ('file-earmark-binary-fill.svg', 'file-earmark-binary-fill.svg'), ('arrow-right-short.svg', 'arrow-right-short.svg'), ('file-earmark-minus-fill.svg', 'file-earmark-minus-fill.svg'), ('chevron-compact-left.svg', 'chevron-compact-left.svg'), ('arrow-up-circle-fill.svg', 'arrow-up-circle-fill.svg'), ('cart-plus.svg', 'cart-plus.svg'), ('chevron-left.svg', 'chevron-left.svg'), ('diamond.svg', 'diamond.svg'), ('arrow-left-square-fill.svg', 'arrow-left-square-fill.svg'), ('bell-fill.svg', 'bell-fill.svg'), ('cloud-minus-fill.svg', 'cloud-minus-fill.svg'), ('record-circle.svg', 'record-circle.svg'), ('exclamation-square-fill.svg', 'exclamation-square-fill.svg'), ('emoji-laughing-fill.svg', 'emoji-laughing-fill.svg'), ('emoji-dizzy-fill.svg', 'emoji-dizzy-fill.svg'), ('layout-wtf.svg', 'layout-wtf.svg'), ('file-post.svg', 'file-post.svg'), ('file.svg', 'file.svg'), ('check-circle-fill.svg', 'check-circle-fill.svg'), ('folder-check.svg', 'folder-check.svg'), ('question-diamond-fill.svg', 'question-diamond-fill.svg'), ('toggles.svg', 'toggles.svg'), ('columns.svg', 'columns.svg'), ('rss-fill.svg', 'rss-fill.svg'), ('arrows-collapse.svg', 'arrows-collapse.svg'), ('cloud-check-fill.svg', 'cloud-check-fill.svg'), ('box-arrow-in-up-left.svg', 'box-arrow-in-up-left.svg'), ('triangle.svg', 'triangle.svg'), ('plus-square-fill.svg', 'plus-square-fill.svg'), ('person-badge-fill.svg', 'person-badge-fill.svg'), ('person-bounding-box.svg', 'person-bounding-box.svg'), ('life-preserver.svg', 'life-preserver.svg'), ('input-cursor-text.svg', 'input-cursor-text.svg'), ('calendar2-month-fill.svg', 'calendar2-month-fill.svg'), ('columns-gap.svg', 'columns-gap.svg'), ('slash-circle-fill.svg', 'slash-circle-fill.svg'), ('people-fill.svg', 'people-fill.svg'), ('shield-lock.svg', 'shield-lock.svg'), ('file-arrow-up-fill.svg', 'file-arrow-up-fill.svg'), ('book.svg', 'book.svg'), ('cloud-plus.svg', 'cloud-plus.svg'), ('calendar-check-fill.svg', 'calendar-check-fill.svg'), ('calendar-x.svg', 'calendar-x.svg'), ('image-fill.svg', 'image-fill.svg'), ('emoji-frown-fill.svg', 'emoji-frown-fill.svg'), ('calendar-date-fill.svg', 'calendar-date-fill.svg'), ('broadcast.svg', 'broadcast.svg'), ('arrow-down-left-circle.svg', 'arrow-down-left-circle.svg'), ('calendar4-week.svg', 'calendar4-week.svg'), ('headset.svg', 'headset.svg'), ('flag.svg', 'flag.svg'), ('wifi-2.svg', 'wifi-2.svg'), ('emoji-smile-upside-down.svg', 'emoji-smile-upside-down.svg'), ('patch-question-fll.svg', 'patch-question-fll.svg'), ('emoji-sunglasses-fill.svg', 'emoji-sunglasses-fill.svg'), ('minecart-loaded.svg', 'minecart-loaded.svg'), ('shuffle.svg', 'shuffle.svg'), ('hand-thumbs-down.svg', 'hand-thumbs-down.svg'), ('file-medical.svg', 'file-medical.svg'), ('file-check.svg', 'file-check.svg'), ('triangle-fill.svg', 'triangle-fill.svg'), ('person-plus-fill.svg', 'person-plus-fill.svg'), ('bricks.svg', 'bricks.svg'), ('type-h1.svg', 'type-h1.svg'), ('text-center.svg', 'text-center.svg'), ('calendar-range.svg', 'calendar-range.svg'), ('funnel.svg', 'funnel.svg'), ('lamp-fill.svg', 'lamp-fill.svg'), ('distribute-horizontal.svg', 'distribute-horizontal.svg'), ('gift-fill.svg', 'gift-fill.svg'), ('diagram-2.svg', 'diagram-2.svg'), ('key.svg', 'key.svg'), ('shield-x.svg', 'shield-x.svg'), ('brightness-low-fill.svg', 'brightness-low-fill.svg'), ('calendar2-week-fill.svg', 'calendar2-week-fill.svg'), ('file-earmark-ruled-fill.svg', 'file-earmark-ruled-fill.svg'), ('envelope.svg', 'envelope.svg'), ('cloud-download.svg', 'cloud-download.svg'), ('file-image.svg', 'file-image.svg'), ('chevron-expand.svg', 'chevron-expand.svg'), ('border-style.svg', 'border-style.svg'), ('compass-fill.svg', 'compass-fill.svg'), ('box-seam.svg', 'box-seam.svg'), ('credit-card-2-front.svg', 'credit-card-2-front.svg'), ('bookmark-fill.svg', 'bookmark-fill.svg'), ('file-person-fill.svg', 'file-person-fill.svg'), ('bounding-box.svg', 'bounding-box.svg'), ('type-strikethrough.svg', 'type-strikethrough.svg'), ('rss.svg', 'rss.svg'), ('laptop.svg', 'laptop.svg'), ('align-bottom.svg', 'align-bottom.svg'), ('chevron-bar-up.svg', 'chevron-bar-up.svg'), ('list-stars.svg', 'list-stars.svg'), ('heptagon.svg', 'heptagon.svg'), ('vinyl.svg', 'vinyl.svg'), ('file-excel-fill.svg', 'file-excel-fill.svg'), ('file-slides.svg', 'file-slides.svg'), ('controller.svg', 'controller.svg'), ('hexagon-fill.svg', 'hexagon-fill.svg'), ('chevron-double-up.svg', 'chevron-double-up.svg'), ('caret-left-fill.svg', 'caret-left-fill.svg'), ('box-arrow-up-left.svg', 'box-arrow-up-left.svg'), ('trash2.svg', 'trash2.svg'), ('hexagon.svg', 'hexagon.svg'), ('cloud-arrow-down-fill.svg', 'cloud-arrow-down-fill.svg'), ('file-earmark-arrow-up-fill.svg', 'file-earmark-arrow-up-fill.svg'), ('grid-3x3-gap.svg', 'grid-3x3-gap.svg'), ('flower1.svg', 'flower1.svg'), ('file-earmark-medical.svg', 'file-earmark-medical.svg'), ('file-earmark-easel-fill.svg', 'file-earmark-easel-fill.svg'), ('stop.svg', 'stop.svg'), ('slash-square.svg', 'slash-square.svg'), ('question-circle.svg', 'question-circle.svg'), ('align-start.svg', 'align-start.svg'), ('chat-square-text-fill.svg', 'chat-square-text-fill.svg'), ('calendar3-week-fill.svg', 'calendar3-week-fill.svg'), ('file-code-fill.svg', 'file-code-fill.svg'), ('record.svg', 'record.svg'), ('cloud-slash.svg', 'cloud-slash.svg'), ('newspaper.svg', 'newspaper.svg'), ('cursor.svg', 'cursor.svg'), ('arrow-right.svg', 'arrow-right.svg'), ('file-text-fill.svg', 'file-text-fill.svg'), ('file-earmark-richtext.svg', 'file-earmark-richtext.svg'), ('sim-fill.svg', 'sim-fill.svg'), ('file-easel-fill.svg', 'file-easel-fill.svg'), ('file-earmark-spreadsheet.svg', 'file-earmark-spreadsheet.svg'), ('clock-fill.svg', 'clock-fill.svg'), ('reception-3.svg', 'reception-3.svg'), ('disc-fill.svg', 'disc-fill.svg'), ('file-earmark-music-fill.svg', 'file-earmark-music-fill.svg'), ('layout-sidebar.svg', 'layout-sidebar.svg'), ('menu-button-wide.svg', 'menu-button-wide.svg'), ('back.svg', 'back.svg'), ('node-plus-fill.svg', 'node-plus-fill.svg'), ('file-arrow-up.svg', 'file-arrow-up.svg'), ('caret-left.svg', 'caret-left.svg'), ('skip-start-btn.svg', 'skip-start-btn.svg'), ('file-text.svg', 'file-text.svg'), ('chat-right.svg', 'chat-right.svg'), ('file-earmark-image-fill.svg', 'file-earmark-image-fill.svg'), ('cart-check.svg', 'cart-check.svg'), ('key-fill.svg', 'key-fill.svg'), ('circle-fill.svg', 'circle-fill.svg'), ('cloud-minus.svg', 'cloud-minus.svg'), ('volume-mute.svg', 'volume-mute.svg'), ('reply-all-fill.svg', 'reply-all-fill.svg'), ('chat-left-quote-fill.svg', 'chat-left-quote-fill.svg'), ('file-image-fill.svg', 'file-image-fill.svg'), ('box-arrow-down-right.svg', 'box-arrow-down-right.svg'), ('file-earmark-text.svg', 'file-earmark-text.svg'), ('asterisk.svg', 'asterisk.svg'), ('align-end.svg', 'align-end.svg'), ('shift-fill.svg', 'shift-fill.svg'), ('file-earmark-x-fill.svg', 'file-earmark-x-fill.svg'), ('telephone-minus.svg', 'telephone-minus.svg'), ('arrow-bar-right.svg', 'arrow-bar-right.svg'), ('file-earmark-arrow-down.svg', 'file-earmark-arrow-down.svg'), ('arrow-bar-left.svg', 'arrow-bar-left.svg'), ('box-arrow-up.svg', 'box-arrow-up.svg'), ('emoji-smile-upside-down-fill.svg', 'emoji-smile-upside-down-fill.svg'), ('calendar2-range-fill.svg', 'calendar2-range-fill.svg'), ('receipt.svg', 'receipt.svg'), ('calendar-day.svg', 'calendar-day.svg'), ('play-btn.svg', 'play-btn.svg'), ('toggle2-on.svg', 'toggle2-on.svg'), ('brightness-high.svg', 'brightness-high.svg'), ('battery-half.svg', 'battery-half.svg'), ('arrow-up-right-circle.svg', 'arrow-up-right-circle.svg'), ('square.svg', 'square.svg'), ('file-earmark-ruled.svg', 'file-earmark-ruled.svg'), ('chat-left-quote.svg', 'chat-left-quote.svg'), ('circle-square.svg', 'circle-square.svg'), ('calculator.svg', 'calculator.svg'), ('aspect-ratio-fill.svg', 'aspect-ratio-fill.svg'), ('emoji-dizzy.svg', 'emoji-dizzy.svg'), ('sort-numeric-up.svg', 'sort-numeric-up.svg'), ('star-half.svg', 'star-half.svg'), ('card-heading.svg', 'card-heading.svg'), ('exclamation-triangle-fill.svg', 'exclamation-triangle-fill.svg'), ('caret-up.svg', 'caret-up.svg'), ('chat-square-dots-fill.svg', 'chat-square-dots-fill.svg'), ('calendar-check.svg', 'calendar-check.svg'), ('stop-btn.svg', 'stop-btn.svg'), ('justify.svg', 'justify.svg'), ('brightness-alt-low-fill.svg', 'brightness-alt-low-fill.svg'), ('sort-numeric-down-alt.svg', 'sort-numeric-down-alt.svg'), ('unlock-fill.svg', 'unlock-fill.svg'), ('cup.svg', 'cup.svg'), ('patch-minus-fll.svg', 'patch-minus-fll.svg'), ('people-circle.svg', 'people-circle.svg'), ('suit-diamond-fill.svg', 'suit-diamond-fill.svg'), ('badge-tm.svg', 'badge-tm.svg'), ('outlet.svg', 'outlet.svg'), ('calendar-month-fill.svg', 'calendar-month-fill.svg'), ('dash-square.svg', 'dash-square.svg'), ('capslock-fill.svg', 'capslock-fill.svg'), ('folder.svg', 'folder.svg'), ('person-check.svg', 'person-check.svg'), ('ui-checks.svg', 'ui-checks.svg'), ('arrow-up-left.svg', 'arrow-up-left.svg'), ('mailbox2.svg', 'mailbox2.svg'), ('flag-fill.svg', 'flag-fill.svg'), ('x-octagon.svg', 'x-octagon.svg'), ('filter-right.svg', 'filter-right.svg'), ('braces.svg', 'braces.svg'), ('soundwave.svg', 'soundwave.svg'), ('signpost-split-fill.svg', 'signpost-split-fill.svg'), ('music-player.svg', 'music-player.svg'), ('file-spreadsheet-fill.svg', 'file-spreadsheet-fill.svg'), ('three-dots.svg', 'three-dots.svg'), ('phone-fill.svg', 'phone-fill.svg'), ('chat-square-dots.svg', 'chat-square-dots.svg'), ('suit-spade-fill.svg', 'suit-spade-fill.svg'), ('camera-video.svg', 'camera-video.svg'), ('bookmarks-fill.svg', 'bookmarks-fill.svg'), ('heart.svg', 'heart.svg'), ('credit-card-2-back.svg', 'credit-card-2-back.svg'), ('question-diamond.svg', 'question-diamond.svg'), ('graph-down.svg', 'graph-down.svg'), ('menu-button-wide-fill.svg', 'menu-button-wide-fill.svg'), ('upload.svg', 'upload.svg'), ('badge-tm-fill.svg', 'badge-tm-fill.svg'), ('lock-fill.svg', 'lock-fill.svg'), ('calendar3-fill.svg', 'calendar3-fill.svg'), ('tree-fill.svg', 'tree-fill.svg'), ('mouse3.svg', 'mouse3.svg'), ('chat-left-dots.svg', 'chat-left-dots.svg'), ('calendar-x-fill.svg', 'calendar-x-fill.svg'), ('type.svg', 'type.svg'), ('people.svg', 'people.svg'), ('reception-2.svg', 'reception-2.svg'), ('layers.svg', 'layers.svg'), ('signpost-fill.svg', 'signpost-fill.svg'), ('skip-forward-circle-fill.svg', 'skip-forward-circle-fill.svg'), ('printer.svg', 'printer.svg'), ('phone.svg', 'phone.svg'), ('square-half.svg', 'square-half.svg'), ('emoji-wink-fill.svg', 'emoji-wink-fill.svg'), ('code-slash.svg', 'code-slash.svg'), ('chat-right-dots-fill.svg', 'chat-right-dots-fill.svg'), ('hourglass.svg', 'hourglass.svg'), ('bicycle.svg', 'bicycle.svg'), ('calendar2-date-fill.svg', 'calendar2-date-fill.svg'), ('text-right.svg', 'text-right.svg'), ('layout-text-sidebar-reverse.svg', 'layout-text-sidebar-reverse.svg'), ('mouse.svg', 'mouse.svg'), ('tags-fill.svg', 'tags-fill.svg'), ('bookmark-plus-fill.svg', 'bookmark-plus-fill.svg'), ('bookmark-x.svg', 'bookmark-x.svg'), ('forward-fill.svg', 'forward-fill.svg'), ('play.svg', 'play.svg'), ('thermometer.svg', 'thermometer.svg'), ('geo-alt-fill.svg', 'geo-alt-fill.svg'), ('puzzle.svg', 'puzzle.svg'), ('chevron-bar-expand.svg', 'chevron-bar-expand.svg'), ('tree.svg', 'tree.svg'), ('arrow-down-up.svg', 'arrow-down-up.svg'), ('tablet-landscape.svg', 'tablet-landscape.svg'), ('nut.svg', 'nut.svg'), ('zoom-in.svg', 'zoom-in.svg'), ('bar-chart-steps.svg', 'bar-chart-steps.svg'), ('backspace-reverse.svg', 'backspace-reverse.svg'), ('grid-fill.svg', 'grid-fill.svg'), ('file-richtext-fill.svg', 'file-richtext-fill.svg'), ('arrow-up-left-square.svg', 'arrow-up-left-square.svg'), ('file-earmark-play.svg', 'file-earmark-play.svg'), ('link-45deg.svg', 'link-45deg.svg'), ('terminal.svg', 'terminal.svg'), ('handbag-fill.svg', 'handbag-fill.svg'), ('calendar4-range.svg', 'calendar4-range.svg'), ('file-diff.svg', 'file-diff.svg'), ('calendar2-day.svg', 'calendar2-day.svg'), ('info-square.svg', 'info-square.svg'), ('file-word-fill.svg', 'file-word-fill.svg'), ('x-circle.svg', 'x-circle.svg'), ('twitch.svg', 'twitch.svg'), ('person-circle.svg', 'person-circle.svg'), ('file-zip.svg', 'file-zip.svg'), ('geo-alt.svg', 'geo-alt.svg'), ('file-earmark-word.svg', 'file-earmark-word.svg'), ('patch-minus.svg', 'patch-minus.svg'), ('spellcheck.svg', 'spellcheck.svg'), ('hourglass-bottom.svg', 'hourglass-bottom.svg'), ('disc.svg', 'disc.svg'), ('chat-square-quote-fill.svg', 'chat-square-quote-fill.svg'), ('file-earmark-diff-fill.svg', 'file-earmark-diff-fill.svg'), ('box-arrow-in-right.svg', 'box-arrow-in-right.svg'), ('shield-fill-minus.svg', 'shield-fill-minus.svg'), ('pie-chart.svg', 'pie-chart.svg'), ('info.svg', 'info.svg'), ('files.svg', 'files.svg'), ('x-square-fill.svg', 'x-square-fill.svg'), ('file-lock2-fill.svg', 'file-lock2-fill.svg'), ('chat-square-fill.svg', 'chat-square-fill.svg'), ('skip-start-fill.svg', 'skip-start-fill.svg'), ('bezier.svg', 'bezier.svg'), ('phone-vibrate.svg', 'phone-vibrate.svg'), ('calendar.svg', 'calendar.svg'), ('shield-lock-fill.svg', 'shield-lock-fill.svg'), ('patch-check-fll.svg', 'patch-check-fll.svg'), ('reception-1.svg', 'reception-1.svg'), ('bar-chart-line-fill.svg', 'bar-chart-line-fill.svg'), ('arrow-down-circle-fill.svg', 'arrow-down-circle-fill.svg'), ('lock.svg', 'lock.svg'), ('arrow-left-right.svg', 'arrow-left-right.svg'), ('arrow-up-circle.svg', 'arrow-up-circle.svg'), ('mic-mute.svg', 'mic-mute.svg'), ('lamp.svg', 'lamp.svg'), ('skip-backward-circle-fill.svg', 'skip-backward-circle-fill.svg'), ('emoji-sunglasses.svg', 'emoji-sunglasses.svg'), ('list.svg', 'list.svg'), ('instagram.svg', 'instagram.svg'), ('bootstrap-icons.svg', 'bootstrap-icons.svg'), ('dice-6-fill.svg', 'dice-6-fill.svg'), ('file-check-fill.svg', 'file-check-fill.svg'), ('arrow-bar-up.svg', 'arrow-bar-up.svg'), ('grid-1x2-fill.svg', 'grid-1x2-fill.svg'), ('dice-5.svg', 'dice-5.svg'), ('cloud-plus-fill.svg', 'cloud-plus-fill.svg'), ('file-earmark-check.svg', 'file-earmark-check.svg'), ('box-arrow-up-right.svg', 'box-arrow-up-right.svg'), ('journal-code.svg', 'journal-code.svg'), ('bookmarks.svg', 'bookmarks.svg'), ('pie-chart-fill.svg', 'pie-chart-fill.svg'), ('folder-symlink-fill.svg', 'folder-symlink-fill.svg'), ('stopwatch.svg', 'stopwatch.svg'), ('sort-alpha-down-alt.svg', 'sort-alpha-down-alt.svg'), ('shield-fill-check.svg', 'shield-fill-check.svg'), ('exclamation-square.svg', 'exclamation-square.svg'), ('door-closed.svg', 'door-closed.svg'), ('filter-left.svg', 'filter-left.svg'), ('calendar-plus.svg', 'calendar-plus.svg'), ('wifi-1.svg', 'wifi-1.svg'), ('book-half.svg', 'book-half.svg'), ('discord.svg', 'discord.svg'), ('box.svg', 'box.svg'), ('skip-backward-fill.svg', 'skip-backward-fill.svg'), ('file-earmark-image.svg', 'file-earmark-image.svg'), ('battery-full.svg', 'battery-full.svg'), ('file-earmark-code-fill.svg', 'file-earmark-code-fill.svg'), ('question.svg', 'question.svg'), ('journal-medical.svg', 'journal-medical.svg'), ('forward.svg', 'forward.svg'), ('shield-check.svg', 'shield-check.svg'), ('calendar2-event-fill.svg', 'calendar2-event-fill.svg'), ('folder-symlink.svg', 'folder-symlink.svg'), ('pen.svg', 'pen.svg'), ('box-arrow-left.svg', 'box-arrow-left.svg'), ('easel-fill.svg', 'easel-fill.svg'), ('hdd-rack-fill.svg', 'hdd-rack-fill.svg'), ('info-square-fill.svg', 'info-square-fill.svg'), ('chevron-bar-down.svg', 'chevron-bar-down.svg'), ('blockquote-right.svg', 'blockquote-right.svg'), ('toggle-off.svg', 'toggle-off.svg'), ('view-stacked.svg', 'view-stacked.svg'), ('display-fill.svg', 'display-fill.svg'), ('telephone-x.svg', 'telephone-x.svg'), ('file-richtext.svg', 'file-richtext.svg'), ('circle-half.svg', 'circle-half.svg'), ('archive.svg', 'archive.svg'), ('exclamation-diamond-fill.svg', 'exclamation-diamond-fill.svg'), ('chat-square-quote.svg', 'chat-square-quote.svg'), ('caret-up-square-fill.svg', 'caret-up-square-fill.svg'), ('dice-3-fill.svg', 'dice-3-fill.svg'), ('chat-right-dots.svg', 'chat-right-dots.svg'), ('journal-check.svg', 'journal-check.svg'), ('envelope-fill.svg', 'envelope-fill.svg'), ('sort-down-alt.svg', 'sort-down-alt.svg'), ('list-ul.svg', 'list-ul.svg'), ('calendar-plus-fill.svg', 'calendar-plus-fill.svg'), ('subtract.svg', 'subtract.svg'), ('chat-quote-fill.svg', 'chat-quote-fill.svg'), ('person-badge.svg', 'person-badge.svg'), ('arrow-up.svg', 'arrow-up.svg'), ('cart3.svg', 'cart3.svg'), ('card-text.svg', 'card-text.svg'), ('cursor-fill.svg', 'cursor-fill.svg'), ('calendar2-check-fill.svg', 'calendar2-check-fill.svg'), ('square-fill.svg', 'square-fill.svg'), ('fullscreen-exit.svg', 'fullscreen-exit.svg'), ('bucket-fill.svg', 'bucket-fill.svg'), ('suit-heart-fill.svg', 'suit-heart-fill.svg'), ('file-bar-graph.svg', 'file-bar-graph.svg'), ('caret-left-square.svg', 'caret-left-square.svg'), ('bookshelf.svg', 'bookshelf.svg'), ('flower2.svg', 'flower2.svg'), ('cone.svg', 'cone.svg'), ('arrow-up-right.svg', 'arrow-up-right.svg'), ('diamond-fill.svg', 'diamond-fill.svg'), ('command.svg', 'command.svg'), ('chat-dots.svg', 'chat-dots.svg'), ('shield-plus.svg', 'shield-plus.svg'), ('bookmark-plus.svg', 'bookmark-plus.svg'), ('calendar3-event.svg', 'calendar3-event.svg'), ('chat-right-fill.svg', 'chat-right-fill.svg'), ('badge-hd-fill.svg', 'badge-hd-fill.svg'), ('trophy.svg', 'trophy.svg'), ('envelope-open.svg', 'envelope-open.svg'), ('clipboard-plus.svg', 'clipboard-plus.svg'), ('file-plus.svg', 'file-plus.svg'), ('gear.svg', 'gear.svg'), ('calendar-date.svg', 'calendar-date.svg'), ('suit-club.svg', 'suit-club.svg'), ('calendar2-date.svg', 'calendar2-date.svg'), ('hexagon-half.svg', 'hexagon-half.svg'), ('emoji-neutral-fill.svg', 'emoji-neutral-fill.svg'), ('ui-radios.svg', 'ui-radios.svg'), ('menu-app-fill.svg', 'menu-app-fill.svg'), ('telephone-forward-fill.svg', 'telephone-forward-fill.svg'), ('justify-left.svg', 'justify-left.svg'), ('chevron-compact-up.svg', 'chevron-compact-up.svg'), ('triangle-half.svg', 'triangle-half.svg'), ('cash.svg', 'cash.svg'), ('cloud-slash-fill.svg', 'cloud-slash-fill.svg'), ('arrow-down-right-square.svg', 'arrow-down-right-square.svg'), ('arrow-up-right-square-fill.svg', 'arrow-up-right-square-fill.svg'), ('person-square.svg', 'person-square.svg'), ('file-earmark-text-fill.svg', 'file-earmark-text-fill.svg'), ('camera2.svg', 'camera2.svg'), ('arrow-down-left-square-fill.svg', 'arrow-down-left-square-fill.svg'), ('files-alt.svg', 'files-alt.svg'), ('egg-fill.svg', 'egg-fill.svg'), ('box-arrow-right.svg', 'box-arrow-right.svg'), ('file-break-fill.svg', 'file-break-fill.svg'), ('caret-up-fill.svg', 'caret-up-fill.svg'), ('badge-4k.svg', 'badge-4k.svg'), ('dice-6.svg', 'dice-6.svg'), ('smartwatch.svg', 'smartwatch.svg'), ('cart-plus-fill.svg', 'cart-plus-fill.svg'), ('file-play-fill.svg', 'file-play-fill.svg'), ('eye-fill.svg', 'eye-fill.svg'), ('volume-off-fill.svg', 'volume-off-fill.svg'), ('basket2.svg', 'basket2.svg'), ('clipboard-check.svg', 'clipboard-check.svg'), ('align-center.svg', 'align-center.svg'), ('reply-all.svg', 'reply-all.svg'), ('chat.svg', 'chat.svg'), ('skip-backward-btn.svg', 'skip-backward-btn.svg'), ('person-plus.svg', 'person-plus.svg'), ('box-arrow-down.svg', 'box-arrow-down.svg'), ('text-left.svg', 'text-left.svg'), ('shift.svg', 'shift.svg'), ('cpu-fill.svg', 'cpu-fill.svg'), ('slash.svg', 'slash.svg'), ('file-earmark-slides.svg', 'file-earmark-slides.svg'), ('signpost-split.svg', 'signpost-split.svg'), ('server.svg', 'server.svg'), ('cloud-upload.svg', 'cloud-upload.svg'), ('box-arrow-in-left.svg', 'box-arrow-in-left.svg'), ('broadcast-pin.svg', 'broadcast-pin.svg'), ('briefcase.svg', 'briefcase.svg'), ('file-font-fill.svg', 'file-font-fill.svg'), ('phone-landscape-fill.svg', 'phone-landscape-fill.svg'), ('link.svg', 'link.svg'), ('three-dots-vertical.svg', 'three-dots-vertical.svg'), ('x-circle-fill.svg', 'x-circle-fill.svg'), ('chat-text-fill.svg', 'chat-text-fill.svg'), ('sort-up-alt.svg', 'sort-up-alt.svg'), ('bar-chart-line.svg', 'bar-chart-line.svg'), ('box-arrow-in-up-right.svg', 'box-arrow-in-up-right.svg'), ('file-earmark-lock-fill.svg', 'file-earmark-lock-fill.svg'), ('handbag.svg', 'handbag.svg'), ('credit-card-2-front-fill.svg', 'credit-card-2-front-fill.svg'), ('calendar-week-fill.svg', 'calendar-week-fill.svg'), ('exclamation-triangle.svg', 'exclamation-triangle.svg'), ('textarea-resize.svg', 'textarea-resize.svg'), ('calendar-fill.svg', 'calendar-fill.svg'), ('calendar2-minus.svg', 'calendar2-minus.svg'), ('compass.svg', 'compass.svg'), ('cart-x.svg', 'cart-x.svg'), ('chevron-double-right.svg', 'chevron-double-right.svg'), ('check2-all.svg', 'check2-all.svg'), ('bookmark.svg', 'bookmark.svg'), ('file-earmark-easel.svg', 'file-earmark-easel.svg'), ('images.svg', 'images.svg'), ('hourglass-split.svg', 'hourglass-split.svg'), ('eyeglasses.svg', 'eyeglasses.svg'), ('layers-fill.svg', 'layers-fill.svg'), ('emoji-heart-eyes-fill.svg', 'emoji-heart-eyes-fill.svg'), ('mouse2.svg', 'mouse2.svg'), ('hdd-stack.svg', 'hdd-stack.svg'), ('code.svg', 'code.svg'), ('chat-left.svg', 'chat-left.svg'), ('cup-straw.svg', 'cup-straw.svg'), ('file-earmark-arrow-down-fill.svg', 'file-earmark-arrow-down-fill.svg'), ('bag-x.svg', 'bag-x.svg'), ('suit-club-fill.svg', 'suit-club-fill.svg'), ('stop-btn-fill.svg', 'stop-btn-fill.svg'), ('stoplights-fill.svg', 'stoplights-fill.svg'), ('grid-3x2-gap-fill.svg', 'grid-3x2-gap-fill.svg'), ('cone-striped.svg', 'cone-striped.svg'), ('bullseye.svg', 'bullseye.svg'), ('calendar2-fill.svg', 'calendar2-fill.svg'), ('music-player-fill.svg', 'music-player-fill.svg'), ('hammer.svg', 'hammer.svg'), ('reception-4.svg', 'reception-4.svg'), ('percent.svg', 'percent.svg'), ('briefcase-fill.svg', 'briefcase-fill.svg'), ('bootstrap-reboot.svg', 'bootstrap-reboot.svg'), ('person-dash.svg', 'person-dash.svg'), ('bucket.svg', 'bucket.svg'), ('alarm-fill.svg', 'alarm-fill.svg'), ('grid-3x2-gap.svg', 'grid-3x2-gap.svg'), ('card-list.svg', 'card-list.svg'), ('arrow-90deg-down.svg', 'arrow-90deg-down.svg'), ('x.svg', 'x.svg'), ('chevron-down.svg', 'chevron-down.svg'), ('sort-alpha-up.svg', 'sort-alpha-up.svg'), ('caret-right-square-fill.svg', 'caret-right-square-fill.svg'), ('calendar3-range-fill.svg', 'calendar3-range-fill.svg'), ('app.svg', 'app.svg'), ('truck.svg', 'truck.svg'), ('file-earmark-medical-fill.svg', 'file-earmark-medical-fill.svg'), ('house.svg', 'house.svg'), ('calendar-minus-fill.svg', 'calendar-minus-fill.svg'), ('arrow-up-square-fill.svg', 'arrow-up-square-fill.svg'), ('grid-1x2.svg', 'grid-1x2.svg'), ('vr.svg', 'vr.svg'), ('calendar-range-fill.svg', 'calendar-range-fill.svg'), ('telephone-plus.svg', 'telephone-plus.svg'), ('wallet-fill.svg', 'wallet-fill.svg'), ('telephone-inbound-fill.svg', 'telephone-inbound-fill.svg'), ('arrow-90deg-left.svg', 'arrow-90deg-left.svg'), ('person-x.svg', 'person-x.svg'), ('front.svg', 'front.svg'), ('arrow-right-circle.svg', 'arrow-right-circle.svg'), ('pip.svg', 'pip.svg'), ('chat-quote.svg', 'chat-quote.svg'), ('layout-three-columns.svg', 'layout-three-columns.svg'), ('keyboard.svg', 'keyboard.svg'), ('dice-1.svg', 'dice-1.svg'), ('receipt-cutoff.svg', 'receipt-cutoff.svg'), ('kanban.svg', 'kanban.svg'), ('tablet-landscape-fill.svg', 'tablet-landscape-fill.svg'), ('code-square.svg', 'code-square.svg'), ('file-earmark-font.svg', 'file-earmark-font.svg'), ('tablet-fill.svg', 'tablet-fill.svg'), ('text-paragraph.svg', 'text-paragraph.svg'), ('inbox-fill.svg', 'inbox-fill.svg'), ('hdd-stack-fill.svg', 'hdd-stack-fill.svg'), ('sticky-fill.svg', 'sticky-fill.svg'), ('arrows-move.svg', 'arrows-move.svg'), ('arrows-angle-contract.svg', 'arrows-angle-contract.svg'), ('exclamation-octagon.svg', 'exclamation-octagon.svg'), ('hdd-rack.svg', 'hdd-rack.svg'), ('view-list.svg', 'view-list.svg'), ('youtube.svg', 'youtube.svg'), ('arrow-down-circle.svg', 'arrow-down-circle.svg'), ('file-earmark-minus.svg', 'file-earmark-minus.svg'), ('x-diamond-fill.svg', 'x-diamond-fill.svg'), ('cast.svg', 'cast.svg'), ('layout-text-sidebar.svg', 'layout-text-sidebar.svg'), ('sort-numeric-up-alt.svg', 'sort-numeric-up-alt.svg'), ('arrow-right-circle-fill.svg', 'arrow-right-circle-fill.svg'), ('badge-ad.svg', 'badge-ad.svg'), ('arrow-left-short.svg', 'arrow-left-short.svg'), ('clipboard-x.svg', 'clipboard-x.svg'), ('lightning.svg', 'lightning.svg'), ('plus.svg', 'plus.svg'), ('type-h2.svg', 'type-h2.svg'), ('caret-right-square.svg', 'caret-right-square.svg'), ('calendar3-range.svg', 'calendar3-range.svg'), ('person.svg', 'person.svg'), ('chat-left-text.svg', 'chat-left-text.svg'), ('menu-app.svg', 'menu-app.svg'), ('volume-down.svg', 'volume-down.svg'), ('circle.svg', 'circle.svg'), ('grid-3x3.svg', 'grid-3x3.svg'), ('cart-x-fill.svg', 'cart-x-fill.svg'), ('bag-fill.svg', 'bag-fill.svg'), ('emoji-smile.svg', 'emoji-smile.svg'), ('folder-plus.svg', 'folder-plus.svg'), ('tools.svg', 'tools.svg'), ('calendar4.svg', 'calendar4.svg'), ('sort-alpha-down.svg', 'sort-alpha-down.svg'), ('backspace-fill.svg', 'backspace-fill.svg'), ('plug.svg', 'plug.svg'), ('bar-chart-fill.svg', 'bar-chart-fill.svg'), ('list-check.svg', 'list-check.svg'), ('window.svg', 'window.svg'), ('aspect-ratio.svg', 'aspect-ratio.svg'), ('markdown-fill.svg', 'markdown-fill.svg'), ('journal-arrow-up.svg', 'journal-arrow-up.svg'), ('file-diff-fill.svg', 'file-diff-fill.svg'), ('clock-history.svg', 'clock-history.svg'), ('bookmark-star.svg', 'bookmark-star.svg'), ('cloud-fill.svg', 'cloud-fill.svg'), ('shield-fill-x.svg', 'shield-fill-x.svg'), ('eye.svg', 'eye.svg'), ('person-check-fill.svg', 'person-check-fill.svg'), ('skip-start.svg', 'skip-start.svg'), ('file-earmark-zip.svg', 'file-earmark-zip.svg'), ('chevron-compact-right.svg', 'chevron-compact-right.svg'), ('person-dash-fill.svg', 'person-dash-fill.svg'), ('sun.svg', 'sun.svg'), ('filter-circle-fill.svg', 'filter-circle-fill.svg'), ('pause-btn-fill.svg', 'pause-btn-fill.svg'), ('bag-check-fill.svg', 'bag-check-fill.svg'), ('arrow-counterclockwise.svg', 'arrow-counterclockwise.svg'), ('chevron-bar-contract.svg', 'chevron-bar-contract.svg'), ('hdd-fill.svg', 'hdd-fill.svg'), ('list-nested.svg', 'list-nested.svg'), ('chevron-bar-right.svg', 'chevron-bar-right.svg'), ('arrow-return-left.svg', 'arrow-return-left.svg'), ('file-music-fill.svg', 'file-music-fill.svg'), ('shop-window.svg', 'shop-window.svg'), ('justify-right.svg', 'justify-right.svg'), ('exclude.svg', 'exclude.svg'), ('shield-exclamation.svg', 'shield-exclamation.svg'), ('arrow-right-square-fill.svg', 'arrow-right-square-fill.svg'), ('check-square.svg', 'check-square.svg'), ('question-circle-fill.svg', 'question-circle-fill.svg'), ('geo-fill.svg', 'geo-fill.svg'), ('credit-card-fill.svg', 'credit-card-fill.svg'), ('grid-3x2.svg', 'grid-3x2.svg'), ('share-fill.svg', 'share-fill.svg'), ('brush.svg', 'brush.svg'), ('diagram-2-fill.svg', 'diagram-2-fill.svg'), ('ladder.svg', 'ladder.svg'), ('grip-vertical.svg', 'grip-vertical.svg'), ('speaker.svg', 'speaker.svg'), ('arrow-left-circle-fill.svg', 'arrow-left-circle-fill.svg'), ('speaker-fill.svg', 'speaker-fill.svg'), ('filter-circle.svg', 'filter-circle.svg'), ('brightness-alt-high.svg', 'brightness-alt-high.svg'), ('earbuds.svg', 'earbuds.svg'), ('shield-fill.svg', 'shield-fill.svg'), ('shield-fill-plus.svg', 'shield-fill-plus.svg'), ('list-ol.svg', 'list-ol.svg'), ('gear-wide-connected.svg', 'gear-wide-connected.svg'), ('dice-2-fill.svg', 'dice-2-fill.svg'), ('display.svg', 'display.svg'), ('exclamation-diamond.svg', 'exclamation-diamond.svg'), ('eye-slash.svg', 'eye-slash.svg'), ('journals.svg', 'journals.svg'), ('arrow-up-left-square-fill.svg', 'arrow-up-left-square-fill.svg'), ('arrow-left.svg', 'arrow-left.svg'), ('skip-backward.svg', 'skip-backward.svg'), ('bootstrap-fill.svg', 'bootstrap-fill.svg'), ('file-zip-fill.svg', 'file-zip-fill.svg'), ('diamond-half.svg', 'diamond-half.svg'), ('telephone-inbound.svg', 'telephone-inbound.svg'), ('file-earmark-break.svg', 'file-earmark-break.svg'), ('file-post-fill.svg', 'file-post-fill.svg'), ('shield.svg', 'shield.svg'), ('linkedin.svg', 'linkedin.svg'), ('dice-4-fill.svg', 'dice-4-fill.svg'), ('arrow-return-right.svg', 'arrow-return-right.svg'), ('backspace-reverse-fill.svg', 'backspace-reverse-fill.svg'), ('gift.svg', 'gift.svg'), ('trash2-fill.svg', 'trash2-fill.svg'), ('brightness-high-fill.svg', 'brightness-high-fill.svg'), ('arrow-left-circle.svg', 'arrow-left-circle.svg'), ('exclamation.svg', 'exclamation.svg'), ('star-fill.svg', 'star-fill.svg'), ('question-square-fill.svg', 'question-square-fill.svg'), ('emoji-smile-fill.svg', 'emoji-smile-fill.svg'), ('chat-left-text-fill.svg', 'chat-left-text-fill.svg'), ('wallet.svg', 'wallet.svg'), ('menu-button-fill.svg', 'menu-button-fill.svg'), ('map-fill.svg', 'map-fill.svg'), ('dice-1-fill.svg', 'dice-1-fill.svg'), ('emoji-angry.svg', 'emoji-angry.svg'), ('journal-minus.svg', 'journal-minus.svg'), ('card-image.svg', 'card-image.svg'), ('arrow-90deg-right.svg', 'arrow-90deg-right.svg'), ('sliders.svg', 'sliders.svg'), ('box-arrow-in-down-right.svg', 'box-arrow-in-down-right.svg'), ('fonts.svg', 'fonts.svg'), ('exclamation-circle.svg', 'exclamation-circle.svg'), ('file-earmark-play-fill.svg', 'file-earmark-play-fill.svg'), ('cloud-arrow-down.svg', 'cloud-arrow-down.svg'), ('file-ppt-fill.svg', 'file-ppt-fill.svg'), ('emoji-wink.svg', 'emoji-wink.svg'), ('calendar4-event.svg', 'calendar4-event.svg'), ('collection-play.svg', 'collection-play.svg'), ('pentagon-fill.svg', 'pentagon-fill.svg'), ('file-earmark-plus.svg', 'file-earmark-plus.svg'), ('journal-album.svg', 'journal-album.svg'), ('paperclip.svg', 'paperclip.svg'), ('sort-up.svg', 'sort-up.svg'), ('file-lock.svg', 'file-lock.svg'), ('file-earmark-break-fill.svg', 'file-earmark-break-fill.svg'), ('patch-check.svg', 'patch-check.svg'), ('file-fill.svg', 'file-fill.svg'), ('shield-fill-exclamation.svg', 'shield-fill-exclamation.svg'), ('journal-plus.svg', 'journal-plus.svg'), ('question-square.svg', 'question-square.svg'), ('printer-fill.svg', 'printer-fill.svg'), ('file-break.svg', 'file-break.svg'), ('egg-fried.svg', 'egg-fried.svg'), ('camera-video-off.svg', 'camera-video-off.svg'), ('layout-sidebar-inset.svg', 'layout-sidebar-inset.svg'), ('stoplights.svg', 'stoplights.svg'), ('basket2-fill.svg', 'basket2-fill.svg'), ('toggle2-off.svg', 'toggle2-off.svg'), ('emoji-frown.svg', 'emoji-frown.svg'), ('grid.svg', 'grid.svg'), ('tag-fill.svg', 'tag-fill.svg'), ('folder-x.svg', 'folder-x.svg'), ('skip-end-fill.svg', 'skip-end-fill.svg'), ('heptagon-fill.svg', 'heptagon-fill.svg'), ('bug-fill.svg', 'bug-fill.svg'), ('signpost.svg', 'signpost.svg'), ('caret-left-square-fill.svg', 'caret-left-square-fill.svg'), ('sticky.svg', 'sticky.svg'), ('emoji-angry-fill.svg', 'emoji-angry-fill.svg'), ('calendar2-x.svg', 'calendar2-x.svg'), ('file-code.svg', 'file-code.svg'), ('file-earmark-code.svg', 'file-earmark-code.svg'), ('chevron-compact-down.svg', 'chevron-compact-down.svg'), ('arrow-bar-down.svg', 'arrow-bar-down.svg'), ('keyboard-fill.svg', 'keyboard-fill.svg'), ('file-earmark-font-fill.svg', 'file-earmark-font-fill.svg'), ('suit-heart.svg', 'suit-heart.svg'), ('telephone-fill.svg', 'telephone-fill.svg'), ('skip-start-btn-fill.svg', 'skip-start-btn-fill.svg'), ('inbox.svg', 'inbox.svg'), ('bag.svg', 'bag.svg'), ('skip-end.svg', 'skip-end.svg'), ('arrow-up-short.svg', 'arrow-up-short.svg'), ('filter-square-fill.svg', 'filter-square-fill.svg'), ('camera-reels-fill.svg', 'camera-reels-fill.svg'), ('hand-thumbs-up.svg', 'hand-thumbs-up.svg'), ('vinyl-fill.svg', 'vinyl-fill.svg'), ('file-earmark-lock2-fill.svg', 'file-earmark-lock2-fill.svg'), ('play-fill.svg', 'play-fill.svg'), ('truck-flatbed.svg', 'truck-flatbed.svg'), ('chat-left-fill.svg', 'chat-left-fill.svg'), ('scissors.svg', 'scissors.svg'), ('volume-mute-fill.svg', 'volume-mute-fill.svg'), ('pip-fill.svg', 'pip-fill.svg'), ('folder2.svg', 'folder2.svg'), ('telephone-outbound.svg', 'telephone-outbound.svg'), ('arrow-90deg-up.svg', 'arrow-90deg-up.svg'), ('file-earmark-post.svg', 'file-earmark-post.svg'), ('file-earmark-arrow-up.svg', 'file-earmark-arrow-up.svg'), ('arrow-down-right-circle.svg', 'arrow-down-right-circle.svg'), ('text-indent-right.svg', 'text-indent-right.svg'), ('file-easel.svg', 'file-easel.svg'), ('capslock.svg', 'capslock.svg'), ('octagon-half.svg', 'octagon-half.svg'), ('camera-video-off-fill.svg', 'camera-video-off-fill.svg'), ('caret-right.svg', 'caret-right.svg'), ('file-earmark-person-fill.svg', 'file-earmark-person-fill.svg'), ('patch-exclamation-fll.svg', 'patch-exclamation-fll.svg'), ('file-earmark-ppt.svg', 'file-earmark-ppt.svg'), ('battery.svg', 'battery.svg'), ('nut-fill.svg', 'nut-fill.svg'), ('trash.svg', 'trash.svg'), ('textarea-t.svg', 'textarea-t.svg'), ('bootstrap.svg', 'bootstrap.svg'), ('segmented-nav.svg', 'segmented-nav.svg'), ('file-earmark-spreadsheet-fill.svg', 'file-earmark-spreadsheet-fill.svg'), ('moon.svg', 'moon.svg'), ('caret-down-fill.svg', 'caret-down-fill.svg'), ('skip-forward-circle.svg', 'skip-forward-circle.svg'), ('grip-horizontal.svg', 'grip-horizontal.svg'), ('award.svg', 'award.svg'), ('signpost-2-fill.svg', 'signpost-2-fill.svg'), ('dot.svg', 'dot.svg'), ('file-slides-fill.svg', 'file-slides-fill.svg'), ('caret-down-square.svg', 'caret-down-square.svg'), ('plug-fill.svg', 'plug-fill.svg'), ('gear-wide.svg', 'gear-wide.svg'), ('music-note-list.svg', 'music-note-list.svg'), ('file-earmark-lock.svg', 'file-earmark-lock.svg'), ('file-ppt.svg', 'file-ppt.svg'), ('bookmark-heart-fill.svg', 'bookmark-heart-fill.svg'), ('basket3-fill.svg', 'basket3-fill.svg'), ('file-spreadsheet.svg', 'file-spreadsheet.svg'), ('box-arrow-in-down-left.svg', 'box-arrow-in-down-left.svg'), ('plus-square.svg', 'plus-square.svg'), ('file-earmark-binary.svg', 'file-earmark-binary.svg'), ('info-circle-fill.svg', 'info-circle-fill.svg'), ('cloud-upload-fill.svg', 'cloud-upload-fill.svg'), ('calendar2-check.svg', 'calendar2-check.svg'), ('arrow-right-square.svg', 'arrow-right-square.svg'), ('file-earmark-ppt-fill.svg', 'file-earmark-ppt-fill.svg'), ('emoji-neutral.svg', 'emoji-neutral.svg'), ('cart-fill.svg', 'cart-fill.svg'), ('info-circle.svg', 'info-circle.svg'), ('hourglass-top.svg', 'hourglass-top.svg'), ('file-excel.svg', 'file-excel.svg'), ('chevron-up.svg', 'chevron-up.svg'), ('patch-exclamation.svg', 'patch-exclamation.svg'), ('menu-up.svg', 'menu-up.svg'), ('heptagon-half.svg', 'heptagon-half.svg'), ('dash.svg', 'dash.svg'), ('dice-3.svg', 'dice-3.svg'), ('sort-numeric-down.svg', 'sort-numeric-down.svg'), ('volume-up.svg', 'volume-up.svg'), ('slash-circle.svg', 'slash-circle.svg'), ('lightning-fill.svg', 'lightning-fill.svg'), ('pause.svg', 'pause.svg'), ('calendar2-month.svg', 'calendar2-month.svg'), ('pen-fill.svg', 'pen-fill.svg'), ('hr.svg', 'hr.svg'), ('exclamation-octagon-fill.svg', 'exclamation-octagon-fill.svg'), ('file-minus.svg', 'file-minus.svg'), ('eject-fill.svg', 'eject-fill.svg'), ('file-x-fill.svg', 'file-x-fill.svg'), ('camera-video-fill.svg', 'camera-video-fill.svg'), ('border-width.svg', 'border-width.svg'), ('calendar-minus.svg', 'calendar-minus.svg'), ('mailbox.svg', 'mailbox.svg'), ('chat-dots-fill.svg', 'chat-dots-fill.svg'), ('cart-check-fill.svg', 'cart-check-fill.svg'), ('menu-down.svg', 'menu-down.svg'), ('tv.svg', 'tv.svg'), ('house-fill.svg', 'house-fill.svg'), ('calendar2-week.svg', 'calendar2-week.svg'), ('type-h3.svg', 'type-h3.svg'), ('door-open-fill.svg', 'door-open-fill.svg'), ('play-circle-fill.svg', 'play-circle-fill.svg'), ('calendar2-minus-fill.svg', 'calendar2-minus-fill.svg'), ('chevron-contract.svg', 'chevron-contract.svg'), ('file-minus-fill.svg', 'file-minus-fill.svg'), ('bookmark-check.svg', 'bookmark-check.svg'), ('zoom-out.svg', 'zoom-out.svg'), ('bookmark-x-fill.svg', 'bookmark-x-fill.svg'), ('arrow-down-short.svg', 'arrow-down-short.svg'), ('file-person.svg', 'file-person.svg'), ('file-earmark-x.svg', 'file-earmark-x.svg'), ('octagon.svg', 'octagon.svg'), ('screwdriver.svg', 'screwdriver.svg'), ('credit-card.svg', 'credit-card.svg'), ('telephone-outbound-fill.svg', 'telephone-outbound-fill.svg'), ('file-earmark-post-fill.svg', 'file-earmark-post-fill.svg'), ('chat-fill.svg', 'chat-fill.svg'), ('exclamation-circle-fill.svg', 'exclamation-circle-fill.svg'), ('calendar2-event.svg', 'calendar2-event.svg'), ('geo.svg', 'geo.svg'), ('play-btn-fill.svg', 'play-btn-fill.svg'), ('skip-forward-btn-fill.svg', 'skip-forward-btn-fill.svg'), ('dash-circle.svg', 'dash-circle.svg'), ('file-binary-fill.svg', 'file-binary-fill.svg'), ('calendar2.svg', 'calendar2.svg'), ('filter.svg', 'filter.svg'), ('wifi.svg', 'wifi.svg'), ('cloud-arrow-up.svg', 'cloud-arrow-up.svg'), ('file-earmark-bar-graph-fill.svg', 'file-earmark-bar-graph-fill.svg'), ('hdd-network.svg', 'hdd-network.svg'), ('telephone-minus-fill.svg', 'telephone-minus-fill.svg'), ('file-earmark-excel.svg', 'file-earmark-excel.svg'), ('volume-down-fill.svg', 'volume-down-fill.svg'), ('power.svg', 'power.svg'), ('droplet.svg', 'droplet.svg'), ('layout-split.svg', 'layout-split.svg'), ('arrows-fullscreen.svg', 'arrows-fullscreen.svg'), ('dice-5-fill.svg', 'dice-5-fill.svg'), ('file-font.svg', 'file-font.svg'), ('file-music.svg', 'file-music.svg'), ('cloud-download-fill.svg', 'cloud-download-fill.svg'), ('cup-fill.svg', 'cup-fill.svg'), ('cash-stack.svg', 'cash-stack.svg'), ('box-arrow-in-down.svg', 'box-arrow-in-down.svg'), ('globe2.svg', 'globe2.svg'), ('google.svg', 'google.svg'), ('skip-forward.svg', 'skip-forward.svg'), ('file-earmark-slides-fill.svg', 'file-earmark-slides-fill.svg'), ('record-fill.svg', 'record-fill.svg'), ('file-ruled-fill.svg', 'file-ruled-fill.svg'), ('facebook.svg', 'facebook.svg'), ('box-arrow-in-up.svg', 'box-arrow-in-up.svg'), ('list-task.svg', 'list-task.svg'), ('diagram-3-fill.svg', 'diagram-3-fill.svg'), ('folder2-open.svg', 'folder2-open.svg'), ('folder-minus.svg', 'folder-minus.svg'), ('journal-bookmark.svg', 'journal-bookmark.svg'), ('calendar2-plus-fill.svg', 'calendar2-plus-fill.svg'), ('calendar2-plus.svg', 'calendar2-plus.svg'), ('unlock.svg', 'unlock.svg'), ('music-note-beamed.svg', 'music-note-beamed.svg'), ('arrow-down.svg', 'arrow-down.svg'), ('calendar-day-fill.svg', 'calendar-day-fill.svg'), ('arrow-down-square-fill.svg', 'arrow-down-square-fill.svg'), ('bookmark-dash-fill.svg', 'bookmark-dash-fill.svg'), ('mic-mute-fill.svg', 'mic-mute-fill.svg'), ('sunglasses.svg', 'sunglasses.svg'), ('suit-diamond.svg', 'suit-diamond.svg'), ('gear-fill.svg', 'gear-fill.svg'), ('pencil.svg', 'pencil.svg'), ('chat-text.svg', 'chat-text.svg'), ('cart-dash-fill.svg', 'cart-dash-fill.svg'), ('stop-circle-fill.svg', 'stop-circle-fill.svg'), ('battery-charging.svg', 'battery-charging.svg'), ('wifi-off.svg', 'wifi-off.svg'), ('tag.svg', 'tag.svg'), ('credit-card-2-back-fill.svg', 'credit-card-2-back-fill.svg'), ('chat-right-text.svg', 'chat-right-text.svg'), ('file-binary.svg', 'file-binary.svg'), ('puzzle-fill.svg', 'puzzle-fill.svg'), ('chat-right-quote-fill.svg', 'chat-right-quote-fill.svg'), ('arrow-down-right-circle-fill.svg', 'arrow-down-right-circle-fill.svg'), ('x-octagon-fill.svg', 'x-octagon-fill.svg'), ('download.svg', 'download.svg'), ('layout-sidebar-reverse.svg', 'layout-sidebar-reverse.svg'), ('bezier2.svg', 'bezier2.svg'), ('camera-reels.svg', 'camera-reels.svg'), ('calendar-month.svg', 'calendar-month.svg'), ('sim.svg', 'sim.svg'), ('globe.svg', 'globe.svg'), ('dash-square-fill.svg', 'dash-square-fill.svg'), ('binoculars.svg', 'binoculars.svg'), ('telephone.svg', 'telephone.svg'), ('stopwatch-fill.svg', 'stopwatch-fill.svg'), ('telephone-x-fill.svg', 'telephone-x-fill.svg'), ('tags.svg', 'tags.svg'), ('arrows-expand.svg', 'arrows-expand.svg'), ('trash-fill.svg', 'trash-fill.svg'), ('shield-slash-fill.svg', 'shield-slash-fill.svg'), ('cpu.svg', 'cpu.svg'), ('shield-shaded.svg', 'shield-shaded.svg'), ('file-earmark-check-fill.svg', 'file-earmark-check-fill.svg'), ('image-alt.svg', 'image-alt.svg'), ('paragraph.svg', 'paragraph.svg'), ('caret-up-square.svg', 'caret-up-square.svg'), ('node-plus.svg', 'node-plus.svg'), ('badge-ad-fill.svg', 'badge-ad-fill.svg'), ('skip-start-circle.svg', 'skip-start-circle.svg'), ('skip-forward-btn.svg', 'skip-forward-btn.svg'), ('record-btn-fill.svg', 'record-btn-fill.svg'), ('cart4.svg', 'cart4.svg'), ('check2.svg', 'check2.svg'), ('droplet-fill.svg', 'droplet-fill.svg'), ('file-lock-fill.svg', 'file-lock-fill.svg'), ('bug.svg', 'bug.svg'), ('align-top.svg', 'align-top.svg'), ('check2-square.svg', 'check2-square.svg'), ('film.svg', 'film.svg'), ('distribute-vertical.svg', 'distribute-vertical.svg'), ('bag-dash-fill.svg', 'bag-dash-fill.svg'), ('arrow-repeat.svg', 'arrow-repeat.svg'), ('person-x-fill.svg', 'person-x-fill.svg'), ('app-indicator.svg', 'app-indicator.svg'), ('chat-right-text-fill.svg', 'chat-right-text-fill.svg'), ('question-octagon.svg', 'question-octagon.svg'), ('camera.svg', 'camera.svg'), ('box-arrow-down-left.svg', 'box-arrow-down-left.svg'), ('upc-scan.svg', 'upc-scan.svg'), ('alarm.svg', 'alarm.svg'), ('mic-fill.svg', 'mic-fill.svg'), ('file-earmark-word-fill.svg', 'file-earmark-word-fill.svg'), ('type-underline.svg', 'type-underline.svg'), ('github.svg', 'github.svg'), ('node-minus.svg', 'node-minus.svg'), ('telephone-forward.svg', 'telephone-forward.svg'), ('union.svg', 'union.svg'), ('stickies-fill.svg', 'stickies-fill.svg'), ('file-earmark-fill.svg', 'file-earmark-fill.svg'), ('shield-slash.svg', 'shield-slash.svg'), ('arrow-up-left-circle-fill.svg', 'arrow-up-left-circle-fill.svg'), ('brightness-low.svg', 'brightness-low.svg'), ('backspace.svg', 'backspace.svg'), ('file-earmark-lock2.svg', 'file-earmark-lock2.svg'), ('file-earmark-music.svg', 'file-earmark-music.svg'), ('eject.svg', 'eject.svg'), ('skip-end-circle-fill.svg', 'skip-end-circle-fill.svg'), ('terminal-fill.svg', 'terminal-fill.svg'), ('caret-right-fill.svg', 'caret-right-fill.svg'), ('grid-3x3-gap-fill.svg', 'grid-3x3-gap-fill.svg'), ('check-circle.svg', 'check-circle.svg'), ('dash-circle-fill.svg', 'dash-circle-fill.svg'), ('arrow-down-left-square.svg', 'arrow-down-left-square.svg'), ('signpost-2.svg', 'signpost-2.svg'), ('file-earmark-bar-graph.svg', 'file-earmark-bar-graph.svg'), ('file-earmark.svg', 'file-earmark.svg'), ('card-checklist.svg', 'card-checklist.svg'), ('clipboard.svg', 'clipboard.svg'), ('journal-richtext.svg', 'journal-richtext.svg'), ('brightness-alt-high-fill.svg', 'brightness-alt-high-fill.svg'), ('skip-end-btn.svg', 'skip-end-btn.svg'), ('brush-fill.svg', 'brush-fill.svg'), ('bag-dash.svg', 'bag-dash.svg'), ('cart-dash.svg', 'cart-dash.svg'), ('badge-8k-fill.svg', 'badge-8k-fill.svg'), ('brightness-alt-low.svg', 'brightness-alt-low.svg'), ('menu-button.svg', 'menu-button.svg'), ('cloud-check.svg', 'cloud-check.svg'), ('emoji-laughing.svg', 'emoji-laughing.svg'), ('arrow-clockwise.svg', 'arrow-clockwise.svg'), ('file-earmark-diff.svg', 'file-earmark-diff.svg'), ('cart.svg', 'cart.svg'), ('file-ruled.svg', 'file-ruled.svg'), ('cursor-text.svg', 'cursor-text.svg'), ('funnel-fill.svg', 'funnel-fill.svg'), ('patch-plus-fll.svg', 'patch-plus-fll.svg'), ('chevron-bar-left.svg', 'chevron-bar-left.svg'), ('skip-backward-btn-fill.svg', 'skip-backward-btn-fill.svg'), ('diagram-3.svg', 'diagram-3.svg'), ('basket-fill.svg', 'basket-fill.svg'), ('clipboard-minus.svg', 'clipboard-minus.svg'), ('question-octagon-fill.svg', 'question-octagon-fill.svg'), ('collection-play-fill.svg', 'collection-play-fill.svg'), ('image.svg', 'image.svg'), ('file-plus-fill.svg', 'file-plus-fill.svg'), ('pause-circle-fill.svg', 'pause-circle-fill.svg'), ('journal-arrow-down.svg', 'journal-arrow-down.svg'), ('align-middle.svg', 'align-middle.svg'), ('archive-fill.svg', 'archive-fill.svg'), ('joystick.svg', 'joystick.svg'), ('calendar-event-fill.svg', 'calendar-event-fill.svg'), ('journal.svg', 'journal.svg'), ('badge-cc-fill.svg', 'badge-cc-fill.svg'), ('caret-down.svg', 'caret-down.svg'), ('x-square.svg', 'x-square.svg'), ('bounding-box-circles.svg', 'bounding-box-circles.svg'), ('book-fill.svg', 'book-fill.svg'), ('type-bold.svg', 'type-bold.svg'), ('bookmark-dash.svg', 'bookmark-dash.svg'), ('arrow-up-right-circle-fill.svg', 'arrow-up-right-circle-fill.svg'), ('badge-vo-fill.svg', 'badge-vo-fill.svg'), ('cloud-arrow-up-fill.svg', 'cloud-arrow-up-fill.svg')], max_length=100, verbose_name='ícono'),16 ),17 migrations.AlterField(18 model_name='module',19 name='url_name',20 field=models.CharField(max_length=256, unique=True),21 ),...

Full Screen

Full Screen

0003_auto_20210110_1957.py

Source:0003_auto_20210110_1957.py Github

copy

Full Screen

1# Generated by Django 3.1.4 on 2021-01-10 19:572from django.db import migrations, models3class Migration(migrations.Migration):4 dependencies = [5 ('module', '0002_auto_20210108_1807'),6 ]7 operations = [8 migrations.AlterField(9 model_name='module',10 name='icon_name',11 field=models.CharField(blank=True, choices=[('alarm-fill.svg', 'alarm-fill.svg'), ('alarm.svg', 'alarm.svg'), ('align-bottom.svg', 'align-bottom.svg'), ('align-center.svg', 'align-center.svg'), ('align-end.svg', 'align-end.svg'), ('align-middle.svg', 'align-middle.svg'), ('align-start.svg', 'align-start.svg'), ('align-top.svg', 'align-top.svg'), ('alt.svg', 'alt.svg'), ('app-indicator.svg', 'app-indicator.svg'), ('app.svg', 'app.svg'), ('archive-fill.svg', 'archive-fill.svg'), ('archive.svg', 'archive.svg'), ('arrow-90deg-down.svg', 'arrow-90deg-down.svg'), ('arrow-90deg-left.svg', 'arrow-90deg-left.svg'), ('arrow-90deg-right.svg', 'arrow-90deg-right.svg'), ('arrow-90deg-up.svg', 'arrow-90deg-up.svg'), ('arrow-bar-down.svg', 'arrow-bar-down.svg'), ('arrow-bar-left.svg', 'arrow-bar-left.svg'), ('arrow-bar-right.svg', 'arrow-bar-right.svg'), ('arrow-bar-up.svg', 'arrow-bar-up.svg'), ('arrow-clockwise.svg', 'arrow-clockwise.svg'), ('arrow-counterclockwise.svg', 'arrow-counterclockwise.svg'), ('arrow-down-circle-fill.svg', 'arrow-down-circle-fill.svg'), ('arrow-down-circle.svg', 'arrow-down-circle.svg'), ('arrow-down-left-circle-fill.svg', 'arrow-down-left-circle-fill.svg'), ('arrow-down-left-circle.svg', 'arrow-down-left-circle.svg'), ('arrow-down-left-square-fill.svg', 'arrow-down-left-square-fill.svg'), ('arrow-down-left-square.svg', 'arrow-down-left-square.svg'), ('arrow-down-left.svg', 'arrow-down-left.svg'), ('arrow-down-right-circle-fill.svg', 'arrow-down-right-circle-fill.svg'), ('arrow-down-right-circle.svg', 'arrow-down-right-circle.svg'), ('arrow-down-right-square-fill.svg', 'arrow-down-right-square-fill.svg'), ('arrow-down-right-square.svg', 'arrow-down-right-square.svg'), ('arrow-down-right.svg', 'arrow-down-right.svg'), ('arrow-down-short.svg', 'arrow-down-short.svg'), ('arrow-down-square-fill.svg', 'arrow-down-square-fill.svg'), ('arrow-down-square.svg', 'arrow-down-square.svg'), ('arrow-down-up.svg', 'arrow-down-up.svg'), ('arrow-down.svg', 'arrow-down.svg'), ('arrow-left-circle-fill.svg', 'arrow-left-circle-fill.svg'), ('arrow-left-circle.svg', 'arrow-left-circle.svg'), ('arrow-left-right.svg', 'arrow-left-right.svg'), ('arrow-left-short.svg', 'arrow-left-short.svg'), ('arrow-left-square-fill.svg', 'arrow-left-square-fill.svg'), ('arrow-left-square.svg', 'arrow-left-square.svg'), ('arrow-left.svg', 'arrow-left.svg'), ('arrow-repeat.svg', 'arrow-repeat.svg'), ('arrow-return-left.svg', 'arrow-return-left.svg'), ('arrow-return-right.svg', 'arrow-return-right.svg'), ('arrow-right-circle-fill.svg', 'arrow-right-circle-fill.svg'), ('arrow-right-circle.svg', 'arrow-right-circle.svg'), ('arrow-right-short.svg', 'arrow-right-short.svg'), ('arrow-right-square-fill.svg', 'arrow-right-square-fill.svg'), ('arrow-right-square.svg', 'arrow-right-square.svg'), ('arrow-right.svg', 'arrow-right.svg'), ('arrow-up-circle-fill.svg', 'arrow-up-circle-fill.svg'), ('arrow-up-circle.svg', 'arrow-up-circle.svg'), ('arrow-up-down.svg', 'arrow-up-down.svg'), ('arrow-up-left-circle-fill.svg', 'arrow-up-left-circle-fill.svg'), ('arrow-up-left-circle.svg', 'arrow-up-left-circle.svg'), ('arrow-up-left-square-fill.svg', 'arrow-up-left-square-fill.svg'), ('arrow-up-left-square.svg', 'arrow-up-left-square.svg'), ('arrow-up-left.svg', 'arrow-up-left.svg'), ('arrow-up-right-circle-fill.svg', 'arrow-up-right-circle-fill.svg'), ('arrow-up-right-circle.svg', 'arrow-up-right-circle.svg'), ('arrow-up-right-square-fill.svg', 'arrow-up-right-square-fill.svg'), ('arrow-up-right-square.svg', 'arrow-up-right-square.svg'), ('arrow-up-right.svg', 'arrow-up-right.svg'), ('arrow-up-short.svg', 'arrow-up-short.svg'), ('arrow-up-square-fill.svg', 'arrow-up-square-fill.svg'), ('arrow-up-square.svg', 'arrow-up-square.svg'), ('arrow-up.svg', 'arrow-up.svg'), ('arrows-angle-contract.svg', 'arrows-angle-contract.svg'), ('arrows-angle-expand.svg', 'arrows-angle-expand.svg'), ('arrows-collapse.svg', 'arrows-collapse.svg'), ('arrows-expand.svg', 'arrows-expand.svg'), ('arrows-fullscreen.svg', 'arrows-fullscreen.svg'), ('arrows-move.svg', 'arrows-move.svg'), ('aspect-ratio-fill.svg', 'aspect-ratio-fill.svg'), ('aspect-ratio.svg', 'aspect-ratio.svg'), ('asterisk.svg', 'asterisk.svg'), ('at.svg', 'at.svg'), ('award-fill.svg', 'award-fill.svg'), ('award.svg', 'award.svg'), ('back.svg', 'back.svg'), ('backspace-fill.svg', 'backspace-fill.svg'), ('backspace-reverse-fill.svg', 'backspace-reverse-fill.svg'), ('backspace-reverse.svg', 'backspace-reverse.svg'), ('backspace.svg', 'backspace.svg'), ('badge-4k-fill.svg', 'badge-4k-fill.svg'), ('badge-4k.svg', 'badge-4k.svg'), ('badge-8k-fill.svg', 'badge-8k-fill.svg'), ('badge-8k.svg', 'badge-8k.svg'), ('badge-ad-fill.svg', 'badge-ad-fill.svg'), ('badge-ad.svg', 'badge-ad.svg'), ('badge-cc-fill.svg', 'badge-cc-fill.svg'), ('badge-cc.svg', 'badge-cc.svg'), ('badge-hd-fill.svg', 'badge-hd-fill.svg'), ('badge-hd.svg', 'badge-hd.svg'), ('badge-tm-fill.svg', 'badge-tm-fill.svg'), ('badge-tm.svg', 'badge-tm.svg'), ('badge-vo-fill.svg', 'badge-vo-fill.svg'), ('badge-vo.svg', 'badge-vo.svg'), ('bag-check-fill.svg', 'bag-check-fill.svg'), ('bag-check.svg', 'bag-check.svg'), ('bag-dash-fill.svg', 'bag-dash-fill.svg'), ('bag-dash.svg', 'bag-dash.svg'), ('bag-fill.svg', 'bag-fill.svg'), ('bag-plus-fill.svg', 'bag-plus-fill.svg'), ('bag-plus.svg', 'bag-plus.svg'), ('bag-x-fill.svg', 'bag-x-fill.svg'), ('bag-x.svg', 'bag-x.svg'), ('bag.svg', 'bag.svg'), ('bar-chart-fill.svg', 'bar-chart-fill.svg'), ('bar-chart-line-fill.svg', 'bar-chart-line-fill.svg'), ('bar-chart-line.svg', 'bar-chart-line.svg'), ('bar-chart-steps.svg', 'bar-chart-steps.svg'), ('bar-chart.svg', 'bar-chart.svg'), ('basket-fill.svg', 'basket-fill.svg'), ('basket.svg', 'basket.svg'), ('basket2-fill.svg', 'basket2-fill.svg'), ('basket2.svg', 'basket2.svg'), ('basket3-fill.svg', 'basket3-fill.svg'), ('basket3.svg', 'basket3.svg'), ('battery-charging.svg', 'battery-charging.svg'), ('battery-full.svg', 'battery-full.svg'), ('battery-half.svg', 'battery-half.svg'), ('battery.svg', 'battery.svg'), ('bell-fill.svg', 'bell-fill.svg'), ('bell.svg', 'bell.svg'), ('bezier.svg', 'bezier.svg'), ('bezier2.svg', 'bezier2.svg'), ('bicycle.svg', 'bicycle.svg'), ('binoculars-fill.svg', 'binoculars-fill.svg'), ('binoculars.svg', 'binoculars.svg'), ('blockquote-left.svg', 'blockquote-left.svg'), ('blockquote-right.svg', 'blockquote-right.svg'), ('book-fill.svg', 'book-fill.svg'), ('book-half.svg', 'book-half.svg'), ('book.svg', 'book.svg'), ('bookmark-check-fill.svg', 'bookmark-check-fill.svg'), ('bookmark-check.svg', 'bookmark-check.svg'), ('bookmark-dash-fill.svg', 'bookmark-dash-fill.svg'), ('bookmark-dash.svg', 'bookmark-dash.svg'), ('bookmark-fill.svg', 'bookmark-fill.svg'), ('bookmark-heart-fill.svg', 'bookmark-heart-fill.svg'), ('bookmark-heart.svg', 'bookmark-heart.svg'), ('bookmark-plus-fill.svg', 'bookmark-plus-fill.svg'), ('bookmark-plus.svg', 'bookmark-plus.svg'), ('bookmark-star-fill.svg', 'bookmark-star-fill.svg'), ('bookmark-star.svg', 'bookmark-star.svg'), ('bookmark-x-fill.svg', 'bookmark-x-fill.svg'), ('bookmark-x.svg', 'bookmark-x.svg'), ('bookmark.svg', 'bookmark.svg'), ('bookmarks-fill.svg', 'bookmarks-fill.svg'), ('bookmarks.svg', 'bookmarks.svg'), ('bookshelf.svg', 'bookshelf.svg'), ('bootstrap-fill.svg', 'bootstrap-fill.svg'), ('bootstrap-icons.svg', 'bootstrap-icons.svg'), ('bootstrap-reboot.svg', 'bootstrap-reboot.svg'), ('bootstrap.svg', 'bootstrap.svg'), ('border-style.svg', 'border-style.svg'), ('border-width.svg', 'border-width.svg'), ('bounding-box-circles.svg', 'bounding-box-circles.svg'), ('bounding-box.svg', 'bounding-box.svg'), ('box-arrow-down-left.svg', 'box-arrow-down-left.svg'), ('box-arrow-down-right.svg', 'box-arrow-down-right.svg'), ('box-arrow-down.svg', 'box-arrow-down.svg'), ('box-arrow-in-down-left.svg', 'box-arrow-in-down-left.svg'), ('box-arrow-in-down-right.svg', 'box-arrow-in-down-right.svg'), ('box-arrow-in-down.svg', 'box-arrow-in-down.svg'), ('box-arrow-in-left.svg', 'box-arrow-in-left.svg'), ('box-arrow-in-right.svg', 'box-arrow-in-right.svg'), ('box-arrow-in-up-left.svg', 'box-arrow-in-up-left.svg'), ('box-arrow-in-up-right.svg', 'box-arrow-in-up-right.svg'), ('box-arrow-in-up.svg', 'box-arrow-in-up.svg'), ('box-arrow-left.svg', 'box-arrow-left.svg'), ('box-arrow-right.svg', 'box-arrow-right.svg'), ('box-arrow-up-left.svg', 'box-arrow-up-left.svg'), ('box-arrow-up-right.svg', 'box-arrow-up-right.svg'), ('box-arrow-up.svg', 'box-arrow-up.svg'), ('box-seam.svg', 'box-seam.svg'), ('box.svg', 'box.svg'), ('braces.svg', 'braces.svg'), ('bricks.svg', 'bricks.svg'), ('briefcase-fill.svg', 'briefcase-fill.svg'), ('briefcase.svg', 'briefcase.svg'), ('brightness-alt-high-fill.svg', 'brightness-alt-high-fill.svg'), ('brightness-alt-high.svg', 'brightness-alt-high.svg'), ('brightness-alt-low-fill.svg', 'brightness-alt-low-fill.svg'), ('brightness-alt-low.svg', 'brightness-alt-low.svg'), ('brightness-high-fill.svg', 'brightness-high-fill.svg'), ('brightness-high.svg', 'brightness-high.svg'), ('brightness-low-fill.svg', 'brightness-low-fill.svg'), ('brightness-low.svg', 'brightness-low.svg'), ('broadcast-pin.svg', 'broadcast-pin.svg'), ('broadcast.svg', 'broadcast.svg'), ('brush-fill.svg', 'brush-fill.svg'), ('brush.svg', 'brush.svg'), ('bucket-fill.svg', 'bucket-fill.svg'), ('bucket.svg', 'bucket.svg'), ('bug-fill.svg', 'bug-fill.svg'), ('bug.svg', 'bug.svg'), ('building.svg', 'building.svg'), ('bullseye.svg', 'bullseye.svg'), ('calculator-fill.svg', 'calculator-fill.svg'), ('calculator.svg', 'calculator.svg'), ('calendar-check-fill.svg', 'calendar-check-fill.svg'), ('calendar-check.svg', 'calendar-check.svg'), ('calendar-date-fill.svg', 'calendar-date-fill.svg'), ('calendar-date.svg', 'calendar-date.svg'), ('calendar-day-fill.svg', 'calendar-day-fill.svg'), ('calendar-day.svg', 'calendar-day.svg'), ('calendar-event-fill.svg', 'calendar-event-fill.svg'), ('calendar-event.svg', 'calendar-event.svg'), ('calendar-fill.svg', 'calendar-fill.svg'), ('calendar-minus-fill.svg', 'calendar-minus-fill.svg'), ('calendar-minus.svg', 'calendar-minus.svg'), ('calendar-month-fill.svg', 'calendar-month-fill.svg'), ('calendar-month.svg', 'calendar-month.svg'), ('calendar-plus-fill.svg', 'calendar-plus-fill.svg'), ('calendar-plus.svg', 'calendar-plus.svg'), ('calendar-range-fill.svg', 'calendar-range-fill.svg'), ('calendar-range.svg', 'calendar-range.svg'), ('calendar-week-fill.svg', 'calendar-week-fill.svg'), ('calendar-week.svg', 'calendar-week.svg'), ('calendar-x-fill.svg', 'calendar-x-fill.svg'), ('calendar-x.svg', 'calendar-x.svg'), ('calendar.svg', 'calendar.svg'), ('calendar2-check-fill.svg', 'calendar2-check-fill.svg'), ('calendar2-check.svg', 'calendar2-check.svg'), ('calendar2-date-fill.svg', 'calendar2-date-fill.svg'), ('calendar2-date.svg', 'calendar2-date.svg'), ('calendar2-day-fill.svg', 'calendar2-day-fill.svg'), ('calendar2-day.svg', 'calendar2-day.svg'), ('calendar2-event-fill.svg', 'calendar2-event-fill.svg'), ('calendar2-event.svg', 'calendar2-event.svg'), ('calendar2-fill.svg', 'calendar2-fill.svg'), ('calendar2-minus-fill.svg', 'calendar2-minus-fill.svg'), ('calendar2-minus.svg', 'calendar2-minus.svg'), ('calendar2-month-fill.svg', 'calendar2-month-fill.svg'), ('calendar2-month.svg', 'calendar2-month.svg'), ('calendar2-plus-fill.svg', 'calendar2-plus-fill.svg'), ('calendar2-plus.svg', 'calendar2-plus.svg'), ('calendar2-range-fill.svg', 'calendar2-range-fill.svg'), ('calendar2-range.svg', 'calendar2-range.svg'), ('calendar2-week-fill.svg', 'calendar2-week-fill.svg'), ('calendar2-week.svg', 'calendar2-week.svg'), ('calendar2-x-fill.svg', 'calendar2-x-fill.svg'), ('calendar2-x.svg', 'calendar2-x.svg'), ('calendar2.svg', 'calendar2.svg'), ('calendar3-event-fill.svg', 'calendar3-event-fill.svg'), ('calendar3-event.svg', 'calendar3-event.svg'), ('calendar3-fill.svg', 'calendar3-fill.svg'), ('calendar3-range-fill.svg', 'calendar3-range-fill.svg'), ('calendar3-range.svg', 'calendar3-range.svg'), ('calendar3-week-fill.svg', 'calendar3-week-fill.svg'), ('calendar3-week.svg', 'calendar3-week.svg'), ('calendar3.svg', 'calendar3.svg'), ('calendar4-event.svg', 'calendar4-event.svg'), ('calendar4-range.svg', 'calendar4-range.svg'), ('calendar4-week.svg', 'calendar4-week.svg'), ('calendar4.svg', 'calendar4.svg'), ('camera-fill.svg', 'camera-fill.svg'), ('camera-reels-fill.svg', 'camera-reels-fill.svg'), ('camera-reels.svg', 'camera-reels.svg'), ('camera-video-fill.svg', 'camera-video-fill.svg'), ('camera-video-off-fill.svg', 'camera-video-off-fill.svg'), ('camera-video-off.svg', 'camera-video-off.svg'), ('camera-video.svg', 'camera-video.svg'), ('camera.svg', 'camera.svg'), ('camera2.svg', 'camera2.svg'), ('capslock-fill.svg', 'capslock-fill.svg'), ('capslock.svg', 'capslock.svg'), ('card-checklist.svg', 'card-checklist.svg'), ('card-heading.svg', 'card-heading.svg'), ('card-image.svg', 'card-image.svg'), ('card-list.svg', 'card-list.svg'), ('card-text.svg', 'card-text.svg'), ('caret-down-fill.svg', 'caret-down-fill.svg'), ('caret-down-square-fill.svg', 'caret-down-square-fill.svg'), ('caret-down-square.svg', 'caret-down-square.svg'), ('caret-down.svg', 'caret-down.svg'), ('caret-left-fill.svg', 'caret-left-fill.svg'), ('caret-left-square-fill.svg', 'caret-left-square-fill.svg'), ('caret-left-square.svg', 'caret-left-square.svg'), ('caret-left.svg', 'caret-left.svg'), ('caret-right-fill.svg', 'caret-right-fill.svg'), ('caret-right-square-fill.svg', 'caret-right-square-fill.svg'), ('caret-right-square.svg', 'caret-right-square.svg'), ('caret-right.svg', 'caret-right.svg'), ('caret-up-fill.svg', 'caret-up-fill.svg'), ('caret-up-square-fill.svg', 'caret-up-square-fill.svg'), ('caret-up-square.svg', 'caret-up-square.svg'), ('caret-up.svg', 'caret-up.svg'), ('cart-check-fill.svg', 'cart-check-fill.svg'), ('cart-check.svg', 'cart-check.svg'), ('cart-dash-fill.svg', 'cart-dash-fill.svg'), ('cart-dash.svg', 'cart-dash.svg'), ('cart-fill.svg', 'cart-fill.svg'), ('cart-plus-fill.svg', 'cart-plus-fill.svg'), ('cart-plus.svg', 'cart-plus.svg'), ('cart-x-fill.svg', 'cart-x-fill.svg'), ('cart-x.svg', 'cart-x.svg'), ('cart.svg', 'cart.svg'), ('cart2.svg', 'cart2.svg'), ('cart3.svg', 'cart3.svg'), ('cart4.svg', 'cart4.svg'), ('cash-stack.svg', 'cash-stack.svg'), ('cash.svg', 'cash.svg'), ('cast.svg', 'cast.svg'), ('chat-dots-fill.svg', 'chat-dots-fill.svg'), ('chat-dots.svg', 'chat-dots.svg'), ('chat-fill.svg', 'chat-fill.svg'), ('chat-left-dots-fill.svg', 'chat-left-dots-fill.svg'), ('chat-left-dots.svg', 'chat-left-dots.svg'), ('chat-left-fill.svg', 'chat-left-fill.svg'), ('chat-left-quote-fill.svg', 'chat-left-quote-fill.svg'), ('chat-left-quote.svg', 'chat-left-quote.svg'), ('chat-left-text-fill.svg', 'chat-left-text-fill.svg'), ('chat-left-text.svg', 'chat-left-text.svg'), ('chat-left.svg', 'chat-left.svg'), ('chat-quote-fill.svg', 'chat-quote-fill.svg'), ('chat-quote.svg', 'chat-quote.svg'), ('chat-right-dots-fill.svg', 'chat-right-dots-fill.svg'), ('chat-right-dots.svg', 'chat-right-dots.svg'), ('chat-right-fill.svg', 'chat-right-fill.svg'), ('chat-right-quote-fill.svg', 'chat-right-quote-fill.svg'), ('chat-right-quote.svg', 'chat-right-quote.svg'), ('chat-right-text-fill.svg', 'chat-right-text-fill.svg'), ('chat-right-text.svg', 'chat-right-text.svg'), ('chat-right.svg', 'chat-right.svg'), ('chat-square-dots-fill.svg', 'chat-square-dots-fill.svg'), ('chat-square-dots.svg', 'chat-square-dots.svg'), ('chat-square-fill.svg', 'chat-square-fill.svg'), ('chat-square-quote-fill.svg', 'chat-square-quote-fill.svg'), ('chat-square-quote.svg', 'chat-square-quote.svg'), ('chat-square-text-fill.svg', 'chat-square-text-fill.svg'), ('chat-square-text.svg', 'chat-square-text.svg'), ('chat-square.svg', 'chat-square.svg'), ('chat-text-fill.svg', 'chat-text-fill.svg'), ('chat-text.svg', 'chat-text.svg'), ('chat.svg', 'chat.svg'), ('check-all.svg', 'check-all.svg'), ('check-box.svg', 'check-box.svg'), ('check-circle-fill.svg', 'check-circle-fill.svg'), ('check-circle.svg', 'check-circle.svg'), ('check-square-fill.svg', 'check-square-fill.svg'), ('check-square.svg', 'check-square.svg'), ('check.svg', 'check.svg'), ('check2-all.svg', 'check2-all.svg'), ('check2-circle.svg', 'check2-circle.svg'), ('check2-square.svg', 'check2-square.svg'), ('check2.svg', 'check2.svg'), ('chevron-bar-contract.svg', 'chevron-bar-contract.svg'), ('chevron-bar-down.svg', 'chevron-bar-down.svg'), ('chevron-bar-expand.svg', 'chevron-bar-expand.svg'), ('chevron-bar-left.svg', 'chevron-bar-left.svg'), ('chevron-bar-right.svg', 'chevron-bar-right.svg'), ('chevron-bar-up.svg', 'chevron-bar-up.svg'), ('chevron-compact-down.svg', 'chevron-compact-down.svg'), ('chevron-compact-left.svg', 'chevron-compact-left.svg'), ('chevron-compact-right.svg', 'chevron-compact-right.svg'), ('chevron-compact-up.svg', 'chevron-compact-up.svg'), ('chevron-contract.svg', 'chevron-contract.svg'), ('chevron-double-down.svg', 'chevron-double-down.svg'), ('chevron-double-left.svg', 'chevron-double-left.svg'), ('chevron-double-right.svg', 'chevron-double-right.svg'), ('chevron-double-up.svg', 'chevron-double-up.svg'), ('chevron-down.svg', 'chevron-down.svg'), ('chevron-expand.svg', 'chevron-expand.svg'), ('chevron-left.svg', 'chevron-left.svg'), ('chevron-right.svg', 'chevron-right.svg'), ('chevron-up.svg', 'chevron-up.svg'), ('circle-fill.svg', 'circle-fill.svg'), ('circle-half.svg', 'circle-half.svg'), ('circle-square.svg', 'circle-square.svg'), ('circle.svg', 'circle.svg'), ('clipboard-check.svg', 'clipboard-check.svg'), ('clipboard-data.svg', 'clipboard-data.svg'), ('clipboard-minus.svg', 'clipboard-minus.svg'), ('clipboard-plus.svg', 'clipboard-plus.svg'), ('clipboard-x.svg', 'clipboard-x.svg'), ('clipboard.svg', 'clipboard.svg'), ('clock-fill.svg', 'clock-fill.svg'), ('clock-history.svg', 'clock-history.svg'), ('clock.svg', 'clock.svg'), ('cloud-arrow-down-fill.svg', 'cloud-arrow-down-fill.svg'), ('cloud-arrow-down.svg', 'cloud-arrow-down.svg'), ('cloud-arrow-up-fill.svg', 'cloud-arrow-up-fill.svg'), ('cloud-arrow-up.svg', 'cloud-arrow-up.svg'), ('cloud-check-fill.svg', 'cloud-check-fill.svg'), ('cloud-check.svg', 'cloud-check.svg'), ('cloud-download-fill.svg', 'cloud-download-fill.svg'), ('cloud-download.svg', 'cloud-download.svg'), ('cloud-fill.svg', 'cloud-fill.svg'), ('cloud-minus-fill.svg', 'cloud-minus-fill.svg'), ('cloud-minus.svg', 'cloud-minus.svg'), ('cloud-plus-fill.svg', 'cloud-plus-fill.svg'), ('cloud-plus.svg', 'cloud-plus.svg'), ('cloud-slash-fill.svg', 'cloud-slash-fill.svg'), ('cloud-slash.svg', 'cloud-slash.svg'), ('cloud-upload-fill.svg', 'cloud-upload-fill.svg'), ('cloud-upload.svg', 'cloud-upload.svg'), ('cloud.svg', 'cloud.svg'), ('code-slash.svg', 'code-slash.svg'), ('code-square.svg', 'code-square.svg'), ('code.svg', 'code.svg'), ('collection-fill.svg', 'collection-fill.svg'), ('collection-play-fill.svg', 'collection-play-fill.svg'), ('collection-play.svg', 'collection-play.svg'), ('collection.svg', 'collection.svg'), ('columns-gap.svg', 'columns-gap.svg'), ('columns.svg', 'columns.svg'), ('command.svg', 'command.svg'), ('compass-fill.svg', 'compass-fill.svg'), ('compass.svg', 'compass.svg'), ('cone-striped.svg', 'cone-striped.svg'), ('cone.svg', 'cone.svg'), ('controller.svg', 'controller.svg'), ('cpu-fill.svg', 'cpu-fill.svg'), ('cpu.svg', 'cpu.svg'), ('credit-card-2-back-fill.svg', 'credit-card-2-back-fill.svg'), ('credit-card-2-back.svg', 'credit-card-2-back.svg'), ('credit-card-2-front-fill.svg', 'credit-card-2-front-fill.svg'), ('credit-card-2-front.svg', 'credit-card-2-front.svg'), ('credit-card-fill.svg', 'credit-card-fill.svg'), ('credit-card.svg', 'credit-card.svg'), ('crop.svg', 'crop.svg'), ('cup-fill.svg', 'cup-fill.svg'), ('cup-straw.svg', 'cup-straw.svg'), ('cup.svg', 'cup.svg'), ('cursor-fill.svg', 'cursor-fill.svg'), ('cursor-text.svg', 'cursor-text.svg'), ('cursor.svg', 'cursor.svg'), ('dash-circle-fill.svg', 'dash-circle-fill.svg'), ('dash-circle.svg', 'dash-circle.svg'), ('dash-square-fill.svg', 'dash-square-fill.svg'), ('dash-square.svg', 'dash-square.svg'), ('dash.svg', 'dash.svg'), ('diagram-2-fill.svg', 'diagram-2-fill.svg'), ('diagram-2.svg', 'diagram-2.svg'), ('diagram-3-fill.svg', 'diagram-3-fill.svg'), ('diagram-3.svg', 'diagram-3.svg'), ('diamond-fill.svg', 'diamond-fill.svg'), ('diamond-half.svg', 'diamond-half.svg'), ('diamond.svg', 'diamond.svg'), ('dice-1-fill.svg', 'dice-1-fill.svg'), ('dice-1.svg', 'dice-1.svg'), ('dice-2-fill.svg', 'dice-2-fill.svg'), ('dice-2.svg', 'dice-2.svg'), ('dice-3-fill.svg', 'dice-3-fill.svg'), ('dice-3.svg', 'dice-3.svg'), ('dice-4-fill.svg', 'dice-4-fill.svg'), ('dice-4.svg', 'dice-4.svg'), ('dice-5-fill.svg', 'dice-5-fill.svg'), ('dice-5.svg', 'dice-5.svg'), ('dice-6-fill.svg', 'dice-6-fill.svg'), ('dice-6.svg', 'dice-6.svg'), ('disc-fill.svg', 'disc-fill.svg'), ('disc.svg', 'disc.svg'), ('discord.svg', 'discord.svg'), ('display-fill.svg', 'display-fill.svg'), ('display.svg', 'display.svg'), ('distribute-horizontal.svg', 'distribute-horizontal.svg'), ('distribute-vertical.svg', 'distribute-vertical.svg'), ('door-closed-fill.svg', 'door-closed-fill.svg'), ('door-closed.svg', 'door-closed.svg'), ('door-open-fill.svg', 'door-open-fill.svg'), ('door-open.svg', 'door-open.svg'), ('dot.svg', 'dot.svg'), ('download.svg', 'download.svg'), ('droplet-fill.svg', 'droplet-fill.svg'), ('droplet-half.svg', 'droplet-half.svg'), ('droplet.svg', 'droplet.svg'), ('earbuds.svg', 'earbuds.svg'), ('easel-fill.svg', 'easel-fill.svg'), ('easel.svg', 'easel.svg'), ('egg-fill.svg', 'egg-fill.svg'), ('egg-fried.svg', 'egg-fried.svg'), ('egg.svg', 'egg.svg'), ('eject-fill.svg', 'eject-fill.svg'), ('eject.svg', 'eject.svg'), ('emoji-angry-fill.svg', 'emoji-angry-fill.svg'), ('emoji-angry.svg', 'emoji-angry.svg'), ('emoji-dizzy-fill.svg', 'emoji-dizzy-fill.svg'), ('emoji-dizzy.svg', 'emoji-dizzy.svg'), ('emoji-expressionless-fill.svg', 'emoji-expressionless-fill.svg'), ('emoji-expressionless.svg', 'emoji-expressionless.svg'), ('emoji-frown-fill.svg', 'emoji-frown-fill.svg'), ('emoji-frown.svg', 'emoji-frown.svg'), ('emoji-heart-eyes-fill.svg', 'emoji-heart-eyes-fill.svg'), ('emoji-heart-eyes.svg', 'emoji-heart-eyes.svg'), ('emoji-laughing-fill.svg', 'emoji-laughing-fill.svg'), ('emoji-laughing.svg', 'emoji-laughing.svg'), ('emoji-neutral-fill.svg', 'emoji-neutral-fill.svg'), ('emoji-neutral.svg', 'emoji-neutral.svg'), ('emoji-smile-fill.svg', 'emoji-smile-fill.svg'), ('emoji-smile-upside-down-fill.svg', 'emoji-smile-upside-down-fill.svg'), ('emoji-smile-upside-down.svg', 'emoji-smile-upside-down.svg'), ('emoji-smile.svg', 'emoji-smile.svg'), ('emoji-sunglasses-fill.svg', 'emoji-sunglasses-fill.svg'), ('emoji-sunglasses.svg', 'emoji-sunglasses.svg'), ('emoji-wink-fill.svg', 'emoji-wink-fill.svg'), ('emoji-wink.svg', 'emoji-wink.svg'), ('envelope-fill.svg', 'envelope-fill.svg'), ('envelope-open-fill.svg', 'envelope-open-fill.svg'), ('envelope-open.svg', 'envelope-open.svg'), ('envelope.svg', 'envelope.svg'), ('exclamation-circle-fill.svg', 'exclamation-circle-fill.svg'), ('exclamation-circle.svg', 'exclamation-circle.svg'), ('exclamation-diamond-fill.svg', 'exclamation-diamond-fill.svg'), ('exclamation-diamond.svg', 'exclamation-diamond.svg'), ('exclamation-octagon-fill.svg', 'exclamation-octagon-fill.svg'), ('exclamation-octagon.svg', 'exclamation-octagon.svg'), ('exclamation-square-fill.svg', 'exclamation-square-fill.svg'), ('exclamation-square.svg', 'exclamation-square.svg'), ('exclamation-triangle-fill.svg', 'exclamation-triangle-fill.svg'), ('exclamation-triangle.svg', 'exclamation-triangle.svg'), ('exclamation.svg', 'exclamation.svg'), ('exclude.svg', 'exclude.svg'), ('eye-fill.svg', 'eye-fill.svg'), ('eye-slash-fill.svg', 'eye-slash-fill.svg'), ('eye-slash.svg', 'eye-slash.svg'), ('eye.svg', 'eye.svg'), ('eyeglasses.svg', 'eyeglasses.svg'), ('facebook.svg', 'facebook.svg'), ('file-arrow-down-fill.svg', 'file-arrow-down-fill.svg'), ('file-arrow-down.svg', 'file-arrow-down.svg'), ('file-arrow-up-fill.svg', 'file-arrow-up-fill.svg'), ('file-arrow-up.svg', 'file-arrow-up.svg'), ('file-bar-graph-fill.svg', 'file-bar-graph-fill.svg'), ('file-bar-graph.svg', 'file-bar-graph.svg'), ('file-binary-fill.svg', 'file-binary-fill.svg'), ('file-binary.svg', 'file-binary.svg'), ('file-break-fill.svg', 'file-break-fill.svg'), ('file-break.svg', 'file-break.svg'), ('file-check-fill.svg', 'file-check-fill.svg'), ('file-check.svg', 'file-check.svg'), ('file-code-fill.svg', 'file-code-fill.svg'), ('file-code.svg', 'file-code.svg'), ('file-diff-fill.svg', 'file-diff-fill.svg'), ('file-diff.svg', 'file-diff.svg'), ('file-earmark-arrow-down-fill.svg', 'file-earmark-arrow-down-fill.svg'), ('file-earmark-arrow-down.svg', 'file-earmark-arrow-down.svg'), ('file-earmark-arrow-up-fill.svg', 'file-earmark-arrow-up-fill.svg'), ('file-earmark-arrow-up.svg', 'file-earmark-arrow-up.svg'), ('file-earmark-bar-graph-fill.svg', 'file-earmark-bar-graph-fill.svg'), ('file-earmark-bar-graph.svg', 'file-earmark-bar-graph.svg'), ('file-earmark-binary-fill.svg', 'file-earmark-binary-fill.svg'), ('file-earmark-binary.svg', 'file-earmark-binary.svg'), ('file-earmark-break-fill.svg', 'file-earmark-break-fill.svg'), ('file-earmark-break.svg', 'file-earmark-break.svg'), ('file-earmark-check-fill.svg', 'file-earmark-check-fill.svg'), ('file-earmark-check.svg', 'file-earmark-check.svg'), ('file-earmark-code-fill.svg', 'file-earmark-code-fill.svg'), ('file-earmark-code.svg', 'file-earmark-code.svg'), ('file-earmark-diff-fill.svg', 'file-earmark-diff-fill.svg'), ('file-earmark-diff.svg', 'file-earmark-diff.svg'), ('file-earmark-easel-fill.svg', 'file-earmark-easel-fill.svg'), ('file-earmark-easel.svg', 'file-earmark-easel.svg'), ('file-earmark-excel-fill.svg', 'file-earmark-excel-fill.svg'), ('file-earmark-excel.svg', 'file-earmark-excel.svg'), ('file-earmark-fill.svg', 'file-earmark-fill.svg'), ('file-earmark-font-fill.svg', 'file-earmark-font-fill.svg'), ('file-earmark-font.svg', 'file-earmark-font.svg'), ('file-earmark-image-fill.svg', 'file-earmark-image-fill.svg'), ('file-earmark-image.svg', 'file-earmark-image.svg'), ('file-earmark-lock-fill.svg', 'file-earmark-lock-fill.svg'), ('file-earmark-lock.svg', 'file-earmark-lock.svg'), ('file-earmark-lock2-fill.svg', 'file-earmark-lock2-fill.svg'), ('file-earmark-lock2.svg', 'file-earmark-lock2.svg'), ('file-earmark-medical-fill.svg', 'file-earmark-medical-fill.svg'), ('file-earmark-medical.svg', 'file-earmark-medical.svg'), ('file-earmark-minus-fill.svg', 'file-earmark-minus-fill.svg'), ('file-earmark-minus.svg', 'file-earmark-minus.svg'), ('file-earmark-music-fill.svg', 'file-earmark-music-fill.svg'), ('file-earmark-music.svg', 'file-earmark-music.svg'), ('file-earmark-person-fill.svg', 'file-earmark-person-fill.svg'), ('file-earmark-person.svg', 'file-earmark-person.svg'), ('file-earmark-play-fill.svg', 'file-earmark-play-fill.svg'), ('file-earmark-play.svg', 'file-earmark-play.svg'), ('file-earmark-plus-fill.svg', 'file-earmark-plus-fill.svg'), ('file-earmark-plus.svg', 'file-earmark-plus.svg'), ('file-earmark-post-fill.svg', 'file-earmark-post-fill.svg'), ('file-earmark-post.svg', 'file-earmark-post.svg'), ('file-earmark-ppt-fill.svg', 'file-earmark-ppt-fill.svg'), ('file-earmark-ppt.svg', 'file-earmark-ppt.svg'), ('file-earmark-richtext-fill.svg', 'file-earmark-richtext-fill.svg'), ('file-earmark-richtext.svg', 'file-earmark-richtext.svg'), ('file-earmark-ruled-fill.svg', 'file-earmark-ruled-fill.svg'), ('file-earmark-ruled.svg', 'file-earmark-ruled.svg'), ('file-earmark-slides-fill.svg', 'file-earmark-slides-fill.svg'), ('file-earmark-slides.svg', 'file-earmark-slides.svg'), ('file-earmark-spreadsheet-fill.svg', 'file-earmark-spreadsheet-fill.svg'), ('file-earmark-spreadsheet.svg', 'file-earmark-spreadsheet.svg'), ('file-earmark-text-fill.svg', 'file-earmark-text-fill.svg'), ('file-earmark-text.svg', 'file-earmark-text.svg'), ('file-earmark-word-fill.svg', 'file-earmark-word-fill.svg'), ('file-earmark-word.svg', 'file-earmark-word.svg'), ('file-earmark-x-fill.svg', 'file-earmark-x-fill.svg'), ('file-earmark-x.svg', 'file-earmark-x.svg'), ('file-earmark-zip-fill.svg', 'file-earmark-zip-fill.svg'), ('file-earmark-zip.svg', 'file-earmark-zip.svg'), ('file-earmark.svg', 'file-earmark.svg'), ('file-easel-fill.svg', 'file-easel-fill.svg'), ('file-easel.svg', 'file-easel.svg'), ('file-excel-fill.svg', 'file-excel-fill.svg'), ('file-excel.svg', 'file-excel.svg'), ('file-fill.svg', 'file-fill.svg'), ('file-font-fill.svg', 'file-font-fill.svg'), ('file-font.svg', 'file-font.svg'), ('file-image-fill.svg', 'file-image-fill.svg'), ('file-image.svg', 'file-image.svg'), ('file-lock-fill.svg', 'file-lock-fill.svg'), ('file-lock.svg', 'file-lock.svg'), ('file-lock2-fill.svg', 'file-lock2-fill.svg'), ('file-lock2.svg', 'file-lock2.svg'), ('file-medical-fill.svg', 'file-medical-fill.svg'), ('file-medical.svg', 'file-medical.svg'), ('file-minus-fill.svg', 'file-minus-fill.svg'), ('file-minus.svg', 'file-minus.svg'), ('file-music-fill.svg', 'file-music-fill.svg'), ('file-music.svg', 'file-music.svg'), ('file-person-fill.svg', 'file-person-fill.svg'), ('file-person.svg', 'file-person.svg'), ('file-play-fill.svg', 'file-play-fill.svg'), ('file-play.svg', 'file-play.svg'), ('file-plus-fill.svg', 'file-plus-fill.svg'), ('file-plus.svg', 'file-plus.svg'), ('file-post-fill.svg', 'file-post-fill.svg'), ('file-post.svg', 'file-post.svg'), ('file-ppt-fill.svg', 'file-ppt-fill.svg'), ('file-ppt.svg', 'file-ppt.svg'), ('file-richtext-fill.svg', 'file-richtext-fill.svg'), ('file-richtext.svg', 'file-richtext.svg'), ('file-ruled-fill.svg', 'file-ruled-fill.svg'), ('file-ruled.svg', 'file-ruled.svg'), ('file-slides-fill.svg', 'file-slides-fill.svg'), ('file-slides.svg', 'file-slides.svg'), ('file-spreadsheet-fill.svg', 'file-spreadsheet-fill.svg'), ('file-spreadsheet.svg', 'file-spreadsheet.svg'), ('file-text-fill.svg', 'file-text-fill.svg'), ('file-text.svg', 'file-text.svg'), ('file-word-fill.svg', 'file-word-fill.svg'), ('file-word.svg', 'file-word.svg'), ('file-x-fill.svg', 'file-x-fill.svg'), ('file-x.svg', 'file-x.svg'), ('file-zip-fill.svg', 'file-zip-fill.svg'), ('file-zip.svg', 'file-zip.svg'), ('file.svg', 'file.svg'), ('files-alt.svg', 'files-alt.svg'), ('files.svg', 'files.svg'), ('film.svg', 'film.svg'), ('filter-circle-fill.svg', 'filter-circle-fill.svg'), ('filter-circle.svg', 'filter-circle.svg'), ('filter-left.svg', 'filter-left.svg'), ('filter-right.svg', 'filter-right.svg'), ('filter-square-fill.svg', 'filter-square-fill.svg'), ('filter-square.svg', 'filter-square.svg'), ('filter.svg', 'filter.svg'), ('flag-fill.svg', 'flag-fill.svg'), ('flag.svg', 'flag.svg'), ('flower1.svg', 'flower1.svg'), ('flower2.svg', 'flower2.svg'), ('flower3.svg', 'flower3.svg'), ('folder-check.svg', 'folder-check.svg'), ('folder-fill.svg', 'folder-fill.svg'), ('folder-minus.svg', 'folder-minus.svg'), ('folder-plus.svg', 'folder-plus.svg'), ('folder-symlink-fill.svg', 'folder-symlink-fill.svg'), ('folder-symlink.svg', 'folder-symlink.svg'), ('folder-x.svg', 'folder-x.svg'), ('folder.svg', 'folder.svg'), ('folder2-open.svg', 'folder2-open.svg'), ('folder2.svg', 'folder2.svg'), ('fonts.svg', 'fonts.svg'), ('forward-fill.svg', 'forward-fill.svg'), ('forward.svg', 'forward.svg'), ('front.svg', 'front.svg'), ('fullscreen-exit.svg', 'fullscreen-exit.svg'), ('fullscreen.svg', 'fullscreen.svg'), ('funnel-fill.svg', 'funnel-fill.svg'), ('funnel.svg', 'funnel.svg'), ('gear-fill.svg', 'gear-fill.svg'), ('gear-wide-connected.svg', 'gear-wide-connected.svg'), ('gear-wide.svg', 'gear-wide.svg'), ('gear.svg', 'gear.svg'), ('gem.svg', 'gem.svg'), ('geo-alt-fill.svg', 'geo-alt-fill.svg'), ('geo-alt.svg', 'geo-alt.svg'), ('geo-fill.svg', 'geo-fill.svg'), ('geo.svg', 'geo.svg'), ('gift-fill.svg', 'gift-fill.svg'), ('gift.svg', 'gift.svg'), ('github.svg', 'github.svg'), ('globe.svg', 'globe.svg'), ('globe2.svg', 'globe2.svg'), ('google.svg', 'google.svg'), ('graph-down.svg', 'graph-down.svg'), ('graph-up.svg', 'graph-up.svg'), ('grid-1x2-fill.svg', 'grid-1x2-fill.svg'), ('grid-1x2.svg', 'grid-1x2.svg'), ('grid-3x2-gap-fill.svg', 'grid-3x2-gap-fill.svg'), ('grid-3x2-gap.svg', 'grid-3x2-gap.svg'), ('grid-3x2.svg', 'grid-3x2.svg'), ('grid-3x3-gap-fill.svg', 'grid-3x3-gap-fill.svg'), ('grid-3x3-gap.svg', 'grid-3x3-gap.svg'), ('grid-3x3.svg', 'grid-3x3.svg'), ('grid-fill.svg', 'grid-fill.svg'), ('grid.svg', 'grid.svg'), ('grip-horizontal.svg', 'grip-horizontal.svg'), ('grip-vertical.svg', 'grip-vertical.svg'), ('hammer.svg', 'hammer.svg'), ('hand-index-thumb.svg', 'hand-index-thumb.svg'), ('hand-index.svg', 'hand-index.svg'), ('hand-thumbs-down.svg', 'hand-thumbs-down.svg'), ('hand-thumbs-up.svg', 'hand-thumbs-up.svg'), ('handbag-fill.svg', 'handbag-fill.svg'), ('handbag.svg', 'handbag.svg'), ('hash.svg', 'hash.svg'), ('hdd-fill.svg', 'hdd-fill.svg'), ('hdd-network-fill.svg', 'hdd-network-fill.svg'), ('hdd-network.svg', 'hdd-network.svg'), ('hdd-rack-fill.svg', 'hdd-rack-fill.svg'), ('hdd-rack.svg', 'hdd-rack.svg'), ('hdd-stack-fill.svg', 'hdd-stack-fill.svg'), ('hdd-stack.svg', 'hdd-stack.svg'), ('hdd.svg', 'hdd.svg'), ('headphones.svg', 'headphones.svg'), ('headset.svg', 'headset.svg'), ('heart-fill.svg', 'heart-fill.svg'), ('heart-half.svg', 'heart-half.svg'), ('heart.svg', 'heart.svg'), ('heptagon-fill.svg', 'heptagon-fill.svg'), ('heptagon-half.svg', 'heptagon-half.svg'), ('heptagon.svg', 'heptagon.svg'), ('hexagon-fill.svg', 'hexagon-fill.svg'), ('hexagon-half.svg', 'hexagon-half.svg'), ('hexagon.svg', 'hexagon.svg'), ('hourglass-bottom.svg', 'hourglass-bottom.svg'), ('hourglass-split.svg', 'hourglass-split.svg'), ('hourglass-top.svg', 'hourglass-top.svg'), ('hourglass.svg', 'hourglass.svg'), ('house-door-fill.svg', 'house-door-fill.svg'), ('house-door.svg', 'house-door.svg'), ('house-fill.svg', 'house-fill.svg'), ('house.svg', 'house.svg'), ('hr.svg', 'hr.svg'), ('image-alt.svg', 'image-alt.svg'), ('image-fill.svg', 'image-fill.svg'), ('image.svg', 'image.svg'), ('images.svg', 'images.svg'), ('inbox-fill.svg', 'inbox-fill.svg'), ('inbox.svg', 'inbox.svg'), ('inboxes-fill.svg', 'inboxes-fill.svg'), ('inboxes.svg', 'inboxes.svg'), ('info-circle-fill.svg', 'info-circle-fill.svg'), ('info-circle.svg', 'info-circle.svg'), ('info-square-fill.svg', 'info-square-fill.svg'), ('info-square.svg', 'info-square.svg'), ('info.svg', 'info.svg'), ('input-cursor-text.svg', 'input-cursor-text.svg'), ('input-cursor.svg', 'input-cursor.svg'), ('instagram.svg', 'instagram.svg'), ('intersect.svg', 'intersect.svg'), ('journal-album.svg', 'journal-album.svg'), ('journal-arrow-down.svg', 'journal-arrow-down.svg'), ('journal-arrow-up.svg', 'journal-arrow-up.svg'), ('journal-bookmark-fill.svg', 'journal-bookmark-fill.svg'), ('journal-bookmark.svg', 'journal-bookmark.svg'), ('journal-check.svg', 'journal-check.svg'), ('journal-code.svg', 'journal-code.svg'), ('journal-medical.svg', 'journal-medical.svg'), ('journal-minus.svg', 'journal-minus.svg'), ('journal-plus.svg', 'journal-plus.svg'), ('journal-richtext.svg', 'journal-richtext.svg'), ('journal-text.svg', 'journal-text.svg'), ('journal-x.svg', 'journal-x.svg'), ('journal.svg', 'journal.svg'), ('journals.svg', 'journals.svg'), ('joystick.svg', 'joystick.svg'), ('justify-left.svg', 'justify-left.svg'), ('justify-right.svg', 'justify-right.svg'), ('justify.svg', 'justify.svg'), ('kanban-fill.svg', 'kanban-fill.svg'), ('kanban.svg', 'kanban.svg'), ('key-fill.svg', 'key-fill.svg'), ('key.svg', 'key.svg'), ('keyboard-fill.svg', 'keyboard-fill.svg'), ('keyboard.svg', 'keyboard.svg'), ('ladder.svg', 'ladder.svg'), ('lamp-fill.svg', 'lamp-fill.svg'), ('lamp.svg', 'lamp.svg'), ('laptop-fill.svg', 'laptop-fill.svg'), ('laptop.svg', 'laptop.svg'), ('layers-fill.svg', 'layers-fill.svg'), ('layers-half.svg', 'layers-half.svg'), ('layers.svg', 'layers.svg'), ('layout-sidebar-inset-reverse.svg', 'layout-sidebar-inset-reverse.svg'), ('layout-sidebar-inset.svg', 'layout-sidebar-inset.svg'), ('layout-sidebar-reverse.svg', 'layout-sidebar-reverse.svg'), ('layout-sidebar.svg', 'layout-sidebar.svg'), ('layout-split.svg', 'layout-split.svg'), ('layout-text-sidebar-reverse.svg', 'layout-text-sidebar-reverse.svg'), ('layout-text-sidebar.svg', 'layout-text-sidebar.svg'), ('layout-text-window-reverse.svg', 'layout-text-window-reverse.svg'), ('layout-text-window.svg', 'layout-text-window.svg'), ('layout-three-columns.svg', 'layout-three-columns.svg'), ('layout-wtf.svg', 'layout-wtf.svg'), ('life-preserver.svg', 'life-preserver.svg'), ('lightning-fill.svg', 'lightning-fill.svg'), ('lightning.svg', 'lightning.svg'), ('link-45deg.svg', 'link-45deg.svg'), ('link.svg', 'link.svg'), ('linkedin.svg', 'linkedin.svg'), ('list-check.svg', 'list-check.svg'), ('list-nested.svg', 'list-nested.svg'), ('list-ol.svg', 'list-ol.svg'), ('list-stars.svg', 'list-stars.svg'), ('list-task.svg', 'list-task.svg'), ('list-ul.svg', 'list-ul.svg'), ('list.svg', 'list.svg'), ('lock-fill.svg', 'lock-fill.svg'), ('lock.svg', 'lock.svg'), ('mailbox.svg', 'mailbox.svg'), ('mailbox2.svg', 'mailbox2.svg'), ('map-fill.svg', 'map-fill.svg'), ('map.svg', 'map.svg'), ('markdown-fill.svg', 'markdown-fill.svg'), ('markdown.svg', 'markdown.svg'), ('menu-app-fill.svg', 'menu-app-fill.svg'), ('menu-app.svg', 'menu-app.svg'), ('menu-button-fill.svg', 'menu-button-fill.svg'), ('menu-button-wide-fill.svg', 'menu-button-wide-fill.svg'), ('menu-button-wide.svg', 'menu-button-wide.svg'), ('menu-button.svg', 'menu-button.svg'), ('menu-down.svg', 'menu-down.svg'), ('menu-up.svg', 'menu-up.svg'), ('mic-fill.svg', 'mic-fill.svg'), ('mic-mute-fill.svg', 'mic-mute-fill.svg'), ('mic-mute.svg', 'mic-mute.svg'), ('mic.svg', 'mic.svg'), ('minecart-loaded.svg', 'minecart-loaded.svg'), ('minecart.svg', 'minecart.svg'), ('moon.svg', 'moon.svg'), ('mouse.svg', 'mouse.svg'), ('mouse2.svg', 'mouse2.svg'), ('mouse3.svg', 'mouse3.svg'), ('music-note-beamed.svg', 'music-note-beamed.svg'), ('music-note-list.svg', 'music-note-list.svg'), ('music-note.svg', 'music-note.svg'), ('music-player-fill.svg', 'music-player-fill.svg'), ('music-player.svg', 'music-player.svg'), ('newspaper.svg', 'newspaper.svg'), ('node-minus-fill.svg', 'node-minus-fill.svg'), ('node-minus.svg', 'node-minus.svg'), ('node-plus-fill.svg', 'node-plus-fill.svg'), ('node-plus.svg', 'node-plus.svg'), ('nut-fill.svg', 'nut-fill.svg'), ('nut.svg', 'nut.svg'), ('octagon-fill.svg', 'octagon-fill.svg'), ('octagon-half.svg', 'octagon-half.svg'), ('octagon.svg', 'octagon.svg'), ('option.svg', 'option.svg'), ('outlet.svg', 'outlet.svg'), ('paperclip.svg', 'paperclip.svg'), ('paragraph.svg', 'paragraph.svg'), ('patch-check-fll.svg', 'patch-check-fll.svg'), ('patch-check.svg', 'patch-check.svg'), ('patch-exclamation-fll.svg', 'patch-exclamation-fll.svg'), ('patch-exclamation.svg', 'patch-exclamation.svg'), ('patch-minus-fll.svg', 'patch-minus-fll.svg'), ('patch-minus.svg', 'patch-minus.svg'), ('patch-plus-fll.svg', 'patch-plus-fll.svg'), ('patch-plus.svg', 'patch-plus.svg'), ('patch-question-fll.svg', 'patch-question-fll.svg'), ('patch-question.svg', 'patch-question.svg'), ('pause-btn-fill.svg', 'pause-btn-fill.svg'), ('pause-btn.svg', 'pause-btn.svg'), ('pause-circle-fill.svg', 'pause-circle-fill.svg'), ('pause-circle.svg', 'pause-circle.svg'), ('pause-fill.svg', 'pause-fill.svg'), ('pause.svg', 'pause.svg'), ('peace-fill.svg', 'peace-fill.svg'), ('peace.svg', 'peace.svg'), ('pen-fill.svg', 'pen-fill.svg'), ('pen.svg', 'pen.svg'), ('pencil-fill.svg', 'pencil-fill.svg'), ('pencil-square.svg', 'pencil-square.svg'), ('pencil.svg', 'pencil.svg'), ('pentagon-fill.svg', 'pentagon-fill.svg'), ('pentagon-half.svg', 'pentagon-half.svg'), ('pentagon.svg', 'pentagon.svg'), ('people-circle.svg', 'people-circle.svg'), ('people-fill.svg', 'people-fill.svg'), ('people.svg', 'people.svg'), ('percent.svg', 'percent.svg'), ('person-badge-fill.svg', 'person-badge-fill.svg'), ('person-badge.svg', 'person-badge.svg'), ('person-bounding-box.svg', 'person-bounding-box.svg'), ('person-check-fill.svg', 'person-check-fill.svg'), ('person-check.svg', 'person-check.svg'), ('person-circle.svg', 'person-circle.svg'), ('person-dash-fill.svg', 'person-dash-fill.svg'), ('person-dash.svg', 'person-dash.svg'), ('person-fill.svg', 'person-fill.svg'), ('person-lines-fill.svg', 'person-lines-fill.svg'), ('person-plus-fill.svg', 'person-plus-fill.svg'), ('person-plus.svg', 'person-plus.svg'), ('person-square.svg', 'person-square.svg'), ('person-x-fill.svg', 'person-x-fill.svg'), ('person-x.svg', 'person-x.svg'), ('person.svg', 'person.svg'), ('phone-fill.svg', 'phone-fill.svg'), ('phone-landscape-fill.svg', 'phone-landscape-fill.svg'), ('phone-landscape.svg', 'phone-landscape.svg'), ('phone-vibrate.svg', 'phone-vibrate.svg'), ('phone.svg', 'phone.svg'), ('pie-chart-fill.svg', 'pie-chart-fill.svg'), ('pie-chart.svg', 'pie-chart.svg'), ('pip-fill.svg', 'pip-fill.svg'), ('pip.svg', 'pip.svg'), ('play-btn-fill.svg', 'play-btn-fill.svg'), ('play-btn.svg', 'play-btn.svg'), ('play-circle-fill.svg', 'play-circle-fill.svg'), ('play-circle.svg', 'play-circle.svg'), ('play-fill.svg', 'play-fill.svg'), ('play.svg', 'play.svg'), ('plug-fill.svg', 'plug-fill.svg'), ('plug.svg', 'plug.svg'), ('plus-circle-fill.svg', 'plus-circle-fill.svg'), ('plus-circle.svg', 'plus-circle.svg'), ('plus-square-fill.svg', 'plus-square-fill.svg'), ('plus-square.svg', 'plus-square.svg'), ('plus.svg', 'plus.svg'), ('power.svg', 'power.svg'), ('printer-fill.svg', 'printer-fill.svg'), ('printer.svg', 'printer.svg'), ('puzzle-fill.svg', 'puzzle-fill.svg'), ('puzzle.svg', 'puzzle.svg'), ('question-circle-fill.svg', 'question-circle-fill.svg'), ('question-circle.svg', 'question-circle.svg'), ('question-diamond-fill.svg', 'question-diamond-fill.svg'), ('question-diamond.svg', 'question-diamond.svg'), ('question-octagon-fill.svg', 'question-octagon-fill.svg'), ('question-octagon.svg', 'question-octagon.svg'), ('question-square-fill.svg', 'question-square-fill.svg'), ('question-square.svg', 'question-square.svg'), ('question.svg', 'question.svg'), ('receipt-cutoff.svg', 'receipt-cutoff.svg'), ('receipt.svg', 'receipt.svg'), ('reception-0.svg', 'reception-0.svg'), ('reception-1.svg', 'reception-1.svg'), ('reception-2.svg', 'reception-2.svg'), ('reception-3.svg', 'reception-3.svg'), ('reception-4.svg', 'reception-4.svg'), ('record-btn-fill.svg', 'record-btn-fill.svg'), ('record-btn.svg', 'record-btn.svg'), ('record-circle-fill.svg', 'record-circle-fill.svg'), ('record-circle.svg', 'record-circle.svg'), ('record-fill.svg', 'record-fill.svg'), ('record.svg', 'record.svg'), ('record2-fill.svg', 'record2-fill.svg'), ('record2.svg', 'record2.svg'), ('reply-all-fill.svg', 'reply-all-fill.svg'), ('reply-all.svg', 'reply-all.svg'), ('reply-fill.svg', 'reply-fill.svg'), ('reply.svg', 'reply.svg'), ('rss-fill.svg', 'rss-fill.svg'), ('rss.svg', 'rss.svg'), ('scissors.svg', 'scissors.svg'), ('screwdriver.svg', 'screwdriver.svg'), ('search.svg', 'search.svg'), ('segmented-nav.svg', 'segmented-nav.svg'), ('server.svg', 'server.svg'), ('share-fill.svg', 'share-fill.svg'), ('share.svg', 'share.svg'), ('shield-check.svg', 'shield-check.svg'), ('shield-exclamation.svg', 'shield-exclamation.svg'), ('shield-fill-check.svg', 'shield-fill-check.svg'), ('shield-fill-exclamation.svg', 'shield-fill-exclamation.svg'), ('shield-fill-minus.svg', 'shield-fill-minus.svg'), ('shield-fill-plus.svg', 'shield-fill-plus.svg'), ('shield-fill-x.svg', 'shield-fill-x.svg'), ('shield-fill.svg', 'shield-fill.svg'), ('shield-lock-fill.svg', 'shield-lock-fill.svg'), ('shield-lock.svg', 'shield-lock.svg'), ('shield-minus.svg', 'shield-minus.svg'), ('shield-plus.svg', 'shield-plus.svg'), ('shield-shaded.svg', 'shield-shaded.svg'), ('shield-slash-fill.svg', 'shield-slash-fill.svg'), ('shield-slash.svg', 'shield-slash.svg'), ('shield-x.svg', 'shield-x.svg'), ('shield.svg', 'shield.svg'), ('shift-fill.svg', 'shift-fill.svg'), ('shift.svg', 'shift.svg'), ('shop-window.svg', 'shop-window.svg'), ('shop.svg', 'shop.svg'), ('shuffle.svg', 'shuffle.svg'), ('signpost-2-fill.svg', 'signpost-2-fill.svg'), ('signpost-2.svg', 'signpost-2.svg'), ('signpost-fill.svg', 'signpost-fill.svg'), ('signpost-split-fill.svg', 'signpost-split-fill.svg'), ('signpost-split.svg', 'signpost-split.svg'), ('signpost.svg', 'signpost.svg'), ('sim-fill.svg', 'sim-fill.svg'), ('sim.svg', 'sim.svg'), ('skip-backward-btn-fill.svg', 'skip-backward-btn-fill.svg'), ('skip-backward-btn.svg', 'skip-backward-btn.svg'), ('skip-backward-circle-fill.svg', 'skip-backward-circle-fill.svg'), ('skip-backward-circle.svg', 'skip-backward-circle.svg'), ('skip-backward-fill.svg', 'skip-backward-fill.svg'), ('skip-backward.svg', 'skip-backward.svg'), ('skip-end-btn-fill.svg', 'skip-end-btn-fill.svg'), ('skip-end-btn.svg', 'skip-end-btn.svg'), ('skip-end-circle-fill.svg', 'skip-end-circle-fill.svg'), ('skip-end-circle.svg', 'skip-end-circle.svg'), ('skip-end-fill.svg', 'skip-end-fill.svg'), ('skip-end.svg', 'skip-end.svg'), ('skip-forward-btn-fill.svg', 'skip-forward-btn-fill.svg'), ('skip-forward-btn.svg', 'skip-forward-btn.svg'), ('skip-forward-circle-fill.svg', 'skip-forward-circle-fill.svg'), ('skip-forward-circle.svg', 'skip-forward-circle.svg'), ('skip-forward-fill.svg', 'skip-forward-fill.svg'), ('skip-forward.svg', 'skip-forward.svg'), ('skip-start-btn-fill.svg', 'skip-start-btn-fill.svg'), ('skip-start-btn.svg', 'skip-start-btn.svg'), ('skip-start-circle-fill.svg', 'skip-start-circle-fill.svg'), ('skip-start-circle.svg', 'skip-start-circle.svg'), ('skip-start-fill.svg', 'skip-start-fill.svg'), ('skip-start.svg', 'skip-start.svg'), ('slack.svg', 'slack.svg'), ('slash-circle-fill.svg', 'slash-circle-fill.svg'), ('slash-circle.svg', 'slash-circle.svg'), ('slash-square-fill.svg', 'slash-square-fill.svg'), ('slash-square.svg', 'slash-square.svg'), ('slash.svg', 'slash.svg'), ('sliders.svg', 'sliders.svg'), ('smartwatch.svg', 'smartwatch.svg'), ('sort-alpha-down-alt.svg', 'sort-alpha-down-alt.svg'), ('sort-alpha-down.svg', 'sort-alpha-down.svg'), ('sort-alpha-up-alt.svg', 'sort-alpha-up-alt.svg'), ('sort-alpha-up.svg', 'sort-alpha-up.svg'), ('sort-down-alt.svg', 'sort-down-alt.svg'), ('sort-down.svg', 'sort-down.svg'), ('sort-numeric-down-alt.svg', 'sort-numeric-down-alt.svg'), ('sort-numeric-down.svg', 'sort-numeric-down.svg'), ('sort-numeric-up-alt.svg', 'sort-numeric-up-alt.svg'), ('sort-numeric-up.svg', 'sort-numeric-up.svg'), ('sort-up-alt.svg', 'sort-up-alt.svg'), ('sort-up.svg', 'sort-up.svg'), ('soundwave.svg', 'soundwave.svg'), ('speaker-fill.svg', 'speaker-fill.svg'), ('speaker.svg', 'speaker.svg'), ('spellcheck.svg', 'spellcheck.svg'), ('square-fill.svg', 'square-fill.svg'), ('square-half.svg', 'square-half.svg'), ('square.svg', 'square.svg'), ('star-fill.svg', 'star-fill.svg'), ('star-half.svg', 'star-half.svg'), ('star.svg', 'star.svg'), ('stickies-fill.svg', 'stickies-fill.svg'), ('stickies.svg', 'stickies.svg'), ('sticky-fill.svg', 'sticky-fill.svg'), ('sticky.svg', 'sticky.svg'), ('stop-btn-fill.svg', 'stop-btn-fill.svg'), ('stop-btn.svg', 'stop-btn.svg'), ('stop-circle-fill.svg', 'stop-circle-fill.svg'), ('stop-circle.svg', 'stop-circle.svg'), ('stop-fill.svg', 'stop-fill.svg'), ('stop.svg', 'stop.svg'), ('stoplights-fill.svg', 'stoplights-fill.svg'), ('stoplights.svg', 'stoplights.svg'), ('stopwatch-fill.svg', 'stopwatch-fill.svg'), ('stopwatch.svg', 'stopwatch.svg'), ('subtract.svg', 'subtract.svg'), ('suit-club-fill.svg', 'suit-club-fill.svg'), ('suit-club.svg', 'suit-club.svg'), ('suit-diamond-fill.svg', 'suit-diamond-fill.svg'), ('suit-diamond.svg', 'suit-diamond.svg'), ('suit-heart-fill.svg', 'suit-heart-fill.svg'), ('suit-heart.svg', 'suit-heart.svg'), ('suit-spade-fill.svg', 'suit-spade-fill.svg'), ('suit-spade.svg', 'suit-spade.svg'), ('sun.svg', 'sun.svg'), ('sunglasses.svg', 'sunglasses.svg'), ('table.svg', 'table.svg'), ('tablet-fill.svg', 'tablet-fill.svg'), ('tablet-landscape-fill.svg', 'tablet-landscape-fill.svg'), ('tablet-landscape.svg', 'tablet-landscape.svg'), ('tablet.svg', 'tablet.svg'), ('tag-fill.svg', 'tag-fill.svg'), ('tag.svg', 'tag.svg'), ('tags-fill.svg', 'tags-fill.svg'), ('tags.svg', 'tags.svg'), ('telephone-fill.svg', 'telephone-fill.svg'), ('telephone-forward-fill.svg', 'telephone-forward-fill.svg'), ('telephone-forward.svg', 'telephone-forward.svg'), ('telephone-inbound-fill.svg', 'telephone-inbound-fill.svg'), ('telephone-inbound.svg', 'telephone-inbound.svg'), ('telephone-minus-fill.svg', 'telephone-minus-fill.svg'), ('telephone-minus.svg', 'telephone-minus.svg'), ('telephone-outbound-fill.svg', 'telephone-outbound-fill.svg'), ('telephone-outbound.svg', 'telephone-outbound.svg'), ('telephone-plus-fill.svg', 'telephone-plus-fill.svg'), ('telephone-plus.svg', 'telephone-plus.svg'), ('telephone-x-fill.svg', 'telephone-x-fill.svg'), ('telephone-x.svg', 'telephone-x.svg'), ('telephone.svg', 'telephone.svg'), ('terminal-fill.svg', 'terminal-fill.svg'), ('terminal.svg', 'terminal.svg'), ('text-center.svg', 'text-center.svg'), ('text-indent-left.svg', 'text-indent-left.svg'), ('text-indent-right.svg', 'text-indent-right.svg'), ('text-left.svg', 'text-left.svg'), ('text-paragraph.svg', 'text-paragraph.svg'), ('text-right.svg', 'text-right.svg'), ('textarea-resize.svg', 'textarea-resize.svg'), ('textarea-t.svg', 'textarea-t.svg'), ('textarea.svg', 'textarea.svg'), ('thermometer-half.svg', 'thermometer-half.svg'), ('thermometer.svg', 'thermometer.svg'), ('three-dots-vertical.svg', 'three-dots-vertical.svg'), ('three-dots.svg', 'three-dots.svg'), ('toggle-off.svg', 'toggle-off.svg'), ('toggle-on.svg', 'toggle-on.svg'), ('toggle2-off.svg', 'toggle2-off.svg'), ('toggle2-on.svg', 'toggle2-on.svg'), ('toggles.svg', 'toggles.svg'), ('toggles2.svg', 'toggles2.svg'), ('tools.svg', 'tools.svg'), ('trash-fill.svg', 'trash-fill.svg'), ('trash.svg', 'trash.svg'), ('trash2-fill.svg', 'trash2-fill.svg'), ('trash2.svg', 'trash2.svg'), ('tree-fill.svg', 'tree-fill.svg'), ('tree.svg', 'tree.svg'), ('triangle-fill.svg', 'triangle-fill.svg'), ('triangle-half.svg', 'triangle-half.svg'), ('triangle.svg', 'triangle.svg'), ('trophy-fill.svg', 'trophy-fill.svg'), ('trophy.svg', 'trophy.svg'), ('truck-flatbed.svg', 'truck-flatbed.svg'), ('truck.svg', 'truck.svg'), ('tv-fill.svg', 'tv-fill.svg'), ('tv.svg', 'tv.svg'), ('twitch.svg', 'twitch.svg'), ('twitter.svg', 'twitter.svg'), ('type-bold.svg', 'type-bold.svg'), ('type-h1.svg', 'type-h1.svg'), ('type-h2.svg', 'type-h2.svg'), ('type-h3.svg', 'type-h3.svg'), ('type-italic.svg', 'type-italic.svg'), ('type-strikethrough.svg', 'type-strikethrough.svg'), ('type-underline.svg', 'type-underline.svg'), ('type.svg', 'type.svg'), ('ui-checks-grid.svg', 'ui-checks-grid.svg'), ('ui-checks.svg', 'ui-checks.svg'), ('ui-radios-grid.svg', 'ui-radios-grid.svg'), ('ui-radios.svg', 'ui-radios.svg'), ('union.svg', 'union.svg'), ('unlock-fill.svg', 'unlock-fill.svg'), ('unlock.svg', 'unlock.svg'), ('upc-scan.svg', 'upc-scan.svg'), ('upc.svg', 'upc.svg'), ('upload.svg', 'upload.svg'), ('vector-pen.svg', 'vector-pen.svg'), ('view-list.svg', 'view-list.svg'), ('view-stacked.svg', 'view-stacked.svg'), ('vinyl-fill.svg', 'vinyl-fill.svg'), ('vinyl.svg', 'vinyl.svg'), ('voicemail.svg', 'voicemail.svg'), ('volume-down-fill.svg', 'volume-down-fill.svg'), ('volume-down.svg', 'volume-down.svg'), ('volume-mute-fill.svg', 'volume-mute-fill.svg'), ('volume-mute.svg', 'volume-mute.svg'), ('volume-off-fill.svg', 'volume-off-fill.svg'), ('volume-off.svg', 'volume-off.svg'), ('volume-up-fill.svg', 'volume-up-fill.svg'), ('volume-up.svg', 'volume-up.svg'), ('vr.svg', 'vr.svg'), ('wallet-fill.svg', 'wallet-fill.svg'), ('wallet.svg', 'wallet.svg'), ('wallet2.svg', 'wallet2.svg'), ('watch.svg', 'watch.svg'), ('wifi-1.svg', 'wifi-1.svg'), ('wifi-2.svg', 'wifi-2.svg'), ('wifi-off.svg', 'wifi-off.svg'), ('wifi.svg', 'wifi.svg'), ('window.svg', 'window.svg'), ('wrench.svg', 'wrench.svg'), ('x-circle-fill.svg', 'x-circle-fill.svg'), ('x-circle.svg', 'x-circle.svg'), ('x-diamond-fill.svg', 'x-diamond-fill.svg'), ('x-diamond.svg', 'x-diamond.svg'), ('x-octagon-fill.svg', 'x-octagon-fill.svg'), ('x-octagon.svg', 'x-octagon.svg'), ('x-square-fill.svg', 'x-square-fill.svg'), ('x-square.svg', 'x-square.svg'), ('x.svg', 'x.svg'), ('youtube.svg', 'youtube.svg'), ('zoom-in.svg', 'zoom-in.svg'), ('zoom-out.svg', 'zoom-out.svg')], max_length=100, verbose_name='ícono'),12 ),...

Full Screen

Full Screen

test_array.py

Source:test_array.py Github

copy

Full Screen

...937])938@pytest.mark.parametrize("fill_value", [939 np.nan, 0, 1940])941def test_unique_na_fill(arr, fill_value):942 a = pd.SparseArray(arr, fill_value=fill_value).unique()943 b = pd.Series(arr).unique()944 assert isinstance(a, SparseArray)945 a = np.asarray(a)946 tm.assert_numpy_array_equal(a, b)947def test_unique_all_sparse():948 # https://github.com/pandas-dev/pandas/issues/23168949 arr = SparseArray([0, 0])950 result = arr.unique()951 expected = SparseArray([0])952 tm.assert_sp_array_equal(result, expected)953def test_map():954 arr = SparseArray([0, 1, 2])955 expected = SparseArray([10, 11, 12], fill_value=10)...

Full Screen

Full Screen

test_arithmetics.py

Source:test_arithmetics.py Github

copy

Full Screen

1import operator2import numpy as np3import pytest4import pandas as pd5from pandas.core.sparse.api import SparseDtype6import pandas.util.testing as tm7class TestSparseArrayArithmetics(object):8 _base = np.array9 _klass = pd.SparseArray10 def _assert(self, a, b):11 tm.assert_numpy_array_equal(a, b)12 def _check_numeric_ops(self, a, b, a_dense, b_dense):13 with np.errstate(invalid='ignore', divide='ignore'):14 # Unfortunately, trying to wrap the computation of each expected15 # value is with np.errstate() is too tedious.16 # sparse & sparse17 self._assert((a + b).to_dense(), a_dense + b_dense)18 self._assert((b + a).to_dense(), b_dense + a_dense)19 self._assert((a - b).to_dense(), a_dense - b_dense)20 self._assert((b - a).to_dense(), b_dense - a_dense)21 self._assert((a * b).to_dense(), a_dense * b_dense)22 self._assert((b * a).to_dense(), b_dense * a_dense)23 # pandas uses future division24 self._assert((a / b).to_dense(), a_dense * 1.0 / b_dense)25 self._assert((b / a).to_dense(), b_dense * 1.0 / a_dense)26 # ToDo: FIXME in GH 1384327 if not (self._base == pd.Series and28 a.dtype.subtype == np.dtype('int64')):29 self._assert((a // b).to_dense(), a_dense // b_dense)30 self._assert((b // a).to_dense(), b_dense // a_dense)31 self._assert((a % b).to_dense(), a_dense % b_dense)32 self._assert((b % a).to_dense(), b_dense % a_dense)33 self._assert((a ** b).to_dense(), a_dense ** b_dense)34 self._assert((b ** a).to_dense(), b_dense ** a_dense)35 # sparse & dense36 self._assert((a + b_dense).to_dense(), a_dense + b_dense)37 self._assert((b_dense + a).to_dense(), b_dense + a_dense)38 self._assert((a - b_dense).to_dense(), a_dense - b_dense)39 self._assert((b_dense - a).to_dense(), b_dense - a_dense)40 self._assert((a * b_dense).to_dense(), a_dense * b_dense)41 self._assert((b_dense * a).to_dense(), b_dense * a_dense)42 # pandas uses future division43 self._assert((a / b_dense).to_dense(), a_dense * 1.0 / b_dense)44 self._assert((b_dense / a).to_dense(), b_dense * 1.0 / a_dense)45 # ToDo: FIXME in GH 1384346 if not (self._base == pd.Series and47 a.dtype.subtype == np.dtype('int64')):48 self._assert((a // b_dense).to_dense(), a_dense // b_dense)49 self._assert((b_dense // a).to_dense(), b_dense // a_dense)50 self._assert((a % b_dense).to_dense(), a_dense % b_dense)51 self._assert((b_dense % a).to_dense(), b_dense % a_dense)52 self._assert((a ** b_dense).to_dense(), a_dense ** b_dense)53 self._assert((b_dense ** a).to_dense(), b_dense ** a_dense)54 def _check_bool_result(self, res):55 assert isinstance(res, self._klass)56 assert isinstance(res.dtype, SparseDtype)57 assert res.dtype.subtype == np.bool58 assert isinstance(res.fill_value, bool)59 def _check_comparison_ops(self, a, b, a_dense, b_dense):60 with np.errstate(invalid='ignore'):61 # Unfortunately, trying to wrap the computation of each expected62 # value is with np.errstate() is too tedious.63 #64 # sparse & sparse65 self._check_bool_result(a == b)66 self._assert((a == b).to_dense(), a_dense == b_dense)67 self._check_bool_result(a != b)68 self._assert((a != b).to_dense(), a_dense != b_dense)69 self._check_bool_result(a >= b)70 self._assert((a >= b).to_dense(), a_dense >= b_dense)71 self._check_bool_result(a <= b)72 self._assert((a <= b).to_dense(), a_dense <= b_dense)73 self._check_bool_result(a > b)74 self._assert((a > b).to_dense(), a_dense > b_dense)75 self._check_bool_result(a < b)76 self._assert((a < b).to_dense(), a_dense < b_dense)77 # sparse & dense78 self._check_bool_result(a == b_dense)79 self._assert((a == b_dense).to_dense(), a_dense == b_dense)80 self._check_bool_result(a != b_dense)81 self._assert((a != b_dense).to_dense(), a_dense != b_dense)82 self._check_bool_result(a >= b_dense)83 self._assert((a >= b_dense).to_dense(), a_dense >= b_dense)84 self._check_bool_result(a <= b_dense)85 self._assert((a <= b_dense).to_dense(), a_dense <= b_dense)86 self._check_bool_result(a > b_dense)87 self._assert((a > b_dense).to_dense(), a_dense > b_dense)88 self._check_bool_result(a < b_dense)89 self._assert((a < b_dense).to_dense(), a_dense < b_dense)90 def _check_logical_ops(self, a, b, a_dense, b_dense):91 # sparse & sparse92 self._check_bool_result(a & b)93 self._assert((a & b).to_dense(), a_dense & b_dense)94 self._check_bool_result(a | b)95 self._assert((a | b).to_dense(), a_dense | b_dense)96 # sparse & dense97 self._check_bool_result(a & b_dense)98 self._assert((a & b_dense).to_dense(), a_dense & b_dense)99 self._check_bool_result(a | b_dense)100 self._assert((a | b_dense).to_dense(), a_dense | b_dense)101 def test_float_scalar(self):102 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])103 for kind in ['integer', 'block']:104 a = self._klass(values, kind=kind)105 self._check_numeric_ops(a, 1, values, 1)106 self._check_numeric_ops(a, 0, values, 0)107 self._check_numeric_ops(a, 3, values, 3)108 a = self._klass(values, kind=kind, fill_value=0)109 self._check_numeric_ops(a, 1, values, 1)110 self._check_numeric_ops(a, 0, values, 0)111 self._check_numeric_ops(a, 3, values, 3)112 a = self._klass(values, kind=kind, fill_value=2)113 self._check_numeric_ops(a, 1, values, 1)114 self._check_numeric_ops(a, 0, values, 0)115 self._check_numeric_ops(a, 3, values, 3)116 def test_float_scalar_comparison(self):117 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])118 for kind in ['integer', 'block']:119 a = self._klass(values, kind=kind)120 self._check_comparison_ops(a, 1, values, 1)121 self._check_comparison_ops(a, 0, values, 0)122 self._check_comparison_ops(a, 3, values, 3)123 a = self._klass(values, kind=kind, fill_value=0)124 self._check_comparison_ops(a, 1, values, 1)125 self._check_comparison_ops(a, 0, values, 0)126 self._check_comparison_ops(a, 3, values, 3)127 a = self._klass(values, kind=kind, fill_value=2)128 self._check_comparison_ops(a, 1, values, 1)129 self._check_comparison_ops(a, 0, values, 0)130 self._check_comparison_ops(a, 3, values, 3)131 def test_float_same_index(self):132 # when sp_index are the same133 for kind in ['integer', 'block']:134 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])135 rvalues = self._base([np.nan, 2, 3, 4, np.nan, 0, 1, 3, 2, np.nan])136 a = self._klass(values, kind=kind)137 b = self._klass(rvalues, kind=kind)138 self._check_numeric_ops(a, b, values, rvalues)139 values = self._base([0., 1., 2., 6., 0., 0., 1., 2., 1., 0.])140 rvalues = self._base([0., 2., 3., 4., 0., 0., 1., 3., 2., 0.])141 a = self._klass(values, kind=kind, fill_value=0)142 b = self._klass(rvalues, kind=kind, fill_value=0)143 self._check_numeric_ops(a, b, values, rvalues)144 def test_float_same_index_comparison(self):145 # when sp_index are the same146 for kind in ['integer', 'block']:147 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])148 rvalues = self._base([np.nan, 2, 3, 4, np.nan, 0, 1, 3, 2, np.nan])149 a = self._klass(values, kind=kind)150 b = self._klass(rvalues, kind=kind)151 self._check_comparison_ops(a, b, values, rvalues)152 values = self._base([0., 1., 2., 6., 0., 0., 1., 2., 1., 0.])153 rvalues = self._base([0., 2., 3., 4., 0., 0., 1., 3., 2., 0.])154 a = self._klass(values, kind=kind, fill_value=0)155 b = self._klass(rvalues, kind=kind, fill_value=0)156 self._check_comparison_ops(a, b, values, rvalues)157 def test_float_array(self):158 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])159 rvalues = self._base([2, np.nan, 2, 3, np.nan, 0, 1, 5, 2, np.nan])160 for kind in ['integer', 'block']:161 a = self._klass(values, kind=kind)162 b = self._klass(rvalues, kind=kind)163 self._check_numeric_ops(a, b, values, rvalues)164 self._check_numeric_ops(a, b * 0, values, rvalues * 0)165 a = self._klass(values, kind=kind, fill_value=0)166 b = self._klass(rvalues, kind=kind)167 self._check_numeric_ops(a, b, values, rvalues)168 a = self._klass(values, kind=kind, fill_value=0)169 b = self._klass(rvalues, kind=kind, fill_value=0)170 self._check_numeric_ops(a, b, values, rvalues)171 a = self._klass(values, kind=kind, fill_value=1)172 b = self._klass(rvalues, kind=kind, fill_value=2)173 self._check_numeric_ops(a, b, values, rvalues)174 def test_float_array_different_kind(self):175 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])176 rvalues = self._base([2, np.nan, 2, 3, np.nan, 0, 1, 5, 2, np.nan])177 a = self._klass(values, kind='integer')178 b = self._klass(rvalues, kind='block')179 self._check_numeric_ops(a, b, values, rvalues)180 self._check_numeric_ops(a, b * 0, values, rvalues * 0)181 a = self._klass(values, kind='integer', fill_value=0)182 b = self._klass(rvalues, kind='block')183 self._check_numeric_ops(a, b, values, rvalues)184 a = self._klass(values, kind='integer', fill_value=0)185 b = self._klass(rvalues, kind='block', fill_value=0)186 self._check_numeric_ops(a, b, values, rvalues)187 a = self._klass(values, kind='integer', fill_value=1)188 b = self._klass(rvalues, kind='block', fill_value=2)189 self._check_numeric_ops(a, b, values, rvalues)190 def test_float_array_comparison(self):191 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])192 rvalues = self._base([2, np.nan, 2, 3, np.nan, 0, 1, 5, 2, np.nan])193 for kind in ['integer', 'block']:194 a = self._klass(values, kind=kind)195 b = self._klass(rvalues, kind=kind)196 self._check_comparison_ops(a, b, values, rvalues)197 self._check_comparison_ops(a, b * 0, values, rvalues * 0)198 a = self._klass(values, kind=kind, fill_value=0)199 b = self._klass(rvalues, kind=kind)200 self._check_comparison_ops(a, b, values, rvalues)201 a = self._klass(values, kind=kind, fill_value=0)202 b = self._klass(rvalues, kind=kind, fill_value=0)203 self._check_comparison_ops(a, b, values, rvalues)204 a = self._klass(values, kind=kind, fill_value=1)205 b = self._klass(rvalues, kind=kind, fill_value=2)206 self._check_comparison_ops(a, b, values, rvalues)207 def test_int_array(self):208 # have to specify dtype explicitly until fixing GH 667209 dtype = np.int64210 values = self._base([0, 1, 2, 0, 0, 0, 1, 2, 1, 0], dtype=dtype)211 rvalues = self._base([2, 0, 2, 3, 0, 0, 1, 5, 2, 0], dtype=dtype)212 for kind in ['integer', 'block']:213 a = self._klass(values, dtype=dtype, kind=kind)214 assert a.dtype == SparseDtype(dtype)215 b = self._klass(rvalues, dtype=dtype, kind=kind)216 assert b.dtype == SparseDtype(dtype)217 self._check_numeric_ops(a, b, values, rvalues)218 self._check_numeric_ops(a, b * 0, values, rvalues * 0)219 a = self._klass(values, fill_value=0, dtype=dtype, kind=kind)220 assert a.dtype == SparseDtype(dtype)221 b = self._klass(rvalues, dtype=dtype, kind=kind)222 assert b.dtype == SparseDtype(dtype)223 self._check_numeric_ops(a, b, values, rvalues)224 a = self._klass(values, fill_value=0, dtype=dtype, kind=kind)225 assert a.dtype == SparseDtype(dtype)226 b = self._klass(rvalues, fill_value=0, dtype=dtype, kind=kind)227 assert b.dtype == SparseDtype(dtype)228 self._check_numeric_ops(a, b, values, rvalues)229 a = self._klass(values, fill_value=1, dtype=dtype, kind=kind)230 assert a.dtype == SparseDtype(dtype, fill_value=1)231 b = self._klass(rvalues, fill_value=2, dtype=dtype, kind=kind)232 assert b.dtype == SparseDtype(dtype, fill_value=2)233 self._check_numeric_ops(a, b, values, rvalues)234 def test_int_array_comparison(self):235 # int32 NI ATM236 for dtype in ['int64']:237 values = self._base([0, 1, 2, 0, 0, 0, 1, 2, 1, 0], dtype=dtype)238 rvalues = self._base([2, 0, 2, 3, 0, 0, 1, 5, 2, 0], dtype=dtype)239 for kind in ['integer', 'block']:240 a = self._klass(values, dtype=dtype, kind=kind)241 b = self._klass(rvalues, dtype=dtype, kind=kind)242 self._check_comparison_ops(a, b, values, rvalues)243 self._check_comparison_ops(a, b * 0, values, rvalues * 0)244 a = self._klass(values, dtype=dtype, kind=kind, fill_value=0)245 b = self._klass(rvalues, dtype=dtype, kind=kind)246 self._check_comparison_ops(a, b, values, rvalues)247 a = self._klass(values, dtype=dtype, kind=kind, fill_value=0)248 b = self._klass(rvalues, dtype=dtype, kind=kind, fill_value=0)249 self._check_comparison_ops(a, b, values, rvalues)250 a = self._klass(values, dtype=dtype, kind=kind, fill_value=1)251 b = self._klass(rvalues, dtype=dtype, kind=kind, fill_value=2)252 self._check_comparison_ops(a, b, values, rvalues)253 def test_bool_same_index(self):254 # GH 14000255 # when sp_index are the same256 for kind in ['integer', 'block']:257 values = self._base([True, False, True, True], dtype=np.bool)258 rvalues = self._base([True, False, True, True], dtype=np.bool)259 for fill_value in [True, False, np.nan]:260 a = self._klass(values, kind=kind, dtype=np.bool,261 fill_value=fill_value)262 b = self._klass(rvalues, kind=kind, dtype=np.bool,263 fill_value=fill_value)264 self._check_logical_ops(a, b, values, rvalues)265 def test_bool_array_logical(self):266 # GH 14000267 # when sp_index are the same268 for kind in ['integer', 'block']:269 values = self._base([True, False, True, False, True, True],270 dtype=np.bool)271 rvalues = self._base([True, False, False, True, False, True],272 dtype=np.bool)273 for fill_value in [True, False, np.nan]:274 a = self._klass(values, kind=kind, dtype=np.bool,275 fill_value=fill_value)276 b = self._klass(rvalues, kind=kind, dtype=np.bool,277 fill_value=fill_value)278 self._check_logical_ops(a, b, values, rvalues)279 def test_mixed_array_float_int(self):280 for rdtype in ['int64']:281 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])282 rvalues = self._base([2, 0, 2, 3, 0, 0, 1, 5, 2, 0], dtype=rdtype)283 for kind in ['integer', 'block']:284 a = self._klass(values, kind=kind)285 b = self._klass(rvalues, kind=kind)286 assert b.dtype == SparseDtype(rdtype)287 self._check_numeric_ops(a, b, values, rvalues)288 self._check_numeric_ops(a, b * 0, values, rvalues * 0)289 a = self._klass(values, kind=kind, fill_value=0)290 b = self._klass(rvalues, kind=kind)291 assert b.dtype == SparseDtype(rdtype)292 self._check_numeric_ops(a, b, values, rvalues)293 a = self._klass(values, kind=kind, fill_value=0)294 b = self._klass(rvalues, kind=kind, fill_value=0)295 assert b.dtype == SparseDtype(rdtype)296 self._check_numeric_ops(a, b, values, rvalues)297 a = self._klass(values, kind=kind, fill_value=1)298 b = self._klass(rvalues, kind=kind, fill_value=2)299 assert b.dtype == SparseDtype(rdtype, fill_value=2)300 self._check_numeric_ops(a, b, values, rvalues)301 def test_mixed_array_comparison(self):302 # int32 NI ATM303 for rdtype in ['int64']:304 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])305 rvalues = self._base([2, 0, 2, 3, 0, 0, 1, 5, 2, 0], dtype=rdtype)306 for kind in ['integer', 'block']:307 a = self._klass(values, kind=kind)308 b = self._klass(rvalues, kind=kind)309 assert b.dtype == SparseDtype(rdtype)310 self._check_comparison_ops(a, b, values, rvalues)311 self._check_comparison_ops(a, b * 0, values, rvalues * 0)312 a = self._klass(values, kind=kind, fill_value=0)313 b = self._klass(rvalues, kind=kind)314 assert b.dtype == SparseDtype(rdtype)315 self._check_comparison_ops(a, b, values, rvalues)316 a = self._klass(values, kind=kind, fill_value=0)317 b = self._klass(rvalues, kind=kind, fill_value=0)318 assert b.dtype == SparseDtype(rdtype)319 self._check_comparison_ops(a, b, values, rvalues)320 a = self._klass(values, kind=kind, fill_value=1)321 b = self._klass(rvalues, kind=kind, fill_value=2)322 assert b.dtype == SparseDtype(rdtype, fill_value=2)323 self._check_comparison_ops(a, b, values, rvalues)324class TestSparseSeriesArithmetic(TestSparseArrayArithmetics):325 _base = pd.Series326 _klass = pd.SparseSeries327 def _assert(self, a, b):328 tm.assert_series_equal(a, b)329 def test_alignment(self):330 da = pd.Series(np.arange(4))331 db = pd.Series(np.arange(4), index=[1, 2, 3, 4])332 sa = pd.SparseSeries(np.arange(4), dtype=np.int64, fill_value=0)333 sb = pd.SparseSeries(np.arange(4), index=[1, 2, 3, 4],334 dtype=np.int64, fill_value=0)335 self._check_numeric_ops(sa, sb, da, db)336 sa = pd.SparseSeries(np.arange(4), dtype=np.int64, fill_value=np.nan)337 sb = pd.SparseSeries(np.arange(4), index=[1, 2, 3, 4],338 dtype=np.int64, fill_value=np.nan)339 self._check_numeric_ops(sa, sb, da, db)340 da = pd.Series(np.arange(4))341 db = pd.Series(np.arange(4), index=[10, 11, 12, 13])342 sa = pd.SparseSeries(np.arange(4), dtype=np.int64, fill_value=0)343 sb = pd.SparseSeries(np.arange(4), index=[10, 11, 12, 13],344 dtype=np.int64, fill_value=0)345 self._check_numeric_ops(sa, sb, da, db)346 sa = pd.SparseSeries(np.arange(4), dtype=np.int64, fill_value=np.nan)347 sb = pd.SparseSeries(np.arange(4), index=[10, 11, 12, 13],348 dtype=np.int64, fill_value=np.nan)349 self._check_numeric_ops(sa, sb, da, db)350@pytest.mark.parametrize("op", [351 operator.eq,352 operator.add,353])354def test_with_list(op):355 arr = pd.SparseArray([0, 1], fill_value=0)356 result = op(arr, [0, 1])357 expected = op(arr, pd.SparseArray([0, 1]))358 tm.assert_sp_array_equal(result, expected)359@pytest.mark.parametrize('ufunc', [360 np.abs, np.exp,361])362@pytest.mark.parametrize('arr', [363 pd.SparseArray([0, 0, -1, 1]),364 pd.SparseArray([None, None, -1, 1]),365])366def test_ufuncs(ufunc, arr):367 result = ufunc(arr)368 fill_value = ufunc(arr.fill_value)369 expected = pd.SparseArray(ufunc(np.asarray(arr)), fill_value=fill_value)370 tm.assert_sp_array_equal(result, expected)371@pytest.mark.parametrize("a, b", [372 (pd.SparseArray([0, 0, 0]), np.array([0, 1, 2])),373 (pd.SparseArray([0, 0, 0], fill_value=1), np.array([0, 1, 2])),374 (pd.SparseArray([0, 0, 0], fill_value=1), np.array([0, 1, 2])),375 (pd.SparseArray([0, 0, 0], fill_value=1), np.array([0, 1, 2])),376 (pd.SparseArray([0, 0, 0], fill_value=1), np.array([0, 1, 2])),377])378@pytest.mark.parametrize("ufunc", [379 np.add,380 np.greater,381])382def test_binary_ufuncs(ufunc, a, b):383 # can't say anything about fill value here.384 result = ufunc(a, b)385 expected = ufunc(np.asarray(a), np.asarray(b))386 assert isinstance(result, pd.SparseArray)387 tm.assert_numpy_array_equal(np.asarray(result), expected)388def test_ndarray_inplace():389 sparray = pd.SparseArray([0, 2, 0, 0])390 ndarray = np.array([0, 1, 2, 3])391 ndarray += sparray392 expected = np.array([0, 3, 2, 3])393 tm.assert_numpy_array_equal(ndarray, expected)394def test_sparray_inplace():395 sparray = pd.SparseArray([0, 2, 0, 0])396 ndarray = np.array([0, 1, 2, 3])397 sparray += ndarray398 expected = pd.SparseArray([0, 3, 2, 3], fill_value=0)399 tm.assert_sp_array_equal(sparray, expected)400@pytest.mark.parametrize("fill_value", [True, False])401def test_invert(fill_value):402 arr = np.array([True, False, False, True])403 sparray = pd.SparseArray(arr, fill_value=fill_value)404 result = ~sparray405 expected = pd.SparseArray(~arr, fill_value=not fill_value)406 tm.assert_sp_array_equal(result, expected)407@pytest.mark.parametrize("fill_value", [0, np.nan])408@pytest.mark.parametrize("op", [operator.pos, operator.neg])409def test_unary_op(op, fill_value):410 arr = np.array([0, 1, np.nan, 2])411 sparray = pd.SparseArray(arr, fill_value=fill_value)412 result = op(sparray)413 expected = pd.SparseArray(op(arr), fill_value=op(fill_value))...

Full Screen

Full Screen

ImageDraw.py

Source:ImageDraw.py Github

copy

Full Screen

...340 from . import ImageDraw2 as handler341 if im:342 im = handler.Draw(im)343 return im, handler344def floodfill(image, xy, value, border=None, thresh=0):345 """346 (experimental) Fills a bounded region with a given color.347 :param image: Target image.348 :param xy: Seed position (a 2-item coordinate tuple). See349 :ref:`coordinate-system`.350 :param value: Fill color.351 :param border: Optional border value. If given, the region consists of352 pixels with a color different from the border color. If not given,353 the region consists of pixels having the same color as the seed354 pixel.355 :param thresh: Optional threshold value which specifies a maximum356 tolerable difference of a pixel value from the 'background' in357 order for it to be replaced. Useful for filling regions of358 non-homogeneous, but similar, colors....

Full Screen

Full Screen

test_take.py

Source:test_take.py Github

copy

Full Screen

1# -*- coding: utf-8 -*-2from datetime import datetime3import re4import numpy as np5import pytest6from pandas._libs.tslib import iNaT7from pandas.compat import long8import pandas.core.algorithms as algos9import pandas.util.testing as tm10@pytest.fixture(params=[True, False])11def writeable(request):12 return request.param13# Check that take_nd works both with writeable arrays14# (in which case fast typed memory-views implementation)15# and read-only arrays alike.16@pytest.fixture(params=[17 (np.float64, True),18 (np.float32, True),19 (np.uint64, False),20 (np.uint32, False),21 (np.uint16, False),22 (np.uint8, False),23 (np.int64, False),24 (np.int32, False),25 (np.int16, False),26 (np.int8, False),27 (np.object_, True),28 (np.bool, False),29])30def dtype_can_hold_na(request):31 return request.param32@pytest.fixture(params=[33 (np.int8, np.int16(127), np.int8),34 (np.int8, np.int16(128), np.int16),35 (np.int32, 1, np.int32),36 (np.int32, 2.0, np.float64),37 (np.int32, 3.0 + 4.0j, np.complex128),38 (np.int32, True, np.object_),39 (np.int32, "", np.object_),40 (np.float64, 1, np.float64),41 (np.float64, 2.0, np.float64),42 (np.float64, 3.0 + 4.0j, np.complex128),43 (np.float64, True, np.object_),44 (np.float64, "", np.object_),45 (np.complex128, 1, np.complex128),46 (np.complex128, 2.0, np.complex128),47 (np.complex128, 3.0 + 4.0j, np.complex128),48 (np.complex128, True, np.object_),49 (np.complex128, "", np.object_),50 (np.bool_, 1, np.object_),51 (np.bool_, 2.0, np.object_),52 (np.bool_, 3.0 + 4.0j, np.object_),53 (np.bool_, True, np.bool_),54 (np.bool_, '', np.object_),55])56def dtype_fill_out_dtype(request):57 return request.param58class TestTake(object):59 # Standard incompatible fill error.60 fill_error = re.compile("Incompatible type for fill_value")61 def test_1d_with_out(self, dtype_can_hold_na, writeable):62 dtype, can_hold_na = dtype_can_hold_na63 data = np.random.randint(0, 2, 4).astype(dtype)64 data.flags.writeable = writeable65 indexer = [2, 1, 0, 1]66 out = np.empty(4, dtype=dtype)67 algos.take_1d(data, indexer, out=out)68 expected = data.take(indexer)69 tm.assert_almost_equal(out, expected)70 indexer = [2, 1, 0, -1]71 out = np.empty(4, dtype=dtype)72 if can_hold_na:73 algos.take_1d(data, indexer, out=out)74 expected = data.take(indexer)75 expected[3] = np.nan76 tm.assert_almost_equal(out, expected)77 else:78 with pytest.raises(TypeError, match=self.fill_error):79 algos.take_1d(data, indexer, out=out)80 # No Exception otherwise.81 data.take(indexer, out=out)82 def test_1d_fill_nonna(self, dtype_fill_out_dtype):83 dtype, fill_value, out_dtype = dtype_fill_out_dtype84 data = np.random.randint(0, 2, 4).astype(dtype)85 indexer = [2, 1, 0, -1]86 result = algos.take_1d(data, indexer, fill_value=fill_value)87 assert ((result[[0, 1, 2]] == data[[2, 1, 0]]).all())88 assert (result[3] == fill_value)89 assert (result.dtype == out_dtype)90 indexer = [2, 1, 0, 1]91 result = algos.take_1d(data, indexer, fill_value=fill_value)92 assert ((result[[0, 1, 2, 3]] == data[indexer]).all())93 assert (result.dtype == dtype)94 def test_2d_with_out(self, dtype_can_hold_na, writeable):95 dtype, can_hold_na = dtype_can_hold_na96 data = np.random.randint(0, 2, (5, 3)).astype(dtype)97 data.flags.writeable = writeable98 indexer = [2, 1, 0, 1]99 out0 = np.empty((4, 3), dtype=dtype)100 out1 = np.empty((5, 4), dtype=dtype)101 algos.take_nd(data, indexer, out=out0, axis=0)102 algos.take_nd(data, indexer, out=out1, axis=1)103 expected0 = data.take(indexer, axis=0)104 expected1 = data.take(indexer, axis=1)105 tm.assert_almost_equal(out0, expected0)106 tm.assert_almost_equal(out1, expected1)107 indexer = [2, 1, 0, -1]108 out0 = np.empty((4, 3), dtype=dtype)109 out1 = np.empty((5, 4), dtype=dtype)110 if can_hold_na:111 algos.take_nd(data, indexer, out=out0, axis=0)112 algos.take_nd(data, indexer, out=out1, axis=1)113 expected0 = data.take(indexer, axis=0)114 expected1 = data.take(indexer, axis=1)115 expected0[3, :] = np.nan116 expected1[:, 3] = np.nan117 tm.assert_almost_equal(out0, expected0)118 tm.assert_almost_equal(out1, expected1)119 else:120 for i, out in enumerate([out0, out1]):121 with pytest.raises(TypeError, match=self.fill_error):122 algos.take_nd(data, indexer, out=out, axis=i)123 # No Exception otherwise.124 data.take(indexer, out=out, axis=i)125 def test_2d_fill_nonna(self, dtype_fill_out_dtype):126 dtype, fill_value, out_dtype = dtype_fill_out_dtype127 data = np.random.randint(0, 2, (5, 3)).astype(dtype)128 indexer = [2, 1, 0, -1]129 result = algos.take_nd(data, indexer, axis=0,130 fill_value=fill_value)131 assert ((result[[0, 1, 2], :] == data[[2, 1, 0], :]).all())132 assert ((result[3, :] == fill_value).all())133 assert (result.dtype == out_dtype)134 result = algos.take_nd(data, indexer, axis=1,135 fill_value=fill_value)136 assert ((result[:, [0, 1, 2]] == data[:, [2, 1, 0]]).all())137 assert ((result[:, 3] == fill_value).all())138 assert (result.dtype == out_dtype)139 indexer = [2, 1, 0, 1]140 result = algos.take_nd(data, indexer, axis=0,141 fill_value=fill_value)142 assert ((result[[0, 1, 2, 3], :] == data[indexer, :]).all())143 assert (result.dtype == dtype)144 result = algos.take_nd(data, indexer, axis=1,145 fill_value=fill_value)146 assert ((result[:, [0, 1, 2, 3]] == data[:, indexer]).all())147 assert (result.dtype == dtype)148 def test_3d_with_out(self, dtype_can_hold_na):149 dtype, can_hold_na = dtype_can_hold_na150 data = np.random.randint(0, 2, (5, 4, 3)).astype(dtype)151 indexer = [2, 1, 0, 1]152 out0 = np.empty((4, 4, 3), dtype=dtype)153 out1 = np.empty((5, 4, 3), dtype=dtype)154 out2 = np.empty((5, 4, 4), dtype=dtype)155 algos.take_nd(data, indexer, out=out0, axis=0)156 algos.take_nd(data, indexer, out=out1, axis=1)157 algos.take_nd(data, indexer, out=out2, axis=2)158 expected0 = data.take(indexer, axis=0)159 expected1 = data.take(indexer, axis=1)160 expected2 = data.take(indexer, axis=2)161 tm.assert_almost_equal(out0, expected0)162 tm.assert_almost_equal(out1, expected1)163 tm.assert_almost_equal(out2, expected2)164 indexer = [2, 1, 0, -1]165 out0 = np.empty((4, 4, 3), dtype=dtype)166 out1 = np.empty((5, 4, 3), dtype=dtype)167 out2 = np.empty((5, 4, 4), dtype=dtype)168 if can_hold_na:169 algos.take_nd(data, indexer, out=out0, axis=0)170 algos.take_nd(data, indexer, out=out1, axis=1)171 algos.take_nd(data, indexer, out=out2, axis=2)172 expected0 = data.take(indexer, axis=0)173 expected1 = data.take(indexer, axis=1)174 expected2 = data.take(indexer, axis=2)175 expected0[3, :, :] = np.nan176 expected1[:, 3, :] = np.nan177 expected2[:, :, 3] = np.nan178 tm.assert_almost_equal(out0, expected0)179 tm.assert_almost_equal(out1, expected1)180 tm.assert_almost_equal(out2, expected2)181 else:182 for i, out in enumerate([out0, out1, out2]):183 with pytest.raises(TypeError, match=self.fill_error):184 algos.take_nd(data, indexer, out=out, axis=i)185 # No Exception otherwise.186 data.take(indexer, out=out, axis=i)187 def test_3d_fill_nonna(self, dtype_fill_out_dtype):188 dtype, fill_value, out_dtype = dtype_fill_out_dtype189 data = np.random.randint(0, 2, (5, 4, 3)).astype(dtype)190 indexer = [2, 1, 0, -1]191 result = algos.take_nd(data, indexer, axis=0,192 fill_value=fill_value)193 assert ((result[[0, 1, 2], :, :] == data[[2, 1, 0], :, :]).all())194 assert ((result[3, :, :] == fill_value).all())195 assert (result.dtype == out_dtype)196 result = algos.take_nd(data, indexer, axis=1,197 fill_value=fill_value)198 assert ((result[:, [0, 1, 2], :] == data[:, [2, 1, 0], :]).all())199 assert ((result[:, 3, :] == fill_value).all())200 assert (result.dtype == out_dtype)201 result = algos.take_nd(data, indexer, axis=2,202 fill_value=fill_value)203 assert ((result[:, :, [0, 1, 2]] == data[:, :, [2, 1, 0]]).all())204 assert ((result[:, :, 3] == fill_value).all())205 assert (result.dtype == out_dtype)206 indexer = [2, 1, 0, 1]207 result = algos.take_nd(data, indexer, axis=0,208 fill_value=fill_value)209 assert ((result[[0, 1, 2, 3], :, :] == data[indexer, :, :]).all())210 assert (result.dtype == dtype)211 result = algos.take_nd(data, indexer, axis=1,212 fill_value=fill_value)213 assert ((result[:, [0, 1, 2, 3], :] == data[:, indexer, :]).all())214 assert (result.dtype == dtype)215 result = algos.take_nd(data, indexer, axis=2,216 fill_value=fill_value)217 assert ((result[:, :, [0, 1, 2, 3]] == data[:, :, indexer]).all())218 assert (result.dtype == dtype)219 def test_1d_other_dtypes(self):220 arr = np.random.randn(10).astype(np.float32)221 indexer = [1, 2, 3, -1]222 result = algos.take_1d(arr, indexer)223 expected = arr.take(indexer)224 expected[-1] = np.nan225 tm.assert_almost_equal(result, expected)226 def test_2d_other_dtypes(self):227 arr = np.random.randn(10, 5).astype(np.float32)228 indexer = [1, 2, 3, -1]229 # axis=0230 result = algos.take_nd(arr, indexer, axis=0)231 expected = arr.take(indexer, axis=0)232 expected[-1] = np.nan233 tm.assert_almost_equal(result, expected)234 # axis=1235 result = algos.take_nd(arr, indexer, axis=1)236 expected = arr.take(indexer, axis=1)237 expected[:, -1] = np.nan238 tm.assert_almost_equal(result, expected)239 def test_1d_bool(self):240 arr = np.array([0, 1, 0], dtype=bool)241 result = algos.take_1d(arr, [0, 2, 2, 1])242 expected = arr.take([0, 2, 2, 1])243 tm.assert_numpy_array_equal(result, expected)244 result = algos.take_1d(arr, [0, 2, -1])245 assert result.dtype == np.object_246 def test_2d_bool(self):247 arr = np.array([[0, 1, 0], [1, 0, 1], [0, 1, 1]], dtype=bool)248 result = algos.take_nd(arr, [0, 2, 2, 1])249 expected = arr.take([0, 2, 2, 1], axis=0)250 tm.assert_numpy_array_equal(result, expected)251 result = algos.take_nd(arr, [0, 2, 2, 1], axis=1)252 expected = arr.take([0, 2, 2, 1], axis=1)253 tm.assert_numpy_array_equal(result, expected)254 result = algos.take_nd(arr, [0, 2, -1])255 assert result.dtype == np.object_256 def test_2d_float32(self):257 arr = np.random.randn(4, 3).astype(np.float32)258 indexer = [0, 2, -1, 1, -1]259 # axis=0260 result = algos.take_nd(arr, indexer, axis=0)261 result2 = np.empty_like(result)262 algos.take_nd(arr, indexer, axis=0, out=result2)263 tm.assert_almost_equal(result, result2)264 expected = arr.take(indexer, axis=0)265 expected[[2, 4], :] = np.nan266 tm.assert_almost_equal(result, expected)267 # this now accepts a float32! # test with float64 out buffer268 out = np.empty((len(indexer), arr.shape[1]), dtype='float32')269 algos.take_nd(arr, indexer, out=out) # it works!270 # axis=1271 result = algos.take_nd(arr, indexer, axis=1)272 result2 = np.empty_like(result)273 algos.take_nd(arr, indexer, axis=1, out=result2)274 tm.assert_almost_equal(result, result2)275 expected = arr.take(indexer, axis=1)276 expected[:, [2, 4]] = np.nan277 tm.assert_almost_equal(result, expected)278 def test_2d_datetime64(self):279 # 2005/01/01 - 2006/01/01280 arr = np.random.randint(281 long(11045376), long(11360736), (5, 3)) * 100000000000282 arr = arr.view(dtype='datetime64[ns]')283 indexer = [0, 2, -1, 1, -1]284 # axis=0285 result = algos.take_nd(arr, indexer, axis=0)286 result2 = np.empty_like(result)287 algos.take_nd(arr, indexer, axis=0, out=result2)288 tm.assert_almost_equal(result, result2)289 expected = arr.take(indexer, axis=0)290 expected.view(np.int64)[[2, 4], :] = iNaT291 tm.assert_almost_equal(result, expected)292 result = algos.take_nd(arr, indexer, axis=0,293 fill_value=datetime(2007, 1, 1))294 result2 = np.empty_like(result)295 algos.take_nd(arr, indexer, out=result2, axis=0,296 fill_value=datetime(2007, 1, 1))297 tm.assert_almost_equal(result, result2)298 expected = arr.take(indexer, axis=0)299 expected[[2, 4], :] = datetime(2007, 1, 1)300 tm.assert_almost_equal(result, expected)301 # axis=1302 result = algos.take_nd(arr, indexer, axis=1)303 result2 = np.empty_like(result)304 algos.take_nd(arr, indexer, axis=1, out=result2)305 tm.assert_almost_equal(result, result2)306 expected = arr.take(indexer, axis=1)307 expected.view(np.int64)[:, [2, 4]] = iNaT308 tm.assert_almost_equal(result, expected)309 result = algos.take_nd(arr, indexer, axis=1,310 fill_value=datetime(2007, 1, 1))311 result2 = np.empty_like(result)312 algos.take_nd(arr, indexer, out=result2, axis=1,313 fill_value=datetime(2007, 1, 1))314 tm.assert_almost_equal(result, result2)315 expected = arr.take(indexer, axis=1)316 expected[:, [2, 4]] = datetime(2007, 1, 1)317 tm.assert_almost_equal(result, expected)318 def test_take_axis_0(self):319 arr = np.arange(12).reshape(4, 3)320 result = algos.take(arr, [0, -1])321 expected = np.array([[0, 1, 2], [9, 10, 11]])322 tm.assert_numpy_array_equal(result, expected)323 # allow_fill=True324 result = algos.take(arr, [0, -1], allow_fill=True, fill_value=0)325 expected = np.array([[0, 1, 2], [0, 0, 0]])326 tm.assert_numpy_array_equal(result, expected)327 def test_take_axis_1(self):328 arr = np.arange(12).reshape(4, 3)329 result = algos.take(arr, [0, -1], axis=1)330 expected = np.array([[0, 2], [3, 5], [6, 8], [9, 11]])331 tm.assert_numpy_array_equal(result, expected)332 # allow_fill=True333 result = algos.take(arr, [0, -1], axis=1, allow_fill=True,334 fill_value=0)335 expected = np.array([[0, 0], [3, 0], [6, 0], [9, 0]])336 tm.assert_numpy_array_equal(result, expected)337class TestExtensionTake(object):338 # The take method found in pd.api.extensions339 def test_bounds_check_large(self):340 arr = np.array([1, 2])341 with pytest.raises(IndexError):342 algos.take(arr, [2, 3], allow_fill=True)343 with pytest.raises(IndexError):344 algos.take(arr, [2, 3], allow_fill=False)345 def test_bounds_check_small(self):346 arr = np.array([1, 2, 3], dtype=np.int64)347 indexer = [0, -1, -2]348 with pytest.raises(ValueError):349 algos.take(arr, indexer, allow_fill=True)350 result = algos.take(arr, indexer)351 expected = np.array([1, 3, 2], dtype=np.int64)352 tm.assert_numpy_array_equal(result, expected)353 @pytest.mark.parametrize('allow_fill', [True, False])354 def test_take_empty(self, allow_fill):355 arr = np.array([], dtype=np.int64)356 # empty take is ok357 result = algos.take(arr, [], allow_fill=allow_fill)358 tm.assert_numpy_array_equal(arr, result)359 with pytest.raises(IndexError):360 algos.take(arr, [0], allow_fill=allow_fill)361 def test_take_na_empty(self):362 result = algos.take(np.array([]), [-1, -1], allow_fill=True,363 fill_value=0.0)364 expected = np.array([0., 0.])365 tm.assert_numpy_array_equal(result, expected)366 def test_take_coerces_list(self):367 arr = [1, 2, 3]368 result = algos.take(arr, [0, 0])369 expected = np.array([1, 1])...

Full Screen

Full Screen

lazy.py

Source:lazy.py Github

copy

Full Screen

...13 if self.data is None:14 _fill_lock.acquire()15 try:16 if self.data is None:17 self._fill()18 finally:19 _fill_lock.release()20 return self.data[key.upper()]21 def __contains__(self, key):22 if self.data is None:23 _fill_lock.acquire()24 try:25 if self.data is None:26 self._fill()27 finally:28 _fill_lock.release()29 return key in self.data30 def __iter__(self):31 if self.data is None:32 _fill_lock.acquire()33 try:34 if self.data is None:35 self._fill()36 finally:37 _fill_lock.release()38 return iter(self.data)39 def __len__(self):40 if self.data is None:41 _fill_lock.acquire()42 try:43 if self.data is None:44 self._fill()45 finally:46 _fill_lock.release()47 return len(self.data)48 def keys(self):49 if self.data is None:50 _fill_lock.acquire()51 try:52 if self.data is None:53 self._fill()54 finally:55 _fill_lock.release()56 return self.data.keys()57class LazyList(list):58 """List populated on first use."""59 _props = [60 '__str__', '__repr__', '__unicode__',61 '__hash__', '__sizeof__', '__cmp__',62 '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__',63 'append', 'count', 'index', 'extend', 'insert', 'pop', 'remove',64 'reverse', 'sort', '__add__', '__radd__', '__iadd__', '__mul__',65 '__rmul__', '__imul__', '__contains__', '__len__', '__nonzero__',66 '__getitem__', '__setitem__', '__delitem__', '__iter__',67 '__reversed__', '__getslice__', '__setslice__', '__delslice__']...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.fill('input[aria-label="Search"]', 'Hello World!');7 await page.screenshot({ path: `example.png` });8 await browser.close();9})();10const { chromium } = require('playwright');11(async () => {12 const browser = await chromium.launch();13 const context = await browser.newContext();14 const page = await context.newPage();15 await page.fill('input[aria-label="Search"]', 'Hello World!');16 await page.screenshot({ path: `example.png` });17 await browser.close();18})();19const { chromium } = require('playwright');20(async () => {21 const browser = await chromium.launch();22 const context = await browser.newContext();23 const page = await context.newPage();24 await page.fill('input[aria-label="Search"]', 'Hello World!');25 await page.screenshot({ path: `example.png` });26 await browser.close();27})();28const { chromium } = require('playwright');29(async () => {30 const browser = await chromium.launch();31 const context = await browser.newContext();32 const page = await context.newPage();33 await page.fill('input[aria-label="Search"]', 'Hello World!');34 await page.screenshot({ path: `example.png` });35 await browser.close();36})();37const { chromium } = require('playwright');38(async () => {39 const browser = await chromium.launch();40 const context = await browser.newContext();41 const page = await context.newPage();42 await page.fill('input[aria-label="Search"]', 'Hello World!');43 await page.screenshot({ path: `

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.fill('input[name="q"]', 'Playwright');7 await page.click('input[type="submit"]');8 await page.screenshot({ path: `google.png` });9 await browser.close();10})();11const { chromium } = require('playwright');12(async () => {13 const browser = await chromium.launch();14 const context = await browser.newContext();15 const page = await context.newPage();16 await page.fill('input[name="q"]', 'Playwright');17 await page.click('input[type="submit"]');18 await page.screenshot({ path: `google.png` });19 await browser.close();20})();21const { chromium } = require('playwright');22(async () => {23 const browser = await chromium.launch();24 const context = await browser.newContext();25 const page = await context.newPage();26 await page.fill('input[name="q"]', 'Playwright');27 await page.click('input[type="submit"]');28 await page.screenshot({ path: `google.png` });29 await browser.close();30})();31const { chromium } = require('playwright');32(async () => {33 const browser = await chromium.launch();34 const context = await browser.newContext();35 const page = await context.newPage();36 await page.fill('input[name="q"]', 'Playwright');37 await page.click('input[type="submit"]');38 await page.screenshot({ path: `google.png` });39 await browser.close();40})();41const { chromium } = require('playwright');42(async () => {43 const browser = await chromium.launch();44 const context = await browser.newContext();45 const page = await context.newPage();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.fill('input[name="q"]', 'Hello World');7 await page.screenshot({ path: 'google.png' });8 await browser.close();9})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.fill('input[name="q"]', 'Hello World');7 await page.screenshot({ path: 'example.png' });8 await browser.close();9})();10const { chromium } = require('playwright');11(async () => {12 const browser = await chromium.launch({ headless: false });13 const context = await browser.newContext();14 const page = await context.newPage();15 await page.fill('input[name="q"]', 'Hello World');16 await page.screenshot({ path: 'example.png' });17 await browser.close();18})();19const { chromium } = require('playwright');20(async () => {21 const browser = await chromium.launch({ headless: false });22 const context = await browser.newContext();23 const page = await context.newPage();24 await page.fill('input[name="q"]', 'Hello World');25 await page.screenshot({ path: 'example.png' });26 await browser.close();27})();28const { chromium } = require('playwright');29(async () => {30 const browser = await chromium.launch({ headless: false });31 const context = await browser.newContext();32 const page = await context.newPage();33 await page.fill('input[name="q"]', 'Hello World');34 await page.screenshot({ path: 'example.png' });35 await browser.close();36})();37const { chromium } = require('playwright');38(async () => {39 const browser = await chromium.launch({ headless: false });40 const context = await browser.newContext();41 const page = await context.newPage();42 await page.fill('input[name="q

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.waitForTimeout(2000);7 await page.click('#main > div.w3-container.w3-teal > a:nth-child(1)');8 await page.waitForTimeout(2000);9 const frame = page.frame({ name: 'iframeResult' });10 await frame.waitForSelector('#colorpicker');11 await frame.fill('#colorpicker', '#000000');12 await page.waitForTimeout(2000);13 await browser.close();14})();15const { chromium } = require('playwright');16(async () => {17 const browser = await chromium.launch({ headless: false });18 const context = await browser.newContext();19 const page = await context.newPage();20 await page.waitForTimeout(2000);21 await page.click('#main > div.w3-container.w3-teal > a:nth-child(1)');22 await page.waitForTimeout(2000);23 const frame = page.frame({ name: 'iframeResult' });24 await frame.waitForSelector('#colorpicker');25 await frame.fill('#colorpicker', '#000000');26 await page.waitForTimeout(2000);27 await browser.close();28})();29const { chromium } = require('playwright');30(async () => {31 const browser = await chromium.launch({ headless: false });

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.fill('input[aria-label="Search"]', 'Playwright');7 await page.click('input[value="Google Search"]');8 await page.screenshot({ path: 'example.png' });9 await browser.close();10})();11"dependencies": {12 },13const { chromium } = require('playwright');14(async () => {15 const browser = await chromium.launch({ headless: false });16 const context = await browser.newContext();17 const page = await context.newPage();18 await page.fill('input[aria-label="Search"]', 'Playwright');19 await page.click('input[value="Google Search"]');20 await page.screenshot({ path: 'example.png' });21 await browser.close();22})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const {chromium} = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.fill('input[name="q"]', 'Hello World');7 await browser.close();8})();9const {chromium} = require('playwright');10(async () => {11 const browser = await chromium.launch();12 const context = await browser.newContext();13 const page = await context.newPage();14 await page.fill('input[name="q"]', 'Hello World');15 await browser.close();16})();17const {chromium} = require('playwright');18(async () => {19 const browser = await chromium.launch();20 const context = await browser.newContext();21 const page = await context.newPage();22 await page.fill('input[name="q"]', 'Hello World');23 await browser.close();24})();25const {chromium} = require('playwright');26(async () => {27 const browser = await chromium.launch();28 const context = await browser.newContext();29 const page = await context.newPage();30 await page.fill('input[name="q"]', 'Hello World');31 await browser.close();32})();33const {chromium} = require('playwright');34(async () => {35 const browser = await chromium.launch();36 const context = await browser.newContext();37 const page = await context.newPage();38 await page.fill('input[name="q"]', 'Hello World');39 await browser.close();40})();41const {chromium} = require('playwright');42(async () => {43 const browser = await chromium.launch();44 const context = await browser.newContext();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({headless: false});4 const page = await browser.newPage();5 await page.fill('input[type="text"]','playwright');6 await page.click('input[type="submit"]');7 await page.waitForSelector('h3');8 await page.screenshot({ path: `example.png` });9 await browser.close();10})();11const { chromium } = require('playwright');12(async () => {13 const browser = await chromium.launch({headless: false});14 const page = await browser.newPage();15 await page.fill('input[type="text"]','playwright');16 await page.click('input[type="submit"]');17 await page.waitForSelector('h3');18 await page.screenshot({ path: `example.png` });19 await browser.close();20})();21const { chromium } = require('playwright');22(async () => {23 const browser = await chromium.launch({headless: false});24 const page = await browser.newPage();25 await page.fill('input[type="text"]','playwright');26 await page.click('input[type="submit"]');27 await page.waitForSelector('h3');28 await page.screenshot({ path: `example.png` });29 await browser.close();30})();31const { chromium } = require('playwright');32(async () => {33 const browser = await chromium.launch({headless: false});34 const page = await browser.newPage();35 await page.fill('input[type="text"]','playwright');36 await page.click('input[type="submit"]');37 await page.waitForSelector('h3');38 await page.screenshot({ path: `example.png` });39 await browser.close();40})();41const { chromium } = require('playwright');42(async () => {43 const browser = await chromium.launch({headless:

Full Screen

Playwright tutorial

LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.

Chapters:

  1. What is Playwright : Playwright is comparatively new but has gained good popularity. Get to know some history of the Playwright with some interesting facts connected with it.
  2. How To Install Playwright : Learn in detail about what basic configuration and dependencies are required for installing Playwright and run a test. Get a step-by-step direction for installing the Playwright automation framework.
  3. Playwright Futuristic Features: Launched in 2020, Playwright gained huge popularity quickly because of some obliging features such as Playwright Test Generator and Inspector, Playwright Reporter, Playwright auto-waiting mechanism and etc. Read up on those features to master Playwright testing.
  4. What is Component Testing: Component testing in Playwright is a unique feature that allows a tester to test a single component of a web application without integrating them with other elements. Learn how to perform Component testing on the Playwright automation framework.
  5. Inputs And Buttons In Playwright: Every website has Input boxes and buttons; learn about testing inputs and buttons with different scenarios and examples.
  6. Functions and Selectors in Playwright: Learn how to launch the Chromium browser with Playwright. Also, gain a better understanding of some important functions like “BrowserContext,” which allows you to run multiple browser sessions, and “newPage” which interacts with a page.
  7. Handling Alerts and Dropdowns in Playwright : Playwright interact with different types of alerts and pop-ups, such as simple, confirmation, and prompt, and different types of dropdowns, such as single selector and multi-selector get your hands-on with handling alerts and dropdown in Playright testing.
  8. Playwright vs Puppeteer: Get to know about the difference between two testing frameworks and how they are different than one another, which browsers they support, and what features they provide.
  9. Run Playwright Tests on LambdaTest: Playwright testing with LambdaTest leverages test performance to the utmost. You can run multiple Playwright tests in Parallel with the LammbdaTest test cloud. Get a step-by-step guide to run your Playwright test on the LambdaTest platform.
  10. Playwright Python Tutorial: Playwright automation framework support all major languages such as Python, JavaScript, TypeScript, .NET and etc. However, there are various advantages to Python end-to-end testing with Playwright because of its versatile utility. Get the hang of Playwright python testing with this chapter.
  11. Playwright End To End Testing Tutorial: Get your hands on with Playwright end-to-end testing and learn to use some exciting features such as TraceViewer, Debugging, Networking, Component testing, Visual testing, and many more.
  12. Playwright Video Tutorial: Watch the video tutorials on Playwright testing from experts and get a consecutive in-depth explanation of Playwright automation testing.

Run Playwright Internal automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful